Q-CodeQ-Code 打开工作台

动量均线双确认选股

趋势跟踪A股风险 中进阶更新 2026-09-24#动量#双确认#个股

个股版双确认:12-1 动量与 60 日均线串联选股,时序退出兜底,A 股动量偏弱背景下定位为验证框架。

策略目标与定位

个股版双确认:把时间序列动量的绝对确认(自身过去一年涨了没有)与均线趋势确认(价格站上中期均线没有)串联成两道闸门,只有两道同时打开的股票才允许进入持仓 [1][3]。设计动机来自两个经典框架:时间序列动量文献证明资产自身过去收益对后续收益有预测力 [1],双动量框架则强调相对动量选强必须叠加绝对动量避守,避免在全面下跌市里被迫持有一个相对最不差的组合 [2]。本篇与已登记的两条动量条目互补:ETF 版(ts-momentum-dual-confirm)验证单资产择时,动量因子选股(momentum-factor-select)是纯截面对照组;本篇把截面排序选出的强势股再用时序条件过滤一遍,是两条线的合流。需要如实说明:A 股个股月度动量效应弱于成熟市场、短期反转更强,本文将其定位为验证框架而非成品 [4]。

数据需求与可得性

数据 字段 频率 可得性
行情 后复权收盘价 日线 QMT 本地行情,全量可得
状态 停牌、涨跌停、ST 标记、上市日期 日更新 本地基础信息,可得
状态 指数或成分股清单 月度 参数注入,可得

无财务字段依赖,全部信号可由本地日线行情推导,是本策略相对财务类因子的数据优势。

双确认条件

对股票 ii 在调仓日 tt:

Momentumi,t=Pi,t−21Pi,t−252−1>0(绝对动量,12-1 剔除最近一月)Momentum_{i,t} = \frac{P_{i,t-21}}{P_{i,t-252}} - 1 > 0 \quad \text{(绝对动量,12-1 剔除最近一月)}

Closei,t>MA60,i,t(中期均线趋势确认)Close_{i,t} > MA_{60,i,t} \quad \text{(中期均线趋势确认)}

两条件按与关系串联:任一不成立即视为不合格。截面层在合格池内按 Momentumi,tMomentum_{i,t} 降序取前 NN 只。窗口均不含当日,规避未来函数。

参数表

参数 默认值 说明
动量回看 252 日 剔除最近 21 日,形成 12-1 窗口 [4]
均线窗口 60 日 中期趋势基线,可对照 120/200 日
持仓数量 N 20 只 等权
单票上限 8% 含停牌冻结的约束
调仓频率 月度 收盘评估,次日执行
缓冲带 排名跌出前 30 才换出 抑制排名噪声换手
退出规则 任一确认失守即次日卖出 硬性,不走缓冲
全失守处理 空仓持币 合格池不足 5 只时整体降半仓

参数均需样本外验证后才能固化,当前取值为文献常用量级的起点而非结论。

执行规则

  1. 每月最后一个交易日收盘后重算全部候选股的双确认状态;
  2. 合格池 = 双确认成立且非停牌、非 ST、未涨停(次日可成交)的股票;
  3. 按 12-1 动量降序取前 20 只,已持仓股票若排名仍在前 30 则保留(缓冲带);
  4. 调仓指令次日开盘执行,涨停不追、跌停顺延;
  5. 非调仓日的持续监控:已持仓股票在月内一旦出现动量转负或跌破 60 日线,立即进入次日卖出台账,不等月度调仓——这是与纯截面动量最大的执行差异;
  6. 合格池不足 5 只视为系统性趋势失守,整体降半仓;全部失守则空仓。
  7. 财报披露窗口(4 月、8 月、10 月)内新进持仓需检查当日是否有未披露完毕的定期报告,避免满仓踩雷。

风险与失效场景

  • 动量崩溃:市场剧烈反转期,前期强势股集体回撤,动量策略损失集中在短短数月;文献显示波动率缩放可部分缓解 [5],本策略的时序退出是同一思想的粗糙实现;
  • A 股动量偏弱:横截面动量在 A 股长期表现弱于反转 [4],本策略可能整段样本跑不赢基准,这是已知风险而非实现缺陷;
  • 均线缠绕磨损:震荡市中价格反复穿越 60 日线,双确认频繁开合,换手与摩擦成本吞噬收益;
  • 退市与踩雷:强势股未必健康,需配合 ST 与财报窗口检查;
  • 拥挤交易:广为人知的动量信号在极端行情会出现一致性踩踏。

