[Matlab]蒙特卡罗方法和二叉树方法估计期权价值的Matlab实现

最近学习了一点简单的matlab,之前打算边做边发,但是在腐国csdn很难打开,于是回来集中发一下几个代码。

环境:Matlab R2014b, 64bit.

1. 用matlab实现使用蒙地卡罗方法对期权估值
%Monte Carlo Simulation

%Option value -- Average payoff -- Payoff --  Expiry price

S0=100;
StrikePrice=100;
T=1;
sig=0.3;
r=0.05;

n=1000000;
payoff=0;
sumOfPayoff=0;
optionValue=0;
profit=0;


for i=1:n
    S_expiry = S0*exp((r-0.5*sig^2)*T+sig*T^0.5*randn);
    payoff =  max ((S_expiry - StrikePrice),0) ; %payoff different accr.
    sumOfPayoff = sumOfPayoff + payoff;
end

optionValue=exp(-r*T)*(1/n)*sumOfPayoff;

optionValue

% profit= max ((x- StrikePrice),0)-optionValue ;
% plot(profit);
要点有三:

1) 核心在于用lognormal random walk的公式预测asset在expiry的价格,S_expiry = S0*exp((r-0.5*sig^2)*T+sig*T^0.5*randn); 

2) 再用这个价格对应于各种期权各自的payoff计算公式算出价格对应的payoff,循环多次求其平均。

     这是payoff的无偏估计。

3)期权价格等于期权价值,期权价值应相当于到期日的payoff按日期discount。


你可能感兴趣的:(数据处理)