AI助手–自然语言生成动量策略工作流
  Jie- 29天前 140 2

试试动量策略

动量策略简单来说,就是“强者恒强”——过去表现好的股票,未来可能继续好。但在实际操作中,纯动量策略容易踩坑,比如追高杀低、忽略基本面,或者被高波动股票拖累。基于这些痛点,我让 ai 设计了一个日频策略,融合了动量、质量(基本面)和低波动过滤,标的池限定在沪深300成分股上。

image.png
image.png

为什么选择动量作为核心?

在A股,动量效应特别明显,尤其是中短期(比如20-60日)。我的策略用过去60日的累计收益率作为动量指标——为什么60日?因为太短(如20日)容易受噪音干扰,太长(如120日)又会错过转折点。通过回看历史数据,我发现60日窗口在沪深300上表现最佳,能捕捉到中期趋势而不至于过度敏感。

但纯动量有两大问题:一是“反转效应”,高动量股有时会突然崩盘;二是忽略了股票的“内在价值”。所以,不能是简单排序买入,而是叠加了过滤和质量因子,让动量更“靠谱”。

叠加低波动过滤

高波动股票往往是动量策略的杀手——它们涨得快,跌得也狠,容易放大回撤。在我的策略中,我计算过去60日的日收益率标准差作为波动率指标,然后剔除排名后30%的“高波动鬼”。

为什么低波动好?研究显示,低波动股长期回报更高(低波动异常),因为投资者偏好“彩票股”(高波动高潜在回报),导致低波动股被低估。

这个过滤直接从源头控制风险:在选股池中,只留波动率中低位的股票。这样,策略不是追“热点妖股”,而是选“稳健趋势股”。比如,在牛市中,这能避免买入那些暴涨暴跌的题材股;在熊市中,持仓更抗跌。

融入基本面质量

动量是“表象”,基本面是“根基”。我加了两个基本面过滤:市值和盈利能力。

市值过滤:最小50亿,最大5000亿。

为什么?小市值股流动性差,容易操纵;超大市值股(如银行股)太钝化,动量效应弱。我还对市值做了“中等偏好”处理:用对数市值计算偏离中位数的负绝对值,然后标准化。这鼓励选“中型成长股”,避免极端。

盈利能力:要求净利润>0。

简单粗暴,但有效——亏损股动量往往是“假象”,容易反转。未来可以升级成ROE或毛利率,但先从基础入手。

综合评分与选股逻辑:多因子加权

因子算好后,我用Z-score标准化(_zscore函数),然后加权合成分数:

  • 动量(mom_z):权重0.5,主因子。
  • 盈利(profit_z):权重0.2,强调质量。
  • 中等市值(mktcap_z):权重0.2,平衡规模。
  • 低波动(vol_z = -vol_z):权重0.1,辅助风险控制。

排序后,取前25只(max_stock_num=25),等权买入,但单票权重上限7%(max_weight_per_stock=0.07),预留3%现金(keep_cash_ratio=0.03)。这样,分散风险。

调仓频率:每10个交易日一次(rebalance_period=10)。

风险控制与实现细节

整个策略强调“防守”:

  • 标的池限定沪深300:用get_index_weights获取成分股,避免小盘股黑天鹅。为什么沪深300?流动性好、代表性强,适合动量发挥。
  • 持仓管理:在_rebalance中,先卖非目标股,再按目标价值计算股数(100股整数倍),用order_shares下单。考虑了可卖量(sellable),避免T+1限制。
  • 日志与监控:before_trading更新成分股,after_trading打印净值和持仓,方便debug。

回测结果

image.png

image.png

策略优势与潜在改进

这个策略的核心思路是“动量驱动 + 高质量股 + 低波动”,适合A股的“趋势+价值”环境。

回测显示(基于历史数据),它在2015-2024的沪深300上,年化超额不错,回撤控制在18%以内。但市场无常,过去表现不代表未来。

下面是 pandaai 的 ai 给的建议,非常专业。有了 pandaai,搭框架写代码的事几乎不用操心,只管自己的策略思路。而且 pandaai 强大的分析能力也有助于我改进策略。

整体来看,这个多因子日频策略回测表现“良好偏上”,属于B级水平:年化收益约32.8%,对应最大回撤约14.3%,夏普约1.34,索提诺约1.50,显著跑赢沪深300年化约15.4%。 

从风险调整收益看,夏普>1且索提诺略高于夏普,说明单位下行波动获取的超额收益尚可,回撤控制在15%以内,对应beta≈0.70,整体偏中低风险风格。策略波动率约21.4%,比基准高一些,但alpha≈0.21、信息比率≈0.84,说明超额收益具有一定稳定性,跟踪误差约16.7%,风格并非“贴指数”,而是有明显主动暴露。 

优点方面:

1)收益/回撤比大致在 2.3 左右(32.8% / 14.3%),性价比较合格;
2)beta<1,配合中等回撤,说明策略在系统性风险暴露上控制得还可以;
3)信息比率接近1,表明超额主要不是一次性“运气”,而是有持续性的选股/择时效果。 

不足与风险点:
1)夏普未到2,若作为高频/多因子主动股票策略,风险调整收益还有提升空间;
2)波动率偏高,若资金体量较大或杠杆使用,会放大净值回撤体验;
3)KAMA ratio为负,提示净值曲线中存在一段或多段走势质量较差的区间,可能经历了较长时间的“横盘或震荡回撤”。 

改进建议:
1)进一步收紧风险控制:例如在现有选股框架上增加单票/行业回撤或波动过滤,力争在年化维持30%左右前提下,将最大回撤压到10%以内;
2)考虑加入简单的市场状态过滤(如指数动量、波动分位)减少在极端单边熊市或高波动阶段的暴露,可望提升Sharpe至1.6–1.8水平;
3)对调仓频率和持仓上限做敏感性测试(如调仓周期从10天尝试到15天、20天,或将单票最大权重从7%略下调),寻找回撤与换手之间的更优平衡点;
4)如果有成交成本模型,建议重跑含费用回测,验证在真实交易成本下夏普和信息比率的稳健性。 如果你愿意,我可以结合具体时间区间、收益曲线等再帮你拆解:哪一段行情贡献了主要超额,哪一段拖了后腿,并给出更细的参数优化建议。
最后一次编辑于 29天前 0

PandaAI-宁宁子

很详细的帖子!

2026-02-24 17:32:32      回复

老吕不OB

都沪深300的标的池了,限制市值意义不大了吧

2026-02-16 00:17:45      回复

推荐阅读
  tyler   24小时前   16   0   0 新手入门