LumiBot / 券商接入

LumiBot 到底接了几个券商:11 个可实例化类与「12 brokers」的口径差

LumiBot 的仓库描述第一句就写着 AI agents that actually place the trade. 12 brokers。但「12」这个数字在仓库里找不到一份能逐行对齐的清单:README 只列了 9 条产品条目,lumibot/brokers/__init__.py 的导出表有 13 项,去掉抽象基类和异常类之后,可实例化的券商类共 11 个,其中还包括一个给开发者抄写的模板类 ExampleBroker

三个数字都不算错,只是口径不同:导出名可实例化的类README 里的产品条目CCXT 里的交易所,是四种统计方式。把它们混在一起谈,就会出现「LumiBot 支持一百多家交易所」这种既不能证实也不能证伪的说法。

这一页把四种口径摊开,并逐个核对你真正关心的两件事:① 我的券商在不在名单里;② 它在名单里,是不是就等于我的账户已经能下单。第二个问题的答案通常是否定的——券商账户、API Key、资产类别授权、地区可用性都在这条链上,缺一项就走不通。

11 个可实例化券商类README 9 条产品条目CCXT 选择性支持采集日期 2026-09-22
本文核对环境
  • 仓库:Lumiwealth/lumibot,默认分支 dev
  • 券商导出表:lumibot/brokers/__init__.py_NAME_TO_MODULE(13 项)
  • PyPI wheel 内 lumibot/brokers/ 共 15 个文件,与 dev 分支目录一致
  • 采集日期 2026-09-22;本站未连接任何券商账户、未实盘下单
代码口径 11 类brokers/__init__.py 13 项,去掉基类与异常类后 11 个可实例化类(含模板类)
README 口径 9 条产品条目式列举,CCXT 只占一句「selected CCXT」
CCXT 选择性支持官方原话:不承诺覆盖每一个 CCXT 交易所
资产类别 7 类股票 / 期权 / 期货 / 外汇 / 加密 / 指数 / 预测合约,不含 A 股通道
券商口径与资产类别示意(左两项依据 lumibot/brokers/__init__.py 与 README,2026-09-22 采集)。两侧口径不同,本站只并置事实、不代替官方结论;示意图不代表任一券商的实际可用性。
口径核对

四个数字:13、11、9、15,各自数的到底是什么?

下面每一行都能自己复现:打开 lumibot/brokers/__init__.py 数导出项、打开 README 数产品条目、把 PyPI 的 wheel 解压数目录文件。数出来的数量不同,是因为统计对象不同,不是因为有人在说谎。

口径数量包含什么不包含什么注意点
官方仓库描述12 brokersREADME 首屏与仓库 About 里的宣传口径仓库里没有一份「这 12 个是哪 12 个」的清单可以逐行对齐引用时应写明「这是官方自述数字」,不要说成「代码里核验到 12 个」
README「Supported Brokers」9 条产品条目Alpaca、Interactive Brokers 与 IBKR REST、Tradier、Schwab、Tradovate、TopstepX(via ProjectX)、Bitunix、Polymarket、selected CCXT不把 Coinbase、Kraken 等单列成条目这是「产品」口径:把 CCXT 那一句展开成多家交易所,条目数立刻变化
brokers/__init__.py_NAME_TO_MODULE13 项Alpaca、Bitunix、Broker、LumibotBrokerAPIError、Ccxt、ExampleBroker、InteractiveBrokers、InteractiveBrokersREST、ProjectX、Polymarket、Schwab、Tradier、Tradovate不区分「基类 / 异常类 / 真实券商 / 模板类」这是最容易复现的核对方式,但它是「导出名」口径
可实例化的券商类11 个上表 13 项减去抽象基类 Broker 与异常类 LumibotBrokerAPIError其中 ExampleBroker 是给开发者抄写的模板,不对应真实市场本站全站采用这个口径,并在需要时明确标注「含 1 个模板类」
lumibot/brokers/ 目录文件15 个文件14 个 .py__init__.py目录里还包含 broker.py 基类、example_broker.py 模板、oauth_refresh_mode.pytrade_event_priority.py 两个非券商模块数文件会把基类、模板、辅助模块一起算进来,得到最大的那个数字
CCXT 自动识别凭据路径3 家Coinbase、Kraken、WEEX其余交易所不在这条免配路径里「自动识别」与「能不能手动配好」是两件事,见下一节
CCXT 有回测示例的交易所6 家Kraken、Binance、KuCoin、BitMEX、Bybit、OKX不等于能实盘交易,也不等于自动识别凭据回测示例名单与实盘路径名单是两份不同的清单,不要互相替代
覆盖资产类别7 类股票、期权、期货、外汇、加密、指数、预测合约不含 A 股券商通道判断「能不能用」应先看资产类别,再看券商;两者要同时满足
怎么用这张表:如果你要在文章或汇报里写数字,先想清楚你要表达的是「框架实现了几个适配器」还是「我能用几家券商交易」。前者是代码事实,后者取决于你的账户与地区。本站的建议是:写代码口径就写「11 个可实例化类(含 1 个模板类)」,引官方描述就注明是官方自述——两者不要混用。如果你关心的其实是数据从哪来,先看数据源与路由
逐个核对

