trading/doc_04_alpha_factor.md

28 KiB
Raw Permalink Blame History

Alpha 因子研究详解

quant_alpha_factor_demo.py 学习文档

目标读者:量化入门者,已完成前三篇学习
配套文件quant_alpha_factor_demo.py
前置知识:建议先阅读前三篇文档
系列位置:第 4 篇 — Alpha 因子研究篇


目录

  1. 什么是 Alpha 因子?
  2. 因子动物园:主要因子流派
  3. 合成股票池:为什么需要多只股票?
  4. 五个经典因子详解
  5. 因子预处理:三步标准化流程
  6. IC 分析:量化因子预测能力
  7. 分层回测:直观验证因子有效性
  8. 因子合成1+1 > 2
  9. 多空组合:因子的实际落地
  10. 因子衰减:信号会过时
  11. 结果解读与局限性
  12. 术语速查表

1. 什么是 Alpha 因子?

1.1 从一个比喻说起

想象你是一个选股顾问,每天从 3000 只 A 股中挑出最有潜力的 50 只。你会怎么做?

初学者可能说:"涨得多的买,跌得多的卖。"
有经验的人可能说:"找低估值、高成长、低波动的股票。"

Alpha 因子 (Alpha Factor) 就是这些选股思路的数学化表达——用一个公式,对每只股票算出一个"分数",分数越高,预期未来收益越高。

1.2 Alpha 的准确含义

在金融学中,收益被分解为两部分:

股票总收益 = Beta 收益 + Alpha 收益
股票总收益 = (跟随大盘的那部分) + (超出大盘的那部分)
术语 中文 含义
Beta (β) 市场贝塔 / 系统性风险 随市场涨跌的收益——"大盘涨了 10%,我的股票也涨了 8%"
Alpha (α) 超额收益 / 选股能力 超越市场的额外收益——"大盘涨了 5%,但我的策略赚了 20%"

Alpha 因子的目标就是找到那些能预测"未来超额收益"的信号。

1.3 因子 vs. 策略

很多初学者会混淆"因子"和"策略"的概念:

因子 (Factor) 策略 (Strategy)
本质 一个截面排名信号(谁更好?) 一套完整的买卖规则
例子 MOM = 12月动量 "当 MOM > 0 时买入,< 0 时卖出"
分析方法 IC、分层回测 净值曲线、夏普比率
应用范围 多只股票的横截面 单只或多只股票的时间序列

因子是选股的"原材料",策略是用因子构建的"成品"。


2. 因子动物园Factor Zoo

学术界发现的因子多达 300+ 个,被戏称为"因子动物园 (Factor Zoo)"。按经济学逻辑,主要分为以下几大类:

2.1 行为金融类因子(最常用)

因子 中文 核心逻辑 代表论文
Momentum 动量因子 赢家继续赢,输家继续输(追涨惯性) Jegadeesh & Titman (1993)
Reversal 反转因子 短期过度涨跌会均值回归 Jegadeesh (1990)
Post-Earnings Drift 盈利漂移 超预期财报后股价持续漂移 Ball & Brown (1968)

2.2 风险溢价类因子(有理论支撑)

因子 中文 核心逻辑
Low Volatility 低波动因子 低波动股票的风险调整后收益更高(违反 CAPM
Low Beta 低贝塔因子 低市场敏感性股票长期跑赢BAB 效应)
Illiquidity 非流动性因子 流动性差的股票有额外的流动性溢价

2.3 基本面类因子(需要财报数据)

因子 中文 核心逻辑
Value (B/P, E/P) 价值因子 低估值股票长期跑赢(价值投资量化版)
Profitability (ROE) 盈利能力 高盈利质量公司持续超额收益
Growth 成长因子 营收/利润高速增长的公司

本 Demo 聚焦于纯价格/成交量因子(无需财报),这也是因子研究的起点。


3. 合成股票池

3.1 为什么需要多只股票?

前三篇 Demo 分析的都是单只股票随时间的变化(时间序列)。

Alpha 因子研究是一种完全不同的分析维度:

时间序列分析:   分析同一只股票在不同时间的行为
                苹果公司 → 2020, 2021, 2022, ...

