Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助!

相信有很多小伙伴在平时的金融数据分析中肯定有遇到需要计算股票每日的收益率的情况,那么如何通过python来计算股票的收益率呢?

就比如你今天有20元钱的股票,明天股票变成了30元钱,那么你的收益率就是(30-20)/ 20 = 0.5,这就是简单收益率的计算方法。

下面我们通过实际的股票收盘价以及python代码来实现股票每日收益率的计算:

1.简单收益率的计算

还是先读入股票收盘价数据:

import pandas as pd
data = pd.read_excel('万得全A收盘价.xlsx',index_col=[0],parse_dates=[0])
data

下面计算股票每日收益率,我们通过pct_change方法就可以实现股票每日收益率的计算,pct_chage函数的作用是用于:表示当前数据与先前数据的相差百分比,其中可以指定periods=n,表示当前数据与先前n个数据的相差百分比。

data['万得全A每日收益率'] = data['close'].pct_change(1)

我们看看结果,相当于给我们新增了一列用于存放收益率:

 2.对数收益率的计算

其实在金融分析中计算股票每日收益率的方法除了简单收益率外还有一种方法:对数收益率。两者是有一定的区别的,简单收益率是用于描述相邻两个价格的变化率,而对数收益率是指所有价格取对数之后,两两之间的差值。

就比如你今天有20元钱的股票,明天股票变成了30元钱,那么你的简单收益率就是(30-20)/ 20 = 0.5,你的对数收益率就是ln(30)-ln(20) = in(30/20) = 0.41。

那么为什么会存在对数收益率这种表达形式呢?因为对数收益率是具有可加性的。如果你计算了5天的对数收益率,你想得到第5天相对于第1天的绝对收益率,那么你可以直接把这五天的对数收益率进行累加就可以得到,其累加之和就是股票在期末的净值,也就是第5天收盘价相对于第1天收盘价的倍数。

具体代码如下:

data['万得全A每日对数收益率'] = np.log(data['close'] / data['close'].shift(1)) #np.log什么都不写代表自然对数
## 或者
data['万得全A每日对数收益率1'] = np.log(data['close']).diff(1)

看看结果,后两列数据是完全相同的:

3.进一步讨论对数收益率的可加性用于计算净值

在我的前面的文章中有介绍股票净值的计算:python金融分析小知识(21)——如何计算股票、基金的收益净值曲线并通过python绘制 那么我们其实也可以利用对数收益率的可加性来计算净值,代码如下:

# 将对数收益率列进行求和(累加)
data[['万得全A每日对数收益率']].sum().apply(np.exp)

结果如下,我们可以看出累加后的对数收益率为2.255073:

万得全A每日对数收益率    2.255073
dtype: float64

那么这个时候我们股票的净值是多少呢?我们直接用期末的收盘价 / 期初的收盘价:

我们发现这两个结果其实是一样的, 也就是说我们可以直接对数收益率进行累加,其累加之和就是股票在期末的净值,也就是期末的收盘价相对于期初的收盘价的倍数。

接下来我们试着通过计算对数收益率,来得到股票的每日净值,乘以1代表净值从1开始:

data['万得全A累计收益——对数'] = 1*data[['万得全A每日对数收益率']].cumsum().apply(np.exp)

这也就意味着,如果我们从2013-01-07起手中一直持有“万得全A”这支股票,那么直到2022-04-08这一天,我们在一开始手里的1元钱就会变成如今的2.255元钱!

4.进一步讨论简单收益率用于计算净值

简单收益率计算净值其实是一个累乘的过程,也就是 P0(1+R)^t = Pt,其中R为每日收益率,t代表有多少日,代码里面乘以1代表净值从1开始:

data['万得全A累计收益'] = 1*(data['万得全A每日收益率']+1).cumprod(axis = 0)

我们看看结果,结果包括股票的每日净值,可以发现采用简单收益率计算净值其最后得到的结果也是2.255073,和上面采用对数收益率计算结果一样:

