이항 트리에서 이자율 모델을 설정하고 싶습니다. 이자율은 경로에 따라 다릅니다. 나는 모든 시나리오 (2^N)에서 매 단계마다 이자율 (할인율과 보수)을 원한다. 모든 단일 이자율을 반환하려는 이유는 이자율을 계산 할인 요인으로 사용하고 싶다는 것입니다. 복잡한 방식으로이 작업을 수행하는 방법을 알고 있습니다. 여기에 이중 루프 (또는 더 간단한)를 사용하여 결과를 얻고 싶습니다.이중 회귀 식의 이중 고리를 두 번 반복 R
w는 모든 시나리오를 나타내는 "0"또는 "1"더미 변수 행렬에 대한 것입니다.
r은 이자율입니다. head (1)가 있으면, r1 = r0 + u = r0 + 0.005; 꼬리 (0)가 있으면 r1 = r0-d입니다. D는 할인 요인입니다. D1 = 1/(1 + r0), D2 = D1/(1 + r1) ... P는 보수이다.
이 경우 기간 N은 10입니다. 따라서 단계적으로 계산할 수 있습니다. 그러나 N이 커지면 그 방법을 사용할 수 없습니다. 이것을 계산하는 간단한 방법이 필요합니다. 고맙습니다.
#Real Price
N <- 10
r0 <- 0.06
K <- 0.05
u <- 0.005
d <- 0.004
q <- 0.5
w <- expand.grid(rep(list(0:1),N))
r <- D <- P <- matrix(0,0,nrow=2^N,ncol=N)
for(i in 1:dim(w)[1])
{
r[i,1] <- r0 + u*w[i,1] - d*(1-w[i,1])
r[i,2] <- r[i,1] + u*w[i,2] - d*(1-w[i,2])
r[i,3] <- r[i,2]+u*w[i,3]-d*(1-w[i,3])
r[i,4] <- r[i,3]+u*w[i,4]-d*(1-w[i,4])
r[i,5] <- r[i,4]+u*w[i,5]-d*(1-w[i,5])
r[i,6] <- r[i,5]+u*w[i,6]-d*(1-w[i,6])
r[i,7] <- r[i,6]+u*w[i,7]-d*(1-w[i,7])
r[i,8] <- r[i,7]+u*w[i,8]-d*(1-w[i,8])
r[i,9] <- r[i,8]+u*w[i,9]-d*(1-w[i,9])
r[i,10] <- r[i,9]*+u*w[i,10]-d*(1-w[i,10])
D[i,1] <- 1/(1+r0)
D[i,2] <- D[i,1]/(1+r[i,1])
D[i,3] <- D[i,2]/(1+r[i,2])
D[i,4] <- D[i,3]/(1+r[i,3])
D[i,5] <- D[i,4]/(1+r[i,4])
D[i,6] <- D[i,5]/(1+r[i,5])
D[i,7] <- D[i,6]/(1+r[i,6])
D[i,8] <- D[i,7]/(1+r[i,7])
D[i,9] <- D[i,8]/(1+r[i,8])
D[i,10] <- D[i,9]/(1+r[i,9])
P[i,1] <- D[i,1]*pmax(K-r0,0)*(0.5^N)
P[i,2] <- D[i,2]*pmax(K-r[i,1],0)*(0.5^N)
P[i,3] <- D[i,3]*pmax(K-r[i,2],0)*(0.5^N)
P[i,4] <- D[i,4]*pmax(K-r[i,3],0)*(0.5^N)
P[i,5] <- D[i,5]*pmax(K-r[i,4],0)*(0.5^N)
P[i,6] <- D[i,6]*pmax(K-r[i,5],0)*(0.5^N)
P[i,7] <- D[i,7]*pmax(K-r[i,6],0)*(0.5^N)
P[i,8] <- D[i,8]*pmax(K-r[i,7],0)*(0.5^N)
P[i,9] <- D[i,9]*pmax(K-r[i,8],0)*(0.5^N)
P[i,10] <- D[i,10]*pmax(K-r[i,9],0)*(0.5^N)
}
true.price <- sum(P)
#> true.price
# > true.price
# [1] 0.00292045