0手续费交易对值得被重视

6月,币安推出了几个0手续费交易对,紧接着Dydx交易所也跟进了。

dydx
dydx 交易所, 用户交易额的不同,手续费也不同

和币安不同,币安仅仅减免少量几个交易对的手续费。 DYDX则根据用户的交易额的不同,手续费可能是 0% ~ 0.1% 不等。

  • 月交易量小于10w U 或者 大于 5000w U的用户是免手续费的;
  • 介于10w ~ 5000w 的用户是手续费的主要贡献者。

真的有点类似我们社会的中产阶级,穷人阶级太穷了无法收割,富豪阶级富可敌国,收割不了。

那么0手续费交易(对)值得薅吗?

我们做一下实验。

手续费差之毫厘,收益失之千里

下面是同一个由AI驱动的策略。

按万分之0.5 (0.005%) 手续费计算, 也就是几乎忽略手续费,2022年初至八月底 获得了679.48倍收益 (是679.48倍,不是679.48%,没错!)。

btc-679

下图按万二五(0.025%)手续费计算,收益只剩 7.03 倍了。

btc-7

下图按万分之5(0.05%)手续费计算,收益是负的! -0.28倍!
但是从下方的第二个子图的蓝色点 vs 红色点可以看出,盈利的交易依然多于亏损的交易,只是获利不足以覆盖手续费开支而已。

btc-028

越是高频的交易策略,对手续费越是敏感

笔者做了一下实验,发现最小K线用到2分钟图(但是不意味着只使用2分钟K线,可能同时也使用了6/8/12/20/25/40/50分钟图,稍后解释)的策略,按一开一平各万分之五(0.05%)手续费计算,2022年至今依然获得 429倍的收益, 但手续费消耗也极大,也就是说,每获得100W收益,就给交易所贡献了大约30W手续费。

实验1

最小周期K线使用15分钟图的策略,2022年获利能达到 14倍, 但是手续费/利润比达到0.1662, 也就是说,每获得100W收益,就给交易所贡献了大约16W手续费。

item value
回测天数 2022-01-01 ~ 2022-08-22, 一共经历234天
最小K线周期 15分钟
总计K线数量 22369
有交易的K线数量 1570
平均每日开平仓次数 3.3547
盈利次数 485
亏损次数 300
胜率 0.6178
盈亏比 4.66725
最大回撤 2022-06-15~2022-06-17 -4.39 %
初始资金 10000
期末收益 143915.3983
手续费 (0.05%) 23931.5461
手续费/利润比 0.1662
详尽performance report 点此查看详尽的performance report

点此查看详尽的performance report

实验2: 高盈亏比能缓冲手续费开支

最小周期K线使用5分钟图的策略,2022年获利能达到122.8倍, 手续费/利润比达到 0.111, 也就是说,每获得100W收益,就给交易所贡献了大约11W手续费。看起来比实验1更好,但是这个策略的盈亏比可是实验1的3.5倍。

item value
回测天数 2022-01-01 ~ 2022-08-22, 一共经历234天
最小K线周期 5分钟
总计K线数量 67105
有交易的K线数量 1878
平均每日开平仓次数 4.0128
盈利次数 718
亏损次数 221
胜率 0.7646
盈亏比 14.5567
最大回撤 2022-05-12 ~2022-05-12 -4.33 %
初始资金 10000
期末收益 1228343.2434
手续费(0.05%) 136474.0234
手续费/利润比 0.111
详尽performance report 点此查看详尽的performance report

点此查看详尽的performance report

实验3

最小周期K线使用2分钟图的策略,2022年获利能达到428.4倍,手续费/利润比达到 0.298, 也就是说,每获得100W收益,就给交易所贡献了大约29.8W手续费

item value
回测天数 2022-01-01 ~ 2022-08-22, 一共经历234天
最小K线周期 2分钟
总计K线数量 167761
有交易的K线数量 7746
平均每日开平仓次数 16.5512
盈利次数 2342
亏损次数 1531
胜率 0.6046
盈亏比 5.0219
最大回撤 2022-05-12~2022-05-12 -5.92 %
初始资金 10000
期末收益 4284453.7637
手续费 (0.05%) 1280223.3087
手续费/利润比 0.29880
详尽performance report 点此查看详尽的performance report

点此查看详尽的performance report

上面均是没有使用杠杆的结果。 每日的交易次数有点多,因为系统会合成6/8/12/20/25/40/50分钟等不常见的K线,并抓住其中的交易信号。

题外话

428 没什么好惊奇和质疑的,刚才428倍收益的策略,分散到每一个月份,也就42%~330%而已

上面的实验中,有些策略不到1年就几百倍的收益,系统算错了吧! 还是用了什么黑科技?

