Lumibot

One strategy class for backtest and live, plus a built-in LLM agent runtime.

by Lumiwealth

Last updated

Free tier
Yes
Licence
GPL-3.0-only
Self-hosted
Yes

What it is

An event-driven Python trading framework. You subclass Strategy, implement on_trading_iteration(), and hand the same class either a backtesting data source or a live broker: MyStrategy.backtest(YahooDataBacktesting, start, end) for the simulation, MyStrategy(broker=Alpaca(config)) passed to a Trader for paper or live. Nothing in the strategy body changes between the two, and self.is_backtesting exists for the cases where you want it to. That is the same promise NautilusTrader makes, and it is what separates both of them from Backtrader, whose live stores rest on dependencies that stopped moving in 2017.

Where Lumibot genuinely differs is the shape of the venue list and the presence of an LLM agent runtime. Options are first-class on the Strategy object — get_chain, get_chains, get_strikes, get_greeks, get_expiration and get_multiplier are methods, not something you assemble — and Polymarket prediction contracts can be both backtested and traded. Since 2026 the package also ships an agent runtime: self.agents.create(name=..., model=..., allow_trading=...) builds LLM agents that call market, order, options, SEC-filing, FRED and memory tools, and an agent created with allow_trading=True submits orders through the same loop a Python strategy uses. Agent decisions replay inside a backtest without a second model call.

The project moves fast: 4.5.91 shipped on 6 September 2026, the last commit to the default dev branch is the same day, and 120 of its 640 PyPI releases landed during 2026. Not archived, 2,061 stars, 66 open issues. Python 3.10 or newer, with classifiers that stop at 3.12.

Pricing

The library is free and complete — every broker, every data backend and the agent runtime are in the package. BotSpot is the managed cloud the same company sells around it, and it has no free tier: Light is 24.50 USD a month and Starter 49.50, both halved from 49 and 99 list on 14 September 2026, then 199 and 399 for Pro and All Access, with capacity measured in live bots, backtesting hours, AI credits and strategy revisions. Education is priced separately and is not part of this catalogue — a self-paced bootcamp at 499 USD (from 997) and a five-week live cohort at 2,999 USD, both on the same pricing page, with the repository's own README carrying the bootcamp banner.

Data & coverage

None of its own, like everything else in this category. Fourteen backtesting classes are exported from lumibot.backtesting, covering ten sources — Yahoo, Alpaca, Alpha Vantage, Polygon, ThetaData, DataBento, Interactive Brokers REST, Polymarket, CCXT and a Pandas/CSV loader — plus a router that sends each asset type to a different provider. The README's own table is blunt about the difference that matters — only Yahoo and the Pandas loader carry dividends and dividend-adjusted returns; Alpaca, Polygon and Tradier are split-adjusted only. Yahoo is the free default and the reason a first backtest runs without an account.

Integrations

Ten broker classes: Alpaca, Interactive Brokers, Interactive Brokers REST, Tradier, Schwab, Tradovate, ProjectX for TopstepX futures, Bitunix, Polymarket and a CCXT client with auto-detected credentials for Coinbase, Kraken and WEEX and documented manual setup for KuCoin, Binance and BitMEX. The project explicitly declines to claim blanket CCXT support. A running strategy can push messages, account summaries and spark charts to a Discord webhook, and agents notify over Telegram through notify_user. Lumibot mounts external MCP servers as a client; it does not ship one — the MCP server is BotSpot's, and it is sold.

Limitations

  • The licence on the tin is not the licence in the file. LICENSE has held the full GPL-3.0 text since 12 January 2021, while the README badge, license="MIT" in setup.py and the PyPI classifier all say MIT. Anyone embedding this in a closed product is relying on a label that five years of commits have not made true.
  • pip install lumibot pulls 50 required dependencies and offers one extra. Among them pytest, Flask, psycopg2-binary, boto3, google-adk, ccxt, databento, duckdb, polars and ibapi, plus litellm pinned to a seven-patch window (>=1.83.7,<=1.83.14) that will fight anything else using it. Only ThetaData is optional, so a Yahoo-only backtest still installs the whole agent stack and a Postgres driver.
  • There is no stable line to pin to. A version roughly every three days, logged as deploy markers rather than curated releases. No LTS branch, and no separation between a feature drop and a fix.
  • The open library is the top of a paid funnel, and it is not subtle. UTM-tagged BotSpot calls to action at seven points in the README, a bootcamp banner, and a ThetaData affiliate promo code with its own disclosure. That does not make the code worse, but it is the incentive keeping it maintained.
  • The agent runtime emits an order. Told to, an agent reads filings, macro series and prices, then submits a trade on your broker account. allow_trading=False per agent and a Python gate around it are real controls — and so is what happens without them. The documentation ships the decisions as well as the runtime: its AI Examples section, read on 9 October 2026, holds fifteen copy-paste agent bots — Warren Buffett AI Stock Picker, Nancy Pelosi Copy Trading Bot, Bull vs Bear AI Stock Trading Bot and 0DTE Options AI Trading Bot among them — that research, debate and place trades. They are templates run on your own keys, not a signal service, but what they emit is an order on a named security.
  • No screener, no charting, no portfolio accounting outside a run's tearsheet, and no CLI runner: the package installs no console scripts.