执行检查清单

  • 所有窗口(252/21/60)均不含调仓当日数据
  • 调仓指令统一次日执行,无当日信号当日成交
  • 停牌股不进合格池,持仓股停牌冻结并在复牌日重估
  • 涨跌停日的买入与卖出顺延处理
  • 月内任意确认失守都触发次日卖出,不仅月度检查
  • 单票权重不超过 8%,等权基准下单票不超过 5% + 偏离修正
  • 回测与实盘使用同一套信号代码路径

QMT 实现模块(展示用,待验证)

# 双确认筛选模块(展示用,非成品;回测与实盘共用此函数,禁止未来函数)

def dual_confirm_universe(context, candidates):
    """返回双确认成立的合格池,candidates 为参数注入的成分股清单"""
    qualified = []
    for stock in candidates:
        if is_st(stock) or is_suspended(stock):
            continue
        bars = get_history(stock, context.lookback_days + 1, '1d',
                           fields=['close'], include_now=False)  # 不含当日
        close = bars['close']
        mom = close.iloc[-22] / close.iloc[-253] - 1.0   # 12-1 动量
        ma = close.iloc[-60:].mean()                      # 60 日均线
        if mom > 0 and close.iloc[-1] > ma:
            qualified.append((stock, mom))
    return sorted(qualified, key=lambda x: -x[1])

# 月度调仓:qualified 取前 N,缓冲带保留排名前 2N 的存量持仓;
# 持仓监控:handle_bar 中每日复核双确认,失守次日报卖单。

验证状态

待验证。需要完成:双确认与纯截面动量(momentum-factor-select)、纯均线趋势(dual-ma-trend)的分组对照;60/120/200 日均线敏感性;缓冲带宽度对换手的影响;动量崩溃窗口(如 2015 下半年、2016 初熔断段)的回撤行为;A 股各样本期动量强弱的时间稳定性检验。本文不提供任何未实测的收益或回撤数字。

参考文献与延伸

[1] Moskowitz, T., Ooi, Y. H., & Pedersen, L. H. (2012). Time Series Momentum. Journal of Financial Economics, 104(2).(时间序列动量的系统证据)

[2] Antonacci, G. (2014). Dual Momentum Investing. McGraw-Hill.(相对动量与绝对动量叠加的双动量框架)

[3] Brock, W., Lakonishok, J., & LeBaron, B. (1992). Simple Technical Trading Rules and the Stochastic Properties of Stock Returns. Journal of Finance, 47(5).(均线类交易规则的早期系统检验)

[4] Liu, J., Stambaugh, R., & Yuan, Y. (2019). Size and Value in China. Journal of Financial Economics, 134(1).(中国市场异象结构:成熟市场部分因子在 A 股弱化)

[5] Daniel, K., & Moskowitz, T. (2016). Momentum Crashes. Journal of Financial Economics, 122(2).(动量崩溃的形态与波动率管理的缓解作用)

[6] Q-Code 量化策略工作台

策略逻辑结构

  1. 行情数据 — 后复权收盘价与基础状态
  2. 12-1 动量 — 252 日剔除 21 日的绝对动量
  3. 均线确认 — 收盘价高于 60 日均线
  4. 截面排序 — 合格池内动量降序取前 20
  5. 时序退出 — 月内失守立即次日卖出
  6. 月度再平衡 — 缓冲带与空仓兜底

AI 生成提示词

复制以下提示词,打开 Q-Code 工作台粘贴到 AI 对话框,即可自动生成该策略的 QMT 策略代码(单个完整 .py 文件,支持 QMT 回测与实盘)。

请生成一个 QMT 兼容的 A 股动量均线双确认选股策略。股票池由参数注入,剔除 ST、上市不足一年与停牌标的:计算 12-1 动量(过去 252 日剔除最近 21 日)与 60 日均线,两者同时成立(动量为正且收盘价高于均线)进入合格池,按动量降序取前 20 只等权持有;已持仓标的月内动量转负或跌破均线立即次日卖出,不等月度调仓;缓冲带为排名跌出前 30 才换出。涨停不追、跌停顺延,全部参数写入 init,禁止未来函数,兼容回测与实盘分支,输出单个完整 Python 文件并包含详细日志。
用自然语言,生成你的 QMT 策略
注册即赠 200 积分,约可生成 5 次 · 支持 Kimi / GLM / DeepSeek
打开 Q-Code 工作台