Lumibot: Backtesting and Algorithmic Trading Library

An Easy to Use and Powerful Backtesting and Trading Library for Crypto, Stocks, Options, Futures and FOREX

Looking for a library that makes it easy for you to backtest your trading strategies and easily create algorithmic trading robots? Well you've found us!

Lumibot is a full featured, super fast library that will allow you to easily create trading robots that are profitable in many different asset classes, including Stocks, Options, Futures, FOREX, and more. It is in active development and is constantly being updated to include new features and bug fixes.

If you want to make a fortune with trading, then you need a library that will make it easy for you to check your trading strategies against historical data to make sure they are profitable before you invest in them. Lumibot makes it easy for you to do this (backtest) your trading strategies and easily convert them to algorithmic trading robots.

Lumibot now also supports AI trading agents inside the strategy lifecycle, including DuckDB-powered time-series analysis, external MCP tools, and replayable agent runs during backtests.

Features

Backtesting and algorithmic trading for Forex, Options, Stocks, FOREX and more!
Works with Crypto, Options, Futures, Stocks, and FOREX!
We're one of the few libraries that supports Algorithmic Options trading and backtesting, as well as many other asset classes.
Live Algorithmic Trading Is Built In
Built in Live Trading
It's very easy to switch between live trading and backtesting, just a few lines of code to go from backtesting to live trading.
Supporting the Top Algorithmic Trading Brokers
Support For Top Brokers
We support many of the top brokers in the industry, including: Binance, Coinbase, Kucoin, Alpaca, Interactive Brokers and TradeStation. We will also support more brokers in the future.
Easy to Use Algorithmic Trading and Backtesting, Including Algorithmic Options Trading
Easy to Use and Get Started
We've built the library to be easy to use and get started in minutes. We also offer courses and tutorials to help you with building your own trading bot. (see our Algorithmic Trading course here)
Advanced Backtesting and Algo Trading Analytics
Advanced Analyics Out of the Box
We've built a suite of advanced analytics tools that can be used to analyze and optimize your trading strategies, including interactive charts and more.
Backtesting and algorithmic trading for Forex, Options, Stocks, FOREX and more!
Event Based Backtesting
Our backtesting engine is event-based so that you can see your strategies run as if they were live trading. You don't have to deal with complicated and confusing vector math to see your strategies run.
AI trading agents with DuckDB, replay caching, and MCP tools
AI Trading Agents Built In
Create AI trading agents inside your strategy, let them query time-series data with DuckDB, attach MCP tools, and replay the exact same agent runs during backtests.

Getting Started

To get started with the library, first install it on your computer by typing this into your Terminal (on a Mac) or Powershell (on a Windows):
pip install lumibot

AI Trading Agents – Backtest AI Agents with Real External Tools

LumiBot is the only production framework where an AI agent reasons, calls external tools, and makes trading decisions on every bar during a backtest – then runs the exact same code live. This is real agentic backtesting: the LLM is inside the simulation loop, not bolted onto the side.

  • Backtest AI trading agents with real external data from 20,000+ MCP servers

  • LLM in the loop on every bar – the agent reasons over point-in-time market state, calls tools, and submits orders

  • Replay caching makes warm backtest reruns deterministic and fast (zero LLM calls on rerun)

  • Any LLM provider – OpenAI, Anthropic, Google Gemini, and more

  • Same code for backtest and live – write once, backtest it, deploy it

  • External MCP servers are just a URL – no local scripts, no npm installs

Key AI agent docs:

Start with AI Trading Agents and Agentic Backtesting to learn how LumiBot puts AI agents inside the backtest loop with external MCP tools.

Cash Accounting

Lumibot supports explicit cash accounting for both backtests and live broker telemetry. Use the strategy cash methods for deposits, withdrawals, direct cash adjustments, and financing setup, then review the resulting cash-adjusted returns in the standard backtest artifacts.

  • Backtests keep external cashflows out of strategy performance

  • Live cloud payloads can include normalized broker cash_events

  • Listener storage keeps raw normalized events in a dedicated event table

Start with Cash Accounting for the end-to-end guide.

Getting Started

After you have installed Lumibot on your computer, you can create a strategy and backtest it using free data available from Yahoo Finance, or use your own data. Here’s how to get started:

Step 1: Install Lumibot

Note

Ensure you have installed the latest version of Lumibot. Upgrade using the following command:

pip install lumibot --upgrade

Install the package on your computer:

pip install lumibot

Step 2: Create a Strategy for Backtesting

Here’s some code to get you started:

