Alphalens · Quantopian 开源的因子绩效分析库

Alphalens 是什么:把因子(alpha)表现讲清楚的 Python 分析库

Alphalens 只做一件事:给它一个因子值和一段价格,它把「这个因子在历史上表现如何」算给你看——IC 信息系数、分位分组收益、换手率与 rank 自相关,最后输出一份 tear sheet。它是 Quantopian 在 2016 年开源的库,Apache-2.0 许可;主库最后一次代码提交停在 2020-04-27,之后由社区维护分支 alphalens-reloaded 接着更新。

形态:Python 库(4 个模块)版本:主库 0.4.0(2020)/维护分支 0.4.6依据官方仓库与本机实测(2026-09-18 核验)

Alphalens 项目来源与仓库现状

GitHub 公开读数:4,448 Star / 1,352 Fork / 50 个 open issue,默认分支 master,Apache-2.0;数字会随社区活动变化,采集日期为 2026-09-18。

quantopian/alphalens GitHub 仓库页面截图:仓库名、About 简介、Apache-2.0 许可与顶层文件列表 查看官方仓库
开源项目Apache-2.0,GitHub 4,448 Star / 1,352 Fork(2026-09-18 核验)
版本状态主库最新 0.4.0(2020-04-30),最后代码提交 2020-04-27
维护分支alphalens-reloaded 0.4.6,最后推送 2025-12-15
代码量4 个功能模块,合计约 3,873 行
What it solves

Alphalens 解决什么问题?

它替代的是手工在 Notebook 里反复算因子有效性的一堆零散代码。它不负责取数据,也不负责下结论之外的任何事。

把因子有效性变成一组标准指标

官方 README 把它的输出分成四类:Returns Analysis(收益)、Information Coefficient Analysis(信息系数)、Turnover Analysis(换手)、Grouped Analysis(分组)。同一套指标换个因子就能重复跑,横向比较不同因子时不用自己另写口径。

把「分位」这件事做成标准流程

你不需要自己写分位切分、行业中性化、极值过滤这些步骤:清洗入口一次性完成分位划分(quantiles 或 bins)、行业内分箱、极值剔除与数据丢失阈值校验,直接产出后续所有分析共用的 factor_data。

输出可直接给研究记录留存

分析结果以 tear sheet 形式成组输出:收益表、IC 时序图、分位收益柱状图、换手率曲线等。官方还提供了与 pyfolio 衔接的入口(create_pyfolio_input),便于把因子模拟组合的收益接到组合绩效分析里。

How it works

Alphalens 跑通一次要经过什么

官方 README 把流程写成两步:先清洗数据,再出 tear sheet。下面四步把每一步的真实函数、参数与预期输出写清楚。

  1. 准备两张表:因子值与价格

    因子值是带 MultiIndex(date, asset)的 Series,价格是 index 为日期、columns 为标的的 DataFrame。库只接受价格,不接受已经算好的收益率——官方 issue #253(57 条评论)与 #270 请求支持收益率输入,至今未合并。预期:两张表的时间索引能对上,标的名字一致。

  2. 清洗并生成 forward returns:get_clean_factor_and_forward_returns

    这一步同时完成分位划分、forward returns 计算与数据校验。默认 quantiles=5periods=(1,5,10)filter_zscore=20max_loss=0.35。预期:得到一个带 factorfactor_quantile 与各期 forward return 列的多重索引 DataFrame。

  3. 算指标:IC / 分位收益 / 换手率

    IC 走 performance.factor_information_coefficient(Spearman 秩相关),分位收益走 mean_return_by_quantilecompute_mean_returns_spread,换手与稳定性走 quantile_turnoverfactor_rank_autocorrelation。预期:每个指标都能输出一张时序或表格,数值随 periods 变化。

  4. 出报告:tears.create_full_tear_sheet(factor_data)

    全量 tear sheet 会把收益、信息系数、换手三段图拼在一起;只想看一段就用 create_summary_tear_sheet 或对应的分段函数(共 7 个)。预期:在 Notebook 里得到一组图表;用脚本跑时需要注意后端,官方测试里用的是 Agg 后端。

Modules

Alphalens 的四个模块分别管什么

