Skip to content

三低回测优化版

文|启四(公众号|启四说)

[Toc]

最近对三低策略做了回测,下面给大家展示一下过程和结果。

一、修改回测策略为当前使用策略

回顾一下上一次的回测策略:

策略公式:

价格 × 溢价率 × 剩余规模,乘积越低越好

得出结论:

持仓剩余规模在15亿以内,评分最低前5只时,1天或5天调仓一次,收益是最高的,回撤效果也没有被拉开太大差距。

但是,当我使用目前使用的策略公式回测时:

策略公式:

价格 × (1+溢价率) × 剩余规模,乘积越低越好

结论:

同样的条件下,虽然收益降低,但是回撤控制的更好,1天、5天、10天调仓轮动回撤都能控制在20%以内。

image-20221018124046486

现在的公式,降低了溢价率的权重,提高了价格和剩余规模的权重,能最大限度地保证买入的转债价格或规模足够低,这样的转债安全边际高,收益预期强,偶尔蹭上概念还可能会脉冲。

原来的公式,一些高价债或者公告强赎的转债,因为溢价率很低可能会入选,这样的转债风险较大,因此回撤较大。

考虑到投资第一准则——未虑胜,先虑败。故重新修改回测策略为当前使用策略。

再在此策略之上进一步优化。

二、解决上次回测的问题

之前的回测是有一定缺陷的,能想到的是:

1、没有控制买入价格,所以像伊力转债这样价格在170元以上的转债,也会入选,这样对风险偏好低的同学来说,不太友好

我优化的方法是,从3000元到130元,设置不同的价格阈值进行回测,比较结果看使用哪种方式更好。

2、无法控制强赎转债,一些公告强赎的转债,短时间内溢价会迅速趋近于0%,对价格有打压趋势,这种转债原则上是不应该入选的

这个缺点目前还没有办法进行优化。

3、有些转债实盘中可能无法买到,比如新上市的转债单日涨幅在30%以上,当天无法抢到。

我优化的方法是,对于单日涨幅大于10%的转债,不再买入。

4、有噪音数据,回测过程中发现2022-02-23的英科转债居然也被选进来了,但此时它已经退市,是噪音数据

我优化的方法是,对于连续两天收盘价相同的转债,不再买入,这样虽然可能会有极小的概率误杀恰好相邻两天没有涨幅的转债,但这是目前能想到的最好的办法。

三、回测前提

1、时间:目前我手上的数据暂时只有2019-02-24到2022-02-24,因此回测时间段也是选取这段时间

2、成本:默认换仓成本为千分之一

3、策略公式:价格 × (1+溢价率) × 剩余规模,乘积越低越好

4、持仓数量:默认5只

5、调仓频率:默认1天

四、回测过程

1、回测价格、剩余规模、溢价率阈值

1)先比较价格阈值

分两种情况回测:

第一种是排除掉单日涨幅大于10%的转债(抢不到的债),排除掉连续两天收盘价相同的转债(去掉噪音数据);

第二种是不排除特殊情况转债。

价格<=3000(和不设置阈值效果相同):

  最大回撤(%): 18.34
  最大回撤开始时间: 2020-01-09 00:00:00
  最大回撤结束时间: 2020-02-03 00:00:00
  总收益率(%): 984.74
    年化收益率(%): 121.36
最大回撤(%): 16.92
最大回撤开始时间: 2020-01-20 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 841.37
年化收益率(%): 111.15

价格<=1000:

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 970.09
年化收益率(%): 120.36
最大回撤(%): 16.92
最大回撤开始时间: 2020-01-20 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 996.37
年化收益率(%): 122.15

价格<=500:

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 970.09
年化收益率(%): 120.36
最大回撤(%): 16.92
最大回撤开始时间: 2020-01-20 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 996.37
年化收益率(%): 122.15

价格<=300:

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 923.22
年化收益率(%): 117.1
最大回撤(%): 16.92
最大回撤开始时间: 2020-01-20 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 1015.08
年化收益率(%): 123.41

价格<=200:

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 581.86
年化收益率(%): 89.63
最大回撤(%): 16.92
最大回撤开始时间: 2020-01-20 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 1228.05
年化收益率(%): 136.81

价格<=190:

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 588.48
年化收益率(%): 90.24
最大回撤(%): 16.92
最大回撤开始时间: 2020-01-20 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 1420.03
年化收益率(%): 147.71

价格<=180:

最大回撤(%): 15.85
最大回撤开始时间: 2020-10-27 00:00:00
最大回撤结束时间: 2021-02-08 00:00:00
总收益率(%): 444.91
年化收益率(%): 75.97
最大回撤(%): 15.67
最大回撤开始时间: 2020-01-20 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 1181.12
年化收益率(%): 133.99

价格<=170:

