摘要 本篇承接(一)、(二)的研究继续开展。前两篇讨论了指标选取及平滑的方法。本篇跟进探讨,关键点包括:1、平滑后指标形态的量化;2、交易信号的生成规则;3、基于简单的多空交易,实现完整回测,得到其收益曲线;4、回测结果分析框架。

1. 策略构建过程

基于相对强弱指标的轮动策略构建流程此处不详细介绍,详情可联系作者。

2. 形态量化及信号生成

对于平滑后rs指标序列形态的量化,这里采用零阶导数value和一阶导数slope共同表征。其中slope的计算方式为:设置窗宽period下,计算末尾与起始值的差,再除以间隔。这种计算方式显然存在误差,但鉴于序列本身已经过一次平滑处理,可以认为相近点之间的变化不是十分剧烈,因此该斜率计算方式具备一定近似性(后续研究可以考虑对序列做滚动回归,取其斜率项回归系数作为slope)。

value与slope确定好后,参照(一)中的分析,认为value大于一个阈值value_thre时(默认value_thre=0),A标的(前项)强势,建议做多A;否则做多B。从生成交易信号的角度,value>value_thre,signal=1;否则signals=-1。

下图给出了中证1000指数与沪深300指数数据下,构建的两类rs指标(上一为rs1,上二为rs2,rs具体含义见研究(一)),以及对rs2的RMA平滑后曲线(下三),和对应信号(下四)。

由上图,最后的signals基本上响应了强势标的区间(表现为rs1的上涨或rs2为正)。基于此信号下的多空轮动交易理应能获取阿尔法。

3. 交易策略及参数归纳

交易策略为简单多空交易。假设投资组合里只有两类待轮动标的资产,当signals=1时,满仓持有A(前项);signal=-1时,满仓持有B;signals起始默认为0,此时50%各自持有A和B。

至此,一次轮动策略构建完成,过程中涉及到的关键参数包括:width、q、period、value_thre/slope_thre、delay、rate(参数详情可联系作者)

4. 一次交易回测

还是以2005年至今中证1000与沪深300指数日数据为例,探讨此策略在大小盘轮动中的效果。

各类参数暂时设置如下:

得到该参数设置下的累积收益曲线。同时给出单边持有中证1000、单边持有沪深300、初始等额持有中证1000及沪深300(基准),以及0费率下的轮动收益曲线。

由上图,轮动策略下的收益曲线能够表现出一定阿尔法,鉴于各参数值只是信手设置,可以预见经过参数优化后的策略回测效果会更好。

5. 回测结果分析归纳

本部分结合上述回测结果,基于对R PerformanceAnalytics package的学习,大致归纳几类重要的回测分析指标。这里仅展示结果,不做深入分析。

5.1 收益率指标

计算不同投资策略下的收益率结果(含年化收益率、年化波动率、年化夏普比率)。

##                              reA    reB re_5050 re_rota re_rota_addc
## Annualized Return         0.2191 0.1354  0.1832  0.2559       0.2492
## Annualized Std Dev        0.3374 0.2904  0.3075  0.3281       0.3280
## Annualized Sharpe (Rf=0%) 0.6492 0.4664  0.5959  0.7799       0.7596

可见自2005年11月交易起始至今,轮动策略的年化收益为24.92%,高于单独持有沪深300(13.54%) 或中证1000(21.91%)

轮动策略下收益率的分布直方图如下:

5.2 波动率指标

波动率指标含:平均绝对标准差、月度标准差、年化标准差。

##                            reA    reB re_5050 re_rota re_rota_addc
## Mean Absolute deviation 0.0152 0.0126  0.0137  0.0145       0.0145
## Monthly Std Dev         0.0213 0.0183  0.0194  0.0207       0.0207
## Annualized Std Dev      0.3374 0.2904  0.3075  0.3281       0.3280

同时下图给出了各类策略下风险-收益图。

5.3 下行风险指标

下行风险指标含:下行概率(1-胜算率)、下行风险(DownsideRisk)、下行风险比率(DownsideRiskRatio),以及上行风险与下行风险的比值(VolatilitySkewness)。