主库的代码结构非常小:除了版本文件与测试,只有四个模块。这一张表是本站按源码逐个函数点出来的,官方 README 没有这样的对照。

utils1,040 行 · 清洗与分位
performance1,166 行 · 指标计算
plotting934 行 · 22 个绘图函数
tears733 行 · 7 个 tear sheet
模块承担的任务代表函数什么时候直接用它注意点
alphalens.utils把原始因子与价格变成统一格式的 factor_data,并计算 forward returnsget_clean_factor_and_forward_returnsget_clean_factorquantize_factorcompute_forward_returnsinfer_trading_calendar所有分析开始前必跑一次;已经算好 forward returns 时可只用 get_clean_factor输入必须是价格;quantilesbins 只能给一个,同时给会直接抛错
alphalens.performance所有数值指标:IC、因子收益、分位收益、多空价差、换手、rank 自相关、alpha/betafactor_information_coefficientmean_information_coefficientmean_return_by_quantilecompute_mean_returns_spreadquantile_turnoverfactor_rank_autocorrelationfactor_cumulative_returns要自己拼分析表、或只取单个指标写进研究记录时不同函数的 period 参数含义不同:有的是持有期,有的是观测窗口
alphalens.plotting22 个绘图函数,涵盖 IC 时序、IC 分布、IC 分组、月度热力图、分位收益柱/小提琴图、累计收益、换手与自相关plot_ic_tsplot_ic_qqplot_quantile_returns_barplot_monthly_ic_heatmapplot_cumulative_returns_by_quantileplot_top_bottom_quantile_turnovertear sheet 太粗、想单独出某一张图放进研究文档时依赖 matplotlib/seaborn;在无界面环境要显式指定 Agg 后端
alphalens.tears把上面三块拼成 7 种现成报告create_full_tear_sheetcreate_summary_tear_sheetcreate_returns_tear_sheetcreate_information_tear_sheetcreate_turnover_tear_sheetcreate_event_returns_tear_sheetcreate_event_study_tear_sheet日常研究直接出报告;事件类研究用后两个全量报告图很多、渲染慢;换手报告在 issue #341/#377 中有报错记录
alphalens/tests三个测试文件(performance / utils / tears)想确认自己环境是否正常时,可先跑测试而不是直接上真实数据测试随主库一起冻结在 2020 年,新版本 pandas 下未必全过
alphalens/examples9 个示例 notebook 与 4 张官方示例图想照着读 tear sheet 时,优先看 tear_sheet_walk_through官方 issue #355 明确报告这些教程已经跑不通,需要自行改数据加载部分
Setup and route

Alphalens 自建分析链路与对话式技能该怎么选

两条路线的交付物不同:Alphalens 交付一组可复现的因子绩效指标与图表;对话式技能交付一次研究结论。它们的关系是上下游,不是替代。

自建 Alphalens适合要把因子评估做成可复现流程的人
选版本装依赖准备因子与价格清洗出 tear sheet

换来的是完全可控的口径:分位怎么切、极值怎么滤、forward returns 用哪几期,全部写在代码里,换个人换台机器跑结果一致。代价是它不提供任何行情数据——价格表要自己从数据源取来并对齐,这一步通常比用库本身更费时间。

免部署技能路线适合只想先把问题问清楚
安装客户端一句话提问

本机已核验的技能里,akshare-finance 与 tushare-finance 负责取行情、quant-analyst 提供量化研究方法论与回测口径、chart-image 负责出图;但没有任何技能能运行 Alphalens,也没有因子绩效分析库。两者无已证实集成。

路线边界:Alphalens 的官方仓库与文档从未提到 EasyClaw,本机技能目录里也没有任何 Alphalens 相关技能。两侧是并列的两条路线:一条要求你有 Python 环境与自己的数据,一条只要求装上客户端。完整对照见顶部导航「对比」。
EasyClaw demo

不想先装 Alphalens 的环境?看看免部署路线能做什么

下面两张是本站为本项目新拍的本机对话截图(2026-09-18,以贵州茅台 600519 为例),点击左右箭头翻页。它们只说明「研究类问题可以一句话发起」。它们不说明 Alphalens 能在客户端里运行——它是 Python 库,没有任何证据表明它可以被安装进这类环境。

