RQuantLib:将期权定价应用于数据列表
RQuantLib: Apply option pricing to data list
所以我正在使用 RQuantLib 的 AmericanOption 函数。如果输入是单个数字,它工作正常,例如:
AmericanOption(type = 'call', underlying = 73.59, strike = 74, dividendYield
= 0, riskFreeRate = 0.006, maturity = 0.25, volatility= 0.2, timeSteps =
150, gridPoints = 149, engine="CrankNicolson")
但是,由于我有时间序列数据,其中包含同一选项随时间变化的每日数据,例如:
Time underlying strike ...
10-01 73 74
10-02 74 74
10-03 75 74
...
显然我想将定价函数应用于每个数据点并将结果输出为包含每天结果的新数据框。
并且由于我已经将基础价格和行使价作为数据列表,我所做的是为股息创建 0 序列 ("dividend"),为无风险创建 0.006 序列 ("riskfree"),和衰减成熟度为:
end <- 21/252
interval <- 1/252
opmaturity <- seq(0.25, end, by=-interval)
(从3个月到期到1个月到期)
所以我当然不能只做以下事情:
AmericanOption(type = 'call', underlying = RR$Stock, strike =
RR$Strike.Price, dividendYield = dividend, riskFreeRate = riskfree, maturity
= ematurity, volatility= vol, timeSteps = 150, gridPoints = 149,
engine="CrankNicolson")
因为函数需要单值输入。
那么,我该如何正确地告诉函数输入时间序列数据呢?
谢谢
使用mapply
函数就够了
mapply(AmericanOption, type = 'call', underlying = RR$Stock, strike =
RR$Strike.Price, dividendYield = dividend, riskFreeRate = riskfree, maturity
= ematurity, volatility= vol, timeSteps = 150, gridPoints = 149,
engine="CrankNicolson")
所以我正在使用 RQuantLib 的 AmericanOption 函数。如果输入是单个数字,它工作正常,例如:
AmericanOption(type = 'call', underlying = 73.59, strike = 74, dividendYield
= 0, riskFreeRate = 0.006, maturity = 0.25, volatility= 0.2, timeSteps =
150, gridPoints = 149, engine="CrankNicolson")
但是,由于我有时间序列数据,其中包含同一选项随时间变化的每日数据,例如:
Time underlying strike ...
10-01 73 74
10-02 74 74
10-03 75 74
...
显然我想将定价函数应用于每个数据点并将结果输出为包含每天结果的新数据框。
并且由于我已经将基础价格和行使价作为数据列表,我所做的是为股息创建 0 序列 ("dividend"),为无风险创建 0.006 序列 ("riskfree"),和衰减成熟度为:
end <- 21/252
interval <- 1/252
opmaturity <- seq(0.25, end, by=-interval)
(从3个月到期到1个月到期)
所以我当然不能只做以下事情:
AmericanOption(type = 'call', underlying = RR$Stock, strike =
RR$Strike.Price, dividendYield = dividend, riskFreeRate = riskfree, maturity
= ematurity, volatility= vol, timeSteps = 150, gridPoints = 149,
engine="CrankNicolson")
因为函数需要单值输入。
那么,我该如何正确地告诉函数输入时间序列数据呢?
谢谢
使用mapply
函数就够了
mapply(AmericanOption, type = 'call', underlying = RR$Stock, strike =
RR$Strike.Price, dividendYield = dividend, riskFreeRate = riskfree, maturity
= ematurity, volatility= vol, timeSteps = 150, gridPoints = 149,
engine="CrankNicolson")