PyFolio还值得用吗:6.4k Star却停更6年的tearsheet鼻祖
6.4k Star、1.9k Fork,这个数字放在任何开源项目里都不算小。但 PyFolio 的最后一笔提交停在 6 年前,背后的 Quantopian 公司 2020 年就倒闭了。这个曾经定义「量化绩效报告」标准的库,如今成了 GitHub 上一具「活化石」——153 个 issue 无人解决,新版 Python 根本装不上。本文讲清楚它为什么经典、为什么停更、以及今天你到底该不该用它。
一、PyFolio 是什么:量化绩效报告的「鼻祖」
PyFolio 是 Quantopian(一家曾融资数亿、最终倒闭的量化平台公司)开源的绩效与风险分析库。它的核心就一个词:tearsheet(也叫 tear sheet)。
所谓 tearsheet,就是把一个交易策略的完整表现「撕下来」给你看的那一整套图表:收益曲线、回撤、月度收益热力图、滚动夏普比率、滚动贝塔、盈亏分布……在 PyFolio 之前,量化从业者得自己用 matplotlib 一张张画;PyFolio 之后,一行create_full_tear_sheet()就全出来了。
它和 Zipline(Quantopian 的回测库)深度集成,是当年 Quantopian 平台上每个策略回测结果的标准输出格式。
一句话定位:量化绩效报告「tearsheet」范式的开创者,但已停更 6 年。
速览表:
| 维度 | 说明 |
|---|---|
| 项目名 | PyFolio(quantopian/pyfolio) |
| 语言/依赖 | Python,pandas/matplotlib/seaborn/empyrical |
| 安装 | pip install pyfolio(但新版 Python 装不上) |
| 定位 | 绩效与风险分析,tearsheet 报告 |
| 状态 | ❌ 已停更 6 年,Quantopian 2020 倒闭 |
| 上手难度 | 低(但环境兼容是大坑) |
二、核心能力拆解:tearsheet 到底「撕」出了什么
PyFolio 的 tearsheet 是一套完整的绩效可视化,核心模块:
pyfolio.tears:create_full_tear_sheet是入口,一次生成全部图表。pyfolio.timeseries:时序绩效指标——perf_stats()输出年化收益、夏普、索提诺、最大回撤、Calmar 等。pyfolio.plotting:收益曲线、回撤图、月度收益热力图、滚动夏普/贝塔。pyfolio.round_trips:往返交易分析,盈亏分布、持仓时长。pyfolio.returns:收益相关的计算(基于 empyrical 库)。
这套「收益曲线 + 回撤 + 月度热力图 + 滚动指标 + 盈亏分布」的组合,成了此后几乎所有绩效分析库的事实标准模板。你现在看到的 QuantStats、以及各种回测框架的绩效报告,布局几乎都是 PyFolio tearsheet 的翻版。
一句话记住:PyFolio 定义了「量化绩效报告长什么样」——这是它停更 6 年后仍被 6.4k 人 star 的原因。
三、为什么它停更了:Quantopian 的兴衰
这是本文的独占内容——竞品文章大多避谈「这库已经死了」,只顾着贴pip install pyfolio的教程。
PyFolio 停更的根本原因是它的母公司 Quantopian 倒掉了:
- Quantopian 是一家「众包量化」平台,巅峰时融资数亿美元,号称让散户也能写算法跑实盘。
- 2020 年 11 月,Quantopian 宣布停止运营,把核心代码开源后散伙。
- PyFolio 和 Zipline 这两个旗舰项目从此无人维护,最后一笔提交停在 2018 年。
结果就是你现在看到的状态:153 个 open issue 无人管,依赖锁死在旧版 pandas(<1.0),Python 3.10+ 直接装不上。它不是因为「做得不好」而死,而是「公司没了」。
一句话:PyFolio 是公司倒闭的「陪葬品」——技术依然经典,但没有活人在维护它了。
四、部署方案:还能跑吗?
4.1 现实:新版 Python 装不上
PyFolio 依赖旧版 pandas(<1.0),而 Python 3.10+ 的 pandas 早就是 2.x。直接pip install pyfolio在新环境会报依赖冲突。
4.2 方式一:旧版 Python 环境(勉强能跑)
# 需要一个 Python 3.7/3.8 的 conda 环境 conda create -n pyfolio python=3.7 conda activate pyfolio pip install pyfolio # 可能还需要手动降级 pandas、empyrical 等4.3 方式二:直接上替代品(推荐)
与其折腾旧环境,不如直接用它的现代替代品。PyFolio 停更后,社区的主流选择是QuantStats——同样是 tearsheet 思路,但活跃维护、Python 3.10+ 直接装、接口更现代。如果你只想快速生成绩效报告,可以用 EasyClaw 一键部署 QuantStats:
帮我部署 QuantStats,一个 Python 绩效分析库,需要 Python 3.10 和 pandas、numpy 依赖
EasyClaw 会自动完成环境配置和依赖安装,把「配环境 + 装依赖」的数小时压缩成一句话,这种「自然语言说需求、自动装环境」的方式,正是 EasyClaw 的核心价值。
4.4 验证 + Bing 三问
部署成功后,用户最常搜的三个问题: 1.PyFolio 还能用吗:能用,但要 Python 3.7/3.8 旧环境,新环境装不上。 2.PyFolio 和 QuantStats 哪个好:PyFolio 是鼻祖但停更,QuantStats 是现代替代品。 3.tearsheet 是什么:一整套绩效可视化图表(收益/回撤/热力图/滚动指标)。
五、常见问题与踩坑地图
5.1 依赖地狱:pandas 版本锁死
这是最致命的坑。PyFolio 锁死 pandas<1.0,而现代 Python 环境早就是 pandas 2.x。踩坑点:
- 直接 pip install 失败:新版 Python 下
pip install pyfolio会因 pandas 版本冲突报错。 - empyrical 也是死的:PyFolio 依赖的 empyrical 库同样停更,连锁反应。
- Zipline 集成失效:Zipline 也停更了,两个「死库」互相依赖,更难跑通。
5.2 153 个 issue 无人解决
GitHub 上堆着 153 个 open issue,从 2018 年至今没人处理。遇到任何 bug,只能自己翻源码改,别指望官方修复。
5.3 该用 PyFolio 还是 QuantStats?
结论很明确:除非你要学习 tearsheet 的历史实现、或维护遗留的老项目,否则直接用 QuantStats。QuantStats 是 tearsheet 范式的现代继承者——同样是「输入收益率,输出完整报告」,但活跃维护、Python 3.10+ 直接装、文档更好。我写过一篇 QuantStats 的详细评测(见延伸阅读)。
一句话:PyFolio 是「经典但已死」,QuantStats 是「它的活着的继承者」。
六、总结:谁还该用 PyFolio
PyFolio 的历史地位无可替代——它定义了「量化绩效报告」的 tearsheet 范式,这个范式至今仍是行业标准。但它已经停更 6 年,公司倒闭、依赖锁死、153 个 issue 无人管。
所以:新项目别用 PyFolio,直接上 QuantStats;只有两种情况你会碰到它——学习 tearsheet 的历史实现,或维护一个还在用它的遗留项目。
如果你要上手绩效分析,与其折腾 PyFolio 的旧环境,不如用 EasyClaw 一键部署它的现代替代品 QuantStats,把时间花在分析策略上,而不是花在解决依赖冲突上。
延伸阅读:- PyFolio GitHub:https://github.com/quantopian/pyfolio - QuantStats 现代替代品:https://github.com/ranaroussi/quantstats - QuantStats 评测(我之前的文章):QuantStats绩效分析实战:7.6k Star一键生成专业Tearsheet报告
你在维护还在用 PyFolio 的老项目吗?迁移到 QuantStats 时遇到过什么坑?欢迎在评论区聊聊。
风险声明:本文及 PyFolio/QuantStats 均为研究与学习用途,不构成任何投资建议。绩效指标为历史数据计算结果,不代表未来表现。
AI 辅助创作声明:本文由 AI 辅助整理撰写,涉及项目事实已对照官方 README 与仓库状态核验。