我第一感觉也怀疑系统算错了。

然后我用了PyFolio 、 QuantStats 和 Backstrader自带的analyzer分别做了业绩分析,结果显示一致的。

依然担心它们全部都错了,就又用pandas分析和统计了原始的交割单,再抽查了部分交割单的盈亏和手续费计算,结果显示依然是一致的。

原始交割单 原始交割单

原始的交割单有备份,哪位读者朋友有兴趣再次分析一下, 可以加入 这个Slack Channel 索取, 如果加不了请 点此Telegram联系博主

--slack-- 欢迎加入“ML与量化”Slack Channel一起探讨学习

上面是开发者/研究人员的Channel, 不想参与研究,只想围观研究成果的读者朋友请加 https://litupme.slack.com/archives/C042YH1C945

至于有没有使用什么黑科技,可以简单的总结为:
如果这部分没看懂,可以先读下方FAQ,然后再回头看

  • 1.时序预测模型提供了60%左右的准确率 <- 很平凡对吧?
  • 2.仓位优化模型加重了获利较好的交易的仓位,减少了获利一般的交易的仓位,阻止了亏损或者不盈不亏的交易。
  • 3.风控模型使用和1类似的预测技术,在暴风雨来临之前就“只平不开”,或者提前退场避险,把最大回撤压到极低。
  • 4.按需合成 6/8/12/20/25/40/50分钟的K线图,并监控其中的交易信号提供了更多的交易机会,日均交易次数有时可达16次/日。

更详尽的信息请认真看下方FAQ

Faq

下面部分有很多AI领域的专业术语,没有相关基础的读者可以先看看“AI知识导读”

AI知识导读(点击展开)

>> 你知道吗? 在暴风雨来临之前,你会看到一些迹象:天空乌云密布,狂风把树叶、沙尘和垃圾袋刮得四处乱飞 等等迹象。在地球上待久了的居民都能预感暴风雨来临。

> 金融市场的风暴来临之前,也是有一些迹象的,在金融圈待久了的人能够预感风暴的来临。


>> 以前,天气预告是靠气象学家人工分析的, 要看卫星云图和各种传感器的数据,看完这个城市,看那个城市,非常辛苦。气象学家要经过多年的学习和实战才比较准确。

> 以前,金融投资是靠分析师/基金经理人工分析的,要看图表和各种财报数据,看完这家公司,看那家公司,非常辛苦。 分析师/基金经理要经过多年的学习和实战才能上战场。


>> 现在,天气预告是由AI模型分析和预测的。只要GPU够强大AI模型可以一夜之间吃掉过往几年的气象数据,并从中学会天气预测。

> 现在,金融投资是由AI模型分析和执行的,只要GPU够强大AI模型可以一夜之间吃掉过往几年行情数据,并学会……

—— —— —— —— —— —— —— ——

假定我们有一个预测天气的AI模型,我们丢几年的历史天气数据给它学习,那么这几年的数据叫做训练集, 数据中的 温度、湿度、风向、风速等有效成分称之为特征。 模型投入使用之前,我们先给它几个月的数据(且这些数据是训练集里面没有的,它从来没有见过的)让它试试预测得准确不准确,那么这部分数据叫做测试集,测试集和训练集必须没有交集。 “预测”更专业的叫法也称作 推导

假定这个模型是预测 明后天下雨还是不下雨的,这个模型是二分类模型,它推导的结果只有2个:下雨、不下雨。

假定这个模型是预测明天 不下雨、小雨、中雨、大雨、暴雨的, …… 它是 多分类 模型。经常用于做分类任务的神经网络有 DNN。

假定这个模型是预测明天的气温的——一个个具体的数值的, 它是个线性回归模型。 因为气温在每个时间点都有一个值(类似股价),这个推导任务也称之为 时序预测 。 经常用于时序预测的神经网络有 LSTM、seq2seq、 transformer等。

假定这个模型同时推导出 明天有没有 小雨/中雨/大雨/暴雨、明天气温、风速、风向、湿度、紫外线强度等, 可以用seq2seq 来实现。

上面这些模型都需要人类整理和标注许多数据喂给它学习,还有许多调参等人工环节,这个过程叫做 有监督学习

假定把1个AI自动驾驶车辆扔到路上让它乱撞,撞死算了,重头再来, 当它撞了数不清次之后就自己学会开车了, 这叫做 无监督学习

