← blog

Our $106k Kalshi "Bailout," Explained

September 11th, 2026 · ammar

The game

Western Michigan at Michigan, Saturday, September 5, 2026. WMU led 12–7 with the clock at 0:00 after a Michigan Hail Mary was intercepted. Officials ruled a WMU defender touched the ball out of bounds with one second left, put 0:01 back on the clock, and Michigan scored a 47-yard touchdown on the final play. Final: Michigan 13, WMU 12. Press reports put Kalshi volume on the game at $18.6M.

Kalshi settled the market when the clock hit zero, before the review.

X Post

On September 7th, I posted this on X:

@greedfund on X, Sep 7, 2026: "Yesterday we suffered $100k in trading losses due to Kalshi misreporting a settlement," with a screenshot of Kalshi's apology email offering a $50 goodwill credit

Unbeknownst to me at the time, Kalshi had already published a notice identifying the affected combo trades for review and cancellation:

Kalshi's exchange notice, dated September 6, 2026:

Pursuant to its Rule 5.11 ("Trade Cancellations"), KalshiEX LLC hereby gives notice that trades meeting the below description made after 10:50:56 PM ET, September 5, 2026 are under Rule 5.11 review and shall be subject to cancellation: Trades in multivariate events containing the component event KXNCAAFGAME-26SEP05WMUMICH in which one component outcome was WMU Yes or Michigan No.

On September 10th, the credit landed in our accounts, giving us confidence for continued operations and scaling.

Over the week, the post drew many colorful replies:

Reply from @TheNotoriousSKi: "Meh. Seems like a fair outcome for a bot that was trying to sell combos for real money when it thought FV was 0c." Reply from @Landtrader8375: "Why brag/gloat about this? You got pwned and asked mommy to help." Replies from @porkchopEV: "You are a joke and deserved to lose everything for this. Can't believe Kalshi bailed out you cucks" and @roarinprops: "Interesting way to come out as a fucking pussy" Reply from @marketnotgamble: "I guess it pays to be a good little liquidity provider. These guys were trying to profit off of retail traders, saw an opportunistic way to take advantage of an erroneous settlement, assumed it wouldn't be reversed, and then cried to mommy when it ended up settling against them"

What stood out was how widely three things were misunderstood: how settlements and combos interact, why market makers keep quoting combos after settlement, and why we think unwinding these trades supports a more reliable and liquid exchange. The rest of this post takes them in turn.

On Market Making Combos

There are at least two conceptual simplicities that combo market makers rely on to quote efficiently.

  1. Combo MMs specialize in pricing the copula, or inter-dependency, of the legs, not the legs themselves.
  2. Combo MMs rely on the finality of settlement to residualize (i.e. simplify) combos, permitting tighter spreads and a broader quotable universe.

Take a toy example: a combo CC with legs XX, YY, and ZZ, each with a fair value of 50c (50%) and completely independent of one another. CC is worth 0.5×0.5×0.5=0.1250.5 \times 0.5 \times 0.5 = 0.125 (12.5c).

Now suppose the MM believes ZZ is mispriced and its fair is really 90c. It could offer CC at 23c, but it's far more efficient to buy up liquidity on ZZ directly, shift that book to 90c, and keep quoting CC at X×Y×ZX \times Y \times Z. The combo marketplace is a bad place to capitalize on directional alpha in the legs, for takers and makers alike. Takers pay two MMs for the pleasure of acquiring exposure. Makers sit around waiting for combos that happen to include ZZ. Both end up with large directional exposure to events they are entirely uninterested in.

The two layers, and where the alpha goes:

Two layers. Top, the combo layer: one combo MM prices C as X times Y times Z times a dependency term, fair 12.5c, reading mids from the leg books below. Bottom, the leg layer: event MMs quote the X, Y, and Z books at 49c/51c. The MM's alpha ("Z fair is 90c, not 50c") is routed into the Z book, shifting its mid from 50c to 90c; a crossed-out arrow shows the wrong route, offering C at 23c. Footer: combo prices are downstream of leg data, so when Z settled YES then flipped to NO, every combo containing Z inherited the error.

Now game night concludes and ZZ settles in favor of the combo. An MM trusting the finality of settlement can ignore ZZ and price off XX and YY alone: the new fair of CC is 0.5×0.5=0.250.5 \times 0.5 = 0.25 (25c). Retail holders can liquidate early to take profit, at spreads tighter than when they bought, since the MM is compounding uncertainty twice instead of thrice. If ZZ was a dependence curveball such as a same-game prop, many more MMs may emerge to quote CC post-settlement, driving costs for retail traders down further.

