楼主: vicente11
4851 2

[原创博文] sas 看涨期权蒙特卡洛模拟方法定价代码编制问题 高手请入 [推广有奖]

  • 0关注
  • 0粉丝

本科生

6%

还不是VIP/贵宾

-

威望
0
论坛币
473 个
通用积分
0.4200
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
897 点
帖子
64
精华
0
在线时间
62 小时
注册时间
2008-3-31
最后登录
2016-6-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
此处 t 代表行权时间
r代表连续复利收益率    sig 波动率      m代表模拟m次      n代表每次模拟n步
div代表连续股利收益率
我下面提供的是部分欧式看涨期权的蒙特卡洛模拟的核心代码  如有问题请纠正
但是我本人sas初学 但知道其有强大的分析和作图功能
请高手将我的代码丰富下 能够实现图像形式的股价模拟路径 非常感谢



dt = t/n;                                                                                                                           
nudt = (r-div-0.5*sig^2)*dt;                                                                                                         
sigsdt = sig*sqrt(dt);                                                                                                               
lns = ln(s);                                                                                                                                                                                                                                      
sum_CT = 0;                                                                                                                          
sum_CT2 = 0;                                                                                                                           
do  j = 1 to M;     *for each simulation;                                                                                            
lnst = lns;                                                                                                                           
  do i = 1 to  N ;     *for each time step;                                                                                       
  X=rannor(0);                                                                                                                     
  lnst=lnst+nudt+sigsdt*x;   *evolve the stock price;                                                                              
  end;                                                                                                         

ST = exp(lnst);                                                                                                                     
CT = max{0,ST-K};                                                                                                                    
sum_CT = sum_CT + CT;                                                                                                                 
sum_CT2 = sum_CT2 + CT*CT;                                                                                                            
end;     

call_value = sum_CT/M*exp(-r*t);                                                                                                  
SD = sqrt((sum_CT2 - sum_CT*sum_CT/M)*exp(-2*r*T)/(M-1));                                                                             
SE = sd/sqrt(M);
二维码

扫码加我 拉你入群

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

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

关键词:蒙特卡洛模拟 蒙特卡洛 蒙特卡 Simulation 连续复利收益率 蒙特卡洛 收益率

沙发
suzhzh 发表于 2010-7-23 22:32:33 |只看作者 |坛友微信交流群
学习了。真的是知识的海洋

使用道具

藤椅
cz851218 发表于 2010-7-25 21:58:47 |只看作者 |坛友微信交流群
个人观点:
你上面想实现M次模拟的结果然后对这模拟值求平均在得到看涨期权价格,但是我觉得你选择的是同一个种子产生随机正态分布数,这样实际上是一个程序,还有你想得到这个价格的路径值,你可以在程序里面加上OUTPUT来产生,但是下面的程序就不是这样了,以下是一个看涨看跌期权的蒙特卡洛模拟:
proc iml;
s0=j(10000,1,100);
x=100;
t=1;
n=250;
sigma=0.1;
rf=0.05;
m=10;
yeild=j(nrow(s0),n,.);
s=j(nrow(s0),n,.);
call=j(nrow(s0),1,.);
put=j(nrow(s0),1,.);
result=j(m,2,.);
do k=1 to m;
do i=1 to nrow(yeild);
do j=1 to ncol(yeild);
yeild[i,j]=(rf-0.5*sigma**2)*t/n+sigma*sqrt(t/n)*rannor(round(k+exp(k),1));
s[i,j]=s0[i]*exp(yeild[i,1:j][,+]);
end;
end;
do i=1 to nrow(s0);
call[i]=max(s[i,n]-x,0);
put[i]=max(x-s[i,n],0);
end;
result[k,1]=call[:,]*exp(-rf*t);
result[k,2]=put[:,]*exp(-rf*t);
end;
print result;
quit; 可以具体研究下!

使用道具

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

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

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

GMT+8, 2024-5-6 17:57