【python数字货币量化_21精华帖_策略第26篇】币安多币种趋势轮动策略,回测篇

[复制链接]
查看255 | 回复0 | 2023-8-6 04:19:43 | 显示全部楼层 |阅读模式
最近牛市很疯狂,一时不禁FOMO,一时担心崩盘,还害怕BTC吸血,于是乎要了一份轮动策略的回测代码,在此基础上弄了一套多币种的轮动回测框架,和一套币安的多币种轮动实盘框架。
0 f/ W) c4 u) M( z7 ~: o5 Z: D* q一、轮动理念
3 o, |: ]) d2 X' I3 W- E简单来说,就是在预先设定好的轮动池中,哪个币近期涨势最好,就持有哪个币(现货),如果轮动池里所有币近期都是下跌,就一个都不持有,全部换成USDT。
' Q  \/ `  Z0 c* W$ v+ x% L( ~如此便不用担心上不了车,只要牛还在,总能吃到收益;也不怕牛转熊暴跌,因为熊市大部分时候手上的币都换成了U。
& j# d! x5 U) {( O$ d' e二、代码解析
, k$ b" M8 g/ ?: j( ]
! o3 p* \' x6 j相对于原版的代码,此处主要改动了数据读取和处理的框架,不仅使得我们可以无限制的往轮动池里添加币种(基本能获取到现货数据的币都可以往里加……当然实际还是不要塞那么多的好),还可以用各种因子来选币。
7 {3 U9 N: S7 w3 K所以下载代码后,主要修改三个地方即可:: C* Y# p  ]) |1 S% B* p
1、计算因子/ L. g3 D. _8 m! C! l3 ]

# N0 G$ y8 c! i; q) F9 K! L% k8 i& b! f' H3 z+ e* l8 ~- b
【python数字货币量化_21精华帖_策略第26篇】币安多币种趋势轮动策略,回测篇-1.jpg
. t" z' S! m% q: n# o设置参数里,大部分都不需要改动(这个1D, 20的参数真的很优秀),唯独要注意选币因子factor。我这里用了经典的True因子gap,原版用的是momentums,即基本的百分比涨跌幅。两者回测出来差别不大,各位如果有偏好的因子,甚至是因子组合,都可以自行在signals.py里编写添加。
' l. T. l  x+ |4 J0 V2、历史数据格式+ Z( z1 A  E- _8 h& ]! L, z

* M8 O1 U2 c3 R, R2 d! `
2 _+ G; o8 S+ @$ O" f: Z- Upath路径要改成你电脑上存放历史数据的目录,大体格式如图所示,此处用的是pkl文件。如果你用的是HDF,记得在function.py里修改读取方式。8 s3 Z6 n# p) e# ]" }5 d
3、轮动组
3 D# [2 i! d% k; ?
" Y% z+ q6 A8 v6 U5 p 【python数字货币量化_21精华帖_策略第26篇】币安多币种趋势轮动策略,回测篇-3.jpg
3 I: `7 K' W4 B1 X按你的认知和喜好来添加吧……此处用了市值前三。
' k/ i. H; @" l" M三、实际效果
: V3 Y% S6 e' q1 V4 O( i8 @, @
用市值前三轮动,从2018年到2020年,收益如下所示:/ Q5 ^  g6 V0 T& j! [
累积净值 137.27! P, c+ ]" Q/ z2 Y
年化收益 360.13%
! Z% h, @" [. F0 |最大回撤 -68.40%6 r# }2 K" R5 O1 h- n6 m2 p
最大回撤开始时间 2018-04-24 00:00:00
+ {! Z9 @1 u8 A8 X4 D4 [4 T0 d) u" p& b最大回撤结束时间 2019-01-13 00:00:00, w8 w3 ^0 q" n3 T
年化收益/回撤比 5.267 M4 J* \4 D& _1 ]' B

9 k. o8 f- [2 L& L' E; j9 O2 u/ z/ I% j# a# _$ \' k+ Q
唔……是不是感觉很一般?回撤也挺大?也许是因为18年熊市……- N$ E) u" \8 D) `, F. X) ~6 G
再来看看从2019年到现今:4 g' m# D1 X6 {+ p& X4 ^
累积净值 223.696 v1 e1 p  B+ s9 a# c" k
年化收益 1038.11%0 ~5 S) V- c, v! x: v- J
最大回撤 -44.71%$ `. p/ L9 m- z" Q1 f" `
最大回撤开始时间 2019-06-26 00:00:009 Q! b7 O- w0 @
最大回撤结束时间 2020-01-02 00:00:00+ F0 A/ g" S) I
年化收益/回撤比 23.229 @9 j8 g$ q9 V7 h1 r6 h: n, [- U3 _

- X. z2 X7 b7 v$ I5 h( M 【python数字货币量化_21精华帖_策略第26篇】币安多币种趋势轮动策略,回测篇-5.jpg
! z* U$ {! z/ T# p7 F果然好了不是一星半点。) [0 @4 p8 Q9 J# t, C5 f$ x/ L
再试试把市值前10的都加入轮动池:
7 X0 d# q# E3 o7 C. k累积净值 88.29# p: a; H9 z* r4 M
年化收益 649.38%2 z, I, {$ `1 a* i9 L0 d3 [# |! `
最大回撤 -83.58%
4 N* l0 S) G% Z2 [9 q4 O9 d8 j  e$ V最大回撤开始时间 2019-06-26 00:00:00% z) u. r1 J% l/ z0 n4 M
最大回撤结束时间 2020-03-29 00:00:00
$ C0 U# I8 S  ^; y年化收益/回撤比 7.77
# U. Q: a- ~/ h" Z% A& D4 j- m# \  E! K" d; }
【python数字货币量化_21精华帖_策略第26篇】币安多币种趋势轮动策略,回测篇-6.jpg
3 k0 V0 w# f/ h3 }+ \' ]% Y回撤增加,收益降低,看来果然不能肆无忌惮的往轮动池里加货币。$ }# G1 ]6 V; W2 ~4 m
四、注意事项
! K1 m7 k8 O) D$ F- `  g& @% S( h- w. |+ W
计算结果会和原版有一定的偏差。这多半是由于和原版所用的数据整理方式不同(时差、K线计时方式等)造成的,应该不是框架本身的问题……吧。3 t- }( L- }8 q# t$ x
做的有些匆忙,希望各位大佬帮忙找虫。2 A4 n% w3 ?% h/ a; @2 L% Q& f
代码附件:: P2 b4 I- o- t7 n* J% |4 W

- }- K+ W% d# M9 H6 r  ^( c
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

270

金钱

0

收听

0

听众
性别

新手上路

金钱
270 元