AI时代量化交易指南 3:PowerQuant 让 AI 自主进化写策略
AI的反馈困境
上次写完文章后,我意识到一个问题:在量化交易中,是什么限制了AI的智力呢?
在构建的「假设-验证-反馈」环中,对AI来说最宝贵的是反馈,这个反馈是从回测中、从交易中的具体效果来的。但是AI就像一个笼子里面的天才,获取不到这些数据。
所以我想把这个环节打通。
我对目前国内所有的期货量化平台都比较了解,对于一些封闭平台,需要人手工 copy 代码的直接 pass 掉了,所以只有那些能在 Python 环境中自动运行的我留下来了挨个测试。但是结果很不好!!!因为现在主流的平台 vnpy tqsdk 都是 Python 代码的,而 Python 一大槽点就是慢!!!
一个 100 万数据的 1 分钟数据,回测完成大概几分钟到十几分钟不等。这么慢的速度,严重拖慢AI进化的脚步。
Rust:给AI装上强大的执行器
所以必须给AI装上一个强大的执行器。
这个时候 Rust 该上场了。
我曾经使用 Rust 写过几个项目,策略湃的第二版本也是用 Rust 重构的,所以还算熟悉。尤其有了AI加持后,写 Rust 如虎添翼。最近一段时间由于没有那么多高性能的项目使用,也荒废了。
我找到很久之前用 Rust 写的一个回测框架,并且让AI持续优化了一个星期,并且使用 pyo3 做了个 Python 的封装。回测效果杠杠的,100 万k线数据在我本地跑下来只需要 400ms,就算是 Python 代码的策略运行完成也就是 1.4s 的时间。当前 Python 受限于 Python 端的算法速度,对于一些计算密集的还是慢点,但是也够了,都能在分钟以内完成!!
而且代码框架也简单,计划以后与 vnpy 还有 pythongo 这些平台打通能做到无缝衔接,而且还做了个能直接转译成其他语言的 skill,可以把比较好的策略,直接转成 tbquant 或者 pythongo 的语言进行交易。
让AI自主进化写策略
说了这么多,策略自动进化的效果与感知如何呢?
看下我今天中午睡觉的时候,让AI自动运行的结果。在我午睡的时候我设置了一个目标,让AI在数据中自动运行,找到索提诺比率大于 3 的策略。然后运行至今已经持续 1 小时了,虽然还没有达成目标,但是结果已经够惊艳了(比较目标很变态)。

我翻看了他的记录,他会根据策略的特点,自动总结策略的缺点来进行合理的规避,在交易过多的时候,能知道添加过滤条件来过滤。

并且在第七轮的时候,他发现了 ATR 指标对过滤比较有效果,而且紧接着,就想使用自适应均线来延伸这个方向的效果。并且他认为 ATR 和海龟有些像,还想帮我撰写海龟策略,但是由于跟踪止损的效果不好,就放弃这个路线了。

并且有的策略交易太少,他认为存在过度优化的嫌疑,也放弃了该路线。
这一个小时,我没有任何的接管干预,完全是他自己在运行。我计划让他运行完成后进行一个总结,来提升自己的路线思路。
并且他还会给我打比方,当前的策略为什么不行:
手续费让亏损增加了:
- 绝对值: +934 元
- 相对值: +52.2% (934 ÷ 1,790)
所以:
- 手续费加重了亏损,但不是亏损的根本原因
- 根本问题是策略本身就不赚钱(毛亏损1,790)
- 如果策略能盈利,手续费才会成为主要考虑因素
打个比方:这就像一家餐厅,即使房租(手续费)免费,但因为菜不好吃(策略不行),顾客还是很少,最终还是亏本。
进化过程可视化
当然这么看命令行的窗口还是不够直观,所以我做了个可视化的界面来展示这个进化的过程。

在这个进化过程中,有的是方向的更改,例如从均线到 ATR,有的是参数的优化,比如AI尝试不同的策略。虽然还没有运行完成,但是里面也已经有很多不错的策略,例如下图的:

AI时代的工业革命
写到这里不得不感慨,AI的出现真是对各行各业都有颠覆性的冲击。有的大佬曾经说,所有用电脑的行业都要被重构一遍。在写完这些文章后,我表示深有同感。
在这个大浪潮下,我们就像工业革命时期的纺织工人一样,看着机器取代我们。是快速地学习如何操作机器,还是坚持维护自己的纺织工人的优越性?历史给了我们答案。
任何工具性的进化带来生产力的提升,其实都是催生人与人之间的差距。工业革命后的工人阶级(使用工具)摧毁了小农阶级(自纺工人)。AI时代的AI人取代了信息人。