请选择 进入手机版 | 继续访问电脑版
楼主: fantuanxiaot
10252 84

[源码分享] [C++原创]基于C++的欧式看涨期权二叉树定价(面向过程与面向对象)[by fantuanxiaot] [推广有奖]

Ψ▄┳一大卫卍卐席尔瓦

大师

8%

还不是VIP/贵宾

-

威望
7
论坛币
-234475 个
通用积分
124.0224
学术水平
3783 点
热心指数
3819 点
信用等级
3454 点
经验
150207 点
帖子
7546
精华
32
在线时间
1327 小时
注册时间
2013-2-3
最后登录
2022-2-24

初级学术勋章 初级热心勋章 中级热心勋章 中级学术勋章 初级信用勋章 中级信用勋章 高级热心勋章 高级学术勋章 特级学术勋章 特级热心勋章 高级信用勋章 特级信用勋章

fantuanxiaot 发表于 2015-3-23 23:02:20 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

面向过程的标准欧式看涨期权二叉树定价



本帖隐藏的内容



  1. //  by fantuanxiaot
  2. //  by fantuanxiaot
  3. //  面向过程的标准欧式看涨期权二叉树定价
  4. //  面向过程的标准欧式看涨期权二叉树定价
  5. //  头文件的准备
  6. #include <iostream>
  7. #include <cmath>
  8. using namespace std;
  9. //  定义最大值的函数
  10. double max(double x,double y)
  11. {
  12.         return(x>y?x:y);
  13. }
  14. //  定义次方的函数
  15. double cifang(double x,int n)
  16. {
  17.         double z=1;
  18.         if (n==0)
  19.         {
  20.                 return(z);
  21.         } else
  22.         {
  23.                 while (n>=1)
  24.                 {
  25.                         z=z*x;
  26.                         n=n-1;
  27.                 }
  28.                 return(z);
  29.         }
  30.        
  31. }
  32. //  主函数
  33. int main()
  34. {
  35.         //  初始价格S=10
  36.         double S=10;
  37.         //  目标价格K=12
  38.         double K=12;
  39.         //  时间是一年
  40.         double T=1;
  41.         //  时间共分为5期
  42.         double N=5;
  43.         //  年波动率定义
  44.         double sigma=0.3;
  45.         //  年无风险收益率r
  46.         double r=0.03;
  47.         //  定义二叉树矩阵算法,因为是5期
  48.         double Matrix[6][6];
  49.         //  定义deltaT和概率
  50.         double deltaT, Probability, u, d;
  51.         deltaT=T/N;
  52.         u=exp(sigma*sqrt(deltaT));
  53.         d=exp(-sigma*sqrt(deltaT));
  54.         Probability=(1+r*deltaT-d)/(u-d);
  55.         //  以上的数据准备完毕
  56.         int i,j;
  57.         //  二叉树末端定价
  58.         for(i=0;i<=5;i++)
  59.         {
  60.                 Matrix[i][5]=max(0,S*cifang(u,N-i)*cifang(d,i)-K);
  61.         }
  62.         //  二叉树回馈
  63.         for(i=4;i>=0;i--)
  64.         {
  65.                 for(j=0;j<=i;j++)
  66.                 {
  67.                         Matrix[j][i]=exp(-r*deltaT)*((1-Probability)*(Matrix[j+1][i+1])+Probability*(Matrix[j][i+1]));
  68.                 }
  69.         }
  70.         //  输出期权价格
  71.         cout<<"The Call Option Pricing is "<<Matrix[0][0]<<endl;
  72.         return 0;
  73. }
复制代码





OptionPricing_1.jpg




面向对象的标准欧式看涨期权二叉树定价


