今天在 GitHub Trending 上看到一个非常有价值的项目:Awesome Systematic Trading,这是由 paperswithbacktest 团队维护的量化交易资源合集,系统性地整理了系统化交易(量化交易)领域的学习路径、工具库、策略研究和实战资源。
一、项目概述
Awesome Systematic Trading 是一个精心策划的量化交易资源清单,旨在帮助量化交易爱好者、研究者和从业者快速找到所需的学习资料和工具。项目涵盖以下核心内容:
- 97 个库与工具包:覆盖回测框架、实盘交易系统、交易机器人、指标计算、风险管理等
- 40+ 交易策略:来自机构和学术界的实战策略,覆盖债券、商品、货币、股票、加密货币等资产类别
- 55 本经典书籍:从入门到高阶,包含传记、编程、高频交易、机器学习等专题
- 23 个视频与访谈:行业专家分享的实战经验与见解
- 博客与课程推荐:持续更新的学习资源
项目由 paperswithbacktest.com 团队维护,该网站专注于提供 Python 实现的交易策略合集。
二、技术原理与架构
核心分类体系
项目将量化交易工具分为多个清晰的技术栈层级:
1. 回测与实盘交易框架
事件驱动框架(Event-Driven):
- 适合高精度模拟真实交易环境
- 代表项目:
vnpy、zipline、backtrader、QuantConnect/Lean - 优势:可精确模拟订单执行、滑点、手续费等真实交易条件
向量化框架(Vector-Based):
- 适合快速策略验证与大规模数据回测
- 代表项目:
backtesting.py - 优势:计算速度快,适合策略原型开发
2. 加密货币交易专用工具
针对加密货币市场的高波动性和 7x24 交易特性,项目收录了专门的交易机器人框架和数据源接入工具。
3. 分析与计算模块
- 指标计算:技术指标、信号生成器
- 绩效度量:夏普比率、最大回撤、Alpha/Beta 计算等
- 组合优化:均值方差优化、风险平价等
- 定价模型:期权定价、债券定价等
4. 数据基础设施
- 数据源:行情数据、基本面数据、另类数据
- 数据库:时序数据库、K线存储方案
- 图计算:知识图谱在金融中的应用
技术选型建议
对于初学者,推荐的技术栈组合:
# 数据获取
import yfinance # 免费 Yahoo Finance 数据
# 回测框架(二选一)
import backtrader # 事件驱动,功能全面
import backtesting # 向量化,快速验证
# 指标计算
import talib # 技术指标库
import pandas_ta # Pandas 扩展指标
# 可视化
import mplfinance # K线图绘制
import plotly # 交互式图表
对于进阶用户,推荐:
# 专业回测引擎
from nautilus_trader import * # 高性能事件驱动框架
# 机器学习
import scikit-learn
import pytorch # 深度学习策略
# 实盘接入
from vnpy.gateway import * # 多券商接口
三、安装与快速开始
环境准备
项目本身是一个资源清单,不直接安装。以下是使用清单中推荐工具的快速上手步骤:
# 1. 创建虚拟环境
python -m venv quant-env
source quant-env/bin/activate # Windows: quant-env\Scripts\activate
# 2. 安装核心库
pip install backtrader yfinance pandas matplotlib
# 3. 安装技术指标库(可选)
pip install TA-Lib # 需要先安装底层 C 库
pip install pandas-ta # 纯 Python 替代方案
第一个策略回测
使用 backtesting.py 快速验证一个简单的移动平均交叉策略:
from backtesting import Backtest, Strategy
from backtesting.lib import crossover
from backtesting.test import SMA, GOOG
class SmaCross(Strategy):
n1 = 10 # 短期均线
n2 = 20 # 长期均线
def init(self):
close = self.data.Close
self.sma1 = self.I(SMA, close, self.n1)
self.sma2 = self.I(SMA, close, self.n2)
def next(self):
if crossover(self.sma1, self.sma2):
self.buy()
elif crossover(self.sma2, self.sma1):
self.sell()
bt = Backtest(GOOG, SmaCross, cash=10000, commission=.002)
stats = bt.run()
print(stats)
bt.plot()
运行结果将输出策略的夏普比率、最大回撤、年化收益等关键指标,并生成交互式图表。
四、使用方法与实战
策略研究流程
基于项目推荐的工具链,一个完整的量化策略研发流程如下:
步骤 1:数据准备
import yfinance as yf
# 获取股票数据
data = yf.download('AAPL', start='2020-01-01', end='2026-07-28')
# 数据清洗
data = data.dropna()
data['Returns'] = data['Close'].pct_change()
步骤 2:策略开发
清单中的策略涵盖多种资产类别,可以参考以下方向:
- 动量策略:趋势跟踪、突破交易
- 均值回归:配对交易、统计套利
- 宏观策略:基于经济周期的资产配置
- 高频策略:做市、套利
步骤 3:回测验证
使用 backtrader 进行详细回测:
import backtrader as bt
class MomentumStrategy(bt.Strategy):
params = (('period', 14),)
def __init__(self):
self.rsi = bt.indicators.RSI(self.data.close, period=self.p.period)
def next(self):
if self.rsi < 30:
self.buy(size=100)
elif self.rsi > 70:
self.sell(size=100)
cerebro = bt.Cerebro()
cerebro.addstrategy(MomentumStrategy)
cerebro.adddata(bt.feeds.YahooFinanceData(dataname='AAPL', fromdate=datetime(2020, 1, 1)))
cerebro.run()
步骤 4:风险管理
项目收录了专门的风险管理库,用于计算 VaR、CVaR、压力测试等。
进阶:多策略组合
# 使用 zvt 框架进行多因子策略开发
from zvt import Factor
class ValueMomentumFactor(Factor):
# 结合价值因子与动量因子
pass
五、常见问题与解决方案
Q1: 技术指标库安装失败
问题:TA-Lib 安装时报错 “ta-lib/ta.h: No such file”
解决方案:
# macOS
brew install ta-lib
pip install TA-Lib
# Ubuntu/Debian
sudo apt-get install -y libta-lib0-dev
pip install TA-Lib
# Windows
# 下载预编译的 whl 文件
pip install TA_Lib‑0.4.28‑cp312‑cp312‑win_amd64.whl
# 或使用纯 Python 替代方案
pip install pandas-ta
Q2: 回测与实盘结果差异大
原因:
- 未考虑滑点与手续费
- 数据质量问题(幸存者偏差、前视偏差)
- 流动性约束未建模
解决方案:
# 在 backtrader 中设置交易成本
cerebro.broker.setcommission(commission=0.001) # 0.1% 手续费
cerebro.broker.set_slippage_perc(perc=0.0001) # 滑点
Q3: 策略过拟合
表现:回测收益极高,实盘亏损
解决方案:
- 样本外测试(Out-of-Sample Testing)
- 交叉验证
- 参数敏感性分析
- 使用清单中推荐的机器学习框架进行正则化
from sklearn.model_selection import TimeSeriesSplit
tscv = TimeSeriesSplit(n_splits=5)
for train_idx, test_idx in tscv.split(X):
# 在训练集上拟合,测试集上验证
pass
Q4: 如何接入券商实盘
项目推荐的 vnpy 框架支持国内外主流券商:
from vnpy.gateway import CtpGateway # 国内期货
from vnpy.gateway import IbGateway # 海外券商
# 配置账户信息
gateway.connect({
"userid": "your_account",
"password": "your_password",
"brokerid": "broker_id"
})
Q5: 数据源不稳定或收费
项目收录了多种免费/付费数据源:
- 免费:yfinance、akshare(A股)、quandl(部分免费)
- 付费:Wind、聚宽、Tushare Pro
建议:研究和实盘使用不同数据源交叉验证。
六、总结
Awesome Systematic Trading 是量化交易领域不可多得的优质资源合集,其核心价值在于:
- 系统性:从数据获取、策略开发、回测验证到实盘交易,覆盖完整工作流
- 权威性:收录的项目均为业界广泛使用的成熟工具
- 实用性:每类资源都有清晰的分类和适用场景说明
- 持续更新:项目活跃维护,紧跟行业发展
无论你是刚入门的量化爱好者,还是专业从业者,这个项目都能为你提供清晰的学习路径和可靠的工具支持。建议按照项目结构,逐步深入学习各个模块,在实践中不断提升策略研发能力。
项目地址:https://github.com/paperswithbacktest/awesome-systematic-trading
延伸阅读:项目团队还维护了 paperswithbacktest.com 网站,提供具体的 Python 策略实现,值得深入了解。