The toy example in one picture:

Three panels. 1: before game night, legs X, Y, Z each 50c, combo C fair 12.5c, quoted 10c bid / 15c ask (5c wide). 2: Z settles YES and is treated as 1.00, the MM prices X times Y only, C fair 25c, quoted 24c bid / 26c ask (2c wide). 3: settlement reversed, Z becomes 0.00, C fair 0c with no bid or ask; C bought at 24c in step 2 is now worth 0c.

Panel 3 is what happened to us. The exchange said ZZ (WMU) settled YES, we residualized and kept quoting CC off of the remaining legs, and then ZZ became NO.

The implication for exchange participants: event MMs and combo MMs can run disjoint, independent strategies, provided the underlying exchange data is available and deterministic. Providing liquidity gets conceptually simpler, more MMs show up, retail flow gets tighter spreads, and everyone is happier.

What we quoted

MetricValue
Combos36
Fills172
YES contracts bought143,487.15
NO contracts bought9.20
Held-side fill cost$106,260.84
Fees$442.88

All 36 finalized NO on September 10 between 16:15:23 and 16:16:13 ET, with revenue = 0 on every one.

Raw outcome: $9.20 (released when the 9.20 NO contracts netted against YES) − $106,260.84 − $442.88 = −$106,694.53. Fills settle in fractional cents and totals are summed before rounding, so displayed figures can be off by a cent.

The big ones

All tickers are prefixed KXMVECROSSCATEGORY-SHARD1-S2026…. "Residual leg(s)" are the legs still undetermined when our RFQ responder quoted; every other leg had already resolved YES, and WMU was being treated as resolved YES too. The price of the combo is roughly the product of the residual legs' odds, which is why the three-residual combo priced at 0.969 and most single-residual ones at ~0.99.

ComboLegsResidual leg(s)Avg YES priceCost
…CC9D6B80355-72F76ECEC9F6MTU yes0.9882$26,187.50
…AFFB99EA800-2B305E969D52LSU yes0.9847$20,284.50
…38DF75B75A0-675B744AF8811WCU yes0.5327$19,839.29
…64459DC8BA8-924A4A0015A6SUU yes0.9884$17,109.59
…E8E9F7E493B-CA04A289B9C2LSU −8 spread yes0.9400$8,135.70
…A63B12CBA6E-B81869955A32WASH yes (Sep 6 game)0.9254$7,403.00
…ADA048FD638-7CA12ACA7B89MTST yes, MTU yes, SUU yes0.9690$1,938.00
…A245F1993A9-270647AA99D8NMSU yes0.9890$1,978.00
…3014DEAC26F-E0BA24381227UCLA yes0.9890$1,849.52
other 27 combos$1,535.74

We were not trying to exploit the bad settlement. Our weighted average expected edge across these executions was under 1%; in normal conditions this volume earns about $1k. Fills at ~99c can only ever make 1c on settlement. The doctrine at Greed is capital scale and regime-independence. We're looking for a long buck, not a quick one.

What Kalshi credited

Source: Kalshi account activity export

At 16:36 ET on September 10, Kalshi credited $106,680.24, corresponding to the post-cutoff fills and fees.

CostFeesNO nettedNet loss
All 172 fills$106,260.84$442.88$9.20$106,694.53
170 fills at/after 22:50:56 (the notice cutoff)$106,248.38$442.46$9.20$106,681.64
Credited$106,680.24
Residual vs. post-cutoff$1.40

So the refund covers the post-cutoff fills, including fees, to within an unreconciled $1.40. The two pre-cutoff fills ($12.89) were excluded, consistent with the notice.

The $9.20 column matters more than its size suggests. Those two NO fills were our only trades in the cancellation window on the winning side of the bug: they closed 9.20 YES at 63.5c on the WCU combo, a $5.84 gain. The credit nets that gain out. Had Kalshi simply reimbursed losses, the residual would be $7.16, not $1.40.

