1287 1

[问答] 代码中最后一个循环只跑了一遍就停止了,请问怎么解决? [推广有奖]

  • 0关注
  • 0粉丝

小学生

78%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
40 点
帖子
1
精华
0
在线时间
17 小时
注册时间
2016-12-9
最后登录
2021-5-18

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

本人也是刚接触代码,这也是第一次写,比较简陋,请见谅。问题是最后一个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]

  }

}


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:第一次

沙发
testgroup 发表于 2019-3-27 17:22:40 |只看作者 |坛友微信交流群
谱尼测试是一家专业的第三方检测公司

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-9-20 06:21