聚宽微盘策略中的五个因子,到底有什么作用?

聚宽
五因子
微盘股
量化研究
只讲 operating_revenue_growth_rate、total_profit_growth_rate、net_profit_growth_rate、earnings_growth 和 eps_ttm 五个聚宽因子的含义、设置与组合价值。
作者

WZ ETF

发布于

2026-08-17

我在聚宽微盘选股模块中使用了五个财务因子。它们的任务不是直接预测某只股票一定会上涨,而是把不同公司的经营与盈利数据转换成一个可以比较的综合分数,为后续筛选缩小候选范围。

这五个因子分别是:

factor_list = [
    "operating_revenue_growth_rate",
    "total_profit_growth_rate",
    "net_profit_growth_rate",
    "earnings_growth",
    "eps_ttm",
]

五条不同的财务数据流汇入量化评分模型,再输出股票排序结果

五种财务信息经过固定权重组合,最终形成用于横截面比较的综合排序分数。本文图片均为逻辑示意,不是真实聚宽界面或回测结果。

1. 营业收入增长率

聚宽字段:operating_revenue_growth_rate

营业收入增长率反映公司营业收入的变化,观察的是企业业务规模有没有扩张。它更接近“公司卖出了多少产品或服务”,还没有进入成本、费用和最终利润的层面。

这个因子的作用,是给模型提供企业经营规模变化的信息。只看利润可能会受到投资收益、资产处置或者成本突然变化的影响,而营业收入能够补充主营业务端的观察。

当前系数设置为:

-0.0019079645149417137

2. 利润总额增长率

聚宽字段:total_profit_growth_rate

利润总额增长率反映企业税前利润的变化。它已经考虑了收入、成本和费用,但还没有扣除所得税。

它的重要性在于:营业收入增长并不代表公司一定赚到了更多钱。把利润总额增长率和营业收入增长率放在一起,模型就能同时观察经营规模与利润端的变化。

当前系数设置为:

-6.027115922691245e-05

3. 净利润增长率

聚宽字段:net_profit_growth_rate

净利润增长率反映企业最终利润的变化,是扣除所得税等项目后的盈利结果。

它与利润总额增长率的方向通常比较接近,但口径并不完全相同。两者同时使用,可以让模型观察利润链条上不同位置的变化。不过,这两个因子也可能存在较高相关性,不能简单地认为它们一定提供了两份完全独立的信息。

当前系数设置为:

-1.8580428418195642e-05

4. 长期盈利增长

聚宽字段:earnings_growth

earnings_growth 属于盈利增长风格因子。与单期增长率相比,它更偏向观察企业较长期的盈利增长特征。

这个因子的作用,是避免模型只盯着某一个季度或者某一年的突然变化。短期财务数据可能受到低基数、一次性收益和会计调整影响,长期盈利增长能够提供另一个时间维度。

当前系数设置为:

-0.005293892163117587

5. 每股收益 TTM

聚宽字段:eps_ttm

eps_ttm 是最近 12 个月口径的每股收益。它把企业利润换算到每一股上,反映每股对应的盈利水平。

前四个因子主要观察增长变化,eps_ttm 则补充当前盈利水平。这样,模型不仅看到“增长了多少”,也能看到“每股实际赚了多少”。

当前系数设置为:

-0.010077397467005972

五个因子如何组合

五个因子并不是各自单独决定买卖,而是按照固定系数相加,形成每只股票的综合分数:

\[ S_i = \sum_{j=1}^{5} \beta_j x_{i,j} \]

其中,\(x_{i,j}\) 是股票 \(i\) 的第 \(j\) 个因子值,\(\beta_j\) 是对应的固定系数。

完整设置如下:

聚宽因子 观察内容 当前系数
operating_revenue_growth_rate 营业收入变化 -0.0019079645
total_profit_growth_rate 税前利润变化 -0.0000602712
net_profit_growth_rate 最终利润变化 -0.0000185804
earnings_growth 较长期盈利增长特征 -0.0052938922
eps_ttm 最近 12 个月每股盈利 -0.0100773975

