我正在关注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
中,我们在不同的strike
处有不同的expiration
增量。所以有些strikes
在一个到期时是空的,而不是另一个。我意识到我可以通过使matrix
单元格始终具有数值来强制这种情况,但我假设在给定的strike/expiry
处插入0是个坏主意。或者,强制所有expiry
到strikes
之间的expiry
的最小公分母会抛出大量数据。
如果volatility
引号不是正方形,并且您在构建ql.Matrix
以交给BlackVarianceSurface
时不想丢弃数据,会发生什么?
答案 0 :(得分:1)
不幸的是,没有现成的解决方案。正如你所说用0填充缺失的单元格是一个坏主意;但通过手动插补缺失值来填充它们应该有效。这样做的方式可能取决于您的数据有多稀疏......