← 返回目录
p6.7动手⏱ 约 16 分钟

基金业绩归因:一个 t 值 9.49 的 alpha,换个基准就没了

同一只基金同一段数据,基准从价格指数换成全收益,alpha 从 +1.79%(t=9.49) 变成 -0.11%(t=-0.58)

🔎 最后验证 2026-07📚 来源:5 只基金的单因子/TM/HM 归因与基准口径对照,2026-07-31 于 ECS 实测,输出见 code/outputs/stdout.txt🧰 statsmodels 0.14.6、pandas 3.0.5、Python 3.12.13
为什么学这个

"这只基金跑赢指数 3 个百分点"——这句话里混着三样完全不同的东西:

  1. β 不等于 1:仓位更高/更激进,涨的时候本来就该更多——这不是能力
  2. 择时:涨之前加仓、跌之前减仓——是能力,但很难证明
  3. α:扣掉前两项之后剩下的——这才是通常说的"超额"

这一节把三者拆开。而最刺眼的一个结果是:

样本 000051 的 alpha
  用沪深300 价格指数当基准    +1.79%   t = 9.49    ← 极其显著
  用全收益口径当基准          -0.11%   t = -0.58   ← 不显著,而且是负的

同一只基金、同一段数据、同一个模型。只因为基准换了口径。

基准错一点,α 就错一整块。

💡 打个比方

一个学生考了 85 分,班级平均 70 分。他超出 15 分。

后来发现:班级平均算错了——漏算了几个高分同学,真实平均是 86 分。

这个学生不是"超出 15 分",是"低于平均 1 分"。

他的分数一点没变,变的是那条线。

一、单因子归因:α 与 β

r_fund − rf = α + β·(r_mkt − rf) + ε

t 值一律用 Newey-West(5 阶) 稳健标准误——因为残差有自相关与异方差(p3.1)。

代码年化 α%α 的 t 值β基金年化%β 解释的部分%
0000511.799.490.9500.9985.703.84
1000383.744.320.9380.9768.104.21
1100034.452.410.9230.8808.413.79
2700023.941.790.5080.6397.032.99
5193001.263.380.9380.9965.133.82

(市场因子同期年化 3.94%;「β 解释的部分」= rf + β×(市场年化 − rf))

为什么这里是 3.94%,而 p6.2 说沪深300 同期年化 1.61%? 同一条价格指数、同一段区间, 差别只在年化口径:本节按日均收益算术年化((1+日均)^244−1,与回归模型同一套口径, 基金那一列 基金年化% 也是这么算的);p6.2/p6.3 按累计收益复利年化((1+累计)^(1/年数)−1)。 波动越大,两者差得越多 —— 这里差的 2.3 个百分点基本就是这么来的。 本节表内各列互相可比(都是算术口径),但别把 3.94% 直接和 p6.2 的 1.61% 放一起比

看 270002 那一行:β 只有 0.508,R² 只有 0.639。

它的年化 7.03% 里,只有 2.99% 能用市场解释——剩下的既可能是 α,也可能是它压根不在这个基准的风格里(单因子模型解释不了的部分,会全部堆进 α)。

R² 低意味着这个基准不适合这只基金,而不是意味着 α 更真。

这是单因子归因最常见的误读:把"模型没解释掉的"当成"经理创造的"。

二、择时能力:TM 与 HM

TM:r_f − rf = α + β·(r_m − rf) + γ·(r_m − rf)²      + ε
HM:r_f − rf = α + β·(r_m − rf) + γ·max(r_m − rf, 0) + ε

γ > 0 且显著,才算有择时能力。γ < 0 意味着反向择时——涨之前反而减仓。

代码TM γt 值HM γt 值判定
0000510.020.450.0020.43无择时证据
100038-0.14-1.16-0.019-1.91无择时证据
1100030.461.380.0522.09有(微弱)择时证据
270002-0.67-1.81-0.081-2.75显著的反向择时
519300-0.19-2.05-0.009-1.27无择时证据

5 只里 4 只没有择时证据,其中 270002 的 HM γ 显著为负(t = -2.75)——统计上是"反向择时"。

注意 270002 同时也是【一】里 α 最像"有本事"的那只(3.94%、β 只有 0.508)。

拆开之后:它的超额不来自择时,而它的低 β 意味着它大部分时间根本没跟着这个市场走。

三、基准口径:一个 t 值 9.49 的 α,换个基准就没了

按 p6.2 的实测量级,沪深300 价格指数每年比全收益口径少约 2%。把市场因子加回这 2% 再回归:

代码价格指数 α%全收益 α%新 α 的 t 值
0000511.79-0.11-1.90-0.58
1000383.741.83-1.912.13
1100034.452.56-1.891.40
2700023.942.90-1.041.32
5193001.26-0.60-1.86-1.61
⚠️ 避坑

两只指数基金(000051、519300)的 α 从"高度显著为正"变成"不显著为负"。

000051 的 t 值从 9.49 掉到 -0.58

而这个结果完全在意料之中——它就是 p6.2 那条结论的另一种写法:指数基金"跑赢"价格指数,赚的是成分股分红,不是 α。

用价格指数做基准,等于把股息全算成了基金经理的本事。

α 是一个相对量。它的全部含义,取决于你减去的那个基准。

而在这五只样本上,基准口径的影响是 1.04 ~ 1.91 个百分点——比大多数基金真实的 α 还大

🔧 动手做:一个 t=9.49 的"显著 alpha",换个基准就没了(6 分钟)

python attribution.py,看第三节:同一只基金、同一段数据,只把基准从价格指数换成全收益指数

你会看到(实测):alpha 从 +1.79%(t=9.49,极显著) 变成 -0.11%(t=-0.58,不显著)