总结:通过对数收益率和简单收益率我们都可以进行股票净值的计算,两种方法计算结果一样,这也就意味着,如果我们从2013-01-07起手中一直持有“万得全A”这支股票,那么直到2022-04-08这一天,我们在一开始手里的1元钱就会变成如今的2.255元钱!

最后我们汇总一下结果:

好啦,今天的文章就分享到这里啦!

python金融分析小知识(25)——如何计算股票每日的收益率并进一步计算净值相关推荐

  1. python金融分析小知识(21)——如何计算股票、基金的收益净值曲线并通过python绘制

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 今天给大家讲讲如何计算股票或者基金的净值曲线, ...

  2. python金融分析小知识(22)——时间序列之Timestamp对象的处理

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 在我的这篇文章中我有介绍到时间序列中的Tims ...

  3. python金融分析小知识(30)——比较常见的pd.set_option的使用

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 哈喽大家好,今天我要给大家讲讲在pandas的 ...

  4. python金融分析小知识(12)——python爬虫工具xpath使用

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 本篇文章紧接上一篇文章,python金融分析小 ...

  5. python金融分析小知识(38)——Jupyter Notebook更改文件路径

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 大家好,好久不见我又来啦!今天要给大家分享的小 ...

  6. python金融分析小知识(14)——matplotlib多子图绘制(结合股票收盘价数据)

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 今天给大家讲解一下我平时在进行数据可视化的时候 ...

  7. python金融分析小知识(34)——年化收益率、年化波动率以及夏普比率的计算

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 大家好呀 好久不见!最近忙的事情太多了 没来得 ...

  8. python金融分析小知识(27)——如何通过python连接Wind(万得)数据库

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 今天要个大家讲的是一个十分重要的知识,在我们平 ...

  9. python金融分析小知识(19)——NLP初探之LDA话题建模

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 让机器帮助我们在海量的文本中快速找到关键信息, ...

  10. python金融分析小知识(35)——最大回撤的计算

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 今天就给大家讲讲在进行量化策略回测结果分析的时 ...

最新文章

  1. 即构推出小程序连麦直播方案,与iOSAndroid APP互通连麦!
  2. Cocos2d-x v2.2.2版本+Win7+VS2010环境搭建
  3. 在容器上构建持续部署,这份超详细实践指南不要错过!
  4. 计算机专业还用考计算机等级考试吗,计算机计算与软件考试-计算机毕业相当于全国计算机等级考试几级?我 – 手机爱问...
  5. SQL数据库调优之性能监视篇
  6. java获取泛型的类型_Java反射获取泛型类型
  7. 事务(进程 ID )与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务...
  8. 《架构即未来》中最常用的15个架构原则
  9. 四大障碍将阻止或减缓广电发展宽带业务
  10. 532. 数组中的K-diff数对
  11. 联想9439微型计算机拆机,e43a 拆解文章.docx
  12. ERP实施项目主体计划模板
  13. 金融时间序列及Matlab实现
  14. IPHONE屏幕大小,分辨率解析
  15. 数据库和SpringBoot
  16. 德莱联盟(判断两点是否相交 nyist)
  17. 菜鸟浅谈自己学习Java过程的经历
  18. Unity Shader学习-高光反射
  19. 服务器主体信息截图,puppeteer实现线上服务器任意区域截图
  20. 40vf什么意思_LED 的基本术语VF、IV、WL、IR 解释及光通量换算...

热门文章

  1. 想做合格的产品经理,你需要这个证书
  2. 文件右键点击打开方式后没有始终使用此应用打开该文件的勾选框
  3. 使用 TimeGAN 建模和生成时间序列数据
  4. Qt-QtDesigner插件编写
  5. Java第四课:用类描述CPU速度和HardDisk容量
  6. Hadoop 核心原理(贼全面)
  7. ff写法 图片_花体f怎么写
  8. java技术栈是指什么,值得一读!
  9. 微信小程序的测试方法
  10. 国内主要安全产品及厂商汇总