11 个可实例化类分别是做什么的

这一节把 brokers/__init__.py 里能实例化的 11 个类逐个摊开。「覆盖市场」一栏写的是该模块对应的资产范围,不是「你的账户一定能交易」;后者取决于券商侧的授权与地区可用性。

类名模块文件覆盖市场备注注意点
Alpacaalpaca.py美股与 ETF(以券商实际支持为准)官方 README 里出现频率最高的券商示例paper 与 live 是靠配置区分,不是两个类;先用 paper 跑通再考虑切换
Bitunixbitunix.py加密(含合约)官方在券商行为表里为它单列《Bitunix futures submission contract》一节加密合约的提交契约与美股差异很大,不要把美股的下单经验直接套过去
Ccxtccxt.py由 CCXT 覆盖的加密交易所(选择性)一个类背后是一组交易所,而不是一家「用了 Ccxt 类」不等于「所有 CCXT 交易所都能用」,见本页第三节
ExampleBrokerexample_broker.py无真实市场给开发者抄写自定义券商适配的模板实现它不是可交易的券商;本站把它计入 11 个类时会明确标注为模板类
InteractiveBrokersinteractive_brokers.py股票、期权、期货IBKR 的传统接入路径通常需要本地网关与会话管理,配置成本高于纯 REST 的券商
InteractiveBrokersRESTinteractive_brokers_rest.py股票、期权、期货IBKR 的 REST 变体,另有独立的 interactive_brokers_rest_backtesting 回测模块同一品牌两条接入路径,选错会在配置阶段就卡住,先确认自己要哪一条
ProjectXprojectx.py期货对应 README 里的 TopstepX 期货路径期货有独立的到期与移仓规则,官方另有 FUTURES_ROLL_POLICY 文档
Polymarketpolymarket.py预测合约框架里为预测合约单独实现的一类预测合约的行情、结算与胜负判定与证券完全不同,不要当成「又一个加密交易所」
Schwabschwab.py股票官方另有 SCHWAB_BROKER_RESILIENCE 文档讨论连接韧性它使用 OAuth 授权流程,凭据刷新方式与普通 API Key 不同
Tradiertradier.py股票、期权依赖独立的 lumiwealth-tradier 外部包它是被包了一层的外部依赖,不是纯自研适配;升级时要一起看该包版本
Tradovatetradovate.py期货券商行为表中为它单列一节期货账户通常与股票账户分开申请、分开授权,别假设账户通用
一个容易过度乐观的读法:「框架里有这个类」只说明这套适配代码存在。要真正下单,还需要券商侧账户、密钥、资产类别授权、地区可用性四件事同时满足。官方也在券商行为文档里承认,行为表需要靠 smoke test 才能从「文档」变成「事实」。这四件事的逐项说明见本页第五节与下单与成交
CCXT 边界

四组名单,别合并成一句「支持全部 CCXT」

中文教程里最常见的一句失真就是「LumiBot 通过 CCXT 支持一百多家交易所」。官方原话恰恰相反:Lumibot does not claim blanket support for every CCXT exchange。下面把 README 里散落的四组名单拆开列。

