市场择时
一.市场强弱状态根据当前所有申万一级行业指数中站上20日均线的行业的数目来划分市场强弱状态,因为指数站上20日均线通常是中短期强势走势的开端
- 如果有70%以上的行业指数在20日均线以上,则当前为强市
- 如果有30%以下的行业指数在20日均线以上,则当前为弱市
- 如果有30%-70%的行业指数在20日均线以上,则当前为震荡市
输入数据看一下近四年的市场情况

上面的红色点代表为强市,绿色点代表为弱市,蓝色点则代表为震荡市。看到择时判断还不错
二 构建策略下面据此来构建一下简单的策略,先考察最简单的动量反转因子的效果。
策略逻辑:每个调仓日,观察上一交易日的市场状态:若上一交易日为强市,则等权买入前一交易日比前T交易日的收益为正的股票;若上一交易日为弱市,则卖空所有股票;若上一交易日为震荡市,则不操作。股票池为中证800动态成分股。
风险控制
一 策略逻辑- 设置一段回测前时间的指数行情数据作为推断回报分布函数的基准
- 设置窗口期,比如8天(交易日),根据上述数据计算指数历史8天回报率
- 计算最近 窗口期 - 1 天的回报率,根据历史窗口期天回报率分布情况,计算第二天可能的收益率分布情况
- 在(0,1)区间上设置风险阈值,如果计算得到第二天有 1-风险阈值 概率回报大于0,则持有HS300ETF,否则空仓
- 每次调仓时把获得的新信息加入历史行情数据,作为之后推断的基准
二 策略流程- 将获得的前一交易日行情加入行情基准
- 得到历史8日回报率分布:

- 计算截至前一交易日的7日回报率,是1.7%,预测今日收益率分布是:

也就是8日历史收益分布向左平移最近7日收益率。
- 根据预测收益分布调仓:可以看见,当日将有50%以上可能性回报小于0,而根据设定的风险水平,只有收益率大于0概率高于70%时持仓,于是当日空仓。
三 策略表现
先将窗口期设为10交易日,风险水平设为30%,考察策略表现。
- 这是因为依据历史对行情判断时,考虑的应该是较长期的一个稳定趋势,窗口期太短时,市场可能出现较强的自相关趋势,与策略逻辑不符;
- 作为风控模块,无妨把持仓条件设置严苛一些,这里试试30%.

可以看到,作为一个风控模块这一策略表现还算不错,近来几次大盘暴跌都被模型捕捉;在空仓期长,资金利用率不高的情况下,还能达到9.8%的年化收益,超过大盘7.3%,最大回测不到15%.
同时,这种表现提醒我们,如果在
逻辑空仓期买入固定收益型ETF或干脆做空股指,将获得更好的回报。
在下一个部分,将探讨怎样的窗口期与风险水平组合能最好体现策略逻辑。
四 参数优化- 多长的窗口期能平滑资本市场的短期信号,使市场表现回到历史的常态?多大的风险水平能够满足我们的风控需求,把资金安心交给程序?
- 为了解决这些问题,下面引入一个quick bactest模块,测试5交易日到20交易日窗口期、0.1到0.9风险水平下,策略从2012年7月至2016年7月的表现。
下图为该策略在不同窗口期和风险水平下的年化超额收益,x轴是不同风险水平,y轴是不同窗口期长度。
总体来看,控制风险水平比较低的情况下更有可能出现高的超额收益;而10交易日这一窗口期对于几个低于0.5的风险水平都是稳健的,而且表现较好。

最大回撤的情况也是如此:控制风险在低水平时最大回测较低,而10交易日的窗口期对于不同风险水平都有较为稳定的低回撤。

策略波动率的情况更加明显地展现了这一策略的逻辑:控制风险水平越低,策略波动性越小。这再次表明在策略中加入类似的风控模块可能是一个聪明的选择。

以历史收益分布作为参考的风险控制策略,从表现来看,这一策略能够较好地完成风控任务:捕捉股灾,降低策略波动率与最大回撤。
策略地址:1. https://uqer.io/community/share/58243831228e5ba8f5572481
2. https://uqer.io/community/share/58246b89228e5b91e06d5d68