交易策略理想与现实之间的距离之流动性
作者:互联网
1、概述
量化交易策略是一个产品,有完整的生产链,从获取原料(各类基础数据)到形成最终产品(可实盘交易的策略),中间有不少工序,每个工序都有或多或少的坑(包括但不限于数据错误、设定偏误、逻辑偏差、方法偏误等),不注意的话,积累到后期的误差有可能会使得外观漂亮的产品,品质其实是个渣。
2、生产链
基于因子/指标的常规交易策略开发,一般步骤大概是:
1)初始思路定性
从各种途径得到了一个初始思路,判断其背后的逻辑在理论上(或者主观/经验上)没有大的瑕疵。
2)初始思路的实现
根据这个思路的逻辑,找到具体的基础数据,以及各种通用和专用的处理方法,形成单因子/指标。
3-1)因子:初步检验
如果是单因子,则将其在交易标的物的历史数据上分析,内容包括但不限于:累积收益的分层单调性、IC_IR、持续性、风格特性、与其他单因子的相关性、参数敏感性等。
3-2)因子:回测
如果各方面表现良好,能带来新的增量信息,并在统计上显著,则可将其单独,或者与原有通过筛选的因子一起使用,形成具体策略并在贴近实际交易条件的场景中回测,并分析其绩效结果。
4)指标:回测
如果是指标,则观察其在交易标的物的历史数据上是否具有统计上显著的择时优势,形成具体策略并在贴近实际交易条件的场景中回测,并分析其绩效结果。
5)模拟与生产
以上步骤都通过,就可在模拟账户上进行与市场同步的模拟交易,如果一段时间之后,它的表现基本符合预期,就可以考虑上线进行小资金的实盘交易。
这里只说说流动性偏误在第4)点的影响,其他情况以后找机会再说。
3、流动性引发的“血案”
1)流动性偏误的产生
因子/指标检验时,如果为了能快速得到结果,调仓卖出已有持仓时假设能立即清除掉该调出的持仓,而不管它们在换仓日是否停牌,就会产生流动性偏误,其影响是
a、原本不能被清理掉的仓位,被错误地清理掉了。
b、因为清仓出错,后续的调仓买入信息也出错。
c、从而扭曲了后续的测试结果。
2)案例介绍
一个针对沪深300指数的择时指标,虽然在样本外的表现不如样本内的,但仍然发挥一定的作用。现在想以这个指标为基础,对策略进行增强。即该做多时,持有当时指数成分股中优选出的若干股票,该平仓时,就立即清仓。
优选股票的因子,对股票池股票的分层效果如下:
3)指数择时 + 因子优选的测试效果
可以看到:
a、策略在组合上的累计净值曲线最大值比在指数上的高一倍左右,这符合预期,因为只持有10只股票,持仓更集中,组合的净值波动更大。
b、后续的累计净值,效果跟预想的差异较大。在红框范围内(2015年6月左右),指数择时是一直没有持仓的,因此其账户累计净值是一条横线,但是股票组合的净值是一个大跌。
对应日期的交易日志有如下信息:
(以上省略)
[32m[2021-04-23 14:20:42,994] [INFO]- @ [on_bar] 20150618 market open[0m
[32m[2021-04-23 14:20:43,047] [INFO]- -- [on_withdraw] 000016.SZ 的委托单 order_87012649 撤回。换仓时点,所有未成交平仓委托都撤回,对应持仓统一处理。[0m
[32m[2021-04-23 14:20:43,049] [INFO]- -- [on_order] 000016.SZ 在 20150618 开盘时发出的委托单 order_95764102 [清仓],状态是 Status.NOT_TRADED,委托价格是 30.17 委托量是 71700[0m
[32m[2021-04-23 14:20:43,051] [INFO]- -- [on_position] 000016.SZ 持仓今日停牌,平仓委托无法成交。[0m
[32m[2021-04-23 14:20:43,054] [INFO]- -- [on_record] 当前 bar 的各类数据记录完毕[0m
[32m[2021-04-23 14:20:43,061] [INFO]- @ [on_bar] 20150619 market open[0m
[32m[2021-04-23 14:20:43,117] [INFO]- -- [on_withdraw] 000016.SZ 的委托单 order_95764102 撤回。换仓时点,所有未成交平仓委托都撤回,对应持仓统一处理。[0m
[32m[2021-04-23 14:20:43,119] [INFO]- -- [on_order] 000016.SZ 在 20150619 开盘时发出的委托单 order_69238501 [清仓],状态是 Status.NOT_TRADED,委托价格是 30.17 委托量是 71700[0m
[32m[2021-04-23 14:20:43,120] [INFO]- -- [on_position] 000016.SZ 持仓今日停牌,平仓委托无法成交。[0m
[32m[2021-04-23 14:20:43,122] [INFO]- -- [on_record] 当前 bar 的各类数据记录完毕[0m
[32m[2021-04-23 14:20:43,130] [INFO]- @ [on_bar] 20150623 market open[0m
[32m[2021-04-23 14:20:43,180] [INFO]- -- [on_withdraw] 000016.SZ 的委托单 order_69238501 撤回。换仓时点,所有未成交平仓委托都撤回,对应持仓统一处理。[0m
[32m[2021-04-23 14:20:43,182] [INFO]- -- [on_order] 000016.SZ 在 20150623 开盘时发出的委托单 order_59401738 [清仓],状态是 Status.NOT_TRADED,委托价格是 30.17 委托量是 71700[0m
[32m[2021-04-23 14:20:43,183] [INFO]- -- [on_position] 000016.SZ 持仓今日停牌,平仓委托无法成交。[0m
[32m[2021-04-23 14:20:43,184] [INFO]- -- [on_record] 当前 bar 的各类数据记录完毕[0m
[32m[2021-04-23 14:20:43,191] [INFO]- @ [on_bar] 20150624 market open[0m
(以下省略)
可以看到,那段时间有一个股票一直因为停牌而无法清仓,通达信确认了这一点。
由于账户最多持有10只股票,当时其他股票都清掉了,只剩下一只股票(即 1/10 的仓位)因为停牌一直无法清仓,9月11日该股票复牌,之后连续7个一字跌停,对应持仓也无法清掉,在复牌后第八个交易日,跌停打开,于是以开盘价(跌停价) 12.99 清仓,这个持仓的大幅亏损拖累了账户整体净值。
类似的情况在 2018年1月初也发生了,当时无法清仓的是000006、000007。
(2020年6月之后的净值下跌,不是流动性造成的,这里不再展开。)
尝试了持仓50只股票的情况,2015年6月的情况大为缓解,但2018年1月初的类似情况依然严重。因此需要从其他方面寻找解决或者缓解问题的办法。
4)小结
以上情况展示了流动性对策略的影响。一个因子/指标在一开始进行检验时,为了能快速出初步结果,一般不会太去考虑现实流动性的影响。后期如果应用的场景不对,就有可能高估其实际效果。
类似的场景是对刚上市的新股进行动量或者打板策略的测试,如果不考虑新股上市时往往是连续的一字板,那就会遇到回测时效果很好,但是实际上根本无法落地的情况。
标签:INFO,理想,20,14,04,23,现实,距离,32m 来源: https://blog.csdn.net/domodo2012/article/details/116082282