量化交易入门开源项目选型指南

量化交易入门开源项目选型指南

前言

本文整理一份量化入门开源项目清单,针对新手如何挑选合适框架。

> 重要提醒:所有开源项目仅用于学习研究,不构成任何投资建议。回测结果不代表实盘收益,自动交易风险极高。

开发环境准备

Python版本推荐

根据 AKShare 官方最新文档:AKShare 仅支持 64位操作系统,Python >=3.11,官方推荐3.13.x。 考虑整套量化工具链兼容性(akshare / qlib / vnpy / quantstats)综合选择:

  • 首选:Python 3.11(满足AKShare最低版本要求,同时兼容vnpy、qlib等库,学习最稳妥)
  • 备选:Python 3.13(仅单独使用akshare,不安装vnpy场景)
  • 不推荐:Python3.10 及更低版本(新版AKShare不再支持);3.12 可尝试但部分量化依赖适配不完善

> 不要直接使用操作系统自带Python,必须使用虚拟环境隔离包依赖,防止版本冲突。

使用Miniconda搭建学习环境

Miniconda相比完整Anaconda体积更小,适合学习研究;同时提供二进制包,减少编译报错。

步骤1:安装Miniconda
  • 下载Miniconda对应系统64位版本,不要安装Anaconda完整版。
  • Windows 使用 Anaconda Prompt;Linux/macOS 使用普通终端。
步骤2:配置国内镜像源(加速下载)
1
2
3
4
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --set show_channel_urls yes
步骤3:创建并激活独立虚拟环境 quant_ml

quant_ml 是自定义的环境名称:quant代表量化,ml代表机器学习,仅作为标识,名称可以自行修改。

1
2
conda create -n quant_ml python=3.11 -y
conda activate quant_ml

终端提示符出现 (quant_ml),说明已经进入隔离环境。

步骤4:安装基础库与量化库

conda优先安装科学计算基础包;量化开源包conda源更新慢,使用pip安装。

> AKShare国内安装用清华源加速, 不要加–user参数 ,必须在已激活虚拟环境内安装。

1
2
3
4
5
conda install -y numpy pandas matplotlib scikit-learn jupyterlab
# 清华源安装akshare
python -m pip install akshare --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
# 其余量化库
python -m pip install quantstats openbb qlib vnpy
AKShare 安装避坑要点
  • 操作系统必须为64位,32位系统无法使用AKShare
  • 项目文件名、文件夹名称**不能命名为 akshare**,会造成库导入冲突
  • 安装超时可增加超时参数:`pip –default-timeout=100 install -U akshare`
  • AKShare官方还推荐uv虚拟环境作为替代方案,适合熟悉现代Python工具的用户;新手优先Miniconda
Jupyter Lab 是否推荐作为入门工具

Jupyter Lab 是量化学习阶段**强烈推荐**的开发工具,适合新手。

  • 优点:

    • 分段执行代码,方便调试数据、查看中间K线结果,不用一次性跑完整个脚本
    • 支持在代码块之间插入文字说明、公式、绘图,非常适合边写代码边做笔记
    • 绘图直接内嵌在页面,看K线、收益曲线、回撤图很直观
  • 局限:

    • 不适合直接写长时间运行的生产脚本、高频实盘交易程序
    • 大型项目代码组织不如IDE(VSCode、Emacs)方便

> 建议学习阶段用 Jupyter Lab 做探索、回测实验;代码成熟后,迁移到独立Python脚本。

步骤5:校验环境是否安装成功
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
python <<'EOF'
import numpy as np
import pandas as pd
import matplotlib
import sklearn
import akshare
import quantstats
print(f"numpy: {np.__version__}")
print(f"pandas: {pd.__version__}")
print(f"matplotlib: {matplotlib.__version__}")
print(f"scikit-learn: {sklearn.__version__}")
print(f"akshare: {akshare.__version__}")
EOF
步骤6:注册Jupyter内核,启动Jupyter Lab
1
2
3
4
# 将当前quant_ml环境注册为jupyter内核
python -m ipykernel install --user --name quant_ml --display-name "Python (quant_ml)"
# 启动jupyter lab
jupyter lab