截面分析:       在同一个时间点,比较不同股票之间的差异
                2023-01-01 → 苹果, 谷歌, 微软, 亚马逊, ...

因子的"截面预测能力"是指:在某一天,因子值高的股票,是否在未来一段时间表现更好

这需要"同一天、多只股票"的数据——即横截面数据 (Cross-Sectional Data)

3.2 隐藏因子生成模型

为了让演示中的因子真实有效,本 Demo 使用了一个隐藏因子生成模型 (Hidden Factor Generative Model),向合成数据中注入"真实的 Alpha"

每只股票每天的收益 = 市场风险 + 质量 Alpha + 动量 Alpha + 噪音
                   = β × r_市场 + λ_q × Q_i,t + λ_m × M_i,t + ε_i,t
成分 符号 变化速度 含义
市场风险 β × r_市场 每日变化 所有股票共同承担的市场涨跌
质量 Alpha λ_q × Q_i,t 季度持续 该股票的"潜在质量分",缓慢变化
动量 Alpha λ_m × M_i,t 月度持续 该股票的"当前动量状态",适度变化
特质噪音 ε_i,t 每日随机 无法预测的随机波动

关键点Q 和 M 是不可直接观察的隐藏变量
Alpha 因子的价值就在于:用可观察的价格数据(动量、波动率等)来间接估计这些隐藏的质量/动量分数


4. 五个经典因子详解

4.1 动量因子MOM— 追涨惯性

来源Jegadeesh & Titman (1993)
直觉:股票市场存在"趋势延续"效应——过去 6-12 个月的赢家,未来 3-12 个月通常继续赢。

\text{MOM}_{i,t} = \frac{P_{i,t-21}}{P_{i,t-252}} - 1
参数 说明
P_{i,t-21} 股票 i 在 t-21 日(约 1 个月前)的价格
P_{i,t-252} 股票 i 在 t-252 日(约 12 个月前)的价格
计算窗口 从 12 个月前 到 1 个月前(跳过最近 1 个月)

为什么要跳过最近 1 个月?

最近 1 个月的收益往往会短期反转 (Short-Term Reversal),这是由于做市商 (Market Maker) 的库存调整和买卖价差摩擦导致的微观结构效应。如果不跳过最近 1 个月,反转效应会污染动量信号。

# 代码实现
MOM_LONG  = 252   # 12 个月
MOM_SHORT = 21    # 跳过 1 个月

factor_mom = prices_df.shift(MOM_SHORT) / prices_df.shift(MOM_LONG) - 1.0
#             ↑ P[t-21]                   ↑ P[t-252]

本 Demo 实验结果

  • IC 均值 = +0.065 ★ 有效
  • ICIR = +0.452(接近 0.5 的优良水平)
  • 这是因为隐藏质量/动量因子高的股票,自然同时有高 12M 动量 AND 高未来收益

4.2 短期反转因子REV— 均值回归

来源Jegadeesh (1990)
直觉:上个月涨太多的股票,下个月往往小幅回调;跌太多的往往反弹。

\text{REV}_{i,t} = -\left(\frac{P_{i,t}}{P_{i,t-21}} - 1\right)

取负号是为了保持"因子值越高 → 预期收益越高"的正方向约定:

  • 上个月大跌(负收益)→ REV 为正 → 预期反弹 → 因子值高 ✓

本 Demo 实验结果

  • IC 均值 = -0.050(负!意料之中)
  • 为什么是负的?因为我们的数据中注入了"动量 Alpha"——动量强的股票上个月涨、下个月还要涨REV 反而是负向预测。这是一个很好的教学点:同一个市场中,因子之间可能互相矛盾

4.3 低波动因子LVOL— 低波动异象

来源Baker, Bradley & Wurgler (2011)
直觉:根据传统金融理论,高风险应获高回报。但实证研究发现,低波动股票的原始收益也更高,即"低波动异象 (Low-Volatility Anomaly)"。

\text{LVOL}_{i,t} = -\sigma_{i,t-60:t}

其中 \sigma 是过去 60 交易日的日收益率标准差(年化波动率的代理指标)。

取负号:波动率越低 → LVOL 越高 → 预期收益越高。

