たとえば、次のようなラティスがあるとします。
133.1
/
121
/ \
110 108.9
/ \ /
100 99
\ / \
90 89.1
\ /
81
\
72.9
ラティスは 100 から始まり、係数 1.1 で上昇し、係数 0.9 で下降します。この格子には、上下する 3 つの周期があります。このマトリックスがより多くの期間で満たされる可能性があることは明らかです。
行列形式の格子は次のようになります。
[,1] [,2] [,3] [,4]
[1,] 100 110 121 133.1
[2,] NA 90 99 108.9
[3,] NA NA 81 89.1
[4,] NA NA NA 72.9
私は R で作業しています。格子行列を生成するコードは次のとおりです。
#Parameters
S0 <- 100 #price at t0
u <- 1.1 #up factor
d <- 0.9 #down factor
n <- 3 #number of periods
#Matrix for the prices
prices <- matrix(data=NA, nrow=(n+1), ncol=(n+1))
prices[1,1] <- S0
#Fill the matrix
for(column in 2:(n+1)){
for(row in 1:(column-1)){
prices[row,column] <- u*prices[row,column-1];
}
prices[column,column] <- d*prices[column-1,column-1];
}
格子を通るすべての可能なパスを含む行列を生成するコードを作成したいと思います。この例では、次のようになります。
[,1] [,2] [,3] [,4]
[1,] 100 110 121 133.1
[2,] 100 110 121 108.9
[3,] 100 110 99 108.9
[4,] 100 110 99 89.1
[5,] 100 90 99 108.9
[6,] 100 90 99 89.1
[7,] 100 90 81 89.1
[8,] 100 90 81 72.9
私はこのコードに何時間も苦労してきたので、どんな助けも大歓迎です! 前もって感謝します!:)