想明白:t=9.49 看着铁证如山,但它测的"超额"里,一大半只是价格指数基准漏掉的那份股息(p6.2 那个坑)。换成正确的全收益基准,所谓的 alpha 直接归零。任何"显著跑赢/显著 alpha",先问:基准对不对?

四、多重检验:从 N 只里挑 α 最高的那只

样本5 只基金,α 从 1.26% 到 4.45%
最高的110003:α 4.45%,t = 2.41
未校正门槛|t| > 1.96
Bonferroni 校正门槛(整体 5%,5 次比较)|t| > 2.58
本样本 |t| > 2 的基金数4/5

110003 的 t = 2.41,过了未校正的 1.96,没过校正后的 2.58。

"我们找到了一只有显著 α 的基金"——如果这句话是从 N 只里挑出来的,它就是 N 次比较的最大值(p3.4)。

而真实场景里的 N 不是 5,是几千

五、归因报告的四条最低要求

要求理由
报 α 必须同时报 β 与 R²β 偏离 1 时"超额"的一大块是仓位;R² 低说明基准不适合,不说明 α 更真
t 值用稳健标准误(Newey-West)残差有自相关与异方差(p3.1)
基准必须是全收益口径用价格指数系统性高估 α,本节实测 1.04~1.91 pp
从 N 只里挑出来的要按 N 次比较校正否则那句话没有信息量(p3.4)

本节只讲方法,不评价任何基金,也不推荐任何基金。

❓ 测验
一份材料写:「该基金近 10 年年化 8.4%,同期沪深300 仅 3.9%,超额 4.5 个百分点,体现了管理能力」。按本节的方法,你会先做哪一步?
✏️ 填空
用价格指数当基准会系统性高估 alpha,本节实测五只样本的 alpha 全部下降 ___ ~ 1.91 个百分点。

📌 免责:本课为技术教学,只讲归因方法,样本按代码取样(非精选),不评价、不推荐任何基金;历史模拟不构成投资建议。

✅ 小结

P6 章完结。这一节四件事:

  1. "跑赢指数"混着三样东西:β(不是能力)、择时(是能力但难证明)、α(扣掉前两项剩下的)。样本 270002 的 β 只有 0.508、R² 0.639——R² 低意味着基准不适合,不意味着 α 更真
  2. 择时能力基本不存在:5 只里 4 只无证据,其中 270002 的 HM γ 显著为负(t = -2.75),统计上是反向择时
  3. 基准口径决定 α:换成全收益口径后五只的 α 全部下降 1.04~1.91 pp;000051 的 t 值从 9.49 变成 -0.58,519300 从 +1.26% 变成 -0.60%。这正是 p6.2 结论的另一种写法——指数基金"跑赢"价格指数,赚的是成分股分红,不是 α
  4. 多重检验:α 最高的 110003 t=2.41,过了未校正的 1.96,没过 Bonferroni 校正后的 2.58;而真实场景里 N 不是 5,是几千

四条最低要求:报 α 必须同时报 β 与 R² · t 值用稳健标准误 · 基准必须是全收益口径 · 按 N 次比较校正。

P6 七节回顾:净值口径 → 指数机制 → 起点偏差 → 定投审判 → 网格审判 → 智能定投 → 业绩归因。

一条贯穿的线索:这一章的每一节,问题都不在计算,在"你拿什么跟什么比"。 三种净值、价格指数与全收益、一次性与定投的总投入、智能定投的实际投出、归因的基准——每一处口径,都能独立改变结论的方向。

下一章 P7 转向 AI 在量化里的正确用法:模型选型、结构化抽取、机器学习预测涨跌的诚实结果,以及金融 ML 的两个致命错误。

下一节 → P7 AI 用在量化的正确方式
🔎 来源与核验· 4 条,点开核对
本节每个关键论断都对应一个可追溯的来源 —— 这是本课程"靠谱、不过时"的底线。
「单因子归因(2010-01~2026-07,Newey-West 5 阶):000051 年化 α 1.79%/t 9.49/β 0.950/R² 0.998;100038 3.74%/4.32/0.938/0.976;110003 4.45%/2.41/0.923/0.880;270002 3.94%/1.79/0.508/0.639;519300 1.26%/3.38/0.938/0.996;市场因子同期年化 3.94%」
📚 本节 code/attribution.py,2026-07-31 于 ECS 实测,输出见 code/outputs/stdout.txt✓ 已核验 2026-07
「择时检验:110003 的 HM γ 0.052(t 2.09)为唯一微弱正证据;270002 的 HM γ -0.081(t -2.75)显著为负;519300 的 TM γ t 为 -2.05;其余无证据」
📚 同上实测✓ 已核验 2026-07
「基准口径对照(市场因子加回 2%/年股息):α 由 1.79/3.74/4.45/3.94/1.26% 降为 -0.11/1.83/2.56/2.90/-0.60%,降幅 1.04~1.91 pp;000051 的 α t 值由 9.49 变为 -0.58」
📚 同上实测✓ 已核验 2026-07
「多重检验:5 只中 α 最高的 110003 t=2.41,未校正门槛 1.96、Bonferroni 校正门槛 2.58;样本中 |t|>2 的有 4/5」
📚 同上实测✓ 已核验 2026-07
市场因子为沪深300 价格指数;全收益口径按 p6.2 实测量级以每年 2% 股息近似加回,非官方全收益指数。无风险利率按 2%/年 固定假设。样本按代码取样(非精选),本节只演示归因方法,不评价任何基金。
智图软件的赞赏码
都看到这了,打个赏呗!
接下来 · p7.1
模型选型:把"选哪个模型"变成一道能算的题
继续读下一节 →