期权在matlab中的论文,[转载]期权定价的Matlab实现(以欧式看涨期权为例)

二叉树模型

考虑到欧式期权的特性,忽略中间过程,直接关注末期状态及其概率分布。

function price=bino(s,k,r,t,v,n)

dt=t/n;

u=exp(v*sqrt(dt));

d=1/u;

p=(exp(r*dt)-d)/(u-d);

for i=0:n

st(i+1)=s*power(u,n-i)*power(d,i);

prob(i+1)=nchoosek(n,i)*power(p,n-i)*power((1-p),i);

end

f=max(st-k,0);

price=prob*f'*exp(-r*t);

end

蒙特卡洛模拟

在此加入对偶变量,减小模拟结果的方差。

%Advanced Monte Carlo method

function eucall=blsmca(s,k,r,t,v,n)

randn('seed',0);

nt=(r-.5*v^2)*t;

sit=v*sqrt(t);

rand=randn(n,1);

discpayoff=exp(-r*t)*max(0,s*exp(nt+sit*rand)-k);

discpayoffl=exp(-r*t)*max(0,s*exp(nt+sit*(-rand))-k);

[eucall,varprice,ci]=normfit([discpayoff;discpayoffl]);

end

有限差分方法

在此为了减小运算量,采用显示有限差分法。(在隐式有限差分法中,需要求解方程)

function mx=fd(s,k,r,t,v)

smax=200;

ds=5;

dt=t/10;

M=round(smax/ds);

N=round(t/dt);

ds=smax/M;

dt=t/N;

mx=zeros(M+1,N+1);

mx(:,1)=smax:-ds:0;

mx(:,N+1)=max(mx(:,1)-k,0);

mx(1,2:N)=smax-k;

mx(M+1,2:N)=0;

vj=2:M;

a=1/(1+r*dt)*(-1/2*r*vj*dt+1/2*v^2*vj.^2*dt);

b=1/(1+r*dt)*(1-v^2*vj.^2*dt);

c=1/(1+r*dt)*(1/2*r*vj*dt+1/2*v^2*vj.^2*dt);

for i=N:-1:2

for

j=2:M

mx(j,i)=a(i)*mx(j-1,i+1)+b(i)*mx(j,i+1)+c(i)*mx(j+1,i+1);

end

end

end

另外,MATLAB中的blkprice函数和blsprice函数算出来得期权价值相差较大,个人觉得布莱克近似模型的有效性值得商榷。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值