今日要闻!复权不复权,天差与地别 | 如何最准确的计算股票前后复权价(附代码)

2022-12-01 05:33:30    来源:邢不行    

经常有朋友问我 股票复权 相关的问题。

同学们的提问


(资料图片)

通过这些提问,我发现大家对复权是真的不了解,比如:

1 复权是什么,前复权、后复权又是什么?

2 到底怎么计算准确的复权价?

3 不同软件的复权价怎么不一致?

4 期货数据需要复权吗?

………………

本文就针对这些问题,完完整整的讲清楚股票 复权的所有细节。 并附上计算代码,尽量让大家能100%理解。

01 暴跌的股价

我们从两个案例开始:

xx药业4月17日暴跌39.29%

xx科技4月9日暴跌46.83%

上面两只股票在一天内的跌幅都 远超过了A股10%的限制 。暴跌的当天发生了什么?

我查了一下这两家企业在当天的公告:

xx药业公告

分红 :每10股派1.35元。

转增 :每10股转增6股。

xx科技公告

分红 :每10股派5元。

转增 :每10股转增8股。

什么是分红和转增?它们又是怎么影响股价的?我举两个例子说明。

1 分红案例

分红就是派发现金,A公司每10股派10元,意味着你每持有10股股票,就会给你10元现金。

假设你在分红前持有A公司股票10000股,每股股价10元,分红前你的总资产是10万元。

分红后会变成什么样呢?看下图:

分红后首先你额外得到了1万元的现金,但别开心的太早,你持有股票的股价也会 自动从10元调整 为9元。

因为 股价反映了公司的价值 ,公司把一部分钱分给你了,价值自然就变低了。

所以 你的总资产还是10万元(9万元股票+1万现金),并未发生变化

而股价从10元变为9元,表面上看跌了10%,但你的总资产并未亏损,所以并不能认为股价下跌10%,真实涨跌幅应该是0%。

2拆股的案例

再来看一个拆股的案例:特斯拉在今年6月的公告中称,要对公司股票进行拆分,把原来的1股拆成5股。

特斯拉拆股当日K线

拆股和转增股份差不多,都会让整体股票变多。

假设在拆股的前一天,你持有1万股的特斯拉,每股价格2200元,那总价值就是2200万。拆股之后会有什么变化呢?看下图:

拆股之后,你手上持有的特斯拉就会从1万股变为5万股。

千万别觉得你的资产瞬间翻了5倍 ,因为股价也会 自动调整 为原来的1/5。即你的总资产没有发生任何变化。

在拆股后股价从2200元变为440元,看似暴跌了80%?其实不然,你的总资产始终都是2200万,没有发生任何变化,所以 股价的变化其实是0%

3 分红送股的影响

通过以上的两个例子我们知道, 分红、送股、拆股、配股 等行为都会导致股价的异常变动,但资产的 实际价值并未发生变化

股价悬崖式下跌,实际资产并未发生变化

但是 股价的异常会对投资造成很大的影响, 比如我想看看特斯拉从上市到现在涨了多少,就不能简单的用 现在的价格 / 上市的价格。

价格异常对我们量化投资也会有很大的影响

股价的剧烈变动会影响很多我们经常使用的财务指标或量价指标。比如下图中,特斯拉在拆股之后,常见的 RSI指标 布林指标 就发生了明显的异常。

股价变动导致RSI指标和布林指标异常

如果这时我们继续用异常的 指标 来分析走势或开平仓,显然是不明智的。

为了避免这种价格“暴跌”的影响,我们需要对股票的 价格进行修复 ,这一过程就叫做 复权

利用复权后的股价来 重新计算各类指标 ,才能避免指标异常,导致错误的决策。

复权前

复权后

02 前复权与后复权

复权被分为 前复权 后复权 ,很多同学不清楚两者的区别。

先来看一张K线图:

分红送股当日,股价暴跌46.8%(蓝线部分),以这一日为界限,K线图分为 分红送股前 分红送股后 的两个部分。

我们都知道股价的跌幅其实没有那么夸张,所以需要对K线(股价)进行修正。

以什么作为修正的基准呢?

如果我们以 分红送股后的股价作为基准 ,将 分红送股前的股价整体往下移动 ,对股价进行修正,这个过程就被称为 前复权

前复权

如上图所示,在复权前,涨跌幅为-46.8%,将分红送股前的K线整体向下移动后,涨跌幅被修正为-3.3%。

后复权也是通过移动股价来实现价格修复的,只不过 后复权是将分红送股后的K线整体向上移动

后复权

如上图所示,复权前的涨跌幅为-46.8%,将分权送股后的K线整体向上移动后,涨跌幅被修正为-3.3%。

看到这你应该明白什么是 前复权 后复权 了,前复权其实就是对 分红送股前 的股价进行修正,后复权是对 分红送股后 的股价修正。

并且细心的同学已经发现,不管是前复权还是后复权,它们 修复的其实是分红、送股当天的涨跌幅 ,而不是股价,准确的 涨跌幅才是复权的核心 所在。

03 如何计算涨跌幅

正因为复权的核心是涨跌幅,所以想要正确地计算复权价,首先要计算复权当日的涨跌幅。

此时就需要一个关键的数据“ 前收盘价 ”来帮助我们。

很多同学可能不知道什么是“ 前收盘价 ”,我们来看一个例子:

