我需要使用针对R的QuantLib包来计算金融期权的隐含波动率。 我在使用函数“EuropeanOptionImpliedVolatility”时遇到了麻烦,因为它的输出是一个Object(称为ImpliedVolatility)。
largo = nrow(call26) #number of rows in my data set
impl_vol= vector("list",largo)
for(i in largo){
impl_vol[[i]] = EuropeanOptionImpliedVolatility(type="call", value=valor_opcion[i],
underlying=st[i], strike=strike[i], dividendYield=dividendo[i],
riskFreeRate=rf[i], maturity=maturity[i], volatility=0.4)
}
结果是:
list(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, structure(list(impliedVol = 0.173643438965225,
parameters = structure(list(type = "call", value = 52.95,
underlying = 1497.66, strike = 1680, dividendYield = 0.01,
riskFreeRate = 0.04, maturity = 0.983561644, volatility = 0.4), .Names = c("type",
"value", "underlying", "strike", "dividendYield", "riskFreeRate",
"maturity", "volatility"))), .Names = c("impliedVol",
"parameters"), class = c("EuropeanOptionImpliedVolatility",
"ImpliedVolatility")))
我需要隐含的波动率...如果我计算一个单一的金融期权我可以通过
来访问它valor$impliedVol
我该怎么办? 谢谢!
答案 0 :(得分:0)
循环中出现错误,而不是:
for(i in largo){
它是:
for(i in 1:largo){
由于此错误,仅计算最后一个元素(索引195
)的隐含波动率(正如您在已发布的输出结构中可以清楚地看到的那样,第一个194
列表槽位是NULL
,最后一个有值。)
一旦你修正了这个错字,只需要访问该值:
impl_vol[[i]]$impliedVol
答案 1 :(得分:0)
快速的:
您无法存储compond对象(例如EuropeanOptionImpliedVolatility()
在向量中返回的对象。
您可以将它们存储在列表中
如果你知道尺寸,你可以用矩阵填充它们。
否则,您可以增长data.frame对象(效率不高)
如果您想要的只是隐含波动率,请将其提取并存储在矢量中。 RQuantLib软件包提供了几乎所有用途的示例。