---
name: project-mm-queue-reality-check
description: Once queue position is modelled, the paper market maker loses money on 2026-07-29 under EVERY policy tested; the optimistic fill model was producing the apparent profit
metadata:
  type: project
---

Measured 2026-07-30 on 2026-07-29's 15 Kalshi books (`research/decay_backtest.py`,
`research/queue_aware_fill.py`). **This supersedes the +$2.26/day projection I
gave on 2026-07-29 — that number came from the optimistic fill model.**

**The two fill models disagree in DIRECTION, not just magnitude:**

| policy | optimistic | queue-aware |
|---|---|---|
| A fixed arm, no concede | -$0.13 | **-$0.94** |
| B fixed arm + concede at T-60 | +$2.12 | **-$1.04** |
| C decaying arm + concede | **+$2.48** | **-$1.16** |

Optimistic says C is best; queue-aware says C is worst. The whole gap is the
concede step: joining the market ask at T-60 puts us at the BACK of a ~7,290
contract queue with one hour to clear it. The optimistic model counts every print
at that price as our fill when nearly all of them are other makers'.

**Things tested that do NOT fix it:**
- Conceding to ask+1c instead of the touch (stay alone in the queue): **worse**
  (-$1.39). Fewer trades reach a higher price; the queue advantage does not pay
  for it.
- Buying back both legs at 2-of-3 instead of crossing the third into the bid:
  **worse on 8 of 8 books**, typically by 15-35c. Completing pays one fee and one
  crossing and keeps the collected overround; flattening pays two of each. The
  exit is not the problem.
- Gating on the market's own overround at post time: helps but does not rescue.
  no gate -$0.94, >=0c -$0.26, >=2c -$0.94, >=3c -$0.18. Non-monotone = noise at
  this sample size.

**The real finding:** every 2-of-3 completion on 2026-07-29 was a small LOSS
(-$0.04 to -$0.46, one +$0.09). Books were collecting less than 100c plus the
crossing cost. So the problem is book selection and fill prices, not exit logic.

**Caveats that keep this from being a verdict:** one day, 15 books. The
queue-aware model is a deliberate LOWER bound (assumes nobody ahead of us ever
cancels, which they constantly do), while optimistic is an upper bound. Truth is
between. Depth logging only started 2026-07-28 17:17Z so no earlier day can be
scored this way.

**How to apply:** stop changing live policy on optimistic-model results. Both
`vol_cum` and `queue_ahead` are now written to state per leg, so the two bounds
can be tracked forward. Accumulate a week before concluding anything. See
[[project-mm-charge-more-ab]] for the price ladder this was meant to evaluate,
and [[project-mm-gross-margin-gate]] for the overround gate.