名单类别包含的交易所出处适用场景注意点
自动识别凭据路径Coinbase、Kraken、WEEXREADME「Supported Brokers」段想少写配置、直接用这三家的情况这三家之外要走手动 CCXT 配置路径,不要以为填错字段也能自动识别
手动 CCXT 配置路径KuCoin、Binance、BitMEXREADME 同段愿意按文档手写配置字段的情况手动配置意味着更多字段要自己填对,出问题时先怀疑配置而不是框架
有回测示例的交易所Kraken、Binance、KuCoin、BitMEX、Bybit、OKXREADME 数据源段想先跑回测验证想法、暂不接实盘有回测示例 ≠ 有实盘路径;这两份名单不能互相替代
官方明确不承诺的范围除上述名单外的其他 CCXT 交易所README 原文:does not claim blanket support for every CCXT exchange看到任何「支持全部 CCXT」的说法时用来对照这句话是官方自己写的,引用时保留原文,不要改写成「基本都支持」
版本门槛WEEX 需要 ccxt>=4.5.50setup.pyrequirements.txt 的行内注释打算用 WEEX 时先确认依赖版本注释原文是 4.5.50+ includes WEEX exchange support;低版本装了也识别不到
与 11 个类的关系Ccxt 只占 11 个类中的 1 个lumibot/brokers/__init__.py需要对外说明「支持几家」时确定口径把 CCXT 展开成上百家,就等于把「11 个适配器」偷换成「上百家券商」,两种表述不能混用
为什么这件事值得单独一节:交易所数量是最容易被放大的数字。把「1 个 CCXT 适配器」说成「100+ 交易所支持」,读者据此去开一个不在名单里的交易所账户,就会把时间花在本可以避免的排查上。按本站的口径:CCXT 相关能明确说出口的,就是上面四组名单。
能力边界

「支持」不等于「你已经能交易」:八项前置条件

下面这些条件里,只有一项是框架能替你解决的。「缺了会怎样」一列写的是你在实际使用中最可能遇到的暴露方式,用来反推该先准备什么。

前置条件谁负责缺了会怎样适用场景注意点
券商账户没有账户就没有可下单的标的,即使 paper 模式通常也需要先注册任何实盘或纸交易场景账户类型(现金 / 保证金、个人 / 机构)会影响可用功能,先确认自己开的是哪一种
API Key 与密钥拿不到行情或下不了单,通常以鉴权类错误暴露所有需要连接券商的场景密钥只放环境变量或本地凭据文件,不要写进策略代码或提交到公开仓库
账户权限开关你(在券商侧)券商侧关闭了期权或期货权限时,代码没问题也会被拒单期权、期货等有额外授权要求的资产这是券商侧的门槛,框架无法绕过;排查时要区分「代码报错」与「券商拒单」
paper 与 live 的区分用错环境可能把测试单打到真实账户第一次接入任何券商时官方示例用配置项(如 PAPER)区分;务必先跑 paper 模式
地区与账户可用性券商方地区不支持时开户或接口会直接不可用境外券商的账户与服务范围本站不提供开户或合规建议;以券商对你所在地区的实际支持为准
资产类别覆盖框架 + 券商框架里有模块但券商不支持该资产时,仍然不能交易想交易期权、期货或预测合约框架侧与券商侧的支持范围要同时满足,只看一边会得出错误结论
行情数据订阅你(或托管平台)缺数据时回测跑不起来,或只能拿到降级后的数据期权、期货这类需要更细历史数据的回测ThetaData 属可选 extras 依赖;仓库里另带一个约 39 MB 的 ThetaTerminal.jar,本机实测该 jar 确实在 PyPI 的 wheel 里
模型凭据(仅 AI 路径)你(或托管平台)AI agent 没有模型凭据时无法完成决策使用 agent 类策略时这是 AI 路径的额外前置条件,与券商连接是两件独立的事,别混在一起排查
排查顺序建议:遇到问题时按「账户 → 密钥 → 权限 → 环境(paper/live)→ 资产类别 → 数据 → 模型」的顺序过一遍,比直接怀疑框架代码更快。其中资产类别与地区两项,官方文档只能给你边界,具体到你的账户必须自己去券商侧确认。安装与依赖层面的坑见安装与依赖体量;商用与许可口径见许可与商业边界
行为表

