Вот мой код,
BinAmerPut <- function(S0,R,sigmaA,sigmaB,K,T,N) {
Cn <- rep(0, N+1)
tempC <- 0
C0 <- 0
sigma <- (sigmaA+sigmaB)/2
Dt <- T/N
D <- exp(-R*Dt)
a <- exp(-R*Dt)+exp((R*Dt)+ (Dt*sigma^2))/2
d <- a-sqrt(a^2-1)
u <- 1/d
p <- (exp(R*Dt)-d)/(u-d)
q <- (1-p)
for (n in N:1){
for (j in 1:(n+1)){
if (n == N){
Cn[j] <- max((S0*(u^(j-1)*(d^(N-(j-1))))) - K, 0)
}
if (n < N){
tempC <- D*(p*Cn[j+1]+q*Cn[j])
Cn[j] <- max(S0*(u^(j-1))*(d^(N-(j-1)))-K, tempC)
}
}
}
C0 <- max(S0-K,D*(p*Cn[2]+q*Cn[1]))
return(C0)
}
S0 <- 100
R <- 0.03
T <- 1.0
N <- 4
K <- 100
BinAmerPut(S0, R, 0.1, 0.25, K, T, N)
Возможно, мне не хватает чего-то, чего я не могу найти.? В конце концов, моя цель состоит в том, чтобы через некоторое время добавить теорему о делении на части l oop.
Спасибо!