4. 动量信号生成与阈值设定

动量指标本身只是一个连续数值,比如某只ETF近12个月涨幅为18%、近6个月涨幅为9%。这些数字无法直接告诉我们应该买还是卖。信号生成的任务,就是给这些连续数值加上"判断规则",把它们转换成离散的、可执行的交易指令:买入、持有、卖出或空仓。本节围绕两条核心规则展开——绝对动量阈值和相对动量排名,并说明它们如何协同工作。

一、绝对动量:用无风险利率做"及格线"

绝对动量回答的问题是:这个资产本身值不值得持有?最常用的做法是把ETF的动量收益与无风险利率比较。逻辑很直白:如果承担了权益市场的波动风险,收益却还不如买国债或货币基金,那就没有持有的必要。

具体实现时,需要统一时间口径。假设我们使用12个月动量,计算方式为:

mom_12m = P_t / P_{t-12} - 1
excess   = mom_12m - rf_12m

其中 P_t 为当前收盘价,P_{t-12} 为12个月前收盘价,rf_12m 为过去12个月的无风险利率(可用1年期国债收益率或货币基金年化收益折算)。当 excess > 0 时,绝对动量通过,该资产进入候选池;否则被剔除。

这里有几个容易出错的细节。第一,无风险利率必须与动量窗口匹配,用12个月动量就配12个月的无风险收益,不能拿当前的年化利率直接减。第二,阈值可以设置缓冲带,例如要求 excess > 0.5% 才算通过,避免在零轴附近频繁翻转产生无效交易。第三,绝对动量的作用是"守门",它不负责在多个资产之间排序,只负责判断单个资产是否合格。

绝对动量阈值本质是一个"风险开关":市场整体下行时,多数资产无法跑赢无风险利率,信号自动转为空仓或持有现金,这是双动量模型控制回撤的主要来源。

二、相对动量:在合格资产中选强者

相对动量回答的是另一个问题:在通过绝对动量筛选的资产里,哪个最强?做法是对候选池内所有资产按动量得分降序排名,取前N名(常见N=1或2)作为持仓对象。

排名规则需要明确三点。其一,排名依据的动量得分应与绝对动量使用同一口径,避免"用6个月动量排名、用12个月动量过滤"造成逻辑混乱。其二,得分相同时需要稳定的次级排序规则,例如按代码字母序或按波动率从低到高,保证回测与实盘结果可复现。其三,若候选池为空(全部未通过绝对动量),则相对动量无对象可选,直接输出空仓信号。

下面这张图展示了从原始价格到最终交易信号的完整判定链路,包括绝对动量的守门作用与相对动量的排序选择:

价格序列 ETF日收盘价 无风险利率 1年期国债/货基 动量得分计算 mom = P_t/P_{t-12}−1 excess = mom − rf excess > 阈值? 绝对动量守门 进入候选池 按动量得分降序排名 剔除该资产 不参与相对排名 取前 N 名 N=1 或 2,等权持有 候选池为空则空仓 通过 未通过 排序

三、两条规则的协同与信号输出

把两条规则串起来,完整的信号生成逻辑是:先对每个资产计算动量得分与超额收益,用绝对动量阈值过滤出候选池,再在候选池内按得分排名取前N名,最后把持仓名单转换为目标权重。若某资产上期持有、本期排名跌出前N或未通过绝对动量,则产生卖出信号;新进入前N的资产产生买入信号。

以一个简化的教学示例说明。假设候选池有A、B、C、D四只ETF,12个月动量分别为18%、9%、-3%、5%,无风险利率折算为2.5%,阈值设为0。则超额收益分别为15.5%、6.5%、-5.5%、2.5%。C被绝对动量剔除,A、B、D进入候选池。若N=1,则选中A;若N=2,则持有A和B。假设上期持有B和D,本期N=2时D被B挤出,产生D卖出、A买入的调仓指令。

ETF12月动量超额收益绝对动量排名N=2持仓
A18%15.5%通过1买入
B9%6.5%通过2持有
C-3%-5.5%剔除—不持有
D5%2.5%通过3卖出

需要注意,上表数据为教学假设,并非实际回测结果。实际使用时还应考虑调仓频率(月度或周度)、交易成本以及信号确认机制。例如可以要求信号连续两次调仓日成立才执行,以降低换手;也可以设置排名缓冲区,前N名买入、跌出前N+1名才卖出,减少边界抖动。

常见误区:把绝对动量阈值设得过高(如要求超额收益大于5%),会导致大量时间空仓,错过趋势初期;设得过低或为负值,则失去风险过滤意义。阈值应结合标的波动率与历史回撤特征校准,而非拍脑袋决定。

信号生成完成后,建议输出一张结构化的信号表,至少包含:调仓日期、各资产动量得分、超额收益、是否通过绝对动量、相对排名、目标权重、相对上期的买卖动作。这张表既是执行依据,也是后续复盘信号质量的基础数据。只有把"数值→判定→排名→权重→动作"这条链路完整落地,动量指标才真正转化为可执行的交易信号。