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看不出来的话,那可能要付出真金白银才能知道。
来源:量化君也