可能的解释

  • 机构投资者受"跑赢基准"的业绩压力,被迫偏爱高贝塔/高波动股票,导致这些股票被高估
  • 散户偏好"彩票式"高波动股票(类似买彩票),也导致高波动股票被高估
  • 低波动股票更少被卖空,保护其免遭过度高估后的暴跌

4.4 低贝塔因子BAB— 赌对低贝塔

来源Frazzini & Pedersen (2014) "Betting Against Beta"
直觉CAPM 预测 β = 1.5 的股票比 β = 0.5 的股票多 50% 的期望收益。但实际上两者差距远小于理论值,甚至低贝塔股票反而更赚钱。

\text{BAB}_{i,t} = -\hat{\beta}_{i,t}^{(60D)}
\hat{\beta}_{i,t} = \frac{\text{Cov}(r_i, r_{\text{mkt}})_{60D}}{\text{Var}(r_{\text{mkt}})_{60D}}

代码实现(完全向量化,不用 Python 循环):

# 利用 pandas rolling 方法批量计算所有股票的滚动贝塔
rolling_var_mkt = market_series.rolling(60).var()          # 市场方差
rolling_cov     = log_ret_df.apply(
    lambda col: col.rolling(60).cov(market_series)          # 各股协方差
)
rolling_beta_df = rolling_cov.div(rolling_var_mkt, axis=0)  # β = Cov/Var
factor_bab      = -rolling_beta_df                           # 取负值

4.5 Amihud 非流动性因子ILLIQ— 流动性溢价

来源Amihud (2002) "Illiquidity and Stock Returns"

\text{ILLIQ}_{i,t} = \frac{1}{D} \sum_{d=t-D}^{t} \frac{|r_{i,d}|}{V_{i,d}}
符号 含义
$ r_{i,d}
V_{i,d} 第 d 日的成交量(元)
D = 20 过去 20 个交易日

含义"每元成交量能引起多大的价格波动?"

  • ILLIQ 高 → 流动性差(小单也能推动价格)→ 投资者要求更高回报 → 流动性溢价 (Liquidity Premium)

5. 因子预处理:三步标准化

原始因子值"脏"得没法直接用,必须经过以下三步清洗:

Step 1截面去极值Winsorization

问题:某天某股票的动量值是 +500%(因为遭遇了重组事件),这个极端值会完全主导本日截面的相关系数计算。

解决:在每个截面,将超出 [\mu - 3\sigma, \mu + 3\sigma] 的值截断到边界。

原始:  [5%, 12%, 8%, 500%, -2%, 9%]
       ↓
去极值: [5%, 12%, 8%, 46%, -2%, 9%]   ← 500% 被截断到 3σ 边界
# 向量化实现(无 Python 循环)
mu    = factor_df.mean(axis=1)    # 每日截面均值
sig   = factor_df.std(axis=1)     # 每日截面标准差
lower = (mu - 3 * sig).values[:, np.newaxis]   # 广播到矩阵形状
upper = (mu + 3 * sig).values[:, np.newaxis]
clipped = np.clip(factor_df.values, lower, upper)

Step 2截面 Z-score 标准化

问题:动量因子单位是%(典型值 ±30%ILLIQ 单位是极小的小数1e-10 量级),无法比较和相加。

解决:在每个截面,对因子进行 Z-score 标准化,使均值=0标准差=1。

z_{i,t} = \frac{x_{i,t} - \bar{x}_t}{\sigma_t}

标准化后:

  • 不同因子量纲统一,可以直接相加(因子合成时需要)
  • Z-score > 0 → 该股票因子值高于同期平均
  • Z-score < 0 → 该股票因子值低于同期平均

Step 3市值中性化Market Cap Neutralization

问题:在 A 股市场,小市值股票往往同时具有高动量、高波动、低流动性。如果不剔除市值效应,动量因子可能只是在选小市值股票,并非真正的动量信号。

解决:对 log(市值) 做 OLS 回归,用残差替换原因子值:

\text{factor\_neutral}_i = \text{factor}_i - (\hat{\alpha} + \hat{\beta} \cdot \log(\text{mktcap}_i))
# 每个截面: y = alpha + beta * x + residual
y_c = factor_values     # (50,) 各股因子值
x_c = log_mktcap_values # (50,) 各股对数市值