Alternatives

NautilusTrader for the same backtest-to-live parity with a Rust core and far better crypto venue coverage, if you do not need Schwab, Tradier or an agent runtime. QuantConnect for the hosted version of the same idea with data and execution attached. VectorBT or Backtesting.py if you are sweeping parameters and never intend to route an order. Backtrader only for the documentation and the indicator library — it has not shipped since April 2023.

The rest are in the backtesting frameworks category.

Specs

Interfaces
Python, Python
Export
CSV, Parquet
Asset classes
Stocks, ETF, Options, Futures, Forex, Crypto, Indices
Markets
US, Global
Platforms
Library
AI features
Recommendations
Capabilities
Backtesting, Automation, Live trading, Paper trading, Alerts, Options analysis
Pricing verified
Capabilities verified
Coverage verified

Also worth comparing

  • LEAN — QuantConnect's engine without the cloud — your server, your data, your broker login.
  • NautilusTrader — Rust core, Python API, one strategy that backtests and trades live unchanged.
  • StockSharp — C#/.NET algo stack with 384 connectors; source is published but no longer open source.
  • FinRL-X — FinRL's successor, carrying one portfolio-weight vector from stock selection to Alpaca.
  • ib_async — The community continuation of ib_insync — same API, new maintainers, TWS still required.
  • QuantConnect — LEAN hosted for you — a browser IDE, mounted data and live trading through real brokers.

Named as a replacement for

FAQ

What licence is Lumibot actually under?

GPL-3.0. The LICENSE file has held the full GNU GPL v3 text since 12 January 2021, and nothing else in the project agrees with it — the README badge, the README's own licence section, the comparison table it prints against Backtrader, the license="MIT" argument in setup.py and the OSI MIT classifier on PyPI all say MIT. The file is what a court reads. If you intend to ship Lumibot inside a closed-source product, get that resolved with the maintainers in writing before you start.

Is Lumibot actively maintained?

Yes, and at an unusual rate. Version 4.5.91 was released on 6 September 2026 and the last commit to the default dev branch is the same day. There have been 640 PyPI releases since 0.0.1 on 12 January 2021, 120 of them in 2026 alone. The repository is not archived and carries 2,061 stars, 66 open issues and 25 open pull requests.

Does the same strategy code run in a backtest and against a live broker?

Yes. You subclass Strategy once. A backtest is MyStrategy.backtest(YahooDataBacktesting, start, end); live or paper is MyStrategy(broker=Alpaca(config)) handed to a Trader. The strategy body does not change, and self.is_backtesting is there for the cases where you want it to.

Which brokers can it actually trade through?

Ten broker classes ship in lumibot.brokers — Alpaca, Interactive Brokers, Interactive Brokers REST, Tradier, Schwab, Tradovate, ProjectX (TopstepX futures), Bitunix, Polymarket and a generic CCXT client for crypto. That is the widest retail-broker coverage in this category; Backtrader's three stores are all dead and NautilusTrader routes cash equities through Interactive Brokers or nothing.

Do I have to pay for BotSpot to use Lumibot?

No. BotSpot is a separate managed-cloud product from the same company, Lumiwealth, Inc., and the library runs fine on your own machine with your own broker keys. What is worth knowing is that BotSpot has no free tier — its pricing page states in its own words that BotSpot "does not offer a free core SaaS plan" — and that the README, the docs navigation and the release notes all route towards it and towards paid bootcamps.

Report an error on this page

Quote the line and say what it should be.

The vendor’s page, filing or documentation that says otherwise.

Only if you want to hear back. Never published.

Read by a person. It fixes a fact and moves nothing else.

Anything else — a question this page leaves open, a tool it should be compared with? Write to feedback@stockmarketstack.com.

Is this your product? Claim this listing.