问题描述
##
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 (将#修改为@)