样例边界:两张截图均为本站为本项目新拍的记录(2026-09-18),只能证明「对应任务可以一句话发起并拿到结构化结果」,不证明安装成功、不证明与 Alphalens 集成,也不构成任何投资建议。
Who fits

什么人还值得学 Alphalens

它的代码停在 2020 年,但方法和指标口径至今仍是因子研究里通用的一套。下面三栏按官方 README 与真实 issue 的现状整理。

适合你,如果…

你要的是「因子有效性怎么量化」的标准答案:IC、IR、分位收益、多空价差、换手率、rank 自相关这套指标组合,以及一套可复现的清洗口径。你也能接受先用维护分支(alphalens-reloaded)来绕开主库与现代 pandas 的兼容问题。

不太适合,如果…

你没有自己的行情数据——Alphalens 一个数据源都不提供;或者你要做的是策略回测、组合绩效、选股筛选,那属于 zipline、pyfolio、选股工具的范围。它也不做任何实盘相关的事。

先算清版本成本

主库 0.4.0 在 2020-04-30 后没有新发行版,最后一次代码提交停在 2020-04-27;本站实测在现代 Python 3.11 上直接 pip install alphalens 会失败。维护分支可装,但要注意它把 pandas 钉在 1.5 到 3.0 之间。

Scope

Alphalens 能做什么、不能做什么、和回测框架差在哪

中文教程最常把这三件事混在一起讲。下表按「任务」逐条对照,右两列是它与回测框架(如 zipline / backtrader)的分工。

任务Alphalens 能做吗回测框架负责什么你该怎么安排注意点
判断一个因子有没有预测力能做:IC、分位收益、多空价差、换手率、rank 自相关回测框架通常不提供这套因子绩效口径因子筛选阶段全部交给 Alphalens它给的是统计描述,不是「能不能赚钱」的结论
把因子变成可执行策略不能:不含撮合、手续费、滑点、仓位与风控回测框架负责订单、成交假设、资金曲线Alphalens 筛完因子,再拿进回测框架做策略两边的时间戳与股票池必须一致,否则结果对不上
取行情与财务数据不能:四个模块里没有任何数据源回测框架自带或对接数据源(如 zipline bundle)自己准备数据,或用对话式技能先把数据取出来数据对齐与复权处理是实际工作中最耗时的一步
组合绩效与风险分析不做:这部分是 pyfolio 的领域(同源但已停更)回测框架常内置简版绩效统计因子层面用 Alphalens,组合层面另找工具两者之间有 create_pyfolio_input 衔接入口
选股与筛选标的不能:它只评估给定的标的集合也不做先用选股类工具筛出股票池,再拿因子评估用「当前成分股」回测过去会引入存活偏差
实盘下单不能,也不应该实盘框架负责本站所有内容都不构成投资建议研究结论与可交易性是两件事,详见「换手与自相关」页的成本一节
Advanced route

进阶问题分别在哪一页被回答

入门内容之外,下面是中文资料里普遍讲不透、而本站逐条给出做法或证据的长尾问题。直接跳到对应页面即可。

