4

我在数据框中有一个数据集,其中包含以下信息:

> head(rs1)
       dater adjStkPrice                optSym     expire strike   bid   ask unadjStkPrice daysLeft   pnl
1 2011-01-03      127.05 SPY   131221P00115000 2013-12-21    115 14.89 15.40        127.05     1083 319.5
2 2011-01-04      126.98 SPY   131221P00115000 2013-12-21    115 15.00 15.39        126.98     1082 328.4
3 2011-01-05      127.64 SPY   131221P00115000 2013-12-21    115 14.39 14.86        127.64     1081 287.2
4 2011-01-06      127.39 SPY   131221P00115000 2013-12-21    115 14.38 14.80        127.39     1080 278.7
5 2011-01-07      127.14 SPY   131221P00115000 2013-12-21    115 14.67 15.10        127.14     1079 300.2
6 2011-01-10      126.98 SPY   131221P00115000 2013-12-21    115 14.75 15.19        126.98     1076 303.4

我正在尝试使用包AmericanOptionImpliedVolatility中的函数来获得隐含波动率RQuantLib。问题是它似乎只采用单组值:

> rs1$impVol <- AmericanOptionImpliedVolatility("put", rs1$ask,
+ rs1$adjStkPrice, rs1$strike, .02, .05, rs1$daysLeft/ 365, .4)$impliedVol
Error in AmericanOptionImpliedVolatility.default("put", rs1$ask, rs1$adjStkPrice,  : 
  expecting a single value

我认为这是该apply功能的一个地方,但我不确定我是否正确使用它:

> rs1$impVol <- apply(rs1, 1, AmericanOptionImpliedVolatility("put", rs1$ask,
+ rs1$adjStkPrice, rs1$strike, .02, .05, rs1$daysLeft/ 365, .4)$impliedVol)
Error in AmericanOptionImpliedVolatility.default("put", rs1$ask, rs1$adjStkPrice,  : 
  expecting a single value

有什么建议么?

4

1 回答 1

5

您可以使用Vectorizemapply

Vectorize(AmericanOptionImpliedVolatility)(
  type="put", value=15:16, underlying=130:131, 
  strike=115, dividendYield=.02, riskFreeRate=.05, maturity=1, 
  volatility=.1
)

mapply(
  AmericanOptionImpliedVolatility,
  type="put", value=15:16, underlying=130:131, 
  strike=115, dividendYield=.02, riskFreeRate=.05, maturity=1, 
  volatility=.1
)  

如果你想使用apply,它的第三个参数应该是一个函数。此外,它会将每一行转换为一个向量,当某些列包含字符串时,这是有问题的。

您也可以sapply在行号上使用,但它只是一个变相的循环,比mapply.

sapply(
  seq_len(nrows(rs1)),
  function(i) AmericanOptionImpliedVolatility( 
    type="put", 
    value=rs1$ask[i],
   ... (add the other arguments)
  )
)
于 2012-04-09T06:26:19.257 回答