Baostock
免费股票数据接口库
Pyfolio 是一个由 Quantopian 开发的 投资组合绩效分析 库,专为 量化投资 设计。它提供了一整套 回测分析、绩效评估 和 风险管理 相关的可视化工具,帮助交易员和研究人员深入理解交易策略的表现。
回测分析
风险分析
收益归因
因子分析
回撤分析
交易分析
量化交易策略回测后分析
在使用 Backtrader 或 Zipline 进行回测后,可以用 Pyfolio 评估策略的风险和收益。
投资组合绩效评估
对实际交易账户进行数据分析,帮助投资者优化资产配置。
因子投资策略分析
结合 Alphalens,分析因子投资策略的表现,优化因子选取。
1. 安装 Pyfolio
# 1安装方法
pip install pyfolio
# 2导入lib
import pyfolio as pf
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 3生成随机策略收益数据
# 生成 252 天(1 年)的随机收益数据
np.random.seed(42)
returns = pd.Series(np.random.randn(252) / 100,
index=pd.date_range('2023-01-01', periods=252))
# 绘制策略收益表现
pf.create_returns_tear_sheet(returns)
# 4结合回测数据进行分析
import backtrader as bt
class TestStrategy(bt.Strategy):
def __init__(self):
self.sma = bt.indicators.SimpleMovingAverage(period=20)
def next(self):
if self.data.close[0] > self.sma[0]:
if not self.position:
self.buy()
elif self.data.close[0] < self.sma[0]:
if self.position:
self.sell()
cerebro = bt.Cerebro()
cerebro.addstrategy(TestStrategy)
# 读取数据
data = bt.feeds.YahooFinanceData(dataname='AAPL',
fromdate=pd.Timestamp('2022-01-01'),
todate=pd.Timestamp('2023-01-01'))
cerebro.adddata(data)
cerebro.broker.set_cash(100000)
cerebro.run()
# 获取回测收益率
returns = pd.Series([cerebro.broker.getvalue() / 100000 - 1],
index=pd.date_range('2023-01-01', periods=1))
# 使用 Pyfolio 进行绩效分析
pf.create_returns_tear_sheet(returns)
运行 pf.create_returns_tear_sheet(returns) 后,Pyfolio 会自动生成一份完整的回测报告,包括:
收益分析
风险分析
交易分析
| 功能 | Pyfolio | Backtrader | Zipline | Alphalens |
|---|---|---|---|---|
| 回测功能 | ❌(不支持回测) | ✅ | ✅ | ❌ |
| 绩效分析 | ✅ | 部分支持 | 部分支持 | ✅ |
| 风险分析 | ✅ | 部分支持 | ✅ | ✅ |
| 因子分析 | ❌ | ❌ | ❌ | ✅ |
| 可视化 | ✅ | ❌ | ❌ | ✅ |
如果你的目标是 回测策略,推荐 Backtrader / Zipline;
如果你的目标是 因子分析,推荐 Alphalens;
如果你的目标是 绩效分析,推荐 Pyfolio。
如果你在开发量化交易策略,Pyfolio 是一个非常有价值的分析工具! 🚀