最大回撤(%): 15.85
最大回撤开始时间: 2020-10-27 00:00:00
最大回撤结束时间: 2021-02-08 00:00:00
总收益率(%): 451.91
年化收益率(%): 76.72
最大回撤(%): 13.59
最大回撤开始时间: 2019-03-13 00:00:00
最大回撤结束时间: 2019-08-06 00:00:00
总收益率(%): 1176.35
年化收益率(%): 133.7

价格<=160:

最大回撤(%): 12.58
最大回撤开始时间: 2020-01-07 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 410.3
年化收益率(%): 72.16
最大回撤(%): 14.54
最大回撤开始时间: 2020-01-07 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 800.96
年化收益率(%): 108.08

价格<=150:

最大回撤(%): 15.45
最大回撤开始时间: 2020-10-27 00:00:00
最大回撤结束时间: 2021-02-09 00:00:00
总收益率(%): 604.24
年化收益率(%): 91.68
最大回撤(%): 12.11
最大回撤开始时间: 2019-03-21 00:00:00
最大回撤结束时间: 2019-05-06 00:00:00
总收益率(%): 559.9
年化收益率(%): 87.57

价格<=140:

最大回撤(%): 15.45
最大回撤开始时间: 2020-10-27 00:00:00
最大回撤结束时间: 2021-02-09 00:00:00
总收益率(%): 506.09
年化收益率(%): 82.32
最大回撤(%): 11.1
最大回撤开始时间: 2020-01-15 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 778.63
年化收益率(%): 106.35

价格<=130:

最大回撤(%): 13.67
最大回撤开始时间: 2020-10-27 00:00:00
最大回撤结束时间: 2021-02-08 00:00:00
总收益率(%): 402.59
年化收益率(%): 71.29
最大回撤(%): 12.1
最大回撤开始时间: 2019-04-04 00:00:00
最大回撤结束时间: 2019-07-22 00:00:00
总收益率(%): 374.43
年化收益率(%): 68.03

可以看到第一种情况的回测效果明显落后于第二种,如果不排除特殊情况转债,那么结合收益和回撤,最大阈值采用170元较好;如果排除特殊情况转债,那么不设阈值更好。

所以我决定新策略暂不设置价格阈值。

2)再比较剩余规模阈值

剩余规模<=2.3亿(和不设置阈值效果相同):

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 984.74
年化收益率(%): 121.36

剩余规模<=2.2亿:

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 995.26
年化收益率(%): 122.08

剩余规模<=2亿:

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 923.01
年化收益率(%): 117.08

回撤效果相同,考虑到设置阈值和不设阈值效果非常接近,因此剩余规模也不设置阈值。

3)最后测溢价率阈值

溢价率<=120%(和不设置阈值效果相同):

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 984.74
年化收益率(%): 121.36

溢价率<=110%:

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 949.05
年化收益率(%): 118.91

溢价率<=80%:

最大回撤(%): 18.34
最大回撤开始时间: 2020-01-09 00:00:00
最大回撤结束时间: 2020-02-03 00:00:00
总收益率(%): 905.79
年化收益率(%): 115.86

回撤效果相同,考虑到设置阈值后效果反而不如不设阈值,因此溢价率也不设置阈值。

**结论:**价格、剩余规模、溢价率均不设置阈值。

2、回测不同持仓数量和不同调仓频率

上面回测的数据都是持仓5只,调仓频率1天时的效果,接下来回测持仓不同只数不同调仓频率的效果。

持仓评分最低前N只,不同调仓频率的收益:

N=1:

image-20221018194620928

只持仓1只时,回撤非常大,显然不行。

N=5:

image-20221018194503735

持仓5只时,5个交易日调仓一次,年化收益和回撤都不错。

N=10:

image-20221018194741582

持仓10只时,回撤进一步降低,但是收益比持仓5只时下降不少。

N=20:

image-20221018194815191

持仓20只时,回撤差别较大,总体比不上持仓10只的效果。

**结论:**结合收益和回撤,推荐持仓5只或者10只,有盯盘精力,推荐1天调仓一次,没有盯盘精力,5天(一周)调仓一次也可以。

五、回测结果

根据以上数据和过程得出最终结论:

1、价格、剩余规模、溢价率均不设置阈值。

2、推荐持仓5只或者10只,有盯盘精力,推荐1天调仓一次,没有盯盘精力,5天(一周)调仓一次。

六、回测思考

1、当前数据只有3年的数据,不够完整,过去的回测数据不能代表未来收益,之后还需要获取更多数据进行回测;

2、文章中得出的不设置价格阈值的结论是否正确还有待商榷。

注:回测能让我们心里有底,坚定信念,但回测不是万能的,它解决不了实盘中的滑点、中断交易、执行力等问题。

如果你有更好的想法,欢迎一起交流。