from datetime import datetime
from lumibot.backtesting import YahooDataBacktesting
from lumibot.strategies import Strategy

# A simple strategy that buys AAPL on the first day and holds it
class MyStrategy(Strategy):
    def on_trading_iteration(self):
        if self.first_iteration:
            aapl_price = self.get_last_price("AAPL")
            quantity = self.portfolio_value // aapl_price
            order = self.create_order("AAPL", quantity, "buy")
            self.submit_order(order)

# Pick the dates that you want to start and end your backtest
backtesting_start = datetime(2020, 11, 1)
backtesting_end = datetime(2020, 12, 31)

# Run the backtest
MyStrategy.backtest(
    YahooDataBacktesting,
    backtesting_start,
    backtesting_end,
)

Step 3: Take Your Bot Live

Once you have backtested your strategy and found it to be profitable on historical data, you can take your bot live. Notice how the strategy code is exactly the same. Here’s an example using Alpaca (you can create a free Paper Trading account here in minutes: https://alpaca.markets/).

from lumibot.brokers import Alpaca
from lumibot.strategies.strategy import Strategy
from lumibot.traders import Trader

ALPACA_CONFIG = {
     "API_KEY": "YOUR_ALPACA_API_KEY",
     "API_SECRET": "YOUR_ALPACA_SECRET",
     "PAPER": True  # Set to True for paper trading, False for live trading
 }

# A simple strategy that buys AAPL on the first day and holds it
class MyStrategy(Strategy):
   def on_trading_iteration(self):
      if self.first_iteration:
            aapl_price = self.get_last_price("AAPL")
            quantity = self.portfolio_value // aapl_price
            order = self.create_order("AAPL", quantity, "buy")
            self.submit_order(order)

trader = Trader()
broker = Alpaca(ALPACA_CONFIG)
strategy = MyStrategy(broker=broker)

# Run the strategy live
trader.add_strategy(strategy)
trader.run_all()

Important

Remember to start with a paper trading account to ensure everything works as expected before moving to live trading.

All Together

Here’s the complete code:

from datetime import datetime
from lumibot.backtesting import YahooDataBacktesting
from lumibot.brokers import Alpaca
from lumibot.strategies import Strategy
from lumibot.traders import Trader

ALPACA_CONFIG = {
    "API_KEY": "YOUR_ALPACA_API_KEY",
    "API_SECRET": "YOUR_ALPACA_SECRET",
    "PAPER": True
}

class MyStrategy(Strategy):
    def on_trading_iteration(self):
        if self.first_iteration:
            aapl_price = self.get_last_price("AAPL")
            quantity = self.portfolio_value // aapl_price
            order = self.create_order("AAPL", quantity, "buy")
            self.submit_order(order)

trader = Trader()
broker = Alpaca(ALPACA_CONFIG)
strategy = MyStrategy(broker=broker)

# Run the strategy live
trader.add_strategy(strategy)
trader.run_all()

Or you can download the file here: https://github.com/Lumiwealth/lumibot/blob/dev/lumibot/example_strategies/simple_start_single_file.py

Additional Resources

If you would like to learn how to modify your strategies, we suggest that you first learn about Lifecycle Methods, then Strategy Methods, and Strategy Properties. You can find the documentation for these in the menu, with the main pages describing what they are, then the sub-pages describing each method and property individually.

We also have some more sample code that you can check out here: https://github.com/Lumiwealth/lumibot/tree/dev/lumibot/example_strategies

We wish you good luck with your trading strategies. Don’t forget us when you’re swimming in cash!

Need Extra Help?

If you need extra help building your strategies and making them profitable, Lumiwealth has you covered. By visiting Lumiwealth, you not only learn how to use the Lumibot library but also gain access to a wealth of highly profitable algorithms.

Our strategies have shown exceptional results, with some achieving over 100% annual returns and others reaching up to 1,000% in backtesting. Join us to learn from our expertise and take your trading to the next level.

Why Choose Lumiwealth?

By joining Lumiwealth, you'll learn to:

  • ✔️ Create and implement your own trading algorithms
  • ✔️ Access a library of high-performing strategies
  • ✔️ Learn from experts with proven track records
  • ✔️ Achieve potentially high returns on your investments

Important

Build Trading Bots with AI

Want to create trading bots without writing code? Visit BotSpot - our platform for building, testing, and deploying trading strategies using AI!

  • Create strategies using natural language

  • Backtest on historical data

  • Deploy to live markets

  • Join a community of algorithmic traders

Get started at https://botspot.trade/

Table of Contents

Indices and tables