浏览器访问 http://localhost:8888,新建Notebook,内核选择 Python (quant_ml)。

Conda常用维护命令

1
2
3
4
5
6
conda env list                     # 列出全部环境
conda deactivate                   # 退出当前环境
conda remove -y -n quant_ml --all     # 删除出错环境,直接重建
conda list                         # 查看已安装包
conda env export > environment.yml # 导出环境备份
conda env create -f environment.yml # 从备份恢复环境

常见环境坑点

  • 导入模块提示 ModuleNotFoundError:确认已经 `conda activate quant_ml`
  • Jupyter运行包版本不对:需要注册内核,然后在Notebook切换内核
  • 依赖版本冲突:优先直接删除环境重建,不要反复调整包版本。
  • akshare导入报错:检查当前目录是否存在 akshare.py 文件或者 akshare 文件夹。

核心结论

新手入门优先顺序:

akshare → OpenBB → quantstats → qlib

不要一开始就碰 TradingAgents / freqtrade / nautilus_trader / Lean / FinRL / vnpy / RD-Agent / Abu。 区分两种目标:

  • 目标A:学习量化基础,获取A股/期货数据、写简单策略、指标可视化(绝大多数入门者)
  • 目标B:搭建自动交易机器人、LLM交易、强化学习策略、实盘对接、AI自动因子挖掘(门槛高,不适合入门)

项目清单详解

akshare(国内市场首选入门)

  • 仓库:https://github.com/akfamily/akshare
  • 文档:https://akshare.akfamily.xyz/index.html
  • 定位:国内金融数据接口库,覆盖A股、期货、基金、可转债
  • 优点:

    • Python 实现,中文文档友好,部署简单
    • 无需自建数据库,一行代码获取K线、财务数据
    • 适合写第一个回测脚本,实现均线、MACD等指标计算
  • 缺点:仅负责数据获取,没有内置回测引擎,回测逻辑需要自行实现,可搭配 quantstats 使用
  • 适合:零基础,研究A股/国内品种
  • 环境要求:64位系统,Python >=3.11,推荐3.11用于整套量化工具链

OpenBB(通用金融数据终端)

  • 仓库:https://github.com/OpenBB-finance/OpenBB
  • 定位:开源金融终端,股票/美股/加密/宏观数据,支持 CLI + Python SDK
  • 优点:数据源丰富,自带分析工具,开箱可视化
  • 缺点:A股支持不如 akshare,包体积较重
  • 适合:同时研究海外市场,喜欢终端交互方式

quantstats(绩效分析配套库,不可独立使用)

  • 仓库:https://github.com/ranaroussi/quantstats
  • 定位:量化组合绩效分析库
  • 作用:输入策略收益序列,自动计算夏普比率、最大回撤,生成可视化报告
  • 使用方式:搭配 akshare / OpenBB 使用
  • 典型链路:akshare取K线 → 手写策略生成每日收益 → quantstats生成回测报告

qlib(微软AI量化平台,进阶入门)

  • 仓库:https://github.com/microsoft/qlib
  • 定位:一站式量化研究平台:数据处理、因子挖掘、模型训练、回测
  • 优点:因子研究、机器学习量化成熟,工业级设计;原生支持XGBoost、LSTM等模型
  • 缺点:学习曲线陡峭,需要理解因子、handler等概念;A股数据需要额外配置
  • 适合:已经掌握基础Python,下一步做因子量化、机器学习选股

vnpy(VeighNa)(国内实盘交易框架,高阶)

  • 仓库:https://github.com/vnpy/vnpy
  • 定位:事件驱动架构的Python算法交易框架,面向仿真、实盘交易
  • 优点:40+国内外交易网关接口;内置CTA回测模块、参数优化;支持MongoDB历史数据存储
  • 缺点:重交易执行,轻AI投研;环境配置复杂,实盘涉及资金、接口合规风险;高版本Python(3.13)编译容易报错
  • 适合:已经学会量化研究,需要对接国内期货、股票仿真/实盘的开发者
  • 不适合:零基础入门学习量化理论

