楼主: Freddy0110
11705 103

[源码分享] [原创]基于C++编程的集合(等差数列求和/现金流现值计算/麦考劳林级数/股票收益与回报   [推广有奖]

  • 0关注
  • 6粉丝

讲师

94%

还不是VIP/贵宾

-

威望
1
论坛币
3882 个
通用积分
4.5503
学术水平
55 点
热心指数
52 点
信用等级
38 点
经验
2732 点
帖子
466
精华
1
在线时间
201 小时
注册时间
2014-8-18
最后登录
2021-2-5

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币


    金融市场中信息万变,C++作为编程语言,具有编译速度快,编程灵活等特点,深受金融工程人士喜爱。
    本贴运用C++语言,编制数学公式、金融函数、以及投资实战分析程序,均属原创代码,在之前的帖子分别发布过,此处做一个集合,供广大量化投资爱好者们研究和学习。

具体内容如下:




1.公差为1的等差数列求和(Arithmetic Series

    等差数列求和公式:设公差为d,
    第n项:an = 1 + (n-1)d
    前n项求和公式:Sn = na1 + n(n - 1)d/2;当d = 1时:Sn = (a1 + an)n/2
(程序中假设公差为1)


本帖隐藏的内容

  1. // 等差数列求和    -by Freddy  
  2. #include <iostream>
  3. #include<cmath>
  4. using namespace std;

  5. int sum;
  6. int i;
  7. int n;


  8. int main(){

  9. cout<<"In order to calculate: '1+2+3+...+n', please input the value of n"<<endl;
  10. cin>>n;

  11. for(i=1;i<=n;i++){sum+=i;}


  12. cout<<endl<<"1+2+3+...+"<<n<<" = "<<sum;

  13. return 0;

  14. }
复制代码



2.现金流现值计算(Present Value of Cash Flow)
    未来现金流现值:每一期发生在未来的现金流的贴现金额的总和。
    公式:PV = ∑ⁿ t=1 Ct/(1 + r)^t
(程序中假设未来现金流Ct为恒定值)


本帖隐藏的内容

  1. //现金流现值的计算   -by Freddy
  2. #include<iostream>
  3. #include <cmath>

  4. using namespace std;
  5.         
  6. main(){
  7.         double Ct=0.0, r= 0.0; double PV = 0.0;
  8.         int T = 0;
  9.         cout<<"Input the stream of payments  Ct:\n";
  10.         cin>>Ct;
  11.         cout<<"Input the interest rate r:\n";
  12.         cin>>r;
  13.     cout<<"Input the year of payment T:\n";
  14.     cin>>T;
  15.    
  16.    

  17.          for(int t=1; t<=T; t++){
  18.             PV+=Ct/pow(1.0+r,t);
  19.         }
  20.         cout<<"The present value is\n";
  21.         cout<<PV;
  22.          
  23.          return 0;
  24. }
复制代码



3.麦考劳林级数(Maclaurin Series)
    B(a,r) 是欧几里得空间RN中的,ƒ 是定义在B(a,r) 的闭包上的实值函数,并在每一点都存在所有的n+1 次偏导数。这时的泰勒公式为:
ex =1 + X/1!+ X2/2! + X3/3! + ···,  -∞ < X < +∞
    麦考劳林级数是泰勒级数的特殊形式,程序中对基础泰勒级数公式进行了变形
公式:Sum =11/2! + 1/3! 1/4!+ . . . ±1/n!


本帖隐藏的内容

  1. Sum=1 – 1/2! +1/3! −1/4! + . . . ±1/n!
  2. // 关于麦考劳伦级数的  —by Freddy  
  3. #include <iostream>
  4. #include <cmath>

  5. using namespace std;

  6. int factorial(int n)
  7. {
  8.         int fact = 1;
  9.         if (n>0){
  10.                 for (int i=1;i<=n;i++){
  11.                         fact*=i;
  12.                 }
  13.         }
  14.         return fact;
  15. }

  16. double _sum(int n)
  17. {
  18.         double sum = 1.0;
  19.         if (n>1){
  20.                 for (int i=1;i<n;i++){
  21.                         sum+=pow(-1,i)/factorial(i+1);
  22.                 }
  23.         }
  24.         return sum;
  25. }


  26. int main(){
  27.         int n = 0;
  28.         cout << "Input the value of n \n";
  29.         cin >> n;
  30.         double sum = _sum(n);
  31.         cout << "The value of the series is\n";
  32.         cout << sum;
  33.         
  34.         return 0;
  35. }
复制代码




4.股票收益与回报分析(Analysis of Stocks: Risk and Return)
    在股票投资分析技术里,衡量股票投资与回报的工具有很多,其中最常用的是平均回报率(均值μ)和平均波动率(标准差σ)。平均回报率越高说明股票在对应时期内收益越高,标准差越大则说明股票波动越大风险越大。反之,平均回报率越小收益越低,标准差越小波动风险越小。
    程序选取了中国银行(601988)于2014年11月14日至2015年2月13日期间的股票日均回报率作为分析对象(数据在txt文件里),数据来源于yahoo finance.投资爱好者们可通过同花顺,通达信等软件导出数据作为分析对象。

本帖隐藏的内容

  1. //中国银行股票投资回报与风险分析  -by Freddy
  2. #include <iostream>
  3. #include <fstream>
  4. #include <vector>
  5. #include <cmath>

  6. using namespace std;
  7. vector<double> x;


  8. double mx_fun(vector<double> x, double mx)
  9.    { mx=0.0;
  10.      for (int i=0;i<x.size();i++){
  11.                 mx+=x[i]/x.size();
  12.         }
  13.         return mx;
  14.    }
  15.    
  16.     double vx_fun(vector<double> x, double vx, double mx)
  17.     { vx=0.0;
  18.          for (int i=0;i<x.size();i++){
  19.                 vx+=pow(x[i]- mx_fun(x,mx),2)/(x.size()-1);
  20.          }
  21.         return vx;
  22.     }  
  23.    
  24.    
  25.    
  26. int main(){
  27.                 ifstream source1("bank of china.txt");
  28.         
  29.         double a;
  30.         if (source1.is_open()){
  31.                 while(!source1.eof()){
  32.             source1 >> a;
  33.                         x.push_back(a);
  34.                 }
  35.                 source1.close();
  36.         }
  37.         double beta=0.0,mx=0.0, my=0.0,vx=0.0,vy=0.0;
  38.         
  39.         
  40.         double mean= mx_fun(x, mx);
  41.         double var=vx_fun(x,vx, mx);
  42.    
  43.    
  44.     double sdv=sqrt(var);
  45.         
  46.         cout<< "The average return of Bank of china is : " << mean<<endl;
  47.         cout<<"The volatility(standard deviation) of Bank of china is : "<< sdv <<endl;


  48.         
  49.         return 0;
  50.         
  51. }
复制代码



   附件是C++程序源代码。


复制粘贴到C++编译器(Dev)即可运行。


程序仅用于学术交流,不作为商业用途。


程序如有编得严谨的地方,敬请指点。


此外,同一目标可以有多种方法和思路.


朋友们若有更先进更简洁的算法,欢迎留言交流。



本帖隐藏的内容

C 编程系列 -Freddy.zip (34.01 KB, 需要: 5 个论坛币)


111.jpg













二维码

扫码加我 拉你入群

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

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

关键词:等差数列求和 等差数列 股票收益 现值计算 现金流 编程 等差数列 现金流 麦考劳伦级数 股票投资分析

回帖推荐

Freddy0110 发表于80楼  查看完整内容

不懂也没有关系,股票收益回报那个程序你把txt文件里头的股票数据改成自己想要的数据,一样能分析出结果,文件名不要改。
已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Nicolle + 100 + 5 + 5 精彩帖子
离歌レ笑 + 50 + 2 精彩帖子
fantuanxiaot + 25 + 32 + 3 + 3 + 3 精彩帖子

总评分: 经验 + 125  论坛币 + 82  学术水平 + 10  热心指数 + 8  信用等级 + 3   查看全部评分

本帖被以下文库推荐

经历是一笔财富
沙发
Edwardliu 在职认证  发表于 2015-2-15 21:19:18 |只看作者 |坛友微信交流群
已有 1 人评分经验 收起 理由
fantuanxiaot + 15 精彩帖子

总评分: 经验 + 15   查看全部评分

使用道具

藤椅
Freddy0110 发表于 2015-2-15 21:36:26 |只看作者 |坛友微信交流群
帮忙编辑了这么多 也是辛苦版主了顶贴送1论坛币好了
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 25 + 10 + 3 + 3 + 3 精彩帖子

总评分: 经验 + 25  论坛币 + 10  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

板凳
Freddy0110 发表于 2015-2-16 10:04:35 |只看作者 |坛友微信交流群
这么快精华,谢啦
已有 1 人评分论坛币 收起 理由
fantuanxiaot + 1 精彩帖子

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

使用道具

报纸
leonacui 学生认证  发表于 2015-2-16 10:41:26 |只看作者 |坛友微信交流群
感谢楼主~我要好好学习c++ ^^
已有 2 人评分论坛币 收起 理由
Freddy0110 + 1 鼓励积极发帖讨论
fantuanxiaot + 3 精彩帖子

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

使用道具

地板
ppbb 发表于 2015-2-16 10:45:03 |只看作者 |坛友微信交流群
学习一下~
已有 2 人评分经验 论坛币 收起 理由
Freddy0110 + 1 精彩帖子
fantuanxiaot + 5 精彩帖子

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

使用道具

7
Crsky7 发表于 2015-2-16 10:47:57 |只看作者 |坛友微信交流群
[原创]基于C++编程的集合(等差数列求和/现金流现值计算/麦考劳林级数/股票收益与回报
已有 2 人评分论坛币 收起 理由
Freddy0110 + 1 精彩帖子
fantuanxiaot + 3 精彩帖子

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

使用道具

8
wnh728 发表于 2015-2-16 10:52:31 |只看作者 |坛友微信交流群
基于C++编程的集合(等差数列求和/现金流现值计算,好软件,谢谢楼主资源共享!
已有 2 人评分论坛币 收起 理由
fantuanxiaot + 1 精彩帖子
Freddy0110 + 1 鼓励积极发帖讨论

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

使用道具

9
perl-fe 发表于 2015-2-16 10:57:49 |只看作者 |坛友微信交流群
Recommend you guys for the R - a console interactive lang. like Perl.
we donnot need to reinvent the wheel.
))
已有 2 人评分论坛币 收起 理由
fantuanxiaot + 2 精彩帖子
Freddy0110 + 1 好的意见建议

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

使用道具

10
zxn2011 发表于 2015-2-16 11:10:09 |只看作者 |坛友微信交流群
great!up!thanks!
已有 2 人评分论坛币 收起 理由
fantuanxiaot + 2 精彩帖子
Freddy0110 + 1 鼓励积极发帖讨论

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

使用道具

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

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

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

GMT+8, 2024-4-26 10:46