楼主: 邵伟学经济
6241 11

用MATLAB做期权定价 哪位大侠帮忙看一下哪里出错了 [推广有奖]

  • 3关注
  • 3粉丝

已卖:314份资源

大专生

45%

还不是VIP/贵宾

-

威望
0
论坛币
601 个
通用积分
0.1800
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
792 点
帖子
34
精华
0
在线时间
27 小时
注册时间
2009-6-1
最后登录
2014-6-23

楼主
邵伟学经济 发表于 2012-4-26 11:00:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
t=0:0.001:1;%时间跨度
dt=0.001;%时间间隔
z=zeros(1001,1);%预留计算内存空间
s=zeros(1001,1);
c=zeros(1001,1);
R=zeros(1001,1);
p=0.1;%假设股票收益率满足ds/s=p*dt+sig*dZ
sig=0.29;
s(1)=15;%股票现价
r=0.035;%无风险利率
k=17;%执行价
for i=1:1000;
z(i)=dt^0.5*randn(1);
R(i)= dt*p+sig*z(i);
s(i+1)=s(i)+s(i)*R(i);
d1=(log(s(i)/k)+(r+0.5*sig^2)*(1-t(i)))/sqrt(sig^2*(1-t(i)));
d2=(log(s(i)/k)+(r-0.5*sig^2)*(1-t(i)))/sqrt(sig^2*(1-t(i)));
c(i)=s(i)*normcdf(d1,0,1)-k*exp(-r*(1-t(i)))*normcdf(d2,0,1);
end
dd1=(log(s(1001)/17)+(r+0.5*sig^2)*(1-1))/sqrt(sig*(1-t(1001))+eps);
dd2=(log(s(1001)/17)+(r-0.5*sig^2)*(1-t(1001)))/sqrt(sig*(1-t(1001))+eps);
c(1001)=s(1001)*normcdf(dd1,0,1)-k*exp(-r*(1-t(1001)))*normcdf(dd2,0,1);
plot(t,s,'b'),grid on
xlabel('时间t');ylabel('股票价格S')
hold on
line([0,1],[15,15],'color','c')
line([0,1],[17,17],'color','g')
h1=gca %获得并保留当前图形的坐标句柄
h2=axes('position',get(h1,'position'))%创建新坐标并保留,h2和h1的位置是一样的
plot(t,c,'r')
set(h2,'yaxislocation','right','color','none')
ylabel('期权价格C')
hold off

这里假设股票收益率服从带漂移的维纳过程。模拟一条股价波动轨迹,再利用布莱克-舒尔斯方程求出相应点的期权价格。
二维码

扫码加我 拉你入群

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

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

关键词:MATLAB 哪里出错了 matla atlab 期权定价 收益率 空间

回帖推荐

Chemist_MZ 发表于6楼  查看完整内容

我不知道是不是理解了你的意思,我大概看了一下,期权价格关于K的二阶导数,解析式我算了一下应该是这个: 但是他也是到期时间的函数,股价变化的同时,到期时间T也在变化,相当于,这个对数正态的方差其实是时间的函数,是在不断变化的。因为我也可以写成:我看你的程序里正态分布的方差也是变得,这样显然可能会有问题。股价服从对数正态,也是因为你均匀划分区间长度的,方差是常数。所以要画出你要的结果,你要固定到期 ...

Chemist_MZ 发表于3楼  查看完整内容

写得很不清楚我用word简单写了下这个随机微分方程的解,你参考下,希望有帮助,其他地方应该没有什么问题,我不细看了 你看到其实dlnS的漂移项应该是(u-0.5*sig^2),而不是u bless~

本帖被以下文库推荐

沙发
Chemist_MZ 在职认证  发表于 2012-4-26 12:46:10
我粗略看了一下,你的问题出在模拟股价路径的方法上。
你的做法其实是默认了这个式子成立:d(lnS)=p*dt+sig*dZ,然后你就近似用ln(St+dt)-ln(St)=p*dt+sig*dZ。左边是对数收益率然后你就用St+St*对数收益率然后得到了St+dt。

问题在于d(lnS)=p*dt+sig*dZ这个式子是错的。因为式子里有了随机项所以dS/S不能随便写成d(lnS),你用Ito公式展开d(lnS)=dS/S-0.5*(dS/S)^2,可见如果写成d(lnS)=p*dt+sig*dZ的话,就漏了后面的二阶项,造成股价预期回报率被高估。

正确的做法是这样的,其实你应该知道ds/s=p*dt+sig*dZ这个随机微分方程是有解的。解是:
St=S0exp((p-0.5*sig^2)t+sig*zt)),所以应该是St+dt=Stexp((p-0.5*sig^2)dt+sig*sqrt(dt)*e)),其中e是个标准正态。然后递推就行了。
扫头像关注公众号“二点三西格玛”衍生品定价与风险管理

藤椅
Chemist_MZ 在职认证  发表于 2012-4-26 13:07:58
写得很不清楚我用word简单写了下这个随机微分方程的解,你参考下,希望有帮助,其他地方应该没有什么问题,我不细看了

你看到其实dlnS的漂移项应该是(u-0.5*sig^2),而不是u
bless~



扫头像关注公众号“二点三西格玛”衍生品定价与风险管理

板凳
邵伟学经济 发表于 2012-4-26 16:30:41
Chemist_MZ 发表于 2012-4-26 13:07
写得很不清楚我用word简单写了下这个随机微分方程的解,你参考下,希望有帮助,其他地方应该没有什么问题, ...
非常感谢