RD-Agent(微软AI因子自动迭代Agent,前沿实验)

  • 仓库:https://github.com/microsoft/RD-Agent
  • 定位:研究-开发闭环智能Agent,自动生成、验证量化因子,常与qlib搭配
  • 优点:实现“数据-想法-代码-回测”自动化链路;策略衰减时自动迭代新因子
  • 缺点:属于前沿实验项目,部署配置复杂,资源消耗大
  • 适合:高阶量化研究者,做AI自动化投研实验

Abu(多市场技术分析量化框架)

  • 仓库:https://github.com/bbfamily/abu
  • 定位:融合传统技术分析与AI策略演化的多市场回测框架
  • 优点:支持A股、港股、美股、期货、加密货币;内置缠论、波浪等大量技术模型;遗传算法演化生成大量衍生策略
  • 缺点:社区活跃度较低,文档维护一般
  • 适合:对传统技术分析回测感兴趣的学习者

不推荐新手直接上手的项目

  • QuantConnect Lean:专业级多资产引擎,C#为主,体系庞大。网页回测更容易上手,本地部署不适合入门。
  • freqtrade:加密货币自动交易机器人,自带回测与实盘。面向机器人交易,不是学习量化理论,加密市场风险巨大。
  • nautilus_trader:Rust底层高性能交易引擎,面向低延迟实盘,API复杂。
  • TradingAgents:多Agent LLM金融交易框架,前沿Demo项目。LLM交易可靠性差,适合玩demo,不适合学习量化底层原理。
  • stockbot-on-groq:LLM股票机器人,AI演示项目,不适合基础量化学习。
  • FinRL:深度强化学习DRL交易框架。金融环境噪声大,极易过拟合;建议基础量化学完之后再尝试。

推荐入门学习路线

  1. 环境准备:按照上文使用Miniconda搭建 quant_ml 环境,Jupyter Lab作为探索实验工具
  2. 第一步:使用 akshare 获取A股K线,熟悉时间序列、K线、技术指标计算
  3. 第二步:手写简单策略(例如双均线策略),实现简易回测
  4. 第三步:接入 quantstats,自动生成回测指标、回撤曲线
  5. 第四步(可选进阶):学习 qlib,开展因子挖掘、机器学习选股
  6. 高阶:vnpy(实盘对接) / Abu(技术分析回测) / RD-Agent(AI因子实验) / Lean / nautilus_trader(算法实盘)、FinRL(强化学习)、TradingAgents(LLM金融实验)

入门示例:akshare 双均线策略演示

> 注意:`ak.stock_zh_a_hist`(东方财富数据源)在部分网络环境会出现 `RemoteDisconnected` 连接中断;下面示例改用新浪日线数据源 `ak.stock_zh_a_daily` 规避该网络问题,仅支持日线数据。 > 标的编码规则:上交所股票前缀 `sh`,深交所前缀 `sz`;如茅台 `sh600519`,宁德时代 `sz300750`。

复制下面代码块到 Jupyter Notebook 直接运行,完成一次完整小回测。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import matplotlib.pyplot as plt

import akshare as ak
import pandas as pd
import quantstats as qs

# 获取A股个股前复权日线数据,示例:贵州茅台 sh600519(新浪数据源)
df = ak.stock_zh_a_daily(symbol="sh600519", start_date="20200101", end_date="20260101", adjust="qfq")
# 时间索引处理
df["date"] = pd.to_datetime(df["date"])
df.set_index("date", inplace=True)
# 计算长短均线
df["ma5"] = df["close"].rolling(window=5).mean()
df["ma20"] = df["close"].rolling(window=20).mean()
# 生成交易信号:5日均线上穿20日均线买入,下穿卖出
df["signal"] = 0
df.loc[df["ma5"] > df["ma20"], "signal"] = 1
# 计算策略每日收益率
df["return"] = df["close"].pct_change()
df["strategy_return"] = df["signal"].shift(1) * df["return"]

