返回列表 发布新帖

聊聊除权发生日的持仓涨幅计算

795 0
发表于 2024-2-11 19:03:57 | 显示全部楼层 阅读模式
在持仓品种跨除权日时,各位是否考虑过涨幅如何计算,这里有几种方式
1、前复权
2、后复权
3、等比前复权
4、等比后复权

普通的前后复权,就是把分红的过程反向处理,分红的金额和送股的数量反推到前/后一个交易日的价格上,来推算出一个合适的价格
但在处理历史数据的过程中,我们会发现,这样的反推处理会在每次复权过程中逐步积累,导致价格偏移,和历史当日实际的价格相差较大
这个偏移会导致两个主要问题,一是累计较多时会导致价格为负数,二是会导致涨幅计算的前收价和现价比例畸形,导致涨幅计算不准确

先看这张图:
image.png
前复权模式下,由于持续高分红,已经把复权后的价格推到了负数,这必定会对我们的策略的正确执行产生一定影响,因为实际实盘过程中不会看到这样的价格

再看这张图:
600519_dd.png
前复权、后复权、等比前复权、不复权,这几种方式展示到一起,注意涨幅的数值,在这些模式下是不一致的

我们用实际的交易逻辑来考虑一下
假如在历史的这天,当时实际有持仓,那么在前一天晚上经历了分红的过程,分红的钱和送股都已经分配好了,持仓的个股有了分红执行后的价格
当时实际的现价、前收价,都是不复权的状态
我们考虑如何计算复权前收盘价,这里我们维持当前价不变,选用前复权的方式,把这一次分红过程倒推叠加到前一天的价格上
即:复权前收价 = ( 不复权的前收价 + 分红金额 ) / ( 1 + 送转比例 )

这里贴一份代码:
image.png

image.png
单次前复权前收价 f_c0 为2008.325
现价 f_c1 我们取不复权的当日收盘价2045.00
则这天实际涨幅为 ( f_c1 / f_c0 - 1) * 100% = 1.826% = 1.83%

好了,我们回过来看前边茅台这天的几种复权方式的对比
可以看到,只有等比前复权的涨幅和我们计算的当日实际持仓涨幅吻合,其他两种方式,由于加减处理的方式导致比例失真

我们再来看看为什么等比前复权的涨幅是对的
等比前复权是对每个分红位置单独计算复权,对每次复权单独进行反推,然后以涨幅的比例作为系数来向前累除,达到复权的效果
也就是等比复权模式下,每次分红的位置价格变化都会和真实的持仓涨幅变化保持一致
等比复权由于是按比例累乘,不会造成价格为负的情况

有兴趣的不妨看看自己的策略,在持仓真实除权的时候是什么表现

投研端的获取可以参考我们的购买页面:
http://dict.thinktrader.net/dictionary/?id=cumnXP

这里分享出来前边的代码,可以在投研端运行,取除权因子、以及手工逐个计算复权

  1. //不复权价格
  2. c0:ref(oclose, 1),nodraw;
  3. c1:oclose,nodraw;

  4. //等比前复权
  5. fr_df:dividfactor(103),nodraw;
  6. fr_c1:c1 * fr_df;
  7. fr_c0:ref(fr_c1, 1);
  8. fr_zf:(fr_c1 / fr_c0 - 1) * 100;

  9. //单次复权因子
  10. fa:= dividfactor(4) * dividfactor(5) - dividfactor(1);
  11. fan:=iff(isvalid(fa), fa, 0);
  12. fr:= 1 + dividfactor(4) + dividfactor(2) + dividfactor(3);
  13. frn:=iff(isvalid(fr), fr, 1);

  14. //前复权
  15. f_c1:=c1;
  16. f_c0:(c0 + fan) / frn;
  17. f_zf:(f_c1 / f_c0 - 1) * 100;

  18. //后复权
  19. b_c1:c1 * frn - fan;
  20. b_c0:=c0;
  21. b_zf:(b_c1 / b_c0 - 1) * 100;

  22. //单次动态前复权
  23. fs_df:=dividfactor(8),nodraw;
  24. fs_dfn:iff(isvalid(fs_df), fs_df, 1.0);
  25. fs_c1:=c1;
  26. fs_c0:c0 / fs_dfn;
  27. fs_zf:(fs_c1 / fs_c0 - 1) * 100;
复制代码


多个界面联动:
image.png










image.png
image.png
image.png
image.png

回复

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

主题

4

回帖

35

积分

0

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2024 迅投QMT社区 版权所有 All Rights Reserved. 蜀ICP备19002686号-2
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表