Lumibot 量化交易框架
用 Python 构建、回测并运行规则化或 AI 驱动的交易策略。
按维度查看评分与理由
证据显示:README 强调先纸面交易再实盘,示例中明确设置 PAPER=true,且 AI 代理默认 allow_trading=False,仅 trader 代理可交易,体现了最小权限原则。但未发现用户确认机制(如交易前确认),数据流透明度仅部分体现(如代理上下文传递),敏感数据处理有 SECURITY.md 和 .env 加载,但未明确加密或脱敏。依赖安全有 CI 和依赖列表,但未提及漏洞扫描。外部影响(如订单提交)有明确说明,但缺少回滚机制。来源归属有 LICENSE 和作者信息,但发布者未验证。
证据显示:README 和示例代码一致,CI 配置完整,依赖列表明确,失败消息有示例(如 'No price available'),但未提供错误处理文档。
证据显示:README 明确目标用户(开发者、交易者),支持多种资产和场景,能力边界有说明(如支持和不支持的资产),触发条件(如交易信号)有示例,环境适配(如 Python 版本、操作系统)有说明。
证据显示:README 结构清晰,安装说明简单,命名稳定(如 Strategy 类),示例丰富,但已知限制未明确列出,许可证为 GPL-3.0(与 README 中 MIT 徽章不一致),版本变更日志未提供,维护责任有社区链接。
证据显示:输出可用性(如回测报告、日志)有说明,边际价值(如 AI 代理团队)有对比,成本效益(如 BotSpot 托管)有提及,但未提供具体数据。
证据显示:README 中的声明有代码示例支持,但跨来源验证不足(如与其他项目对比未提供数据),事实与推断区分不明确(如性能声明)。
- 许可证不一致:README 显示 MIT 徽章,但 LICENSE 文件为 GPL-3.0,需确认实际许可证。
- 示例策略中包含本地绝对路径(如 /Users/robertgrzesik/...),可能泄露开发环境信息,且不具可移植性。
- 依赖列表包含多个大型库,但未提供版本锁定或安全审计,存在供应链风险。
- AI 代理的交易权限默认关闭,但用户需自行确保配置正确,否则可能意外交易。
这个 Agent 能做什么,适合哪些场景?
Lumibot 是一个 Python 算法交易框架,可将同一 Strategy 用于历史回测、模拟交易和实盘经纪商运行。其核心接口包括 Strategy、Trader、Alpaca,以及 YahooDataBacktesting 等回测数据类。内置 AI agent runtime 支持在策略循环中创建多个分工代理,让它们读取市场、基本面、SEC 文件、FRED 宏观数据、指标和本地记忆,并由获授权的代理提交订单。代理运行可记录 SQLite 和 Parquet 格式的记忆、工具调用、决策、订单和其他运行产物,便于回测复盘。项目可自托管运行,也提供围绕 Lumibot 的 BotSpot 托管部署路径。
开发者继承 Strategy,并在 on_trading_iteration 中读取策略状态、通过 create_order 创建订单、以 submit_order 提交订单。Strategy.backtest(YahooDataBacktesting, start, end) 会以历史数据和模拟订单执行策略;实盘或模拟盘则创建 Alpaca 配置和实例,将策略加入 Trader,再调用 trader.run_all()。AI 策略通过 self.agents.create(name, model, allow_trading, system_prompt) 创建代理,并以 self.agents[...].run(task_prompt, context) 串联研究、看多、看空和交易决策;只有 allow_trading=True 的代理可交易。文档列出的内置工具可访问市场与账户状态、订单、DuckDB、文档搜索、指标、SEC、FRED、本地记忆和 Telegram 通知,并支持挂载外部 MCP 服务器。
- 希望先用 2023–2024 年 Yahoo 历史数据验证买入规则,再改用 Alpaca 模拟盘运行的 Python 交易者。
- 需要让研究、看多、看空和组合经理代理围绕 ETF 或股票依次给出依据与交易决定的量化团队。
- 希望将 Python 风控门槛与代理研究结合,并在连接真实资金前检查订单、日志和回测产物的团队。
- 需要针对股票、期权、加密资产、期货、外汇或 Polymarket 预测合约选择经纪商或数据源的策略开发者。
- 希望用 DuckDB 分析时间序列、保存本地 SQLite/Parquet 代理记忆,并追溯某次交易依据的研究人员。
这个 Agent 有哪些优点和局限?
- 同一个 Strategy 代码路径可用于回测、模拟盘和经纪商执行,而非仅提供研究或提示词演示。
- AI runtime 支持多代理分工、只读研究代理与可交易代理的权限区分,并可在普通 Python 策略中叠加确定性控制。
- 回测与代理运行可保存 SQLite、Parquet、订单、工具调用和决策产物,便于审查代理为何交易。
- README 明确列出多个经纪商、市场类型和回测数据路径,包括 Alpaca、Interactive Brokers、Tradier、Schwab、期货、期权和 Polymarket。
- 运行模拟盘或实盘必须自行配置相应经纪商凭据;网络、市场数据和订单路由依赖外部服务。
- AI 团队示例依赖有效的模型提供商密钥;缺失或无效密钥时,项目会停止并报错。
- CCXT 支持并非覆盖全部交易所:README 只列出部分自动识别凭据路径、手动配置路径和回测示例。
- 许可证信息存在冲突:仓库元数据标为 GPL-3.0,而 README 的徽章和许可证章节标为 MIT,采用前需要核实 LICENSE 文件。
如何安装或部署这个 Agent?
安装:pip install lumibot。要从源码参与开发,文档给出的命令是 pip install -r requirements_dev.txt && pip install -e .。AI 交易团队示例需要有效的模型提供商密钥;README 的示例使用 GEMINI_API_KEY。Alpaca 模拟或实盘运行还需要 ALPACA_API_KEY、ALPACA_API_SECRET,并可设置 ALPACA_IS_PAPER=true。
如何使用这个 Agent?
创建 my_strategy.py,从 lumibot.strategies 导入 Strategy、从 lumibot.backtesting 导入 YahooDataBacktesting,定义 on_trading_iteration,然后调用 MyStrategy.backtest(YahooDataBacktesting, datetime(2023, 1, 1), datetime(2024, 1, 1)),以 python my_strategy.py 运行。要切换到 Alpaca,设置 ALPACA_API_KEY、ALPACA_API_SECRET 和 ALPACA_IS_PAPER=true,以配置字典构造 Alpaca,将 MyStrategy(broker=broker) 加入 Trader,再调用 trader.run_all()。运行代理团队示例时,设置 GEMINI_API_KEY 和上述 Alpaca 环境变量,并运行 python ai_trading_team_bull_bear_leveraged_etf.py;将文件中的 IS_BACKTESTING 改为 True 可改走示例的 Yahoo 回测路径。
这个 Agent 与同类方案有什么区别?
README 将 Lumibot 与 TradingAgents、ai-hedge-fund、OpenAlice、QuantDinger、OpenBB 和 Qlib 对比;其定位强调 Python 策略、可组合的代理团队、回放式决策检查和经纪商执行。它也与 Backtrader、Freqtrade、Zipline、Backtesting.py、Jesse、vectorbt、NautilusTrader 和 Hummingbot 对比,重点是同代码回测/实盘、期权支持、内置 AI runtime 及 BotSpot 托管路径。
常见问题
它能直接拿来实盘交易吗?
AI 代理能否自行下单?
allow_trading=False 将研究、看多和看空代理限制为只读,只有 allow_trading=True 的最终交易代理可提交订单。回测时是否每次都会产生新的模型调用费用?
需要 BotSpot 才能使用吗?
pip install lumibot 和自托管的 Alpaca/Trader 运行方式;BotSpot 是可选的托管数据、回测、部署和监控路径。