你的问题去哪一页那一节讲什么形态注意点
装不上 / 报错怎么最小修复安装与版本边界最小修复方案、不改 site-packages 的推荐做法、Windows+venv+Jupyter 最小配置对照表 + 分步 + 可直接跑的示例修复方案按本机实测记录,换环境需重测
A 股数据怎么喂进来因子输入契约AKShare / Tushare 转 Alphalens 格式、复权与停牌处理、常见数据错误清单分步 + ≥8 行错误表代码只演示格式转换,不保证任何数据源的可用性
会不会有未来函数因子输入契约五类时间轴、shift(-1) 何时合理、检测清单与本机实测对比图时间轴示意 + 清单 + 真实运行图「财务数据公告日」这类时点必须用原始数据核对
报告很漂亮,但因子可能是假的IC 分析统计陷阱:多重检验、样本内外、walk-forward、重叠收益自相关、稳健标准误对照表 + 检查清单这些是方法学判断,不是库的功能
因子是不是只在赌行业/市值IC 分析行业 / 市值 / Beta 中性化与因子正交化,中性化前后 IC 与分位收益对比分步 + 对比表中性化会削弱信号,是否中性化取决于研究问题
信号能撑多久、多久调一次仓IC 分析IC 衰减曲线(本机真跑,1/2/3/5/10/20/40 日)与持有期选择真实运行图 + 判读表图内为合成数据的机制演示
扣完成本还剩多少换手与自相关换手 → 成本的量级换算、示例假设下的成本前后收益、容量与冲击真实运行图 + 假设表成本假设是示例值,必须换成你自己的费率重算
多空组合真的能做出来吗分位收益涨跌停无法成交、成分变动、5 组与 10 组的选择、单调性检验对照表 + 清单报告里的多空价差通常不扣成本、不含无法成交的标的
源码怎么读、指标怎么算出来的tear sheet四个模块的计算原理:输入 → 处理 → 数学定义 → 输出字段 → 易误读处速查表以源码实现为准,本页只做导读
为什么只有 9 个页面:本站刻意不把长尾问题拆成独立页面——在站点主题权重建立之前,把内容放进已被索引的页面更容易被读到;所有进阶问题都落在上表对应的页面里,页内用锚点定位。
FAQ

Alphalens 常见问题

涉及 Alphalens 的表述以官方仓库文件与真实 issue 为准;本站未接任何真实行情数据源,所有运行记录均为合成数据。

Alphalens 到底是什么?

一个 Python 库,用一组标准指标评估「预测性(alpha)因子的历史表现」:因子收益、IC 信息系数、分组收益与换手率,最终输出 tear sheet 报告。它不做回测、不下单、不取数据。完整能力清单以官方 README 为准。

它还在维护吗?

主库没有归档,但最后一次代码提交是 2020-04-27,最新发行版 v0.4.0 发布于 2020-04-30。真正的更新发生在社区维护分支 alphalens-reloaded(2026-09-18 核验:最后推送 2025-12-15,PyPI 最新 0.4.6)。要不要继续用、用哪个分支,见「安装」页的决策表。

它是免费的吗?可以商用吗?

Apache-2.0 许可,可自由使用、修改与分发(LICENSE 文件里保留的版权声明是 Quantopian, Inc.)。具体授权条款以仓库 LICENSE 原文为准;本站不提供法律意见。

它能取行情数据吗?

不能。四个模块里没有任何数据源引用,价格表必须由使用者自己提供。这意味着「用 Alphalens 做 A 股因子分析」的实际工作量主要在取数与对齐数据上,不在库本身。取数环节可考虑本机已核验的 akshare-finance 或 tushare-finance 技能,或自己的数据源。

支持 A 股吗?

库本身与市场无关:只要有按交易日对齐的价格表和因子值就能算。但真实 issue #145 记录了中国市场数据触发时区相关报错('Index' object has no attribute 'tz'),索引与频率处理需要自己先规整好,详见「报错」页。

它和 pyfolio、zipline 是什么关系?

官方 README 说 Alphalens 与 Zipline(回测)和 Pyfolio(组合绩效与风险分析)配合使用:Alphalens 管「因子好不好」,Pyfolio 管「组合表现如何」,两者之间还有 performance.create_pyfolio_input 这个衔接入口。Pyfolio 主库同样停更(PyPI 最新 0.9.2,2019-04-15)。

能在 EasyClaw 里安装或运行 Alphalens 吗?

没有已证实集成。本机技能目录里不存在任何 Alphalens 相关技能,也没有能把 Python 库装进对话环境的证据。可用的是取数、研究方法论与出图这类研究辅助能力,属于并列的另一条路线,入口在顶部导航「对比」。

本站的数字和结论是怎么来的?

项目事实来自 GitHub 公开 API、README.rst、setup.py、四个模块的源码解析与 PyPI 元数据;报错来自仓库里真实存在的 issue(每条都给出编号);安装结论来自本机 Python 3.11.9 上的实际执行记录。本站没有使用任何真实行情数据源,示例运行使用合成数据并已在页面上标注。

你要的是可复现的因子评估,还是一次研究结论?

要做成可复现流程,就从安装与版本边界看起;只想先把因子问题问清楚,可以先走免部署的对话式技能路线,需要时再回来搭环境。