券商行为表:为什么官方自己说「还没完」

仓库里有一份 docs/BROKER_ORDER_SEMANTICS.md,按券商与资产类别记录订单与成交行为。它的价值在于承认了「不同的券商会怎么做是券商与品种特定的」,但官方同一份文档里也写明它还缺一步。

券商资产类别行为表覆盖覆盖到什么程度注意点
Alpaca股票有(行为表中独立一节)记录该券商下的订单与成交表现行为表是 append-only,只追加不修改,老条目不一定反映券商当前的接口行为
Schwab股票独立一节另有专门的连接韧性文档,长连接类问题优先看那份
Tradier股票、期权独立一节期权与股票在成交语义上可能不同,按资产类别分别读,不要用股票一节推断期权
Interactive Brokers股票、期权独立一节REST 变体是另一条接入路径,读行为表时要确认自己走的是哪一条
Interactive Brokers期货有(期货单独成节)期货与股票在行为表中分开记录期货另有到期与移仓的专门策略文档,回测与实盘都要考虑换月
Tradovate期货独立一节期货账户通常独立授权,开好账户不等于拿到接口权限
ProjectX期货独立一节对应 README 里的 TopstepX 路径,注意别与其它期货券商的行为混读
Crypto(Coinbase)加密独立一节加密是 24/7 交易,日历、结算与时区口径与股票不同,回测参数要另设
官方自己写下的那句限定:文档把「让文档变成事实」列为后续必做项(原文 Required follow-up: turn documentation into truth),也就是要用券商行为 smoke test 去验证表里的记录。所以正确用法是:把行为表当作「设计意图与已知差异的记录」,而不是「交易规则说明书」。你真正要下大额单之前,应在 paper 环境里自己验证一遍关键路径。此外文档还单列了三个专章:Bitunix 期货提交契约、加密期货平仓不变量、加密历史完整性不变量——说明加密与期货的边界条件比股票多。回测侧的口径差异见回测与实盘一致性
怎么选

按资产类别反查券商,而不是按名单长短挑

选券商最省时间的顺序是:先确定你要交易什么资产 → 再看哪几家覆盖它 → 最后核对账户与授权。倒过来做(先挑一家看着顺眼的,再想能交易什么)通常会在权限环节折返。

你要交易什么先看哪个券商理由第一件该做的事
美股与 ETF,先跑通整个流程Alpaca官方 README 示例最完整,paper 与 live 用配置切换,适合第一次接入申请账户并取得 API Key,在 paper 模式跑通一个最小策略再谈实盘
美股期权(单腿)TradierInteractiveBrokers行为表中两家都覆盖股票期权,可对照阅读确认账户已开通期权权限,并核对期权数据源是否满足你的回测需求
美股期权(多腿组合)支持整包提交的券商多腿是原子提交、fail closed:券商不支持整包提交时,会在提交任何一条腿之前就拒绝,不会拆成子订单先确认目标券商是否实现 package 提交,详见下单与成交
期货(含微型合约)ProjectXTradovateInteractiveBrokers行为表为三家各列一节,且 IBKR 期货单独成节确认期货行情订阅与到期移仓规则,回测时把换月成本考虑进去
外汇取决于券商自身的覆盖范围框架支持外汇这一资产类别,但具体券商覆盖需要逐个核对先用该资产类别跑一次回测,确认数据源确实能取到你要的品种
加密现货与合约BitunixCcxt 路线Bitunix 有独立的期货提交契约章节;CCXT 覆盖多家交易所但为选择性支持先确认目标交易所属于哪一组 CCXT 名单(自动识别 / 手动配置 / 仅回测示例)
预测合约Polymarket框架里为预测合约单独实现了模块单独了解预测合约的行情与结算规则,不要套用证券的收益口径
只想本地回测,暂不接券商先不接券商回测可以只用免费或付费数据源完成,不需要券商密钥先看数据源与路由,确认你能拿到的历史数据够不够
FAQ

关于 LumiBot 券商接入的高频问题