xm, ym = x_c.mean(), y_c.mean()
slope   = np.dot(x_c - xm, y_c - ym) / np.dot(x_c - xm, x_c - xm)
residuals = y_c - (ym + slope * (x_c - xm))   # 市值中性化后的因子值

形象比喻
这就像做标准化考试时,把"学生身高"这个干扰变量从"篮球成绩"中剔除——矮的学生篮球技术再好,也会因为身高被低估,剔除后才能真正比较技术水平。


6. IC 分析Information Coefficient

6.1 IC 的定义

\text{IC}_t = \text{SpearmanCorr}\left(\text{factor}_{t,\cdot},\ \text{return}_{t+H,\cdot}\right)

在日期 t计算截面 Spearman 秩相关系数

  • 左侧50 只股票在 t 日的因子值(处理后)
  • 右侧:这 50 只股票在未来 H=21 日的收益率

为什么用 Spearman 秩相关而不用 Pearson 线性相关?

Pearson Spearman
计算 (X - \bar{X}) \cdot (Y - \bar{Y}) 的相关 \text{rank}(X)\text{rank}(Y) 的相关
假设 线性关系 只需单调关系
对极端值 敏感 鲁棒
量化研究常用 ✓ 更常用

6.2 ICIRIC 的信噪比

\text{ICIR} = \frac{\text{IC 均值}}{\text{IC 标准差}}

ICIR 就是"IC 序列的夏普比率"——衡量因子预测能力的稳定性

ICIR 含义
< 0.3 不稳定,可能只是偶然
0.3 ~ 0.5 有一定稳定性
> 0.5 稳定的 Alpha 信号

6.3 IC 评价标准

指标 强因子 有效因子 弱因子
|IC 均值| > 0.10 0.05~0.10 < 0.05
ICIR > 0.5 0.3~0.5 < 0.3
IC > 0 比率 > 60% 55%~60% < 55%

6.4 本 Demo 的 IC 结果解读

因子 IC 均值 ICIR 解读
MOM ★ +0.065 +0.452 动量有效!因为高质量/高动量股票有持续的正 Alpha
REV -0.050 -0.273 反转因子在此模型中"反着来"——短期涨的股票继续涨(动量效应更强)
LVOL -0.010 -0.028 近乎无效——数据中没有注入"低波动溢价"的 Alpha
BAB -0.010 -0.027 近乎无效——原因同上
ILLIQ +0.009 +0.058 极弱——有轻微的流动性溢价信号

学习要点IC 近零不代表因子"写错了",而是反映了数据生成机制。本 Demo 的合成数据中Alpha 主要来自质量和动量因子,所以 MOM 有效而 LVOL/BAB 无效。真实市场中,多个因子通常都有正 IC但有时某种因子会在特定市场环境regime下失效。


7. 分层回测Quantile Analysis

7.1 方法步骤

分层回测是最直观的因子验证方式:

① 在每个调仓日 T按因子值对 50 只股票从小到大排序
② 等分成 5 组Q1=最低 20%Q5=最高 20%
③ 各组各构建等权组合,持有 21 天
④ 记录各组收益,持续到回测结束

期望的理想结果

累积收益: Q5 > Q4 > Q3 > Q2 > Q1   (单调递增)

如果因子有效Q5因子分最高应该持续跑赢 Q1因子分最低

7.2 本 Demo 的 MOM 因子分层结果

分组 年化收益 含义
Q1最低动量 -8.9% 过去一年最弱势的股票,未来继续弱
Q2 -12.7% 偏弱
Q3 -5.0% 中性
Q4 +9.7% 偏强
Q5最高动量 +27.9% 过去一年最强势的股票,未来继续强
L-SQ5-Q1 +40.1% 多空价差,几乎与市场涨跌无关

虽然 Q2 < Q1 有轻微异常(不完全单调),但整体趋势清晰:高动量 → 高未来收益

7.3 分层回测的实现细节

