Inspiration
We wanted to play market maker for all 8 IMC markets at once, without clicking ourselves to death in the GUI. So we built one "slightly overconfident" bot that does the market‐making for us.
What it does
- Connects to the IMC exchange via SSE + REST.
- Computes a fair value per market:
- M1–M2: Eisbach water level & flow (HND Bayern)
- M3–M4: temperature & humidity (timeanddate)
- M5–M6: arrivals/departures (Aerodatabox)
- M7–M8: ETF & 80–100 strangle built from all of the above
- Trades around the mid price with position limits, profit-take and stop-loss.
How we built it
- A single generic 'MarketBot' class from 'imcity_template.py' (SSE listener + REST orderbook polling).
- Separate metric modules per market (Eisbach, weather, flights, ETF) that implement the official payoff formulas.
- Per-market parameters ('max_position', 'threshold', 'profit_take', 'order_volume') to tune risk/aggro level.
Challenges we ran into
- HTML scraping of public data.
- Keeping external APIs stable under timeouts and rate limits.
- Multiple bots polling and trading in parallel without overloading the exchange or ourselves.
Accomplishments that we're proud of
- One unified bot controlling all 8 markets instead of 8 half-broken scripts.
- Metric calculations that actually match the IMC slides (including the funky weather window and ETF/strangle).
- A risk setup that can go up to ±80 contracts per market without (well, or with) instantly exploding the PnL.
What we learned
- Market making is mostly fair-value estimation + inventory risk management + knowing when to stop averaging down.
- Real-world data pipelines are messier than toy examples, and they directly hit your PnL.
- Good modularization (one bot core, many metric modules) saves a ton of debugging time under hackathon pressure.
What's next for McLovin
- A small dashboard for live PnL, positions and metrics.
- Maybe a v2 that uses bandits/RL to learn how much Elon-Musk-level risk is actually optimal.
Built With
- chatgpt
- python
Log in or sign up for Devpost to join the conversation.