##                                     reA      reB   re_5050   re_rota
## Downside Frequency (MAR = 0%) 0.4178999 0.457012 0.4309373 0.4235377
##                               re_rota_addc
## Downside Frequency (MAR = 0%)    0.4235377
##                                   reA     reB re_5050 re_rota re_rota_addc
## Semi Deviation                 0.0164  0.0135  0.0148  0.0158       0.0158
## Gain Deviation                 0.0119  0.0120  0.0114  0.0121       0.0121
## Loss Deviation                 0.0179  0.0144  0.0160  0.0173       0.0173
## Downside Deviation (MAR=210%)  0.0202  0.0177  0.0187  0.0196       0.0196
## Downside Deviation (Rf=0%)     0.0160  0.0132  0.0144  0.0153       0.0154
## Downside Deviation (0%)        0.0160  0.0132  0.0144  0.0153       0.0154
## Maximum Drawdown               0.7251  0.7230  0.7193  0.7692       0.7706
## Historical VaR (95%)          -0.0383 -0.0302 -0.0336 -0.0361      -0.0361
## Historical ES (95%)           -0.0568 -0.0466 -0.0507 -0.0550      -0.0551
## Modified VaR (95%)            -0.0373 -0.0304 -0.0334 -0.0358      -0.0358
## Modified ES (95%)             -0.0601 -0.0515 -0.0555 -0.0595      -0.0596
##                             reA    reB re_5050 re_rota re_rota_addc
## Monthly downside risk    0.0160 0.0132  0.0144  0.0153       0.0154
## Annualised downside risk 0.2537 0.2096  0.2284  0.2436       0.2437
## Downside potential       0.0071 0.0060  0.0065  0.0068       0.0068
## Omega                    1.1421 1.1119  1.1325  1.1653       1.1620
## Sortino ratio            0.0635 0.0509  0.0596  0.0730       0.0716
## Upside potential         0.0082 0.0067  0.0073  0.0079       0.0079
## Upside potential ratio   0.5666 0.6304  0.5874  0.5811       0.5797
## Omega-sharpe ratio       0.1421 0.1119  0.1325  0.1653       0.1620
##                                                       reA       reB
## VolatilitySkewness (MAR = 0%, stat= volatility) 0.7720847 0.9217011
##                                                   re_5050   re_rota
## VolatilitySkewness (MAR = 0%, stat= volatility) 0.8151614 0.8194101
##                                                 re_rota_addc
## VolatilitySkewness (MAR = 0%, stat= volatility)    0.8165649

5.4 回撤指标

轮动策略收益回撤曲线如下。相应指标有最大回撤(maxDrawdown)、回撤波动率(DrawdownDeviation)。

##                      reA       reB  re_5050  re_rota re_rota_addc
## Worst Drawdown 0.7251256 0.7230382 0.719314 0.769237    0.7706216
##                           reA        reB    re_5050    re_rota
## Drawdown Deviation 0.02234339 0.01515822 0.01837673 0.01921266
##                    re_rota_addc
## Drawdown Deviation   0.01923113

各类策略的回撤表现较差,原因是测试期内两类指数经历过两次股灾,又此轮动策略目标为轮动持有获取阿尔法,缺乏必要止损机制。

5.5 风险值指标

该类指标包括,VaR及CVaR。

##             reA         reB     re_5050     re_rota re_rota_addc
## VaR -0.03831547 -0.03018035 -0.03359794 -0.03605231  -0.03605231
##            reA         reB     re_5050     re_rota re_rota_addc
## ES -0.05679081 -0.04663066 -0.05071532 -0.05502716  -0.05506727

下图给出了不同p值下的VaR值(基于三种分布推断方法)。

5.5 相对benchmark指标

上述均是绝对指标,下面给出几个常用的相对性指标。这里将沪深300设为基准。相应的指标包括:CAPM阿尔法、主动收益、信息比率。

## [1] 0.0004235568
## [1] 0.1137585
## [1] 0.7579422

可见轮动相比单独持有沪深300可以带来年化10.01%的主动收益

此外,Capture Ratio可以衡量轮动策略捕捉基准波动方向的力度,如下图所示。

最后,给出轮动策略之于基准的relative performance(累积收益率之比)。

6. 后续计划

后面会在此策略框架下跟进参数优化的工作,包括策略过程中涉及到的width、q、period,以及value_thre、slope_thre。


著作权归作者刘登峰所有。商业转载请联系作者获得授权(WeChat: terence2015),非商业转载请注明出处。