【问题标题】:Creating a 1000x252 Path Simulation创建 1000x252 路径模拟
【发布时间】:2019-05-21 10:25:51
【问题描述】:

我正在尝试创建一个包含 1000 次模拟和 252 天的蒙特卡洛模拟。所以我需要创建一个1000x252的矩阵,我的代码是:

T=252
L=zeros(i)
eps=normrnd(0,1,[i,T])
S0=2809
K=2750

for i=1:252
    for c=1:L
    S(c,i)=S0*exp((.0295-.5*(.2^2))*.004+.0295*sqrt(.004)*eps(c,i))
    end
end

以前,我只有一个for 声明,所以我没有for c=1:L, 我能够产生我想要的结果。但现在我想要 1000x252 我得到了:

第 1 行第 1 到 252 列是正确的

第 2 行到 1000,第 1 列只是第 1 行第 1 列的副本

其余的,第 2 行到第 1000 行,第 2 列到第 252 列,全为零。

我的索引方式或我在 for 循环中引用变量 eps 的方式有问题吗?

【问题讨论】:

  • for c=1:L ?? L 是一个充满零的矩阵。当我运行您的代码时,S 不存在。因为你的第二个循环是 for c=1:0 即没有

标签: matlab simulation montecarlo quantitative-finance


【解决方案1】:

一些错误

  • 设置L = 1000;
  • 将此处的i 替换为L eps=normrnd(0,1,[i,T]);
  • 用零和固定大小初始化矩阵 S S = zeros(L,T);

代码如下

T=252;
L= 1000;
eps=normrnd(0,1,[L,T]);
S0=2809;
K=2750;
S = zeros(L,T);
for i=1:252
    for c=1:L
    S(c,i)=S0*exp((.0295-.5*(.2^2))*.004+.0295*sqrt(.004)*eps(c,i));
   
    end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2013-04-09
    • 2012-07-17
    • 2015-01-18
    • 2015-12-12
    • 1970-01-01
    • 2019-04-27
    相关资源
    最近更新 更多