报纸
邵伟学经济 发表于 2012-4-26 16:45:35
Chemist_MZ 发表于 2012-4-26 13:07
写得很不清楚我用word简单写了下这个随机微分方程的解,你参考下,希望有帮助,其他地方应该没有什么问题, ...
您好,不知道能不能再麻烦您一下,我在做状态价格密度的估计时遇到一个问题,想请您帮我看一下
      在B_S公式的假设下,我先用参数估计的方法得到状态价格密度的函数(是期权价格函数关于敲定价格的二阶偏导数),该假设下股价收益率服从正态分布,得到的状态价格密度也应该是一个对数正态分布,但是做出来的图形差距非常大,不知道怎么回事
%模拟B-S假设下的状态价格密度SPD:(错的)
t=0:0.001:1;%时间跨度
dt=0.001;%时间间隔
z=zeros(1001,1);%预留计算内存空间
s=zeros(1001,1);
c=zeros(1001,1);
R=zeros(1001,1);
a=zeros(1001,1);
b=zeros(1001,1);
e=zeros(1001,1);
d=zeros(1001,1);
f=zeros(1001,1);
p=0.1;%假设股票收益率满足ds/s=p*dt+sig*dZ
sig=0.29;
s(1)=15;%股票现价
r=0.035;%无风险利率
k=17;%执行价
for i=1:1000;
z(i)=sqrt(dt)*randn(1);
R(i)=exp((p-0.5*sig^2)*dt+sig*z(i));  
s(i+1)=s(i)*R(i);
d1=(log(s(i)/k)+(r+0.5*sig^2)*(1-t(i)))/sqrt(sig^2*(1-t(i)));
d2=(log(s(i)/k)+(r-0.5*sig^2)*(1-t(i)))/sqrt(sig^2*(1-t(i)));
c(i)=s(i)*normcdf(d1,0,1)-k*exp(-r*(1-t(i)))*normcdf(d2,0,1);
a(i)=(r-0.5*sig^2)*(1-t(i));
b(i)=-log(s(i)/s(1));
e(i)=2*(1-t(i))*sig^2;
d(i)=s(i)*sqrt(2*pi*(1-t(i))*sig^2);
f(i)=1/d(i)*exp((b(i)-a(i))^2/e(i));%SPD
end
dd1=(log(s(1001)/17)+(r+0.5*sig^2)*(1-1))/sqrt(sig*(1-t(1001))+eps);
dd2=(log(s(1001)/17)+(r-0.5*sig^2)*(1-t(1001)))/sqrt(sig*(1-t(1001))+eps);
c(1001)=s(1001)*normcdf(dd1,0,1)-k*exp(-r*(1-t(1001)))*normcdf(dd2,0,1);
s(1001)=s(1000)+s(1000)*R(1000);
f(1001)=1/d(1001)*exp((b(1001)-a(1001))^2/e(1001));
subplot(2,2,1),plot(t,s,'r')
subplot(2,2,2),plot(R,f,'b')
subplot(2,2,3),plot(t,c,'y')

地板
Chemist_MZ 在职认证  发表于 2012-4-26 17:58:39
邵伟学经济 发表于 2012-4-26 16:45
您好,不知道能不能再麻烦您一下,我在做状态价格密度的估计时遇到一个问题,想请您帮我看一下
      在 ...
我不知道是不是理解了你的意思,我大概看了一下,期权价格关于K的二阶导数,解析式我算了一下应该是这个: 1.JPG

但是他也是到期时间的函数,股价变化的同时,到期时间T也在变化,相当于,这个对数正态的方差其实是时间的函数,是在不断变化的。因为我也可以写成: 2.JPG 我看你的程序里正态分布的方差也是变得,这样显然可能会有问题。股价服从对数正态,也是因为你均匀划分区间长度的,方差是常数。所以要画出你要的结果,你要固定到期时间T。

还有就是,如果要看是不是对数正态,得用hist即频数图来看,不能用时间序列来看,那样看起来肯定是乱七八糟的,因为你会生成很多相同的股价,他们对应的点当然就有可能重复了,所以画出来弯弯曲曲的。

我就找出这些问题吧,你再看看~
扫头像关注公众号“二点三西格玛”衍生品定价与风险管理

7
邵伟学经济 发表于 2012-4-27 10:19:13
Chemist_MZ 发表于 2012-4-26 17:58
我不知道是不是理解了你的意思,我大概看了一下,期权价格关于K的二阶导数,解析式我算了一下应该是这个 ...
好的,谢谢你。我再仔细看一下

8
vagabondshoes 发表于 2012-4-27 11:15:51
Chemist_MZ 发表于 2012-4-26 17:58
我不知道是不是理解了你的意思,我大概看了一下,期权价格关于K的二阶导数,解析式我算了一下应该是这个 ...
Chemist 是在国内学的金融工程吗?还是在国外学?国内哪个专业?你的基础满扎实.

9
Chemist_MZ 在职认证  发表于 2012-4-27 11:39:59
vagabondshoes 发表于 2012-4-27 11:15
Chemist 是在国内学的金融工程吗?还是在国外学?国内哪个专业?你的基础满扎实.
过奖过奖~我现在是国内本科大四,我是我们学校实验班的,其实就是经济学和金融学两个专业,然后现在申请到美国学校去学习金融工程。
扫头像关注公众号“二点三西格玛”衍生品定价与风险管理

10
sunshine216 发表于 2012-12-29 18:02:52
楼主,关于matlab期权定价的,能否推荐什么书呢,最近要做这方面的事情

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

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2026-1-8 10:57