for i in range(len(rebal_dates) - 1):
    t0, t1 = rebal_dates[i], rebal_dates[i + 1]   # 建仓日 / 平仓日

    # 按因子值分组
    labels = pd.qcut(
        factor_today.rank(method='first'),  # 先取秩(避免重复值问题)
        n_quantiles,                         # 分成 5 组
        labels=["Q1", "Q2", "Q3", "Q4", "Q5"]
    )

    # 计算等权持有收益
    hold_ret = price_df.loc[t1] / price_df.loc[t0] - 1.0
    for q in ["Q1", "Q2", "Q3", "Q4", "Q5"]:
        stocks_in_q = labels[labels == q].index
        bucket_returns[q].append(hold_ret[stocks_in_q].mean())

为什么先 rank()qcut()
qcut 按数值边界分割如果因子值有重复e.g., 好几只股票 LVOL 恰好相同),分组会不均匀。先 rank(method='first') 将重复值也区分开(先出现的秩更低),再 qcut 就能保证每组大小相同。


8. 因子合成Factor Combination

8.1 为什么要合成?

单个因子的 IC 通常只有 0.05~0.10,预测能力有限。多因子合成的优势:

  1. 互补:不同因子捕捉不同维度的 Alpha合成后覆盖更多信息源
  2. 降噪:单个因子可能在某些时期失效;多因子合成后整体更稳定
  3. 提升 ICIR:若各因子 IC 不完全相关,合成后 ICIR > 单个因子的 ICIR

用统计语言表达:设因子 A 和 B 各自 IC 均值 = $\mu$IC 相关系数 = $\rho$,则:

\text{ICIR}_{composite} = \frac{2\mu}{2\sigma\sqrt{(1+\rho)/2}} = \frac{\text{ICIR}}{\sqrt{(1+\rho)/2}}

\rho < 1 时,合成 ICIR > 单个 ICIR。这就是多元化的价值

8.2 两种合成方法

方法1等权合成 (Equal-Weight Composite)

\text{Composite}_{EQ,i,t} = \frac{1}{N}\sum_{k=1}^{N} z_{k,i,t}
  • 优点:简单、稳健,不依赖历史 IC 估计,不容易过拟合
  • 缺点:对强因子和弱因子一视同仁

方法2IC 加权合成 (IC-Weighted Composite)

w_k = \frac{\max(\overline{IC}_k, 0)}{\sum_j \max(\overline{IC}_j, 0)}, \quad \text{Composite}_{ICW,i,t} = \sum_{k=1}^{N} w_k \cdot z_{k,i,t}
  • 优点:给更强的因子更高权重,理论上 ICIR 更高
  • 缺点:历史 IC 可能不稳定(特别是样本期短时),有过拟合风险

本 Demo 结果

方法 IC 均值 ICIR
等权合成 +0.036 +0.237
IC 加权 +0.045 +0.304

IC 加权略好,因为它把更多权重给了最强的 MOM 因子(权重 88.4%)。


9. 多空组合Long-Short Portfolio

9.1 构建逻辑

多空策略是因子策略的"利润提取机制"

每个调仓日(每月):
   ① 计算每只股票的合成因子分
   ② 买入 Top 20%(因子分最高的 10 只)= 多头组合
   ③ 做空 Bottom 20%(因子分最低的 10 只)= 空头组合
   ④ 21 天后平仓,重复

9.2 市场中性Market Neutral

多空组合最大的优点是市场中性 (Market Neutral)

