One-Agent AI Trading Bot Demos

These are the smallest AI trading bots in LumiBot. Each one is a single AI agent with a few sentences of plain English, about 30 lines in all. The agent uses LumiBot’s built-in tools on its own: prices, news, Federal Reserve data, and more. You never write a tool or name one in the prompt.

For bigger bots with several agents, see AI Trading Bot Examples.

The demos

  • Make Me Money (agent_discretionary.py): the whole prompt is “Make as much money as you possibly can.” LumiBot’s built-in rules handle risk, sizing, and look-ahead safety.

  • Market News (agent_alpaca_news_builtin.py): reads the day’s market news, opens the most important story, and holds SPY, QQQ, or SHV.

  • News Sentiment (agent_news_sentiment.py): buys the 2 to 4 well-known stocks with the strongest good news, or SHV when the news is weak.

  • Trend (agent_macro_risk.py): holds TQQQ while it trends up and SHV while it trends down.

  • Momentum and News (agent_momentum_allocator.py): holds TQQQ when the trend is up and the news is not bad, otherwise SHV.

  • M2 Liquidity (agent_m2_liquidity.py): holds TQQQ when the money supply is growing and SHV when it is shrinking, using the Federal Reserve’s M2 data. The _openai, _anthropic, and _grok filenames remain compatible, but all these copies now default to GPT-6 Luna.

Example: M2 Liquidity

"""M2 Liquidity AI Trading Bot.

Holds TQQQ when the money supply (M2) is growing and SHV, a short-term Treasury
fund, when it is shrinking. One AI agent reads the Federal Reserve's M2 data each
day and trades.
"""

from lumibot.strategies import Strategy


class M2LiquidityStrategy(Strategy):
    def initialize(self):
        self.sleeptime = "1D"
        self.agents.create(
            name="trader",
            allow_trading=True,
            system_prompt=(
                "Hold either TQQQ or SHV with the whole account. Each day, check whether the M2 money supply "
                "is growing compared with 3 to 6 months ago, using official Federal Reserve data. If it is "
                "growing, hold TQQQ. If it is flat or shrinking, hold SHV. Sell one before buying the other."
            ),
        )

    def on_trading_iteration(self):
        self.agents["trader"].run(task_prompt="Check M2 and hold TQQQ or SHV.")


if __name__ == "__main__":
    from lumibot.credentials import IS_BACKTESTING

    if IS_BACKTESTING:
        from lumibot.backtesting import YahooDataBacktesting

        M2LiquidityStrategy.backtest(YahooDataBacktesting)
    else:
        M2LiquidityStrategy().run_live()

To run a demo on another AI model, add model="anthropic/claude-sonnet-4-6" (or another model) to self.agents.create(...) and put that provider’s key in your .env file.

Run a demo

Put OPENAI_API_KEY in your .env file. The M2 bot also needs a free FRED_API_KEY, and the news bots need free Alpaca keys (ALPACA_API_KEY and ALPACA_API_SECRET).

python -m lumibot.example_strategies.agent_m2_liquidity

Every demo ends with the same block as a BotSpot main.py: with IS_BACKTESTING=true it backtests (set BACKTESTING_START and BACKTESTING_END for the dates), otherwise it trades with the broker in your .env file. See Backtest, paper, or live: choose the runner.

Backtest tear sheets

GPT-6 Luna, January 5 to 16, 2026, Yahoo daily prices, $100,000 start. SPY rose about 1% over the same days. A two-week backtest shows each bot works as written; it is not a promise of future returns.

Demo

What it did

Tear sheet

M2 Liquidity

Read the Federal Reserve’s M2 data, saw it growing, and held TQQQ. Ended at $101,096 (+1.1%).

Open

Trend

Switched between TQQQ and SHV with the trend. Ended at $101,413 (+1.4%). One switch left cash $751 below zero for a moment.

Open

Momentum and News

Held TQQQ while momentum was up, then SHV. Ended at $99,512 (-0.5%). One switch left cash $751 below zero for a moment.

Open

News Sentiment

Bought stocks with strong news, such as AMZN, BAC, JPM, TMO, and UNH. Ended at $100,884 (+0.9%).

Open

Market News

Read the market news, judged it weak, and held SHV. Ended at $100,063 (+0.1%).

Open

Make Me Money

Chose the chip ETF SMH on its own and held it. Ended at $100,782 (+0.8%).

Open

What to look at after a run

  • The tear sheet and its comparison with SPY

  • trades.csv: every order and fill

  • *_agent_detail.parquet: every AI call, the tools it used, and why it traded

See AI Agent Observability for how to read them.