以下回答基于 2026-09-22 对官方仓库源码、README 与 PyPI wheel 内容的核对;涉及接口行为的以官方仓库实现与券商侧规则为准。本站未连接任何券商账户、未实盘下单,也不提供开户与合规建议。

LumiBot 到底是 11 个券商还是 12 个?

三个数字口径不同:代码导出表 13 项brokers/__init__.py_NAME_TO_MODULE)、去掉基类与异常类后 11 个可实例化类(其中 ExampleBroker 是给开发者抄写的模板,不对应真实市场)、README 列 9 条产品条目;官方仓库描述则写「12 brokers」,但仓库里没有一份 12 条清单可以逐行对齐。本站的做法是写清楚口径,而不是替官方选定一个数字。你要对外引用时,建议也写明是「代码口径」还是「官方自述」。

README 里的「selected CCXT」到底支持哪些交易所?

官方在 CCXT 上给了四组口径不同的名单:自动识别凭据路径是 Coinbase、Kraken、WEEX;手动配置路径是 KuCoin、Binance、BitMEX;有回测示例的是 Kraken、Binance、KuCoin、BitMEX、Bybit、OKX;此外官方明确写明不承诺覆盖每一个 CCXT 交易所。注意 WEEX 还需要 ccxt>=4.5.50 这一版本门槛。四组名单用途不同,不能合并成一句「支持很多家」。以官方 README 与实现为准。

框架里有这个券商模块,是不是就等于我能交易了?

不是。券商账户、API Key 与权限、paper 与 live 的环境区分、资产类别授权(尤其是期权与期货)、地区可用性,都需要同时满足。框架只提供适配代码;券商侧的授权与拒单规则不在框架能控制的范围内。这也是本站把「支持」这一栏写成「覆盖市场」而不是「可用」的原因。排查时按「账户 → 密钥 → 权限 → 环境 → 资产类别 → 数据」的顺序走,比先怀疑代码更快。以官方文档与券商实际规则为准。

我人在中国大陆,能直接接这些券商吗?

本站无法替券商回答这个问题,也不提供开户或合规建议。可以确认的是:框架的券商清单以美股、期权、期货、外汇、加密与预测合约为主,不包含 A 股券商通道;境外券商的账户能否开立、接口能否访问,取决于券商对你所在地区的实际支持与你的账户类型。如果你需要的是 A 股相关的研究与数据能力,这条路线并不匹配,建议先换一个判断起点。具体以券商官网与你所在地的适用规定为准。

券商行为表写得很详细,能直接当交易规则用吗?

不建议。那份文档是按券商与资产类别记录的 append-only 行为表,官方在同一份文档里把「让文档变成事实」(原文 turn documentation into truth)列为后续必做项,也就是还需要券商行为 smoke test 来验证。合理用法是:把它当作已知差异与设计意图的索引,用来预判可能出问题的地方;真正下单前应在 paper 环境自己验证关键路径。文档中还单列了 Bitunix 期货提交契约与两个加密相关不变量,说明加密与期货的边界条件比股票更多。以官方仓库实现为准。

期权和期货需要额外的账户授权吗?

通常需要。券商侧一般会对期权与期货单独审核并默认关闭,代码侧准备得再完整,券商权限没开也会被拒单。排查时先区分「框架报错」与「券商拒单」:前者通常出现在本地日志里,后者会在券商侧留下记录。另外期货还有到期与移仓的问题,回测与实盘都要考虑换月成本。以券商账户规则与官方文档为准。

我只想跑回测,需要先接一家券商吗?

不需要。回测可以只用数据源完成:免费日线走 Yahoo,付费或券商自带的数据源按需选择,也可以加载自己的 CSV 文件。券商密钥只有在你要提交订单时才需要。建议顺序是:先用数据源把回测跑通,再决定要不要接券商、接哪一家。数据源的口径差异与路由写法见数据源与路由。以官方文档为准。

下一步:行情从哪来,决定了你能回测什么

券商决定「怎么下单」,数据源决定「什么能回测」。两者是两条独立的链路:数据源可以直接接免费日线,也可以接付费的更细粒度数据;配置方式与取数口径都不相同。