面向过程的标准欧式看涨期权二叉树定价
本帖隐藏的内容
- // by fantuanxiaot
- // by fantuanxiaot
- // 面向过程的标准欧式看涨期权二叉树定价
- // 面向过程的标准欧式看涨期权二叉树定价
- // 头文件的准备
- #include <iostream>
- #include <cmath>
- using namespace std;
- // 定义最大值的函数
- double max(double x,double y)
- {
- return(x>y?x:y);
- }
- // 定义次方的函数
- double cifang(double x,int n)
- {
- double z=1;
- if (n==0)
- {
- return(z);
- } else
- {
- while (n>=1)
- {
- z=z*x;
- n=n-1;
- }
- return(z);
- }
-
- }
- // 主函数
- int main()
- {
- // 初始价格S=10
- double S=10;
- // 目标价格K=12
- double K=12;
- // 时间是一年
- double T=1;
- // 时间共分为5期
- double N=5;
- // 年波动率定义
- double sigma=0.3;
- // 年无风险收益率r
- double r=0.03;
- // 定义二叉树矩阵算法,因为是5期
- double Matrix[6][6];
- // 定义deltaT和概率
- double deltaT, Probability, u, d;
- deltaT=T/N;
- u=exp(sigma*sqrt(deltaT));
- d=exp(-sigma*sqrt(deltaT));
- Probability=(1+r*deltaT-d)/(u-d);
- // 以上的数据准备完毕
- int i,j;
- // 二叉树末端定价
- for(i=0;i<=5;i++)
- {
- Matrix[i][5]=max(0,S*cifang(u,N-i)*cifang(d,i)-K);
- }
- // 二叉树回馈
- for(i=4;i>=0;i--)
- {
- for(j=0;j<=i;j++)
- {
- Matrix[j][i]=exp(-r*deltaT)*((1-Probability)*(Matrix[j+1][i+1])+Probability*(Matrix[j][i+1]));
- }
- }
- // 输出期权价格
- cout<<"The Call Option Pricing is "<<Matrix[0][0]<<endl;
- return 0;
- }