So our reconciliation fits a cancellation of the affected trades, winning executions included, rather than a reimbursement of losing ones. That is what a Rule 5.11 cancellation means: both sides of each trade are unwound, so by construction the exchange is not funding one side's losses out of its own pocket. We can only see our own account and cannot verify the counterparties' debits or the exchange's total cost. But on our side of the ledger, this was not a bailout in the traditional sense. The trades were put back to the state before the exchange's own bad data.

The two models side by side:

Two panels, each a ledger between Greed, Kalshi, and counterparties. Both start with the same in-window trades: 168 YES fills at about 99c for $106,248.38 plus $442.46 fees, and 2 NO fills closing 9.20 YES at 63.5c for a $5.84 gain. Panel A, "Reimburse losses (a bailout)": Kalshi pays Greed's losses out of its own pocket, Greed keeps the $5.84, counterparties keep their proceeds, Kalshi is net about -$106K, and the implied residual against the credit would be $7.16, which does not match. Panel B, "Rule 5.11 cancellation (fits our credit)": both sides of every trade are unwound, $106,248.38 plus fees flow back to Greed and the $5.84 flows back out, Kalshi nets about zero by construction, and the residual against the credit is an unreconciled $1.40, which matches.

How big was the unwind exchange-wide? From the public trade tape, joined to combo legs from the RFQ broadcast feed: after the 22:50:56 cutoff, combos containing WMU yes or Michigan no traded ~4,000 times across ~1,350 combos, 18.9M contracts, roughly $19M of cash between the two sides. Our $106K was about 0.6% of it. Nearly all of it printed in the hour after the bad settlement. This is an estimate: combos whose RFQ we did not observe are missing, and we cannot see which trades Kalshi ultimately cancelled.

Conclusion

I hope this post clarified exactly how these losses materialized, and why an exchange that wants to be diverse and liquid would reverse them.

Appendix

The bad settlement, as seen through the Kalshi API

KXNCAAFGAME-26SEP05WMUMICH has two markets: -WMU and -MICH. Here is what the exchange's own interfaces said about them, in order. All times in this post are ET (EDT, UTC−4). Times are when we observed each message or response; Kalshi's internal transition times may be earlier.

Timeline from Sep 5 22:20 ET to Sep 10 with three lanes. Lifecycle WebSocket lane: a "determined: WMU yes, MICH no" event at 22:50:56, the Rule 5.11 cutoff, then a dashed line of silence, with no message ever carrying the corrected result. REST API lane: settled_time 22:52:35 with result=yes and $1.00 paid per WMU YES contract; updated_time 23:17:56, the correction, only seen on Sep 7; around 02:58 the same records flip to result=no with settled_time unchanged and cash clawed back; Sep 7 20:43 GET /markets shows finalized, result=no; Sep 10 16:15 the 36 combos finalize NO with revenue=0. Greed lane: 2 pre-cutoff fills for $12.89, then a red band of 170 fills from 22:50:56 to 05:33:49 buying $106,248 of YES at about 99c on 36 combos, and the $106,680.24 credit at 16:36 on Sep 10.

The same sequence, row by row:

Time (ET)InterfaceWhat it said
Sep 5 22:50:56WebSocket market_lifecycle_v2determined event: WMU result=yes, MICH result=no. This is the cutoff in Kalshi's Rule 5.11 notice (10:50:56 PM ET).
Sep 5 ~22:53–22:55GET /portfolio/settlementsReturns settlement records for both markets with market_result=yes (WMU) / no (MICH) and settled_time=2026-09-06T02:52:35.779631Z (22:52:35 ET). Cash was paid on these: WMU YES holders received $1.00/contract.
Sep 5 23:17:56.871101updated_time on GET /markets/KXNCAAFGAME-26SEP05WMUMICH-WMUThe only exchange-side timestamp that appears to correspond to the correction. Captured on Sep 7; the field was not observed live.
Sep 6 ~02:58–03:00GET /portfolio/settlementsSame records now return market_result=no (WMU) / yes (MICH). settled_time is unchanged at 2026-09-06T02:52:35.779631Z. Cash clawed back from WMU YES holders and paid to MICH YES / WMU NO holders.
neverWebSocket market_lifecycle_v2No determined or settled message carrying the corrected result was observed on the lifecycle feed for either market.
Sep 7 20:43:59GET /markets (poll)First time our REST polling recorded status=finalized, result=no for WMU.
Sep 10 16:15:23–16:16:13GET /portfolio/settlementsThe 36 affected KXMVE combos finalize market_result=no, revenue=0.