Transcript
I won a hackathon by @paradigm, but I have no idea what the winning strategy was.
I barely even read the problem set.
Every step of the solution was made by AI.
The @paradigm autoresearch hackathon was the perfect opportunity to embrace Rich Sutton's Bitter Lesson: let computation beat human domain expertise.
Result:
1st Place on the Paradigm Optimization Arena Prediction Market Challenge (April 9, 2026 Hackathon).
Final Score: $42.32 mean edge (median of 3 runs, each with a fresh random seed)
Leaderboard Score (during hackathon): $52.03 (200 sims, fixed seed)
Strategies Generated: 1,039 unique strategy variants
Evaluation Runs: 2,000+
Eval Scripts: 47 automated sweep/search scripts
Final Strategy: ~900 lines of Python (strategy_3610.py)
The Challenge
The Optimization Arena Prediction Market Challenge asks you to write a market-making strategy for a simulated binary prediction market. The market has:
A FIFO limit order book where you can only place passive limit orders
An arbitrageur (informed trader) who sweeps mispriced quotes before retail arrives
Retail traders (uninformed) who send random market orders — your profit source
A static competitor with a hidden ladder that refills consumed levels
200 simulations per evaluation, each with random price paths and regimes
Your edge is scored as: qty × (true_prob - price) for buys and qty × (price - true_prob) for sells. The leaderboard ranks by mean edge across all 200 sims.
The Winning Strategy in 30 Seconds
Our strategy is a market maker on a simulated binary prediction market order book. Each step, it cancels all previous orders and places a new bid and ask. The core idea:
1. Don't trade when you'll lose. Skip the tightest-spread regime (cs=1) entirely — the arbitrageur always eats you.
2. Estimate the true price. Info-theoretic mid estimation tracks bid/ask deltas separately to infer where the true price is — this feeds every other decision.
3. Size based on arb risk. Per-side Gaussian arb probability model: size = k × retail_mult × (1 - arb_prob × damping). Quote big when the arb is unlikely to hit you (extreme prices, wide spreads), small when it's dangerous (near 50%, tight spreads).
4. Detect and dodge jumps. Track price jump frequency and direction. When a jump is detected, suppress orders on the dangerous side for a few steps.
5. Exploit the 5% floor. At prices below 5%, retail sell quantity is floored at 5% of notional — creating outsized profit opportunities on the ask side.
6. Keep quoting when the book is empty. When the competitor's orders are consumed (bid or ask is None), place orders at tick 1/99 instead of canceling — this is the highest-edge moment.
7. Be cautious early, aggressive late. Time-varying sizing (0.9× early, 1.15× late) reduces arb exposure while learning the regime.
Approach: Autoresearch with Parallel Claude Code Agents
Inspired by @karpathy 's autoresearch, I used Claude Code as a team of parallel research agents — each exploring a different optimization direction simultaneously.
The Loop:
Spawn 8-20 parallel agents, each with a specific hypothesis or search space
Each agent independently: reads the current best strategy, creates variants, runs evaluations, reports results
Collect results, identify improvements, update the best strategy
Repeat with new hypotheses informed by what worked and what didn't
At peak, I had 20 agents running simultaneously, each sweeping different parameter spaces or testing structural changes. This massively parallelized the search — equivalent to weeks of manual experimentation compressed into hours.
Evaluation: Three Layers of Scoring
A critical part of the challenge was understanding — and not overfitting to — the different evaluation layers:
Local eval: 200 sims each on multiple seed-starts (0, 500, 1000, 2000, etc.). Fast iteration. Each run uses 200 consecutive seeds. Testing across different seed-starts avoids overfitting to one batch.
Leaderboard eval: 200 sims on one fixed seed (unknown to us). Live ranking during the hackathon. Our best: $52.03. But this is just one seed — possible to overfit.
Final eval: Median of 3 runs, each with a fresh random seed. The actual hackathon ranking. Designed to reward consistency over lucky seed draws.
This is why multi-seed robustness became a core focus mid-session. Early on, I optimized only on seed=0 and hit +$44 locally. But when I tested on other seeds, performance varied wildly (+$34 to +$70). I shifted to always evaluating on 4 seeds minimum, often 8-16, and optimizing for the average. This prevented overfitting to any single seed's regime distribution.
For the final strategy, I validated across 16 different seed-starts — that's 3,200 total simulations — to confirm robustness before submitting. The 16-seed average was +$52.08, with individual seeds ranging from +$34 to +$70.
The final scoring (median of 3 fresh seeds) rewarded this approach. During the hackathon, I was #2 on the leaderboard at $52.03 (the top 2 spots were using an exploit and