ILLQStd因子

默认的回测参数,

('ILLQStd', True, 7, 1) 持仓1D,Pct_change_7过滤,0.8百分比过滤。

默认回测时间

start_date = '2021-01-01'

end_date = '2023-09-10'

回测结果

post image

[('ILLQStd', True, 14, 1)]持仓1D,Pct_change_7过滤,0.8百分比过滤。

累积净值 18.5 年化收益 195.81% 最大回撤 -12.04%

[('ILLQStd', True, 30, 1)]持仓1D,Pct_change_7过滤,0.8百分比过滤。

累积净值 16.54 年化收益 183.73% 最大回撤 -12.17%

对于参数ILLQStd的参数7/14/30,效果差不多。由于预测中,2024年相当于上一个牛市的2020年,回测以下2020年的数据。由于2020年2月9日之前的合约非常少,所以从20200209开始回测。

就回测20200209-20210101

[('ILLQStd', True, 7, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。

post image

从图上可以看到,在前面大半年的时间内,策略都跑赢了BTC和ETH,但是2020年底牛市启动,就跟不上BTC和ETH的涨幅了。不过总体资金曲线还是向上的,看着比较健康。

[('ILLQStd', True, 14, 1)]持仓1D,Pct_change_7过滤,0.8百分比过滤。

累积净值 1.81 年化收益 93.60% 最大回撤 -11.62%

[('ILLQStd', True, 30, 1)]持仓1D,Pct_change_7过滤,0.8百分比过滤。

累积净值 1.81 年化收益 94.12% 最大回撤 -15.06%

这三个参数区别也不大。

选币数改为0.05试一下。

[('ILLQStd', True, 7, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.05选币

累积净值 1.89 年化收益 103.44% 最大回撤 -21.63%

[('ILLQStd', True, 14, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.05选币

累积净值 1.74 年化收益 85.93% 最大回撤 -20.06%

[('ILLQStd', True, 30, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.05选币

累积净值 1.19 年化收益 21.19% 最大回撤 -22.30%

对比0.1的持仓,明显的效果变差。

那么试试0.2

[('ILLQStd', True, 7, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.2选币

累积净值 1.73 年化收益 83.85% 最大回撤 -10.04%

[('ILLQStd', True, 14, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.2选币

累积净值 1.95 年化收益 110.85% 最大回撤 -8.68%

[('ILLQStd', True, 30, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.2选币

累积净值 2.02 年化收益 119.14% 最大回撤 -9.00%

怎么感觉选的币越多,效果越好呢。0.3试一下。

[('ILLQStd', True, 7, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.3选币

累积净值 1.76 年化收益 87.60% 最大回撤 -7.41%

[('ILLQStd', True, 14, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.3选币

累积净值 1.73 年化收益 84.40% 最大回撤 -8.11%

[('ILLQStd', True, 30, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.3选币

累积净值 1.9 年化收益 104.59% 最大回撤 -9.84%

[('ILLQStd', True, 7, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.5选币

累积净值 1.63 年化收益 73.01% 最大回撤 -7.85%

[('ILLQStd', True, 14, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.5选币

累积净值 1.6 年化收益 69.24% 最大回撤 -8.76%

[('ILLQStd', True, 30, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.5选币

累积净值 1.59 年化收益 68.36% 最大回撤 -9.79%

从上面的测试可以看出,总体曲线肯定是向上的,且选的币种越多,回撤越小,但是收益也会降低。如果要跑1D的,就选[('ILLQStd', True, 14, 1)] 持仓1D,Pct_change_7过滤,0.8百分比过滤。0.2选币 这个综合来看好一些。

个人感觉持仓周期是不是一个很关键的元素?也算个参数?

下面看看持仓7d的效果,

累积净值 5.27 年化收益 85.50% 最大回撤 -18.61%

post image

从测试结果看,持仓越久回测结果越差。

持仓6H试试

('ILLQStd', True, 6, 1) ('PctChange', 6) 0.8过滤

累积净值 1.2 年化收益 7.13% 最大回撤 -39.31%

这个结果就是说,如果根据前6小时的K线里计算ILLQStd,算出来这6根K线的流动性很差,然后我就买入它,做多它,持仓6小时,这样的回测结果很差。

结果很差有以下几方面的原因

1,6小时的K线来算因子不合理

2,持仓6小时不合理。

固定以下持仓周期参数试试,测试以下场景,因为前面测试用7天的数据来确定因子,效果不错,那么这里是小时,我给它乘以24,也就是用('ILLQStd', True, 7*24, 1) ('PctChange', 7*24) 0.8过滤,然后还是持仓6小时,看看效果如何。

post image

很不错,比持仓一天的提高好多。持仓6小时没问题,问题出在用6小时数据来计算因子排序不合理。那为什么用724小时就合理呢?照理说,用6小时数据,我每隔6小时就更新一次排序,应该更接近于小市值啊,相当于我一直持有的是小市值的币种,并且6小时更新一次。那么我用724的数据更新的话,我是用724的数据来确定币种,持仓1天。那么就需要考虑清楚的是为什么我用7*24的数据来确定因子比用6小时的数据更加有效?

也可以理解啊,一个因子必然有它的参数范围。不可能随变一个参数就能获得好的回测。但是从原理上分析,只要一直持有低流动性的币种,就能获得这个收益。那么就是说,我用6小时算出来的数据不是真正意义上的低流动性币种。那么是不是我用更长时间的数据算出来的因子更具有流动性低的,然后再从持仓时间看,持仓时间越短,效果越好。

那么我用14*24试试。('ILLQStd', True, 14*24, 1) ('PctChange', 7*24) 0.8过滤,然后还是持仓6小时,回测结果变差。

post image

再看看30*24小时试试。

时间太久,只跑了OFFSET=0的结果如下

[('ILLQStd', True, 720, 1)]

累积净值 21.39 年化收益 212.18% 最大回撤 -10.38%

和14*24的效果差不多。

再降低持仓时间试试,4小时。邢大说过,没有显著提升,不要降低持仓,持仓越久越好。

[('ILLQStd', True, 168, 1)] 持仓4小时,('PctChange', 7*24) 0.8过滤

累积净值 30.64 年化收益 256.82% 最大回撤 -13.55%

[('ILLQStd', True, 336, 1)] 持仓4小时,('PctChange', 7*24) 0.8过滤

累积净值 24.7 年化收益 229.33% 最大回撤 -13.41%

跟持仓6小时相比,有点提升,但是提升效果不大。

再试试持仓一小时的

累积净值 35.07 年化收益 275.16% 最大回撤 -10.94%

再看看8小时持仓。[('ILLQStd', True, 168, 1)] 持仓4小时,('PctChange', 7*24) 0.8过滤

累积净值 23.57 年化收益 223.65% 最大回撤 -11.70%

那么从回测看,[('ILLQStd', True, 168, 1)] 持仓4小时,('PctChange', 7*24) 0.8过滤,同样是上面的条件,只是持仓时间不同,有以下的回测结果,只是offset0 对比,

持仓一小时,

累积净值 35.07 年化收益 275.16% 最大回撤 -10.94%

持仓4小时

累积净值 30.64 年化收益 256.82% 最大回撤 -13.55%

持仓6小时

累积净值 27.64 年化收益 240.44% 最大回撤 -10.75%

持仓8小时

累积净值 23.57 年化收益 223.65% 最大回撤 -11.70%

持仓1D

累积净值 17.08 年化收益 187.16% 最大回撤 -13.09%

从上面可以看出,持仓越长,回测结果越差。这个可以理解,持仓越长,相当于你对市场的反映越不敏感,也就是说你在持仓周期内,可能持有的并不是最低流动性的币。试试两小时的。

offset 0,

累积净值 34.84 年化收益 274.25% 最大回撤 -13.11%

offset 1,

累积净值 31.46 年化收益 260.36% 最大回撤 -13.07%

10000W选定持仓2小时吧,跑2个offset,0.2选币,然后10000/2/2/(340*0.2)=36U,刚好。

在确定持仓2小时后,再试试其他参数。

先试试因子参数,14*24

累积净值 28.36 年化收益 246.72% 最大回撤 -11.23%

30*24

累积净值 25.92 年化收益 235.29% 最大回撤 -11.76%

从以上可以看出,因子越大,则回测越差。所以定下来因子参数为168。或者可以在168附近继续回测。

然后固定持仓2H,因子参数168,pct过滤因子参数168,过滤0.8,offset = 0,看看选币百分比是否影响。

0.1且long_nums,

累积净值 34.84 年化收益 274.25% 最大回撤 -13.11%

0.1且0.1

累积净值 36.63 年化收益 281.29% 最大回撤 -16.69%

0.2且long_nums,

累积净值 20.41 年化收益 206.80% 最大回撤 -14.67%

0.2且0.2,

累积净值 23.58 年化收益 223.72% 最大回撤 -15.66%

10个币10个币

累积净值 38.25 年化收益 287.49% 最大回撤 -13.71%

15个币15个币

累积净值 37.85 年化收益 285.97% 最大回撤 -13.11%

20个币20个币

累积净值 32.63 年化收益 265.25% 最大回撤 -14.56%

可以看到,随着选币数量的增多,收益在下降。

我这个持仓时间短,那么我是不是可以少选币啊,如果空头一个币暴涨,那么下一个小时就选不到了。应该不会爆仓吧。

那么我不妨用1H且多空都10个币怎么样?

持仓1H,参数因子168,过滤因子参数168,0.8过滤,10个币。

10个币持仓到时候看看强平的价格。

累积净值 44.8 年化收益 310.92% 最大回撤 -21.79%

就跑这个吧

post image

分析以下中间-21%回撤的情况。除了这个回撤大,其他回撤都可以接受。

线跑这个吧

再试下0.7过滤

累积净值 20.66 年化收益 208.18% 最大回撤 -23.12%

很不稳定啊,下降好多。

0.9过滤呢?

累积净值 40.92 年化收益 297.32% 最大回撤 -21.12%

选这个吧0.9过滤,因为默认代码是0.8,所以我们这里选个0.9好了。

那么实盘参数就是选币个数多空一样都是10个,总共20个币,因子参数128,过滤参数128.持仓1H,过滤0.9百分比。跑起来!!!