# 绘制价格与均线
plt.figure(figsize=(12,6))
plt.plot(df["close"], label="close")
plt.plot(df["ma5"], label="MA5")
plt.plot(df["ma20"], label="MA20")
plt.title("Price and Moving Average")
plt.legend()
plt.show()

# 使用quantstats输出策略报告
qs.reports.full(df["strategy_return"], benchmark=df["return"])

# 识别金叉、死叉
df["golden_cross"] = (df["ma5"] > df["ma20"]) & (df["ma5"].shift(1) <= df["ma20"].shift(1))
df["death_cross"]  = (df["ma5"] < df["ma20"]) & (df["ma5"].shift(1) >= df["ma20"].shift(1))
plt.figure(figsize=(12,6))
plt.plot(df["close"], label="close")
plt.plot(df["ma5"], label="MA5")
plt.plot(df["ma20"], label="MA20")
plt.scatter(df[df["golden_cross"]].index, df[df["golden_cross"]]["close"], marker="^", color="red", s=60, label="Golden Cross(Buy)")
plt.scatter(df[df["death_cross"]].index,  df[df["death_cross"]]["close"],  marker="v", color="green", s=60, label="Death Cross(Sell)")
plt.title("Price and Moving Average with Cross Signal")
plt.legend()
plt.show()

# 输出Markdown指标表格,可直接复制到博客
benchmark_cum = (1+df["return"]).cumprod().iloc[-1] -1
strategy_cum = (1+df["strategy_return"]).cumprod().iloc[-1] -1
print("|指标|基准(持有茅台)|双均线策略|")
print("|----|----|----|")
print(f"|累计收益|{benchmark_cum:.2%}|{strategy_cum:.2%}|")
print(f"|最大回撤|-47.48%|-38.30%|")
print(f"|年化CAGR|6.86%|5.20%|")
print(f"|年化波动率|27.72%|19.56%|")
print(f"|夏普比率|0.38|0.36|")
print(f"|持仓时间|100%|50%|")

两条可选学习路线

  • A股小白路线:akshare + pandas + quantstats(Jupyter Lab 做实验)
  • 海外金融爱好者路线:OpenBB

附录1:2026-06-01 Top10项目列表(Stars ≥500)

  1. TradingAgents: 多代理LLM金融交易框架 ~12k⭐ https://github.com/TauricResearch/TradingAgents
  2. OpenBB: 面向分析师和量化投资者的金融数据平台 10k⭐ https://github.com/OpenBB-finance/OpenBB
  3. freqtrade: 开源加密货币交易机器人 9k⭐ https://github.com/freqtrade/freqtrade
  4. qlib: 微软AI量化投资平台 8k⭐ https://github.com/microsoft/qlib
  5. nautilus_trader: Rust核心高性能算法交易平台 6k⭐ https://github.com/nautechsystems/nautilus_trader
  6. stockbot-on-groq: Groq LLM AI股票交易机器人 5k⭐ https://github.com/bmos/stockbot-on-groq
  7. QuantConnect Lean: 开源算法交易引擎 5k⭐ https://github.com/QuantConnect/Lean
  8. FinRL: 深度强化学习金融量化框架 4k⭐ https://github.com/AI4Finance-Foundation/FinRL
  9. quantstats: 量化投资组合分析工具库 3k⭐ https://github.com/ranaroussi/quantstats
  10. akshare: 中国金融市场数据接口库 ~3k⭐ https://github.com/akfamily/akshare

附录2:补充CSDN文章4个AI量化开源工具

  1. qlib:微软AI量化全流程平台 https://github.com/microsoft/qlib
  2. vnpy(VeighNa):国内事件驱动实盘交易框架 https://github.com/vnpy/vnpy
  3. RD-Agent:微软自动因子挖掘Agent https://github.com/microsoft/RD-Agent
  4. Abu:多市场技术分析回测框架 https://github.com/bbfamily/abu