PyFolio实战:Quantopian遗留下的分析引擎,揭示苹果11.5年收益分布的肥尾真相
Quantopian 遗留下来的组合分析引擎
PyFolio 是 Quantopian 开源的投资组合分析库。Quantopian 这个名字对于做量化的老手来说应该不陌生——它曾经是全球最大的众包量化对冲基金平台,2016 年管理规模超过 2.5 亿美元,2020 年关停后将其核心分析工具开源。PyFolio 就是其中最实用的一部分:它专门做一件事——把一串收益率数字变成一份完整的风险收益分析报告。
和 QuantStats 不同,PyFolio 更精简、更聚焦——13 个核心指标加上一张九面板 Tearsheet,不追求全面覆盖,但每个数字都直击量化研究的核心问题:收益够不够、风险值不值、分布正不正常。我拿它对苹果过去 11.5 年的日收益率做了完整分析:年化 25.17%、累计 1229 倍、夏普 0.93、最大回撤 -38.52%。峰度 6.41 说明收益分布有明显的肥尾特征——极端涨跌比正态分布预期的要频繁得多。
起步
从 EasyClaw 官网下载安装。不需要手动装 PyFolio、不需要配 Jupyter Notebook。
打开后左侧找「Skill」→「Skill Creator」。灰显的话去「设置 → 通用」打开「开发者模式」重启。
创建 Skill
在 Skill Creator 里告诉 EasyClaw:
帮我把 GitHub 上的 PyFolio(https://github.com/quantopian/pyfolio)做成一个组合分析 Skill。我希望输入股票代码和起止日期,自动拉取历史收益率数据,生成 perf_stats 完整统计表、五段最差回撤明细和九面板 Tearsheet 图表。
EasyClaw 会自动拉代码、配置数据源、封装成 Skill。
Skill 创建好后:
用 PyFolio 对 AAPL 从 2015 年到现在做完整的收益分析

分析结果:11.5 年 1229 倍回报,但有过五次 30% 以上的回撤
核心绩效——13 项指标
| 类别 | 指标 | 值 | 怎么看 |
|---|---|---|---|
| 收益 | 年化收益 | 25.17% | 极高的年化——已超过巴菲特长期记录 |
| 累计收益 | 1,229.58% | 1 万变 13.3 万 | |
| 风险 | 年化波动率 | 28.73% | 高波动——是标普的两倍以上 |
| 最大回撤 | -38.52% | 三次腰斩级别的回撤 | |
| 风险调整 | 夏普比率 | 0.93 | 接近 1——优秀水平 |
| 索提诺比率 | 1.36 | 高于夏普,说明下行波动控制得比上行好 | |
| 卡玛比率 | 0.65 | 收益/最大回撤——每承受 1% 回撤获得 0.65% 年化收益 | |
| 分布 | 偏度 | 0.13 | 轻微正偏——收益略向右偏 |
| 峰度 | 6.41 | 显著肥尾——极端事件比正态分布多得多 | |
| 尾部比率 | 1.05 | 最右 5% 和最左 5% 的收益几乎对称 | |
| 基准 | Alpha(vs SPY) | 9.41% | 独立于大盘的年化超额——相当显著 |
五次最严重的回撤
PyFolio 会自动列出历史上最严重的五次回撤,精确到起止日期和恢复日期:
| # | 回撤 | 高点 | 低点 | 恢复 | 持续天数 |
|---|---|---|---|---|---|
| 0 | -38.52% | 2018-10-03 | 2019-01-03 | 2019-10-10 | 267 |
| 1 | -33.36% | 2024-12-26 | 2025-04-08 | 2025-10-20 | 213 |
| 2 | -31.43% | 2020-02-12 | 2020-03-23 | 2020-06-05 | 83 |
| 3 | -30.91% | 2022-01-03 | 2023-01-05 | 2023-06-02 | 370 |
| 4 | -30.44% | 2015-05-22 | 2016-05-12 | 2017-02-01 | 444 |
五次回撤全部超过 30%,最长的从高点到恢复用了 444 天。但每轮回撤之后都创了新高——苹果的长期回报是建立在一轮又一轮 30%+ 回撤的废墟上的。这和 QuantStats 那篇文章发现的规律完全一致:在苹果这种超级牛股上,持有不动是最优策略,但前提是你能扛住每隔一两年就来一次的大回撤。

九面板 Tearsheet 包含了:累计收益、回撤、月度收益热力图、收益分布直方图、滚动夏普(6 个月)、年度收益、季度收益、最差五日收益、水下期分布——一张图覆盖了评估一个资产需要的全部视觉信息。
峰度 6.41 意味着什么
正态分布的峰度是 3。峰度 6.41 意味着苹果的日收益率分布比正态分布多了两倍以上的极端事件——暴涨暴跌的频率远超你的直觉预期。这个数字在实际交易中的含义是:你以为止损设在 -5% 够用了,但苹果历史上出现过多次 -5% 以上的单日暴跌。肥尾提醒你——回测里看到的最大回撤不是最坏情况,只是历史记录。真实的最坏情况永远在历史之外。
偏度 0.13 说明苹果的涨跌基本对称,微微向右偏。这和一些量化策略的偏度特征完全不同——比如 FinRL 强化学习策略的偏度是 1.218,明显右偏。买入持有的收益分布更接近正态,择时策略的收益分布则有更强的偏度和峰度。
PyFolio 和 QuantStats 的区别
很多人会搞混这两个工具——名字像、功能都是"组合分析 + Tearsheet"。但它们的定位有明确的差异:
| PyFolio | QuantStats | |
|---|---|---|
| 出身 | Quantopian(已关停的对冲基金平台) | 独立开源项目 |
| 风格 | 精简、聚焦,13 个核心指标 | 全面、详尽,70+ 指标 |
| Tearsheet | 9 面板,偏学术风 | 10+ SVG 嵌入 HTML,偏商业风 |
| 最差回撤明细 | 自动列出五次最严重回撤+起止日期 | 仅给出最大回撤数值 |
| 适合 | 快速诊断——"这个策略有没有硬伤" | 深度报告——"给投资人看" |
PyFolio 的"最差回撤明细"是它最实用的功能——不仅有最大回撤数值,还把每一次超过 30% 的回撤精确到起止日期和恢复日期。这比只看一个 -38.52% 的数字有用得多——你知道最坏的时候是什么时候、持续了多久、什么时候能回本。
常见报错
| 错误 | 原因 | 解决方法 |
|---|---|---|
| Tearsheet 生成后九面板中有空白 | 某些面板所需数据不足(如月度热力图需要足够长的历史) | 拉长回测区间,至少覆盖 3 年以上 |
| perf_stats 中 Alpha 为 NaN | 没有传入基准收益率序列 | 确认 benchmark 参数已设置 |
下一步
- 把自己策略的收益率序列喂给 PyFolio,看策略和买入持有的分布特征有什么不同
- 用 PyFolio 的 event study 模块分析财报发布前后的异常收益
资源链接:
- EasyClaw 下载:https://easyclaw.cn/?f=733
- PyFolio GitHub:https://github.com/quantopian/pyfolio
你投资的标的历史上最大回撤是多少?你能接受的最大回撤又是多少?欢迎聊聊。

浙公网安备 33010602011771号