gpt4 book ai didi

r - 在 R 中生成晶格路径

转载 作者:行者123 更新时间:2023-12-04 23:02:49 28 4
gpt4 key购买 nike

例如,如果我有一个如下所示的格子:

          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

我已经为这段代码苦苦挣扎了几个小时,所以任何帮助将不胜感激!提前致谢! :)

最佳答案

每条路径长度n对应
一系列上下运动:
你只需要枚举所有这些序列。
如果您已经有长度为 n-1 的序列,
作为矩阵 u ,
长度为 n 的序列可以得到

rbind( 
cbind( u, .9 ),
cbind( u, 1.1 )
)

你可以把它放在一个函数中,并调用它 n次。
n <- 4
up <- 1.1
down <- .9
m <- Reduce(
function(u,v) rbind( cbind( u, up ), cbind( u, down ) ),
rep(NA,n),
100
)
t(apply(m, 1, cumprod))
# [1,] 100 110 121 133.1 146.41
# [2,] 100 90 99 108.9 119.79
# [3,] 100 110 99 108.9 119.79
# [4,] 100 90 81 89.1 98.01
# [5,] 100 110 121 108.9 119.79
# [6,] 100 90 99 89.1 98.01
# [7,] 100 110 99 89.1 98.01
# [8,] 100 90 81 72.9 80.19
# [9,] 100 110 121 133.1 119.79
# [10,] 100 90 99 108.9 98.01
# [11,] 100 110 99 108.9 98.01
# [12,] 100 90 81 89.1 80.19
# [13,] 100 110 121 108.9 98.01
# [14,] 100 90 99 89.1 80.19
# [15,] 100 110 99 89.1 80.19
# [16,] 100 90 81 72.9 65.61

关于r - 在 R 中生成晶格路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210349/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com