DeepSeek-R1 模型自 1 月 20 日正式发布至今,热度持续飙升,小伙伴们玩得不亦乐乎,虽然得到的回答经常是 “服务器繁忙,请稍后再试”,但都抵不住大伙儿以各种方式想要提高生产力的热情。
有的人让 DeepSeek 为自己规划年入百万的职业生涯,有的人则问从 5w 赚到一个小目标的具体路径,而咱量化行业也有着非常强烈且垂直的需求,其中一个就是让 AI 帮忙想因子写策略。
这段时间,许多博主和个人宽客都让 DeepSeek 为自己构思和编写量化策略,并且把源码都 po 到公开平台与大伙儿分享,其中真的不乏有种有趣有料的 “三有” 策略,今天要唠的这一个策略,是我目前为止所见 DeepSeek 出品中最 “有种” 的。
在聚宽 JoinQuant 量化平台上,有用户上传了一个 DeepSeek 开发的收益非常炸裂的量化策略,2024 年初至今策略总收益 6119.82%,年化收益 4971.22%,但也在贴子里坦言 “好像有未来函数” 和 “AI 还得再加油”。


虽然作者没有在帖子里明说未来函数出现在策略的哪个地方,但我通读完代码后,发现了一个 AI 编写量化策略经常会出现的通病,没有量化经验的小白和 AI 经常看不出来,于是想给大伙儿提醒一下,才有了今天这篇文章。
既然是 AI 写的量化策略,那就先让 AI 解析一下,让大伙儿先看一下这个策略的真容。
Prompt:这是聚宽 JoinQuant 量化平台的一个策略源码,请总结这个策略的交易逻辑

以下是 AI 的完整回复 (已剔除代码引用):
我来分析这个聚宽策略的交易逻辑。这是一个基于动量的 ETF 轮动策略,主要逻辑如下:
1. 资产池设置
策略选择了多个不同类型的 ETF 作为交易标的,包括:
- 宽基指数 ETF:纳指、创业板、沪深 300、上证 50 等
- 主题 ETF:生物医药、新能源、科技、消费等
- 商品 ETF:黄金 ETF
- 固收类:国债 ETF、可转债
- 海外市场:恒生科技、中概互联、德国 30、日经、印度等
2. 调仓频率
策略设置为每天(rebalance_interval = 1)进行调仓检查。
3. 核心交易逻辑
主要交易规则:
- 计算所有资产过去 2 日的涨跌幅
- 找出涨幅最大的资产作为目标持仓
- 如果所有资产都为负收益,则默认买入国债 ETF(避险资产)
4. 仓位管理
采用激进的仓位管理方式:
- 卖出所有非目标资产的持仓
- 将全部可用资金买入目标资产(全仓操作)
策略特点
- 高换手率:每日都会检查调仓,可能导致较高的交易成本
- 动量驱动:追踪短期(2 日)最强势的资产
- 风险控制:在全市场下跌时会切换到国债 ETF,具有一定的避险功能
- 资产多样化:通过多元化的 ETF 组合,覆盖了境内外多个市场和行业
潜在改进空间
- 2 日的观察周期可能过短,容易受到市场噪音影响
- 全仓操作风险较大,可以考虑引入分散投资
- 可以加入更多的选股指标,而不是仅依赖价格动量
- 可以考虑加入止损机制来控制回撤
====== 回复结束线 ======
看到了吧,这就是一个侯选池固定的 ETF 轮动策略,利用 2 日的动量选择标的,每日调仓。利用 AI 进行总结,并不完全是因为我偷懒 (虽然事实是),是因为我要确定它已经完全读懂了这个策略,接下来我就要向 AI 问出最关键的问题:这个策略当中存在未来函数吗?会不会在当前时间取到了未来的数据?
AI 经过一通分析后给我的回答是:总的来说,这个策略在时间序列的使用上是合理的,不存在未来函数的问题。

那到底有没有未来函数呢?这很简单,在策略源码当中初始化的部分,加上这行代码 set_option (‘avoid_future_data’, True),再重跑一下策略就可以了。

看到没有,回测直接失败,报错信息:jqdata. exceptions. FutureDataError: avoid_future_data=True,get_price 取天行情时,盘中不能取当日的 {‘close’} 字段数据。
刚才加的那条语句,就是用来打开平台的防未来函数功能,有未来函数的代码就会报错。报错的原因就是在 get_price 函数当中 end_date = context.current_dt,也就是取数的结束日期设置为今天,相当于早盘就取到了收盘的数据,妥妥的未来函数,而 AI 认为这种使用方式是正常的。

这个 ETF 轮动策略是利用 2 日动量来进行调仓的,现在相当于是开天眼多看了 1 天的涨跌幅,收益率能不炸裂嘛!合理的方法应该是 get_price 的取数日期只到上一个交易日,将 end_date 改为 context.previous_date 后,再重跑一次。

这样就原形毕露了,总收益从狠赚 6119.82% 到狂亏 43.03%,换做是我,肯定是要罚家里的 AI 三天不能吃饭的。
其实,这个策略或许还有另外一处未来函数,这也是 ETF 轮动策略的玄学所在 —— 固定的侯选池,人或 AI 都喜欢把现在涨幅亮眼的品种加到历史当中去。帖子的回测是从 2024 年开始的,侯选池当中有许多去年涨得非常好的标的,开天眼了也要加上好苗子才能效用最大化,比如说把侯选池当中的创业板 ETF 去掉,总收益会下降约 300%,去掉纳指的话大概会下降 800%。
DeepSeek 是一个很强的推理模型,也是国产之光,其实特别胜任编程的任务,咱可以把它当做是自己的牛马程序员下属,但咱作为领导,则需要具备验收任务成果的能力。给网页添加一个按键,行不行,点一下就知道了,但是量化策略,有 bug 看不出来的话,那可能要付出真金白银才能知道。
来源:量化君也
如若转载,请注明出处:https://www.zhangzs.com/520336.html