美文网首页
复权不复权,天差与地别 | 如何最准确的计算股票前后复权价

复权不复权,天差与地别 | 如何最准确的计算股票前后复权价

作者: 量化投资邢不行啊 | 来源:发表于2020-12-02 09:36 被阅读0次

    观前提醒:本文计算较多,建议备好草稿纸。

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

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

    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股。

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

    分红案例

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

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

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

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

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

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

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

    拆股的案例

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

    特斯拉拆股当日K线

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

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

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

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

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

    分红送股的影响

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

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

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

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

    股价的剧烈变动会影响很多我们经常使用的财务指标或量价指标。比如下图中,特斯拉在拆股之后,常见的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股所有股票的历史数据,4000+只股票,大小1GB

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

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

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

    04

    如何计算复权价

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

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

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

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

    计算复权因子:

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

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

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

    前复权价格

    先回忆一下这张图:

    前复权其实是将分红送股前的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倍。

    后复权价格

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

    后复权将分红送股后的价格整体上移,所以最早交易日(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

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

    我也为大家准备好了计算复权的代码,方便大家在处理数据的时候使用:

    计算复权的代码

    计算复权后的数据

    相关文章

      网友评论

          本文标题:复权不复权,天差与地别 | 如何最准确的计算股票前后复权价

          本文链接:https://www.haomeiwen.com/subject/vfdywktx.html