Build guide

Build a winning trading agent.

Round 2 is live. Beat Arnav, the Round 1 winner, to unlock the $1,000 prize pool and builder points. No finance background needed.

← See the challenge spec & how it's scored
Study the benchmark

Arnav won Round 1. Read the public breakdown of his algorithm before you build: leader momentum, regime control, stops, and sizing →

90 seconds: build a trading bot from a market thesis — just by talking to your AI.
What you give

A public or private repo URL (or an endpoint), and the orders your decide() returns.

What we never need

No brokerage login, deposits, real money, or API keys — and we never take ownership of your code. It stays yours.

What you get back

An admission result, a robustness profile, and your spot on the live leaderboard.

Your first 30 minutes (zero to an admitted bot)

The whole loop, copy-pasteable. No install, no keys, ~5 minutes to your first admitted bot:

git clone https://github.com/builderr-ai/builderr-trading-template
cd builderr-trading-template
cp baseline.py agent.py     # rename: a valid, admittable bot
python preview.py           # runs locally in ~10s, prints PASS/FAIL
  1. Fork the template and open it. Don't write anything yet.
  2. Rename baseline.py to agent.py — that alone is a valid, admittable submission. Run python preview.py and watch it clear the safety bar in ~10 seconds (no install, no keys).
  3. Now read example_sector_rotation.py— it's the heavily-commented version of exactly the bot most people build (momentum + risk-off). Copy its ideas into your agent.py.
  4. Re-run python preview.py after each change. Green safety bar = very likely admitted.
  5. Push, email the link, done. You can revise up to 4 times before the cutoff (~3 days before close) — we run your latest, scored forward from its first scored market session. Your first try isn't your last.

You do not need an LLM. All 4 reference bots are plain Python with zero API calls — and they all clear admission. Skip the LLM for your first bot; it only adds keys, latency, and ways to fail. You can always add one later.

How you win, in one line: the best return over your live window — but you can't get there by gambling, because admission caps how much you borrow and how much rides on any one stock. The goal isn't the biggest bet, it's making real money that survives.

What you're optimizing for — and what this is NOT

Forget the Wall-Street, blinking-terminals image. This isn't about speed or trading the most — it's about a strategy that makes real money and survives, the kind you'd actually trust with real money.

This is NOT
  • High-frequency or latency-sensitive — decisions are daily, and a 60-second min hold + 50 trades/day cap mean your servers and reaction speed don't matter.
  • “Trade the most” or predict every tick — churning doesn't help you.
  • Max-leverage YOLO — the 1.5× cap auto-flattens you.
  • A spending race — a fixed compute box, no API budget to game.
It IS
  • Ranked by return over your live window — and admission caps leverage and concentration, so it's not a gambling race.
  • A real strategy: a risk-off switch, sane position sizing, survive the bad weeks.
  • The same data and fills for everyone — the idea wins, not the machine.
  • Robust enough to hold up live, forward, on days no one has seen.

The whole contract, in one function

You implement decide(market_state, portfolio_state, cash) and return a list of orders. You get ~220 trading days of daily bars per ticker; you return [{"ticker": "SMH", "side": "buy", "quantity": 40}]. Hidden validation checks qualify the bot first; then Round 2 is scored on live market data.

Fork the template → — it ships with 4 working reference bots you can read, run, and beat.

Building with an AI assistant? Paste the build brief into Claude / ChatGPT / Cursor and describe your idea — it has the contract, rules, and goal baked in.

Not sure what to build? Steal one of these

The blank page is the hard part. Pick a thesis you believe in, paste it into your AI along with the build brief, and you've got a working bot in minutes — then improve it. (Markets move; none of these is a sure thing.)

Ride the AI boom

Bet on the AI / chip names — hold the strongest, step aside if they roll over.

Holds: NVDA · AMD · MU · MRVL · AVGO · SMH

The one rule: Each day, hold the 3–4 strongest by 3-month return — but only while they're above their 50-day average. Otherwise, cash.

Paste into your AI ↓

Write a decide() that each day ranks NVDA, AMD, MU, MRVL, AVGO, SMH by 3-month return, holds the top 4 equally (max 20% each) — but only the ones above their 50-day average; rest in cash.
Buy the market, with a safety switch

Own the index when it's trending up; go to cash when it isn't. Simple — and it dodges the big drops.

Holds: QQQ (or SPY)

The one rule: Hold QQQ when it's above its 100-day average; move fully to cash when it drops below.

Paste into your AI ↓

Write a decide() that holds QQQ when its latest price is above its 100-day moving average, and holds 100% cash otherwise.
Rotate into what's working

Hold whichever sectors are hottest right now; skip the laggards.

Holds: XLK · XLF · XLE · XLV · XLI · XLY · XLP · XLU · SMH

The one rule: Each week, hold the top 3 sector ETFs by 3-month return (equal weight). If none are positive, go to cash.

Paste into your AI ↓

Write a decide() that every 5 trading days ranks XLK, XLF, XLE, XLV, XLI, XLY, XLP, XLU, SMH by 3-month return and holds the top 3 equally — only if positive, else cash.
Play defense when it gets scary

Ride the market in calm times; hide in safe stuff when it drops.

Holds: QQQ → XLP · XLU · XLE + cash

The one rule: Hold QQQ while it's calm and rising; switch to staples / utilities / energy + cash when QQQ falls more than ~5% in a week.

Paste into your AI ↓

Write a decide() that holds QQQ when it's above its 50-day average, but switches to an equal mix of XLP, XLU, XLE and cash whenever QQQ's 5-day return is below -5%.
Lever the calm — carefully

A little leverage only when markets are quiet; dump it the moment they're not.

Holds: TQQQ / QLD + QQQ

The one rule: Small TQQQ/QLD in calm uptrends; drop to plain QQQ/cash when volatility spikes. Keep total leverage under 1.5× and each name under 30%.

Paste into your AI ↓

Write a decide() that holds ~25% QLD + 25% QQQ in calm uptrends (QQQ above its 100-day average, low recent volatility) but sells the leverage into QQQ/cash when volatility spikes. Keep beta-adjusted gross under 1.4x and every position under 25%.

Still not sure which to pick? Email inquiries@builderr.ai.

A few things worth knowing

  • Change every parameter ±20%. If performance collapses, you overfit — it won't survive the forward live test.
  • A risk-off switch beats a clever entry. A 50/200-day SMA gate does more for your score than any fancy signal.
  • Size by volatility, not fixed dollars. Cut size as vol rises; lean in (within the 1.5× cap) when calm.
  • Leveraged ETFs decay in chop. TQQQ/SOXL reset daily — tactical only, never buy-and-hold.
  • The prettiest backtest is usually the most overfit. Distrust perfection.
Fork the template + start building →

Stuck? Email inquiries@builderr.ai.