Так что я использую функцию AmericanOption от RQuantLib. Он отлично работает, если вход одиночные номера, например:RQuantLib: Применить опцию к списку данных
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 для дивидендов («дивиденд»), последовательности 0,006 для безрисковой («без риска») и зрелости разложения как:
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")
, потому что функция ожидает одно значение.
Итак, как мне сделать это правильно, чтобы сообщить функции ввести данные временного ряда?
Благодаря