楼主: 量化老KK
2719 0

[程序化交易] 数据处理探索——后复权详解(中) [推广有奖]

  • 0关注
  • 5粉丝

本科生

39%

还不是VIP/贵宾

-

威望
0
论坛币
20 个
通用积分
7.7156
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
663 点
帖子
37
精华
0
在线时间
45 小时
注册时间
2019-11-20
最后登录
2023-8-1

楼主
量化老KK 发表于 2020-4-7 17:09:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

在之前的TBQuant数据处理探索——后复权详解(上)一文中,我们介绍了主力连续888的缺陷主要是由于换月时强行切换合约数据,其价格之间由于时间价值而存在较大差值。这个差值主要会导致两个问题:

一、对于大部分趋势策略来说,换月的大跳空基本意味着出现交易信号,然而这个信号通常情况下都是无效的。

二、对于大部分指标来说,由于都需要计算过去一段时间的k线数据,导致换月以后用于计算的数据出错。

上图即为换月时导致kdj指标产生异动。


导致这两个问题的核心原因其实是因为前后价格差太大。那么如果能把前后的价格差抹平,这两个问题自然会迎刃而解。


如何抹平价格差?股票市场提供了一个很好的思路。股票常见高送转等操作,股价往往要重新计算,这个重新计算被称为复权。同样的思路我们也可以应用到期货里。


复权有多种方法,从计算对象来分有前复权和后复权,从计算方式来分有差值复权和比值复权。那么适用于888的复权方法是哪种呢?


首先来看计算对象,这里指的是价格数据。作为复权对象的价格数据,在某个时间点前后被分成相差较大的两部分。

上图很明显在左右两边的数据中间存在跳空节点。为了将两边的数据连接起来,我们要么把左边的数据往下移,要么把右边的数据往上移。


如果是把左边的数据往下移,就被称为前复权,也就是对前面的数据进行修复处理。如果是把右边的数据向上移,那就被称为后复权,也就是对后面的数据进行修复处理。两种复权方式使用起来实际效果是一样的。


由于程序化模型的运行机制是从左到右运行,那么前复权会导致历史数据被修改,之前模型留下的信号记录就必须重算,等于说运行到一个复权节点,就要回头把之前的数据重新复权一下再运行计算一遍。这使得模型运行机制变得十分复杂而且低效率。


比较而言,后复权的运行高效很多。前复权一般用于复权次数较少的数据,例如股票的高送转一般频率不会非常高,而期货换月一年三次,明显不适合前复权。


其次,我们看看差值复权和比值复权。差值复权顾名思义,将节点前后的数字取一个差值,然后将需要复权的数据统一加减这个数值。以后复权为例,假使节点前价格为2500,节点后的价格为3000,那么差值为3000-2500=500,我们对后面的数据做如下处理:

标准差是用来描述一组数组的离散程度的指标。如果一组数据比较连续,互相之间差别很小,那么标准差也会较小,接近于0。相反,如果一组数据彼此之间跳空很明显,那么标准差就会偏大。


从上表来看,差值复权前,节点前后数据的标准差高于差值复权后接近20倍,说明复权确实很大程度降低了数据跳空情况,


但是差值复权对于期货品种来说却有致命的缺陷,那就是期货品种都有较为固定的基差,对于正向市场的连续差值复权会导致最后的价格变成负值。


例如,在第一次换月时:

在第二次换月时,02合约价格从第一次换月时的价格1200下跌至950:

第三次换月时,03合约价格从第二次换月时的价格1200下跌至1050:

三次换月处理时,次主力合约价格都是1200,但是差值复权以后,价格从1000降低至750及600,长此以往,复权价格就会降至负值,这样会对测试报告和后期计算带来很多困难。而比值复权不存在复权后价格降至负值的情况。


根据上文总结,商品能选择的最佳复权方案,只能是向后比值复权。


二维码

扫码加我 拉你入群

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

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

关键词:数据处理 quant 股票市场 历史数据 离散程度

已有 1 人评分经验 收起 理由
wwqqer + 100 精彩帖子

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

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

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2026-2-1 05:13