全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Gauss专版
2334 4
2011-06-09
可不可以幫我看看我的code  ,當s1=40;s2=40;k=30;sig1=0.2;sig2=0.3;p12=0.5;r=0.05;t=0.5833;q1=0.02;q2=0.03; Cmax應該是要13.4800
可是怎麼寫都不對 ,可能是二元常態裡變數問題,我順便附上題目和原本PAPER的PDF檔給大家看看
謝謝各位^ ^






new;
cls;
s1=40;
s2=40;
k=30;
sig1=0.2;
sig2=0.3;
p12=0.5;
r=0.05;
t=0.5833;
q1=0.02;
q2=0.03;

{cal1}=bs(s1,k,r,t,sig1,q1);
print "cal1" cal1;
{cal2}=bs(s2,k,r,t,sig2,q2);
print "cal2" cal2;
{Cmin}=bsm(s1,s2,k,r,q1,q2,sig1,sig2,p12,t);
print "Cmin" Cmin;
Cmax=cal1+cal2-Cmin;
print "Cmax" Cmax;
end;
proc(1)=bs(s,k,r,t,sig,q);
local d1,d2,cal;
  d1=(ln(s./k)+(r+(sig.^2)./2).*t)./(sig.*sqrt(t));
  d2=d1-sig.*sqrt(t);
  cal=s.*cdfn(d1)-k.*(exp(-(r-q).*t)).*cdfn(d2);
retp(cal);
endp;
proc(1)=bsm(s1,s2,k,r,q1,q2,sig1,sig2,p12,t);
local d11,d22,vari,A1,A2,B1,B2,C1,C2,Cmin;
  d11=(ln(s1/k)+(r-q1-(sig1^2)/2)*t)/(sig1*sqrt(t));
  d22=(ln(s2/k)+(r-q2-(sig2^2)/2)*t)/(sig2*sqrt(t));
  vari=(sig1^2)+(sig2^2)-2*p12*sig1*sig2;
  A1=d11+sig1*sqrt(t);
  A2=d22+sig2*sqrt(t);
  B1=(ln(s1/s2)+(q1-q2-(vari/2))*t)/(sqrt(vari)*sqrt(t));
  B2=(ln(s2/s1)+(q2-q1-(vari/2))*t)/(sqrt(vari)*sqrt(t));
  C1=(p12*sig2-sig1)/sqrt(vari);
  C2=(p12*sig1-sig2)/sqrt(vari);
Cmin=s1*exp(-q1*t)*cdfbvn(A1,B1,C1)+s2*exp(-q2*t)*cdfbvn(A2,B2,C2)-k*exp(-r*t)*cdfbvn(d11,d22,C2);
retp(Cmin);
endp;
附件列表
未命名2.png

原图尺寸 71.39 KB

未命名2.png

二维码

扫码加我 拉你入群

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

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

全部回复
2011-6-10 13:44:33
cal1       10.564337
cal2       10.697029
Cmin       7.8637767
Cmax       13.397589
再思考思考,是什么原因呢?
二维码

扫码加我 拉你入群

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

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

2011-6-10 17:10:05
麻煩老師指點,謝謝您
二维码

扫码加我 拉你入群

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

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

2011-6-11 16:40:12
原文中CBS(.) are Black-Scholes formulas for European call options,
楼主您是不是把CBS(.) 的公式编成美式期权呢?
另外,楼主您为什么不用Gauss中就有的公式呢?
EuropeanBSCall

Purpose

European Black and Scholes Call.

Format

c = EuropeanBSCall(S0,K,r,div,tau,sigma);

Input


S0
scalar, current price

K
Mx1 vector, strike prices

r
scalar, risk free rate

div
continuous dividend yield

tau
scalar, elapsed time to exercise in annualized days of trading

sigma
scalar, volatility


Output


c
Mx1 vector, call premiums


Example

S0 = 718.46;

K = { 720, 725, 730 };

b = .0498;

r = .0498;

sigma = .2493;

t0 = dtday (2001, 1, 30);

t1 = dtday (2001, 2, 16);

tau = elapsedTradingDays(t0,t1) / annualTradingDays(2001);

c = EuropeanBSCall(S0,K,r,0,tau,sigma);

print c;



17.0975

14.7583

12.6496

Source

finprocs.src
二维码

扫码加我 拉你入群

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

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

2011-6-11 16:41:18
如果以上错误不是,那估计就是楼主在什么少输了变量或语法错误
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群