本人也是刚接触代码,这也是第一次写,比较简陋,请见谅。问题是最后一个for循环每次运行只会跑一遍,导致price与profit的数据只能出现前面几个,后面的数据无法跑出来,请问问题在哪里,怎么解决?
K=50
S0=50; #initial price S0
mu=0.04; #drift mu
sigma=0.1; # volatility sigma
T=1; #1 year
NSteps=20;
NReps=2;
SPaths = matrix(NA,NReps,NSteps+1);
d1 = matrix(NA,NReps,NSteps+1);
d2 = matrix(NA,NReps,NSteps+1);
N1 = matrix(NA,NReps,NSteps+1);
N2 = matrix(NA,NReps,NSteps+1);
c = matrix(NA,NReps,NSteps+1);
qty = matrix(NA,NReps,NSteps+1);
price = matrix(NA,NReps,NSteps+1);
profit = matrix(NA,NReps,NSteps+1);
QTY = matrix(NA,NReps,NSteps+1);
SPaths[,1] = S0;
dt = T/NSteps
nudt = (mu-0.5*sigma^2)*dt
sidt = sigma*sqrt(dt)
for (i in 1:NReps){
for(j in 1:NSteps){
SPaths[i,j+1] = SPaths[i,j]*exp(nudt + sidt*rnorm(1))
time=(NSteps-j+1)/NSteps
d1[i,j]=(log(SPaths[i,j]/K)+(mu+0.5*sigma^2)*time)/(sigma*sqrt(time))
d2[i,j]=(log(SPaths[i,j]/K)+(mu-0.5*sigma^2)*time)/(sigma*sqrt(time))
N1[i,j]=pnorm(d1[i,j])
N2[i,j]=pnorm(d2[i,j])
c[i,j]=SPaths[i,j]*N1[i,j]-K*exp(-mu*time)*N2[i,j]
QTY[i,j]=1000*N1[i,j]
}
}
qty[,1]=SPaths[,1]*QTY[,1];
price[,1]=qty[,1];
profit[,1]=(exp(mu/NSteps)-1)*price[,1];
for (i in 1:NReps){
for(j in 1:NSteps){
qty[i,j+1]=(QTY[i,j+1]-QTY[i,j])*SPaths[i,j+1]
price[i,j+1]=price[i,j]+profit[i,j]+qty[i,j+1]
profit[i,j]=(exp(mu/NSteps)-1)*price[i,j]
}
}