开头先腆着脸问一个问题,大伙儿在做量化的过程中,会不会遇到『眼睛看到的』跟『程序算出来的』很不一样?
不知道是不是所有Quant都会遇到,但我是经常碰见,特别是在开发跟『K线形态』相关的策略时。
比方说,在行情软件当中,两个品种(股票/期货/外汇/大饼等)的K线走势人眼看起来很像,但是在计算波动率、偏度、斜率等相关指标时,数值差别非常大,特别是在横截面比较时,容易出现偏差。
类似地,在同一个品种的不同时间周期的K线图(1 分钟线、5 分钟线、30 分钟线、小时线、日线、周线、月线等),看上去相似的走势,涨跌幅、波动性等计算出来的数值也是大相径庭,难以进行比较。
归根结底,造成这种现象的原因就是,不同品种/不同周期下的K线价格的绝对范围和变动幅度是不一样滴。
那有没有一种『标准化结构图』,这种图只看K线走势,没有价格标签,也没有时间标签,把很多的K线图放在一起,不知道哪个是股票,也不知道哪个是期货,更不知道它们是哪个周期的K线图,这样一来,不同品种走势可以比较,同一品种不同周期不同时间段也可以一起比较。
答案当然是有的,很多量化前辈都在此为咱做过诸多尝试,今天先介绍一下其中一种『标准化结构图』的实现方案和演变过程,更多的细节可查看国泰君安的金融工程研报《趋与势的量化定义研究》。
先说一种最朴素的尝试,很容易想到的,就是不管K线具体的涨跌幅,只要是上涨,那就是+1,只要是下跌,那就是-1,最后再加总起来,形成价格轨迹。
以下方左图K线图为例,K线变化的顺序依次是(涨、涨、跌、涨、跌、涨、涨、跌、涨、跌、跌),那相应的状态变化就应该为(+1,+1,-1,+1,-1,+1,+1,-1,+1,-1,-1),因此标准化结构图中价格轨迹为(0,1,2,1,2,1,2,3,2,3,2,1),注意此处多一个初始点 0,如下方右图所示。
从图中看出,标准化结构图跟实际K线图虽然有点儿相似,但有一个很明显的不足,就是对上涨和下跌趋势的幅度刻画得还不够充分,看起来更像一个震荡的走势。
为了解决上述问题,一个自然而然的想法就是,在对实际K线图标准化过程中,考虑趋势方向这个维度,因为均线是本身就是一个很好的衡量趋势的指标。
假设引入5周期均线,记为“MA5”,如果当前收盘价大于或等于MA5,记为为 +1,如果当前收盘价小于 MA5,则记为-1。
那么左图K线图的状态变化就是(+1,+1,+1,+1,+1,+1,+1,-1,-1,-1,-1),标准化结构图中价格轨迹则为(0,1,2,3,4,5,6,7,6,5,4,3),如右图所示。
从图中可以看出,改进后的标准化结构图,基本上可以反映了实际K线图的趋势状态,左侧单边上涨,右侧单边下跌,但美中不足的是,太过于强调趋势了,而淡化了对震荡部分的描述。
第一种方式突出震荡,第二种方式强调趋势,那把这两者综合起来,同时用这两种方式来标准化K线走势图,不就可以既考虑到价格走势的震荡又兼顾到趋势了嘛。
当收盘价位于MA5之上时,即使是下跌,但只要不跌破均线,说明上涨趋势还没有结束,可以理解为一个调整性波动,既不能认为是后退一步,也不能认为是前进一步,综合来看这种状态可以记为0。
反之,当收盘价位于MA5下方时,即使是上涨,类似地,同样理解为下跌状态还没有改变,也用状态为0表示。
除了上述这两种情况之外,在均线同一侧的涨跌就可以记为+1或-1,也就是说,当前收盘价在MA5之上时,上涨则记为+1,反之当前收盘价在MA5之下时,下跌则记为-1。
根据上述的3条规则,左图的的状态变化顺序就是(+1,+1,0,+1,0,+1,+1,-1,0,-1,-1),那么标准化结构图中价格轨迹则为(0,1,2,2,3,3,4,5,4,4,3,2),从右图中看出,这就更接近实际K线图的走势结构。
标准化结构图咱已经有了,来搞些事情吧,先从最常见的趋势策略开始下手。
新鲜的食材,往往只需要简单的烹饪技巧,将原始价格K线序列转换成『标准化结构图』之后,按照之前文章《ETF轮动策略在阻力支撑相对强度RSRS指标加持下起飞》计算斜率的方法,大幅上涨且区间斜率为正则做多,大幅下跌且区间斜率为负则做空,开仓之后,使用老朋友『ATR吊顶』跟踪止盈止损,一番玄学后,净值曲线图如下。
初始策略的净值曲线看起来还差强人意,实际上看了交易记录后,发现这个量化策略多头部分交易还行,但是空头部分就比较差了,还是有待继续调整,顺道儿还可以把出场方式精细一些,希望懒癌先别发作~
PS:本文『标准化结构图TrendPattern策略』试验源码已分享至『量化藏经阁』和『量化藏经阁Max』社群内,群友请在社群量化兵器库原路径中自取。
END
如果对本文有疑惑,或是想聊聊
亦或是围观朋友圈当点赞之交
点我,让我们一路同行
吃瓜吐槽写代码
(微信号:iquantman)
添加好友后,私信『666』
送你一些量化小福利
人工回复慢请见谅~
继续阅读
阅读原文