学习matlab小结(1)-monte carlo & binomial method-2015.08.18
来源:互联网 发布:淘宝蓝海产品 编辑:程序博客网 时间:2024/04/28 11:14
最近学习了一点简单的matlab,之前打算边做边发,但是在腐国csdn很难打开,于是回来集中发一下几个代码。
环境:Matlab R2014b, 64bit.
1. 用matlab实现使用蒙地卡罗方法对期权估值
%Monte Carlo Simulation%Option value -- Average payoff -- Payoff -- Expiry priceS0=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;endoptionValue=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。
2. binomial method对期权估值
%BinomialMethod%Case p=0.5%initializeE=40;T=3;M=4096;m=M+1;dt=T/M;S=zeros(m);S(1,1)=50; V=zeros(m);%setting parametersp=0.5;r=0.05;sig=0.5;%step 1d = exp(r*dt)*(1-sqrt(exp(sig*sig*dt)-1));u = exp(r*dt)*(1+sqrt(exp(sig*sig*dt)-1));%step 2for i=2:m for j=1:i S(j,i)=(d^(i-j))*(u^(j-1))*S(1,1); endend% S%step 3 for j=1:m V(j,m)= max(E-S(j,m),0); end% V %step 4for i=(m-1):(-1):1 for j=i:(-1):1 V(j,i)=exp((-r)*dt)*(p*V(j+1,i+1)+(1-p)*V(j,i+1)); endendV(1,1)
这是一个欧式普通,binomial模型仅仅是提供一个大概的估值,不精准,就像是一棵深度为时间T的二叉树,每个结点向左和向右的概率确定且每个结点此概率相等,求到达各叶子结点的概率。
再上一个美式:
%BinomialMethod%with dividend and use case u=1/d%initializeE=9.5;T=3;M=3;m=M+1;dt=T/M;S=zeros(m);S(1,1)=10; V=zeros(m);%setting parametersr=0.05;sig=0.3;%for dividendD0=0;mu=r-D0;%step 1A=0.5*(exp((-mu)*dt)+exp((mu+sig*sig)*dt));d=A-(A*A-1)^0.5;u=A+(A*A-1)^0.5;p=(exp(mu*dt)-d)/(u-d);%step 2for i=2:m for j=1:i S(j,i)=(d^(i-j))*(u^(j-1))*S(1,1); endend%step 3 for j=1:m V(j,m)= max(E-S(j,m),0); end %step 4for i=M:(-1):1 for j=i:(-1):1 V(j,i)=max(E-S(j,i),exp((-r)*dt)*(p*V(j+1,i+1)+(1-p)*V(j,i+1))); endendV(1,1)
可以见到其实它分为两种case,都是为了帮助确定参数d,u,p的值,因为两条方程求三个参数就必须增加多一个条件。
case 1是p=0.5, case 2是u=1/d, 在step 1中套用各自公式算出d, u, p.
step 2算出到期日asset的价格。这是一棵满二叉树,所以有2^T个叶子结点,每个叶子结点对应一个asset价格(上涨了k次,下跌了T-k次),用二项式简单求出。
step 3求叶子结点对应的payoff,然后step 4按日期和上升下降概率往前discount直至t=0日为这个期权的现值,即价格。
0 0
- 学习matlab小结(1)-monte carlo & binomial method-2015.08.18
- Monte Carlo method
- Monte Carlo Method
- monte carlo(matlab)
- Monte Carlo Method for simulation
- 蒙特卡罗方法 Monte Carlo method
- Computing PI using Monte Carlo method
- 蒙特卡罗方法(Monte Carlo method)
- 蒙特卡罗方法(Monte Carlo method)
- 蒙特卡洛方法(Monte Carlo Method)
- Monte Carlo
- 【强化学习】MCTS (Monte Carlo Tree Search)
- 蒙特卡罗方法(Monte Carlo method)浅入
- Monte Carlo method——现代工程支柱
- Markov Chain Monte Carlo(1)
- R语言与Markov Chain Monte Carlo(MCMC)方法学习笔记(1)
- Monte Carlo Simulation technique
- 蒙特卡罗(Monte Carlo)方法
- vps建站及相关知识整理
- bzoj 2594
- atitit.js 与c# java交互html5化的原理与总结.doc
- beatbox最终版本
- 关于C++函数调用的那些事儿
- 学习matlab小结(1)-monte carlo & binomial method-2015.08.18
- HashMap的用法
- 黑马程序员_Java入门及基础语法上
- Maven学习 (四) 使用Nexus搭建Maven私服
- HDU 3342 Legal or Not(强连通)
- Maven学习 (五) Elipse中发布一个Maven项目到Tomcat
- Maven学习 (六) 搭建多模块企业级项目
- 为什么GUI框架都使用单线程
- Oracle Coherence中文教程十二:配置高速缓存