本帖隐藏的内容



  1. //  基于面向对象的欧式看涨期权定价
  2. //  基于面向对象的欧式看涨期权定价
  3. //  by fantuanxiaot
  4. //  by fantuanxiaot
  5. #include <cmath>
  6. #include <iostream>
  7. using namespace std;
  8. //  定义一个CallOptionPricing的类
  9. class CallOptionPricing
  10. {
  11. private:
  12.         double T;  //  时间
  13.         int N;  //  分期
  14.         double S;  //  初始价格
  15.         double K;  //  目标价格
  16.         double sigma;  //  波动率
  17.         double r;  //  无风险利率
  18. public:
  19.         //  参数初始化,构造默认参数
  20.         CallOptionPricing(double T1=1, double N1=5, double S1=10,double K1=15,double sigma1=0.3, double r1=0.03)
  21.         {
  22.                 T=T1;
  23.                 N=N1;
  24.                 S=S1;
  25.                 K=K1;
  26.                 sigma=sigma1;
  27.                 r=r1;
  28.         }
  29.         //  定义次方函数
  30.         double cifang(double x,int n)
  31.         {
  32.         double z=1;
  33.         if (n==0)
  34.         {
  35.                 return(z);
  36.         } else
  37.         {
  38.                 while (n>=1)
  39.                 {
  40.                         z=z*x;
  41.                     n=n-1;
  42.                 }
  43.                 return(z);
  44.         }
  45.         }
  46.     double max(double x, double y)
  47.         {
  48.         return(x>y?x:y);
  49.         }
  50.         //  定义求值函数
  51.         void Price()
  52.         {
  53.                 double Matrix[100][100];
  54.             int i,j;
  55.             double Probability,u,d,deltaT;
  56.                 deltaT=T/N;
  57.             u=exp(sigma*sqrt(deltaT));
  58.             d=exp(-sigma*sqrt(deltaT));
  59.         Probability=(1+r*deltaT-d)/(u-d);
  60.             for(i=0;i<=N;i++)
  61.                 {
  62.                         Matrix[i][N]=max(0,S*cifang(u,N-i)*cifang(d,i)-K);
  63.                 }
  64.                 for(i=N-1;i>=0;i--)
  65.                 {
  66.                         for(j=0;j<=i;j++)
  67.                         {
  68.                                 Matrix[j][i]=exp(-r*deltaT)*((1-Probability)*(Matrix[j+1][i+1])+Probability*(Matrix[j][i+1]));
  69.                         }
  70.                 }
  71.                 cout<<"The Call Option Pricing is "<<Matrix[0][0]<<endl;

  72.         }
  73. };
  74. //  主函数
  75. int main()
  76. {
  77.         CallOptionPricing t1,t2(1,10,10,15,0.3,0.03),t3(1,5,10,12,0.3,0.03);
  78.         t1.Price();
  79.         t2.Price();
  80.         t3.Price();
  81.         return 0;
  82. }
复制代码



OptionPricing_2.jpg



二维码

扫码加我 拉你入群

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

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

关键词:fantuanxiaot 面向对象 NTU Ant 二叉树 include double return 二叉树 最大值

已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
kychan + 100 + 1 + 1 + 1 精彩帖子
zbin7451f + 100 + 5 + 5 + 5 对论坛有贡献
离歌レ笑 + 50 + 3 + 3 + 3 精彩帖子
Nicolle + 100 + 5 + 5 The Program Can Really Run!

总评分: 经验 + 300  论坛币 + 50  学术水平 + 14  热心指数 + 14  信用等级 + 9   查看全部评分

本帖被以下文库推荐

zhukeming 发表于 2015-3-23 23:09:34 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

学习来了,ohyeah

使用道具

fjrong 在职认证  发表于 2015-3-23 23:09:40 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

  感谢楼主分享!

使用道具

fjrong 在职认证  发表于 2015-3-23 23:10:11 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

使用道具

jerker 发表于 2015-3-23 23:10:14 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

夜间福利模式来临

使用道具

jerker 发表于 2015-3-23 23:11:26 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

我狂赞怒赞超赞,谢谢楼主,下载学习

使用道具

fantuanxiaot 发表于 2015-3-23 23:13:59 |显示全部楼层 |坛友微信交流群
jerker 发表于 2015-3-23 23:11
我狂赞怒赞超赞,谢谢楼主,下载学习
刚刚编辑了一下 现在好了

使用道具

jerker 发表于 2015-3-23 23:16:23 |显示全部楼层 |坛友微信交流群
fantuanxiaot 发表于 2015-3-23 23:13
刚刚编辑了一下 现在好了
恰恰被我发现了,哈哈

使用道具

zhukeming 发表于 2015-3-23 23:17:50 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

过几天开始来玩原创,跟上版主的节奏
已有 1 人评分论坛币 收起 理由
fantuanxiaot + 5 赶紧的嘞

总评分: 论坛币 + 5   查看全部评分

使用道具

jxnu_xx 发表于 2015-3-23 23:23:21 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

厉害

使用道具

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

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 07:31