Я пытаюсь создать алгоритм установки цены для европейских опционов, используя R. Я создал функцию, которая может выводить цену опциона в зависимости от того, на сколько шагов мы разбили временной интервал опциона. Моя проблема в том, что мне нужно построить график цены опциона, поскольку количество шагов увеличивается, и моя функция выводит только одну цену. Моя функция построена следующим образом:
strike=110
startprice = 100
alpha = 0.055
sigma = 0.2
R=1.05
r=0.05
T = 3
CallPrice <- function(n){
dt = T/n
u = exp(alpha*dt+sigma*sqrt(dt))
d = exp(alpha*dt-sigma*sqrt(dt))
q=(R-d)/(u-d)
Call = matrix(0,nrow=n+1, ncol = n+1)
Call[,n+1] <- pmax(startprice*(u^(0:n))*(d^(n:0))-strike,0)
CallVal <- matrix(0,nrow = n,ncol = 1)
for (k in n:1){
for (i in k:1) {
for (j in 1:i){
Call[j,i] <- (q*Call[j+1,i+1]+(1-q)*Call[j,i+1])/R
}
CallVal[k,1] <- Call[1,1]
}
}
return(CallVal)
}
CallPrice(n)
Я ожидал, что я могу просто установить n на интервал при построении графика, и функция будет повторяться, но я получаю ошибку I 0: n: числовое выражение имеет 10 элементы: только первый использованный. Так что я не понимаю, как я смогу построить это.