How an event moves from a name you type today to live orders the moment its Kalshi markets open. The goal: have prices staged and the mapping pre-checked so a human only has to validate and click Place.
Click + next to a project. The Arm a future event modal collects
the name, Kalshi series (e.g. KXNASCARRACE), an optional event
ticker, and a link. You can reuse the rows from a previous event — last week's
NASCAR grid, say — so the outcomes, prices and quantities are staged before any market
exists. Tickers and fills are not copied; only your inputs.
Kalshi lists a game/race event ticker only hours before start. The autonomous mapper
polls each armed event's series on a set interval (default ~10s, tunable on the
Settings page), matches the appearing event
by row overlap, and auto-runs Map the moment it opens — firing a Slack alert to
#nv_trading. You can
still set the event ticker yourself to force it; the watcher just means you don't have to.
Click Map. Each row's friendly name is matched to a Kalshi market ticker using exact-name, team+score, and unique-surname strategies. Every row comes back matched, ambiguous, or unmatched. Populate from ticker instead loads every outcome on the event so you can trade any of them.
When markets are auto-mapped, an alert (Slack + an in-app notification & sound) tells someone to come validate. Today you review the grid directly: fix any ambiguous / unmatched rows, confirm tickers (the ✓/⚠ badge validates against Kalshi live), and eyeball the prices you staged in step 1.
Click Place orders…. You get a preview with the exposure gate (it refuses orders that would exceed the project's capital limit), then a two-step Place LIVE confirm. Because prices were staged up front, validating and firing takes seconds.
Fill qty (above the grid): type a quantity and click Apply to priced rows to drop that qty onto every row that already has a price but no quantity — a fast way to size a whole staged field at once. Rows that already carry a qty are left alone.
Auto checkbox (per row): tick it to have that row's order placed automatically the moment it maps to a live Kalshi ticker — whether you click Map or the background auto-mapper does. Only rows with a price + qty staged auto-place, and the same exposure & guard gates still apply. Use with care: this fires real orders with no human confirm.
Recurring markets (a weekly race, a nightly slate) have the same outcome structure and often similar prices. When arming a new event, pick a source from Reuse rows from — events in the same project are listed first, each with its row count.
result), direction, trade price, trade quantity,
and row order — your staged inputs.So you can price up this week's race off last week's numbers before Kalshi has even listed it, then just Map → validate → Place when it opens.
An event becomes current when Map (or Populate from ticker) succeeds, and flips to settled once all its markets finalize on Kalshi.
Full write-up lives in the repo at marketmaker/docs/event-arming-flow.md.
The Feed Monitor shows which tickers the
recording backend is watching.