lumibot
唯一将 AI Agent 嵌入量化回测循环的开源框架,同一套代码实现回测与实盘无缝切换
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
唯一将 AI Agent 嵌入量化回测循环的开源框架,同一套代码实现回测与实盘无缝切换
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景: 你训练了一个大语言模型(LLM)来选股,你想验证它过去三年的历史表现。传统的做法是把模型输出导出、手工喂给回测工具——但这样根本无法模拟"模型在每个交易日实时做决策"的真实回路。
Lumibot 解决的就是这个问题。它是目前极少数能把 AI Agent 真正嵌入回测循环的量化框架:每个 K 线周期,Agent 都能调用外部工具(宏观经济数据、SEC 文件、实时价格),然后做出交易决策——整个过程与实盘完全一致。
量化交易社区很早就开始尝试把 LLM 融入策略生成。但主流方案存在一个根本矛盾:
Lumibot 的核心洞察是:AI 交易策略的回测必须把 Agent 放进模拟循环,每个 bar 都让 Agent 看到"当时那个时间点"的信息(而不是未来数据泄露),然后让 Agent 自主决策。
Lumibot 的架构分为五层:
支持 10+ 数据提供商,每个都有对应的 data_source_*.py 模块:
| 数据源 | 类型 | 说明 |
|---|---|---|
| Polygon.io | 实时+历史 | 推荐数据源,提供股票/期权/加密/外汇数据 |
| Alpaca | 实时+历史 | 支持股票和加密,支持 news API |
| Interactive Brokers (IBKR) | 实时+历史 | 专业级,支持股票/期权/期货/外汇 |
| DataBento | 历史 | 高性能二进制格式,适合大规模回测 |
| Yahoo Finance | 免费历史 | 无需 API key,适合学习阶段 |
| CCXT | 加密货币 | 支持 100+ 交易所 |
| Tradier | 股票/期权 | 提供经纪功能 |
| Schwab(嘉信) | 股票/期权 | 德美利券商 |
| Alpha Vantage | 免费股票 | 免费限额 |
数据源层严格遵守一条铁律:绝不伪造数据。文档明确写道:"Missing > Fake"——如果某天没有真实数据,回测必须跳过或报错,而不是用插值/填充数据来掩盖。这一原则直接写进了架构文档,是法律级别的合规要求。
Lumibot 的策略继承自 Strategy 基类,用户只需实现核心方法:
initialize() — 策略初始化,可设置参数on_trading_iteration() — 每个时间周期的核心回调,AI Agent 在这里做决策on_filled_order() / on_canceled_order() — 订单事件处理before_market_opens() / after_market_closes() — 盘前盘后钩子策略分为两类:规则型策略(传统技术指标/均线交叉)和 AI Agent 策略(在 on_trading_iteration() 内调用 LLM)。
这是 Lumibot 区别于其他量化框架的核心创新。内置 AI Agent 运行时包括:
Agent Tool 装饰器(@agent_tool):将任意 REST API 包装为 Agent 可调用的工具。内置工具覆盖账户状态、市场价格和历史 K 线、DuckDB SQL 查询、Lumibot 文档检索、Alpaca 新闻、技术指标计算、SEC 基本面和公告文件、FRED 宏观数据(GDP、CPI、利率等)、记忆系统、通知系统、订单操作。
MCP 服务器支持:通过 URL 连接标准 MCP 协议服务器。
Replay Cache:相同输入参数的结果会被缓存,回测重跑时直接读缓存,保证确定性。
Lumibot 支持 11 个券商/交易所的集成:Alpaca(股票、加密、Paper/Live 双模式)、Interactive Brokers(专业级全品种覆盖)、Tradier(美国股票/期权)、Schwab(德美利券商)、Tradovate(期货)、CCXT(100+ 加密货币交易所)、Bitunix(加密货币)、ProjectX(Lumiwealth 自有平台)。
关键设计:同一套策略代码,只需切换 Broker 配置即可在回测和实盘之间切换。回测时用模拟券商,实盘时换成真实券商。
回测引擎负责:历史数据回放(按时间顺序逐 bar 推进)、模拟订单撮合(根据 fill_policy 配置滑点/延迟)、PnL 计算(集成 quantstats 生成专业绩效报告)、回测准确性验证。
Lumibot 是纯 Python 项目,依赖丰富:
| 类别 | 关键依赖 |
|---|---|
| 数据处理 | pandas, polars, numpy, scipy |
| 数据库 | DuckDB, SQLAlchemy(回测缓存) |
| 可视化 | plotly, matplotlib, quantstats-lumi |
| 量化分析 | pandas-ta-classic, pandas-market-calendars |
| LLM/AI | openai(OpenAI/Anthropic/Google Gemini 兼容接口) |
| 券商 API | alpaca-py, ibapi, ccxt, schwab-py, tradier |
| 调度 | APScheduler |
| Web | Flask >= 2.3(内置 Web 服务) |
| 数据源 | yfinance, polygon-api-client, databento, themarketdata |
| 测试 | pytest |
以下是官方示例,一个最基础的股票买入持有策略。只需继承 Strategy 并重写 on_trading_iteration(),在仓位为空时买入 SPY:
from lumibot.strategies import Strategy
class StockBuyAndHold(Strategy):
def on_trading_iteration(self):
if self.symbols_bought == 0:
order = self.order(symbol="SPY", quantity=10, side="buy")
self.submit_order(order)
运行回测只需一行命令:python -m lumibot.example_strategies.stock_buy_and_hold
如果想使用 AI Agent 策略,只需在 on_trading_iteration() 内创建 Agent 并下达交易指令即可。Agent 可以调用 FRED 宏观数据、SEC 文件、持仓分析等工具,做出综合决策。
优势:
局限:
| 用户类型 | 适用度 | 原因 |
|---|---|---|
| 量化研究员 | 五星 | 核心场景,AI + 回测循环 |
| Python 开发者 | 四星 | API 设计清晰,扩展容易 |
| AI 工程师 | 四星 | Agent 运行时对 LLM 集成友好 |
| 散户投资者 | 两星 | 需要编程能力,数据和券商门槛高 |
| 完全新手 | 一星 | 不适合,没有图形化界面 |
Lumibot 填补了一个真实存在的空白——让 AI Agent 在量化回测中有意义地运行。在 AI + 量化这个赛道上,大多数项目要么只有 Agent 框架没有回测,要么只有回测引擎没有 AI 集成。Lumibot 的解法是将 @agent_tool 作为第一公民的数据管道,将 Agent 的决策嵌入每个回测 bar,同时用 DuckDB 缓存保证性能。
对于希望在历史数据上验证 AI 交易策略的研究团队,Lumibot 是目前开源生态中完成度最高的选项。它的局限也很明显:不面向普通投资者,需要一定的 Python 和量化基础才能用起来。