多空收益 = 多头组合收益 - 空头组合收益
         = (Alpha_long + Beta_long × r_市场) - (Alpha_short + Beta_short × r_市场)
         ≈ Alpha_long - Alpha_short    (若 Beta_long ≈ Beta_short市场影响相消

这意味着:无论市场大涨大跌,多空组合只赚 Alpha不受市场影响

9.3 本 Demo 结果解读

组合 年化收益 夏普比率 最大回撤
多头 (Long) +30.9% 1.36 -13.9%
空头 (Short) -2.3% -0.11 -43.4%
多空 (L-S) +33.9% 5.19 -0.4%

多空 Sharpe 达到 5.19 并最大回撤仅 -0.4%——这是演示数据 注入了较强 Alpha 信号的结果,真实市场中通常 Sharpe 1-3 就算非常优秀的多空策略。

9.4 A 股限制与现实考量

⚠️ A 股重要提示
A 股融券做空受到严格限制,普通投资者无法执行多空策略
多空策略主要适用于:港股、美股市场,或通过股指期货进行市场对冲。
在 A 股,因子策略通常只执行"多头"部分(买入高分股票),不做空低分股票。


10. 因子衰减Factor Decay

10.1 什么是因子衰减?

因子衰减曲线回答一个关键的实践问题:
"这个因子的信号,在多少天后就失效了?"

我们对不同的持有期 H1D, 5D, 10D, 21D, 42D, 63D分别计算 IC

\text{IC}(H)_t = \text{SpearmanCorr}\left(\text{factor}_{t,\cdot},\ \text{return}_{t+H,\cdot}\right)

如果 IC(H) 随 H 增大而快速降向 0说明因子是"短期信号",需要高频换仓。
如果 IC(H) 衰减缓慢,说明因子是"长期信号",低频换仓也有效。

10.2 本 Demo 的衰减结果

持有期 MOM (IC) REV (IC)
1D +0.067 -0.043
5D +0.066 -0.045
10D +0.065 -0.046
21D +0.065 -0.050
42D +0.061 -0.027
63D +0.054 -0.033

MOM慢衰减IC 从 1D 到 21D 几乎不变(+0.067 → +0.06542D 以后才明显下降。
→ 说明动量信号在 1-3 个月内保持有效,月频换仓足够,不需要高频交易

REV快变化:在 42D 处强度减弱(-0.02762D 处轻微回升。
→ 反转信号在短期更强,长期减弱,适合周频换仓

10.3 实践意义

快速衰减因子:
  优点: 信号新鲜,短期预测准确
  缺点: 必须高频换仓 → 高换手率 (Turnover) → 高交易成本
  适合: 高频量化交易机构,有直连交易所的低手续费通道

慢速衰减因子:
  优点: 不需要频繁换仓,交易成本低
  缺点: 信号滞后,无法捕捉短期机会
  适合: 中低频量化(月频/季频)、散户量化尝试

11. 结果解读与局限性

11.1 为什么 LVOL 和 BAB 无效?

在本 Demo 中LVOL 和 BAB 的 IC ≈ 0原因在于数据生成机制

我们只注入了质量动量 Alpha没有注入"低波动溢价"或"低贝塔溢价"。因此,低波动率并不预示更高未来收益。

真实市场低波动因子在许多市场美股、港股、A 股)都有实证支撑。本 Demo 的结果不能说明低波动因子无效——只能说明它在这个特定的合成数据中无效。

11.2 合成数据的局限性

局限 真实市场中不存在 本 Demo 简化了
市场冲击 大单买卖会推高/压低价格 假设无限流动性
交易成本 买卖价差、印花税、佣金 未扣除交易成本
因子拥挤 大家都用同一个因子时,超额收益消失 未模拟
财报数据 基本面因子需要财报,有发布延迟 未涉及
风险暴露限制 真实组合需控制行业、风格暴露 无约束

11.3 量化因子研究的注意事项

  1. 样本外验证Out-of-Sample TestIC 是在同一数据集上计算的,存在过拟合风险。实践中需要用样本外数据验证。
  2. 因子衰减与换仓成本的权衡IC 高不等于策略盈利,必须考虑换手成本是否侵蚀了因子收益。
  3. 市场环境Regime的影响动量因子在趋势市中有效在剧烈波动的市场如2020年3月可能大幅失效。
  4. 因子拥挤Factor Crowding:当太多资金追同一个因子时,因子溢价会被套利消除。

12. 术语速查表

中文 English 简要说明
Alpha 因子 Alpha Factor 能预测股票未来超额收益的数学信号
超额收益 Alpha 超越市场基准的额外收益
市场贝塔 Market Beta (β) 股票收益对市场收益的敏感度
截面数据 Cross-Sectional Data 同一时间点多只股票的数据
时间序列 Time Series 同一只股票随时间变化的数据
因子动物园 Factor Zoo 学术界发现的 300+ 个因子的统称
动量因子 Momentum Factor 基于过去 12-1 月累积收益的趋势延续信号
动量效应 Momentum Effect 赢家继续赢、输家继续输的市场现象
短期反转 Short-Term Reversal 短期内价格过度波动后的均值回归
低波动异象 Low Volatility Anomaly 低波动股票收益反而更高,违反 CAPM
非流动性 Illiquidity 每单位成交量引起的价格波动幅度
流动性溢价 Liquidity Premium 流动性差的资产额外要求的收益补偿
低贝塔 Low Beta (BAB) 贝塔系数低的股票,与市场敏感性低
赌对低贝塔 Betting Against Beta Frazzini & Pedersen 提出的低贝塔超额收益策略
Amihud 指标 Amihud Illiquidity |r|/成交量的均值,衡量流动性的经典指标
去极值 Winsorization 将极端异常值截断到合理范围
截面标准化 Cross-Sectional Normalization 在每个日期截面做 Z-score 标准化
Z-score Z-score (x - 均值) / 标准差,使均值=0标准差=1
市值中性化 Market Cap Neutralization 回归剔除市值因子对因子值的影响
信息系数 IC (Information Coefficient) 因子值与未来收益的 Spearman 秩相关系数
IC 均值 IC Mean IC 时间序列的均值,衡量因子平均预测能力
IC 标准差 IC Std IC 时间序列的波动率,衡量因子稳定性
ICIR ICIR (IC Information Ratio) IC均值/IC标准差类似因子的夏普比率
Spearman 秩相关 Spearman Rank Correlation 基于排名(秩)而非原始值的相关系数
Pearson 相关 Pearson Correlation 基于线性关系的相关系数
持有期 Holding Period (H) 建仓到平仓的时间跨度
分层回测 Quantile Analysis / Bucket Test 按因子值分组,对比各组未来收益
五分位 Quintile (Q1-Q5) 将股票等分为 5 组
等权组合 Equal-Weight Portfolio 每只股票持仓权重相同
调仓日 Rebalance Date 重新计算因子并调整持仓的日期
换手率 Turnover 每期组合发生变化的比例,越高交易成本越大
因子合成 Factor Combination 将多个因子加权合成为一个综合因子
等权合成 Equal-Weight Composite 所有因子等权相加的合成方法
IC 加权合成 IC-Weighted Composite 按各因子历史 IC 均值加权合成
多因子模型 Multi-Factor Model 使用多个因子解释股票收益差异的模型
多空组合 Long-Short Portfolio 做多高分股票、做空低分股票的中性化策略
多头 Long 买入持有,期望价格上涨
空头 Short / Short Selling 借入并卖出,期望价格下跌后回购获利
多空价差 Long-Short Spread 多头组合收益 - 空头组合收益
市场中性 Market Neutral 多空两侧的市场敝口相互对冲,净市场风险 ≈ 0
因子衰减 Factor Decay 因子预测能力随持有期延长而减弱的现象
市场环境 Market Regime 具有共同特征的特定市场状态(如牛市/熊市/震荡市)
因子拥挤 Factor Crowding 过多资金追逐同一因子导致溢价消失的现象
样本外验证 Out-of-Sample Test 在训练数据之外的独立数据集上验证模型效果
过拟合 Overfitting 模型过度适应训练数据,导致样本外表现差
隐藏因子 Hidden Factor / Latent Factor 不可直接观察、只能间接估计的潜在驱动因子
截面 Cross-Section 在同一时间点对多个实体的观察
OLS 回归 OLS (Ordinary Least Squares) 普通最小二乘法,用于因子中性化
残差 Residual OLS 回归中因变量实际值与拟合值的差值

上一篇:事件驱动回测


附录:系列文档导航

文件 文档 核心内容
第 1 篇 quant_data_pipeline_demo.py doc_01_data_pipeline.md 复权、收益率、缺失值、异常值、涨跌停
第 2 篇 quant_strategy_backtest_demo.py doc_02_strategy_backtest.md 技术指标、策略逻辑、向量化回测、绩效指标
第 3 篇 quant_event_driven_backtest_demo.py doc_03_event_driven_backtest.md 事件驱动架构、6大组件、成本模型、与向量化对比
第 4 篇 quant_alpha_factor_demo.py doc_04_alpha_factor.md 因子构建、IC/ICIR、分层回测、因子合成、多空组合