| column | meaning |
|---|
venue | 'kalshi' or 'polyus'. Both makers quote the same fixtures on different venues with different economics -- Kalshi CHARGES the maker 0.0175*p(1-p), Poly-US CREDITS 0.0125*p(1-p) -- so break-even completion differs and the two must never be pooled without splitting on this. |
event | Event/market identifier -- one match, one row. |
league | Division code. |
ts_open | When the first leg of this book was first posted. |
hrs_to_ko_open | Hours to kickoff when the book was opened. LEG fill rate climbs into kickoff (26.1% inside 30min vs 6.8% beyond 24h) but BOOK completion moves the other way: among books that took a leg, with the entry gate held fixed, strand rate is ~17% under 6h against ~9% over it. A late book fills a leg and runs out of time to finish, which is the expensive half. MIN_OPEN_H=6 exists for this. |
legs_quoted | How many of the three legs were ever offered. A book with <3 CANNOT complete -- filter on ==3 for a clean completion question. |
gross_c_open | Sum of the three asks at open, minus 1.00, in cents. The overround the book was opened on, and the variable the entry gate tests. Blank unless all three legs were quoted. |
pin_sum_open | Sum of Pinnacle fair probabilities across the legs. Should be ~1.00; deviation flags a stale or mismatched fair. |
ask_max_open | Highest leg ask at open -- the favourite. Favourites fill far more often (49.7% vs 17.7% for draws), which is how a book strands short the leg most likely to win. |
ask_min_open | Lowest leg ask at open -- the longshot. |
spread_c_mean | Mean ask-minus-bid across the legs at open, in cents. Mostly 1c: the venue prices on a 1-cent grid. |
queue_ahead_min | Smallest queue ahead of us across the legs. The easiest leg to fill. |
queue_ahead_max | Largest queue ahead of us. The hardest leg -- and a book completes only if its WORST leg sells. |
book_volume_open | Contracts traded across all three legs. The strongest single completion predictor found so far (+0.091 AUC); min-leg volume was null (rho +0.095, p=0.189). |
leg_volume_min | Volume on the thinnest leg. Kept because the paper-era gate used it -- it did NOT replicate live, so treat a result here with suspicion. |
open_interest_sum | Open interest summed across the legs. |
n_posts_total | Re-posts across every leg. A proxy for how long the book was worked. |
minutes_exposed_max | Longest any single leg sat on the book. |
is_xlow_any | 1 if the frozen xlow rule fired on this fixture (either side), else 0. Blank if the fixture could not be resolved. |
is_xhigh_any | 1 if the frozen xhigh rule fired on this fixture. xhigh overlaps xlow heavily -- not an independent feature. |
legs_filled | OUTCOME. How many legs filled, 0-3, per the EXCHANGE fill record -- the authority. Maker fills only (post_only, so never taker), which also excludes xlow taker buys on the same tickers. |
legs_filled_log | The same count derived from the LOCAL fills log, kept for comparison. It undercounts: the log joins on (ticker, price_cents) so a re-priced leg misses, and the log only records while the maker is up. On the 2026-08-28 audit the exchange said 115 books complete and the log-derived figure said 45. A large gap here means fills are being missed locally. |
fill_source | 'exchange' normally; 'log' if the exchange could not be read, in which case legs_filled falls back and will undercount. |
complete | OUTCOME. 1 if all three legs filled. This is the number the strategy lives or dies on -- break-even was 61.4% on Kalshi. |
leg_sold_first | Which OUTCOME sold first, in 1X2 terms: '1' home, '2' away, 'X' draw. Blank when no leg filled, or when the abbreviation cannot be resolved against the event code. Derived from first_fill_side, which carries the Kalshi leg abbreviation ('CAT') rather than a side -- readable only if you know which team that was. A Kalshi event ticker ends in the two team codes concatenated (26AUG17GEMCAT = GEM at home to CAT), so the abbreviation is matched against that pair: prefix means home, suffix means away, TIE means draw. |
first_fill_side | Leg abbreviation of the first leg to fill, blank if none did. |
first_fill_secs | Seconds from that leg being posted to it filling. |
size | Contracts per leg the maker was working, from the largest leg. SIZE went 1 -> 3 on 2026-08-23 and mixing the two eras is a trap: a size-1 completion pays ~+$0.05 and a size-3 one ~+$0.20, so an average across both understates a good book threefold. |
shape | OUTCOME, stricter than `complete`. 'unfilled' = quoted but never touched. 'clean' = three legs at the SAME size, the only shape that is actually hedged. 'ragged' = three legs at different sizes (a leg that took a 0.01-contract fill and never finished still reads complete). 'over' = a leg exceeded size, which means two orders rested at once. 'stranded' = fewer than three legs. |
has_taker | 1 if WE traded this event as a taker -- xlow, or a manual trade. The maker is post_only so it never takes. Books with this set have P&L that is not the maker own: it is the difference between a -$3.22 maker and a -$53.05 account. NOT the same as is_xlow_any, which only says the SIGNAL fired (169 books) rather than that a trade happened (13). |
arm | Which pricing arm owned the book: 'budget' (a part-filled leg prices at exactly what the book still owes) or 'latch3' (the ratchet survives the fill but sits at most 3c above that budget). Blank for books opened before the split. From mm_arm_log.csv. |
settled | 1 once every leg has settled and pnl is final. |
pnl | OUTCOME. Realised dollars, from the venue settlement records (revenue - cost - fees) summed across the legs. Blank until settled. This is the column every P&L question should be answered from; reconstructing it by hand is where the errors came from. |
premium_over_budget_med | Median cents a part-filled leg was offered ABOVE what the book still needed, over the book's life. 0 under the 'budget' arm by construction; the old unbounded latch ran a median +1c with a tail to +54c, and that tail is what stranded books. |