—— —— —— —— FAQ: —— —— —— ——

  • 策略是在什么周期的K线上操作的?
    答:全部周期。传统的交易会在 1分钟、5分钟、10分钟、30分钟、1/2/4/12小时等线图上操作。
    而这个策略会K线图重采样为 2/3/4/6/7/8/9/12/16 …… 40/50分钟图,并抓住其中每一个周期的交易机会。实验证明:单个标的在多个周期的交易机会要比 多个标的在单个 timeframe K线图上的交易机会 要多得多,可能是因为整个币圈的98%的比都是具有协同性(高度相关的),大饼在15分钟图上没有交易机会时,遍历整个市场,通常也没有。
    但可能不会同时使用 51分钟、52分钟、53分钟 这种图, 因为他们太过于类似了,浪费计算资源。

  • 策略在满足什么条件下开仓和平仓呢?
    答:并不能用传统的技术指标术语去描述,也不能用硬编程或者数学公式去界定,就像你可以写出程序代码或者数学公式分辨胖子和瘦子,但是“美女”和“非美女”却很难用程序代码或者数学公式来分组。AI模型则可以给颜值打分,前提是,你喂给它足够多的美女图片和得分。
    不否认训练集中也有一些流行的技术指标和新创的指标作为特征,但目前还没有用feature selection去衡量其对模型推导结果的帮助。

  • 训练集都包括哪些数据?
    答:单个交易提供的OHLCV数据、多个交易所提供的volume数据、ETH/EVM运作产生的数据(并非由交易所提供)、Gan模型生成的一些未来仿真数据。数据多多益善,就像一个预测天气的模型,最开始可能只有 过去和当前的温度、湿度、风向、风速、紫外线强度、pm2.5等,现在把太阳黑子活跃程度 的数据也扔进去,说不定天气和太阳黑子真的有关系,模型就能获得进步,当然如果他们俩没有啥关联,最坏的结果也只是多耗点CPU 算力而已。

  • 用了多长时间的数据作为训练集? 测试集呢? 发生数据漂移时是怎么处理的?
    答:非严格来讲最初训练集数据只有2021年上半年的2-6个月的数据, 但是策略中使用的大部分模型是 online training 模型,意味着,当回测K线走到2022-02-22时,各个模型已经用2022-02-21以前的数据训练了自己; 当回测K线走到2022-02-23时,各个模型已经用2022-02-22前的数据训练了自己。和一些用了前两年的数据做训练和测试集,然后期望不用继续更新,就能在今年中表现卓越的模型还是不一样的。
    如果数据只是缓慢地发生了concept drift,上面的机制会很快地学到新的概念;如果极短时间内发生了剧烈的domain drift,寄望于下方2个风控模型起作用。

  • 这是CTA趋势策略还是均值回复策略?
    答:不能用传统的目光去归类。这是1个AI驱动的策略,其中有一组时序预测模型负责预测未来几根K线的走势,如果模型推导出来的近期K线往某一个方向走的幅度和概率达到一定的标准(并且这次交易被另外一个多分类模型分到“盈利的”、“不盈不亏的”、“亏损的”中的第1种分类),系统则会顺势开仓。……更像CTA策略。

  • 最大仓位是多少? 最大杠杆呢?
    答:也是由AI决定的。 上面提到 “并且这次交易被另外一个多分类模型分到“盈利的”、“不盈不亏的”、“亏损的”中的第1种分类”只是为了简化易理解的解释,实际上 “盈利的” 这种类别中又分为 “盈利超过100%的”、“盈利50~100%的”、“盈利20~50%的”等等,假定一次交易在准备开仓时被这个分类模型分到比较靠前的类别,则仓位比较重,否则比较轻。杠杆是动态的,被限制为最高不超2倍。

  • 最大回撤是多少? 有没有设定硬止损?
    答:不超6%,没有设硬止损。 风控这块由3个模型起作用:
    第1个是上面的多分类模型,假定一个交易在即将开仓的一瞬间被分类到 “不盈不亏的”或者“亏损的”,则仓位被调整为0。
    第2个模型是一个非常保守的时序预测模型,利用了“狂风大雨来临前夕,总是会有一些征兆,在地球上生活久了的人都懂。金融风暴来临之前也会有征兆”的原理, 模型发现推导出的K线走势和真实走势不接近了,就知道自己不行了,“宁可错过,也不做错”,就知道该跑了。假如传统的乖离率像“假如3小时内平均降雨超过150mm,那么我们就终止运动会,回室内休息(但毕竟也被雨淋了3个小时)”, 那么时序预测模型更像“如果接下来的几个小时不再天晴,那么就不开运动会了”。 传统的指标计算止损法是滞后的,等待亏损发生了再去止损,预测模型努力去躲开风险大于收益的区域。
    第3个模型是一个强化学习模型,目的是让1和2成为好搭档发挥到最优。


长按识别下方二维码可在浏览器中打开阅读。