← 返回博客列表

量化投资从入门到精通

【量化投资从入门到精通 #35】机构也在用?高ROE低杠杆的质量因子,加上不靠财报的动量

2026年08月22日 17:05 · 麦蕊智数 MyData

本系列进度:#01–#34 ✅ #35 ✅ #36–#48 ⏳(#36/#38–#43/#48 已先行发布,余 #37/#44–#47 待数据补全后补齐) 因子体系第二阶。#34 讲了价值/成长/规模三件套;这一篇加两套机构最爱的因子——质量动量。其中动量不依赖财报,用行情历史 K 线就能算。

一、这个方法解决什么投资问题

三件套(#34)衡量的是"便宜/成长快/小盘"。但还有一个被巴菲特式价值投资者和量化机构共同看重的维度:公司本身质不质优

  • 质量因子(Quality):偏爱"身体好"的公司——赚钱能力强(高 ROE)、不靠借债过日子(低杠杆)、毛利厚(高毛利率)。
  • 动量因子(Momentum):偏爱"已经涨起来的"——过去一段时间涨得好的,短期往往继续涨(或至少不立刻反转)。

质量解决"这家公司健不健康",动量解决"现在势头上不旺"。一个看基本面体质,一个看价格趋势,互补。

二、核心思想

质量因子是把三四个财务健康度指标,标准化后合成一个"体质分":

指标 含义 方向
ROE 净资产收益率,赚钱效率
资产负债率 杠杆,越高越脆
毛利率 生意的厚薄

动量因子更简单——就是"过去 N 日收益率"。它是少数完全不需要财报的因子,只要有历史价格(行情接口的历史 K 线)就能算,所以能马上实跑。

铁律不变:质量用 T 时刻已发布的财报,动量用 T 时刻及之前的价格;观察未来收益只能用 T 之后。

三、实操演示

合成示意数据(固定种子),质量用合成财务、动量用合成价格序列;真实接入时把财务段换成麦蕊财报接口、把价格段换成麦蕊历史 K 线即可。

import numpy as np, pandas as pd
rng = np.random.default_rng(35082026)
N, T = 300, 60
drift = rng.normal(0.0005, 0.003, N)
prices = np.empty((T, N)); prices[0] = 10 + rng.uniform(0, 20, N)
for t in range(1, T):
    prices[t] = prices[t-1] * (1 + drift + rng.normal(0, 0.02, N))
momentum = prices[-1] / prices[-21] - 1          # 过去 20 日动量(历史K可算)

roe = rng.normal(0.12, 0.08, N)                  # 示意 ROE
lev = rng.uniform(0.1, 0.8, N)                  # 示意杠杆
gm  = rng.uniform(0.15, 0.6, N)                 # 示意毛利率
def z(x): return (x - np.nanmean(x)) / (np.nanstd(x) + 1e-9)
quality = z(roe) - z(lev) + z(gm)               # 高ROE/低杠杆/高毛利

future = 0.25*quality + 0.30*z(momentum) + rng.normal(0, 0.6, N)  # 合成未来收益
def spread(s, r, q=5):
    lab = pd.qcut(s, q, labels=False, duplicates="drop")
    return r[lab==q-1].mean(), r[lab==0].mean()
for name, s in [("momentum",momentum),("quality",quality)]:
    t, b = spread(s, future); print(f"{name:9s} 高组={t:+.3f} 低组={b:+.3f} 价差={t-b:+.3f}")

运行结果(合成示意,N=300):

因子 高分组 低分组 价差
momentum +0.405 −0.375 +0.780
quality +0.519 −0.617 +1.137
composite(等权) +0.653 −0.660 +1.313

数据需求标注:动量因子不依赖财报,麦蕊历史 K 线可直接计算(取过去 N 日收益率即可)。质量因子依赖财报基本面(ROE/资产负债率/毛利率),麦蕊暂未覆盖,已作为需求 R1 提交数据团队;补全后把 roe/lev/gm 的 synthetic 段换成真实财务字段,方法完全一致。

四、结果解读

质量因子的价差(+1.137)比动量(+0.780)更大,等权合成后进一步升到 +1.313——又一次印证"多因子互相熨平、合成更稳"(#34 的结论在此复现)。

但有两个现实提醒:

  • 质量是"慢变量":ROE、毛利率一个季度才变一次,质量因子换手极低,适合中长期持有,不适合高频。
  • 动量会"动量崩溃":在趋势反转、市场急跌时,动量因子会短期巨亏(追在高点)。所以机构常把动量和质量/价值配对,用低相关互相缓冲。

五、常见陷阱

  • 杠杆方向的坑:低杠杆是"安全",但金融行业天生高杠杆,跨行业直接比杠杆会被行业结构带偏——需要做行业中性化(需求 R5)。
  • 动量窗口的坑:20 日、60 日、250 日动量指向可能完全不同;短动量捕捉的是情绪,长动量捕捉的是基本面趋势。
  • 财报时点前视:质量因子的 ROE 必须用"已发布"的财报,不能用 T 之后才发布的。
  • 质量因子的周期性:高 ROE 常在行业景气顶端,买在顶点反而接盘。

六、小结 + 下篇预告

质量 = 把"公司健不健康"翻译成 ROE/杠杆/毛利的标准化合成分;动量 = 过去 N 日收益率,不依赖财报、可立刻用历史 K 实跑。两者互补,合成后更稳。

下一篇 #37 讲多因子合成——当你有十几个因子(#34/#35 这里就有 5 个),怎么把它们"拧成一个数"?标准化、等权、IC 加权,一篇讲清。

七、合规收尾

本文为量化方法教学,代码示例使用合成示意数据,不构成投资建议,不承诺收益。投资有风险,入市需谨慎。

想直接拿历史 K 线算动量?麦蕊智数提供稳定的历史 K 线与实时快照,免费版即可起步,证书即取即用;质量因子等财报数据补全后,同一套因子框架即可无缝接入。配套 Demo(含 main.py + RUN.md)见 麦蕊智数 www.mairuiapi.com 站内「API 文档」与「证书获取」(免费版 500 次/日,邮箱验证即领)。

标签: 股票行情API 量化投资从入门到精通
QQ 客服 3826425416 咨询时请提供证书号或订单号,便于快速处理
咨询