BlackVarianceSurface 的 IV 锯齿状引用
Jagged Quote of IV for BlackVarianceSurface
我正在遵循 this 示例并努力使其适应我的需要。
在代码部分:
implied_vols[i][j] = data[j][i]
implied_vols = ql.Matrix(len(strikes), len(expiration_dates))
for i in range(implied_vols.rows()):
for j in range(implied_vols.columns()):
implied_vols[i][j] = data[j][i]
[1]: http://gouthamanbalaraman.com/blog/volatility-smile-heston-model-calibration-quantlib-python.html
这假设 IV
matrix
在给定的到期日内具有所有对应的 strikes
。事实上,正是出于这个原因,[质量] quote
通常存储在 dictionary
而不是 array
中。
例如在 SPX
中,我们在不同的 expiration
处有不同的 strike
增量。因此,一些 strikes
在一次到期时为空,但在另一次到期时则为空。我意识到我可以通过使 matrix
单元格始终具有数值来强制这种情况,但我假设在给定的 strike/expiry
处插入 0 不是一个好主意。或者,将所有 expiry
强制为 expiry
之间的 strikes
的最小公分母会抛出大量数据。
如果您的 volatility
引号不是正方形的,并且您不想在构建 ql.Matrix
交给 BlackVarianceSurface
时丢弃数据,会发生什么情况?
遗憾的是,没有现成的解决方案。正如您所说,用 0 填充缺失的单元格是个坏主意;但是通过手动插入缺失值来填充它们应该可行。执行此操作的方法可能取决于数据的稀疏程度...
我正在遵循 this 示例并努力使其适应我的需要。
在代码部分:
implied_vols[i][j] = data[j][i]
implied_vols = ql.Matrix(len(strikes), len(expiration_dates))
for i in range(implied_vols.rows()):
for j in range(implied_vols.columns()):
implied_vols[i][j] = data[j][i]
[1]: http://gouthamanbalaraman.com/blog/volatility-smile-heston-model-calibration-quantlib-python.html
这假设 IV
matrix
在给定的到期日内具有所有对应的 strikes
。事实上,正是出于这个原因,[质量] quote
通常存储在 dictionary
而不是 array
中。
例如在 SPX
中,我们在不同的 expiration
处有不同的 strike
增量。因此,一些 strikes
在一次到期时为空,但在另一次到期时则为空。我意识到我可以通过使 matrix
单元格始终具有数值来强制这种情况,但我假设在给定的 strike/expiry
处插入 0 不是一个好主意。或者,将所有 expiry
强制为 expiry
之间的 strikes
的最小公分母会抛出大量数据。
如果您的 volatility
引号不是正方形的,并且您不想在构建 ql.Matrix
交给 BlackVarianceSurface
时丢弃数据,会发生什么情况?
遗憾的是,没有现成的解决方案。正如您所说,用 0 填充缺失的单元格是个坏主意;但是通过手动插入缺失值来填充它们应该可行。执行此操作的方法可能取决于数据的稀疏程度...