计算代码可以写成:

coef_list = [
    -0.0019079645149417137,
    -6.027115922691245e-05,
    -1.8580428418195642e-05,
    -0.005293892163117587,
    -0.010077397467005972,
]

factor_values = get_factor_values(
    initial_list,
    factor_list,
    end_date=context.previous_date,
    count=1,
)

df = pd.DataFrame(index=initial_list)
for factor in factor_list:
    df[factor] = list(factor_values[factor].T.iloc[:, 0])

# 任意一个因子缺失,就不参加本次排序
df = df.dropna()

df["total_score"] = sum(
    coef * df[factor]
    for factor, coef in zip(factor_list, coef_list)
)

# 综合分数从高到低,保留前10%作为候选范围
df = df.sort_values("total_score", ascending=False)
top10pct = list(df.index)[:int(0.1 * len(df))]

为什么五个系数都是负数

这里最容易产生误解。

五个系数全部为负,而代码又按照综合分数从高到低排列。因此,在其他条件完全相同的情况下,某个因子数值越大,经过负系数相乘后,反而可能降低综合分数。

所以,不能把这套设置解释成“营收增长越高越好”或者“每股收益越高越优先”。它是一套固定的线性排序参数,必须把五个因子放在一起计算,不能把任何一个因子脱离模型单独当作选股规则。

重要不能只看系数大小判断重要性

eps_ttm 的系数绝对值最大,并不等于它一定是五个因子中最重要的。五个字段的量纲、取值范围和波动幅度不同。要严谨比较因子重要性,需要先统一数据尺度,再结合 IC、分层收益或剔除单个因子后的结果进行判断。

五组尺度不同的因子数据经过五个独立权重控制器,汇合为综合分数并输出排序

五个因子的数值尺度和分布可能完全不同,需要经过各自的权重设置后再合成分数,不能直接比较系数绝对值。

这五个因子为什么重要

它们观察的不是同一个位置

营业收入增长率观察经营规模,利润总额增长率观察税前利润,净利润增长率观察最终利润,长期盈利增长补充更长时间维度,eps_ttm 则反映每股盈利水平。

单独一个指标往往只能看到公司的一面。五个因子组合后,模型可以从收入、利润、长期增长和每股盈利几个角度同时进行比较。

它们把主观判断变成统一排序

如果靠人工看财报,很容易因为个人偏好改变判断标准。固定因子与固定系数的意义,是让所有股票都按照同一套公式计算,使每次选股过程可以重复。

它们为候选股票增加财务约束

微盘股数量很多,财务质量差异也很大。五因子综合分数先保留排名前 10% 的股票,相当于在进入后续步骤前增加一道财务特征筛选,而不是只根据股票规模盲目选择。

五个因子要作为一个整体理解

三个增长率字段之间可能存在相关性,单个因子也可能受到异常值和财报口径影响。组合使用不能消除所有问题,但比只依赖单一财务指标包含更多信息。

当前五因子设置汇总

  • 因子数量:5 个;
  • 取值日期:context.previous_date,避免使用当天尚未确定的数据;
  • 数据窗口:count=1,读取当前截面的因子值;
  • 缺失值处理:dropna(),任一因子缺失即退出本次评分;
  • 打分方式:五个因子分别乘以固定系数后相加;
  • 排序方向:综合分数从高到低;
  • 候选比例:保留综合分数前 10%。

总结

这五个聚宽因子的核心价值,不是分别给出五条简单的买入理由,而是把企业的经营增长、利润变化、长期盈利和每股收益放进同一个评分框架。

它们共同完成三件事:增加观察维度、统一选股标准、缩小候选范围。

真正使用时,最重要的是保持字段、系数、缺失值处理和排序方向一致。尤其要记住:系数全部为负,并不代表这些财务指标“越差越好”;它们只是当前综合排序公式中的参数,必须结合因子尺度与整体结果理解。

警告重要说明

本文只用于介绍聚宽五因子的作用和当前代码设置,不构成投资建议。固定参数可能随市场环境失效,历史研究结果不代表未来表现。