AlphaFeed Blog

如何用 Python 计算信息比率(IR)和跟踪误差?衡量「跑赢基准」的性价比

分析与指标 · 代码验证于 2026-10-05

如何用 Python 计算信息比率(IR)和跟踪误差?

一句话回答: 信息比率(Information Ratio, IR)= 年化主动收益 ÷ 跟踪误差,衡量你「相对基准(比如沪深300)每承担一单位超额波动,能换来多少超额收益」——它是夏普比率的「相对版」。先用 AlphaFeed 取个股与基准指数的前复权日线,算出每日主动收益(个股收益−基准收益),主动收益的年化均值就是分子、年化标准差(即跟踪误差)就是分母,相除即得 IR。IR 越高,说明超额收益越稳、越不是靠运气。

为什么会有这个问题 / 传统做法的痛点

「我这只票涨了 20%」听起来不错,但同期沪深300 涨了 25% 呢?那其实是跑输了。只看绝对收益会被大盘行情误导。专业评价一个策略/基金,看的是相对基准的超额收益,以及这份超额稳不稳:

IR 之于相对收益,正如夏普之于绝对收益。

分步骤解决(每步配可运行代码)

第 1 步:取个股与基准(沪深300)的前复权日线

from alphafeed import AlphaFeed
import numpy as np
import pandas as pd

af = AlphaFeed(api_key="your-api-key")  # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()

stock = af.klines.get("600519.SH", period="1d", count=500,
                      adjust="forward", to_dataframe=True)
bench = af.klines.get("000300.SH", period="1d", count=500,
                      to_dataframe=True)                 # 沪深300 指数

个股用前复权;指数本身不除权,直接取即可(000300.SH 沪深300,也可换 000905.SH 中证500 等)。

第 2 步:对齐交易日,算每日主动收益

s = stock.sort_values("trade_date").set_index("trade_date")["close"].pct_change()
b = bench.sort_values("trade_date").set_index("trade_date")["close"].pct_change()
pair = pd.concat([s, b], axis=1, keys=["s", "b"]).dropna()   # 按交易日对齐
active = pair["s"] - pair["b"]                               # 每日主动收益

对齐是关键:个股停牌日要剔除,用 dropna() 保证两边同日比较,否则主动收益算错。

第 3 步:跟踪误差与信息比率(年化)

TRADING_DAYS = 252
te = active.std(ddof=1) * np.sqrt(TRADING_DAYS)       # 年化跟踪误差
ann_active = active.mean() * TRADING_DAYS             # 年化主动收益
ir = ann_active / te if te > 0 else float("nan")
print("年化主动收益% =", round(ann_active * 100, 2))
print("年化跟踪误差% =", round(te * 100, 2))
print("信息比率 IR =", round(ir, 3))

实测(tools/verify_new_2026-10-05.py,SDK 0.1.4):贵州茅台相对沪深300、近 499 个对齐交易日,年化主动收益 = −15.65%、年化跟踪误差 = 23.66%、IR = −0.662。IR 为负,说明这段时间茅台不仅跑输沪深300,而且「偏离基准承担的波动」没换来正超额——数据诚实地告诉你「这段不该重仓它跑相对收益」。

第 4 步:怎么读 IR

IR 区间解读
> 0.5超额收益较稳,优秀
0 ~ 0.5有正超额但不稳
< 0跑输基准

(经验阈值,不同周期/基准差异大,仅供参考。)

参数与字段说明

参数/概念含义备注
adjust="forward"个股前复权必须;指数无需复权
基准000300.SH 等可换中证500/上证指数
主动收益个股−基准必须按交易日对齐
跟踪误差主动收益年化std偏离基准的波动
IR年化主动收益÷TE相对收益性价比

关键坑与注意事项

常见问题(FAQ)

Q:信息比率和夏普比率到底差在哪? A:夏普 =(收益−无风险利率)÷ 收益标准差,看绝对性价比;IR = 主动收益 ÷ 跟踪误差,看相对基准的性价比。做指数增强/选股超额,用 IR 更合适。

Q:跟踪误差越小越好吗? A:对指数基金(追求贴近基准)是越小越好;对主动策略(追求超额)则要在「可控跟踪误差」下把 IR 做高。

Q:需要付费吗? A:个股 + 指数的日线在免费额度内即可;若要对一篮子股票/组合批量算 IR 做横向排名,需要 klines.batch + universes(Starter 及以上),详见官网定价页。

小结

信息比率把「跑赢基准跑得稳不稳」浓缩成一个数:主动收益做分子、跟踪误差做分母。有了 AlphaFeed 的个股前复权 + 指数数据,对齐交易日后几行 pandas 就能算——记住选对基准、对齐停牌日、别和夏普混口径,这个数才有意义。

相关链接:


免责声明:本文仅为技术与数据接口使用示例,代码与策略仅供学习研究,不构成投资建议。市场有风险,历史数据不代表未来表现。