要替换的项目数不是 的倍数,蒙特卡罗随机过程 R 错误

问题描述

##
set.seed(123)
SimpleEulerApproximation = function(T,x,a,b,delta){
  numberofSteps = T/delta;
  timesteps = rep(numberofSteps,1);
  Y = rep(numberofSteps,1)
  Y[1] = x;
  for (i in 1:numberofSteps){
    timesteps[i] = 0 + i*delta;
  }
  for (j in 2:numberofSteps){
    Y[j] = Y[j-1] + a*Y[j-1]*delta + b*Y[j-1]*rnorm(1,sqrt(delta));
  }
  ##plot(timesteps,Y,type = "l")
  
}
SimpleEulerApproximation(1,20,-0.01,0.25,0.001)

set.seed(123)

MultipleEulerApproximation = function(T,delta,numberofTrajectories){
  numberofSteps = round(T/delta);
  timesteps = rep(numberofSteps,rep(numberofTrajectories))
  Y = data.matrix(Y)
  for (i in 1:numberofTrajectories){
    Y[,i] = SimpleEulerApproximation(T,delta);
  }
  for (i in 1:numberofSteps){
    timesteps[i] =  0 + i*delta;
  }
  AverageTrajectory = rep(numberofSteps,1)
  for (i in 1:numberofSteps){
    AverageTrajectory[i] = mean(Y[i,])
  }
  ##plot(timesteps,AverageTrajectory)
}
MultipleEulerApproximation(1,52,0.12,0.30,0.0001,10000)

MonteCarloSimulation = function(T,r,sigma,K,numberofTrajectories){
  Y = MultipleEulerApproximation(T,numberofTrajectories);
  lastStep = round(T/delta);
  max(Y[lastStep,]-K,0);
  size(Y)
  price = 1/numberofTrajectories * sum(max(Y[lastStep,0))*exp(-r*T)
}
MonteCarloSimulation(0.25,0.3,50,10000)

当我运行 multipleEulerApproximation 的代码时,我得到了 Replacement has length 0 错误。有人可以帮我弄这个吗?非常感激。 第一个随机微分方程的简单欧拉近似 dXt = −0.1Xtdt + 0.25XtdBt,X0 = 20 在时间间隔 [0,1] 内,时间步长 ∆ = 0.001。 第二段代码用于多欧拉近似,这就是错误所在。 第三部分用于使用预测计算欧式看涨期权价格。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)