这是一组包含 前收盘价 的股票数据。顾名思义,前收盘价就是前一天的收盘价。

图中可见,4月3日到4月8日的 前收盘价 都等于 前一个交易日的收盘价

但是4月9日的前收盘是26.90,而上一个交易日的收盘价是48.92, 两者相差甚远 ,这是为什么呢?

这是因为股票在4月9号发生了 分红送股等 行为,导致股价自然回落。那应该回落到多少呢?

此时交易所会根据 分红送股的内容 计算出一个价格并公布出来,我们称这个价格为 前收盘价 ,4月9号的26.90就是前收盘价。

有了交易所官方提供的“ 前收盘价 ”,第二天的交易在这个基础上就可以继续进行了。

并且通过这个价格,我们简单地套用公式:

涨跌幅 = (收盘价 - 前收盘价) / 前收盘价

就能计算出当日的涨跌幅:

所以如果你拿到的股票数据 没有包含前收盘价这个字段,那基本上是不能使用的

我平时自己使用的交易数据就包含了前收盘价:

包含前收盘价的数据

这份数据包含了从 90年至今 A股 所有股票的历史数据 ,5000+只股票,非常的完备,并且也都是可以 分享给大家的。

有些数据虽然没有前收盘价,但是也直接提供了涨跌幅。不过在使用这些数据的时候一定要检查一下涨跌幅是否有误, 尤其是分红送股当天

比如下图中4月9号的数据明显就存在错误。

涨跌幅数据一定要验证是否有误

04 如何计算复权价

有了涨跌幅之后,应该如何计算复权价呢?我们需要引入“ 复权因子 ”的概念。

复权因子可以理解为,在一只股票刚发行的时候买入1块钱(假设)。之后随着市场波动,这一块钱的价值每天都在发生变化,这个 价值就是这只股票的复权因子

复权因子的涨跌幅和股价的涨跌幅(修正后)是一致的 ,所以我们可以利用:

复权因子 = (1 + 涨跌幅) × 前一交易日复权因子

计算复权因子:

上图中4月2日涨跌幅为10.01%,如果我们买入1元,那么在收盘后就变为1.1001元,也就是复权因子的大小。

第二天的涨跌幅为10%,收盘后的价值是在1.1001的基础上上涨的,所以变为1.21011。以此类推,将之后的涨跌幅累乘就能得到复权因子。

有了复权因子就能计算复权价了,不过复权价分为 前复权价 后复权价 ,我们分开来讲。

1 前复权价格

先回忆一下这张图:

前复权 其实是将 分红送股前 的K线 整体下移 ,这意味着 最近一个交易日的价格是固定不变的

所以4月13号的 收盘价 就等于 前复权收盘价 ,只要在这个基础上往前修复价格就可以了。

因为复权因子是对每日涨跌幅的刻画,所以 复权价的涨跌幅 复权因子的涨跌幅 是相同的,这意味着:

我们将上面的公式稍作变换就能得到:

等式右边的都是已知项,因此可以计算出前复权收盘价:

例如上图中4月10日的前复权价格就是这么计算的:

1、先用4月13日的前复权收盘价除以复权因子得到固定值:

23.65 / 1.087465 ≈ 21.748

2、将21.748与4月10日的复权因子相乘,得到当天复权价:

21.748 × 1.208429 ≈ 26.28

其他日的 前复权收盘价 只要用 复权因子 乘以 常数C 就能计算出来了。

聪明的同学可能已经发现, 前复权价 其实就是把 复权因子等比例放大 了21.748倍。

2 后复权价格

后复权价的计算方法也类似。

后复权将 分红送股后 的价格 整体上移 ,所以 最早交易日(4月2日)的价格是不变的,收盘价等于后复权收盘价

对于后复权,存在以下关系:

对这个公式稍作变换:

等式右边的三项都是知道的,所以后复权的收盘价也可以算出来:

05 总结

看到这里大家应该明白, 只要计算出复权因子,不管是前复权价格还是后复权价格,只不过是复权因子的等比例放大或缩小

不过还是有很多同学会问,已经知道收盘价的复权价如何计算,那 开盘价、最高价、最低价的复权价该怎么计算呢?

问这个问题的同学请自觉面壁思过5分钟,因为这个问题只要稍微思考下就能知道答案。

复权只是对股票价格做整体抬升,每根K线开高收低之间的比例并不会改变。

开盘价、最高价、最低价复权计算公式

例如上图中7月30号的复权开盘价就可以这么计算:

已知 开盘价 =10.51, 收盘价 =10.4, 收盘价复权 =10.97

开盘价 / 收盘价 =10.51/10.4=1.0106

由于 开盘价 / 收盘价 = 开盘价复权 / 收盘价复权

所以 开盘价复权 = 收盘价复权 ×1.0106

开盘价复权= 10.97×1.0106=11.86

同理,我们只要按照比例对其他价格进行缩放就能得到其他的复权价格了。

我也为大家准备好了计算复权的代码,方便大家在处理数据的时候使用, 这个代码也都是可以分享给大家的。

计算复权的代码

计算复权后的数据

[责任编辑:h001]

相关新闻

联系邮箱:99 25 83 5@qq.com

备案号:豫ICP备2020035338号-4 营业执照公示信息

产经时报 版权所有