# Merge 01 — 20 items, spreads 1–4 (queue lead at the rival's price) All figures below come from the item result files under `.imd/reads/artifacts/item-*` (JSON fields `diff`, `holdout`, `seconds`, `others_identical`, `code_sha256`, `approach`, `tried`, `next`). They are the items' own measurements; this merge re-ran no simulation. "Gain" = paired per-run mean edge difference vs the base on unseen runs of the item's spread (`diff.mean`, with `diff.standard_error`). The base code's SHA-256, as returned unchanged by several items, is `dcf68e0c…4747076`. **Sources:** none of the 20 result files has a URL or a source list (a search for `http` matched nothing). Sources were flagged as not holding for q1-lead (1), q2-life (1), q3-ahead (1), q4-keep (1), q1-ahead (1), q1-keep (2), q1-demand (1), q2-lead (1), q2-keep (1), q3-lead (1) and q3-life (1). Those sources are not in the files, so this merge cannot tell which claims rested on them. Below, every claim from these items is attributed to the item's own measurement, and any item explanation of *why* something works (as opposed to its measured numbers) should be read as unverified. The simulator's mechanics (queue order, replenishment) are as the brief states them; this merge did not re-read the simulator repo. ## Scorer check (base_mean_edge, author: 98.4694596619638) - Reproduced exactly (98.4694596619638 or 98.46945966196388): q1-ahead, q1-bids, q1-demand, q1-keep, q1-lead, q2-ahead, q2-bids, q2-demand, q2-keep, q2-lead, q2-life, q3-ahead, q3-bids, q3-lead, q3-life, q4-keep, q4-lead. - Not run: q1-life (null; slow machine, ~0.9 s/sim) and q3-demand (null; ~1.6 CPU-s/run, would have taken ~27 min). - **Disagrees:** q3-keep reports 114.49265606862934. That is not the author's figure, so q3-keep's scorer or setup differed. It also has a base_unseen of 115.98 where the other spread-3 items have ≈118.82, and checked only 180 other-spread runs. Its numbers are not on the same footing as the rest. Since it returned the base anyway, this changes no conclusion. - Base unseen means per spread, where seeds 60000–67999 were used: s1 41.785, s2 75.379, s3 118.817, s4 159.705 (q4-keep) / 163.478 (q4-lead; different seed set or count, not stated in the fields). q1-life's 47.498 comes from a different, smaller sample (300 other-spread runs). ## Per-spread outcomes | item | spread | gain | SE | retail Δ | arb Δ | fails | others identical | seconds base → yours | status | |---|---|---|---|---|---|---|---|---|---| | q1-ahead | 1 | **1.6416** | 0.2151 | +1.604 | +0.037 | 0 | 900/900 | 521.4 → 517.7 | **candidate (best s1)** | | q1-bids | 1 | 0.7918 | 0.0945 | +0.781 | +0.011 | 0 | 900/900 | 235.1 → 219.4 | candidate | | q1-life | 1 | 0.4439 | 0.1489 | +0.307 | +0.137 | 0 | 300/300 | 181.3 → 180.3 | candidate (scorer check not run) | | q1-demand | 1 | 0.3543 | 0.1476 | −0.417 | +0.772 | 0 | 900/900 | 438.0 → 430.7 | candidate | | q1-keep | 1 | 0.3137 | 0.0742 | +0.294 | +0.020 | 0 | 900/900 | 69.3 → 68.6 | candidate | | q1-lead | 1 | 0.1238 | 0.3596 | +0.780 | −0.656 | 0 | 900/900 | 86.1 → 85.7 | not significant | | q2-bids | 2 | 0.1485 | 0.3154 | +0.917 | −0.768 | 0 | 900/900 | 163.4 → **167.7** | **not a candidate: slower, not significant** | | q2-ahead, q2-demand, q2-keep, q2-lead, q2-life | 2 | 0 | 0 | – | – | 0 | 900/900 | – | returned base | | q3-ahead | 3 | **0.1361** | 0.0407 | +0.189 | −0.053 | 0 | 900/900 | 114.6 → 113.9 | **candidate (only s3)** | | q3-demand | 3 | 1.8604 | 0.6402 | −1.146 | +3.006 | 0 | 900/900 | 265.5 → **302.2** | **not a candidate: ~14% slower** | | q3-bids | 3 | 0.1699 | 0.2411 | +1.061 | −0.892 | 0 | 900/900 | 290.4 → **305.6** | not a candidate: slower, not significant | | q3-keep, q3-lead, q3-life | 3 | 0 | 0 | – | – | 0 | – | – | returned base | | q4-keep, q4-lead | 4 | 0 | 0 | – | – | 0 | 900/900 | – | returned base | Code hashes of the candidates: q1-ahead `d5a76ce3ac426619d1e4fe4e3864afb7b88acbea5b4d63b35f59c09ae3dff3bb`; q1-bids `44946eac600d1e701d700252ae49cc695b3f91c0f0a89de4cd369ab30ac199b2`; q1-life `8ea1d9235fc51442c841b242817fe1e1ed4efa53ff9c199393d748dad95ac960`; q1-demand `b245e3b239660c29163a1719ac0a0ff70cad9e64715d1b44a1ed6c5510a260e2`; q1-keep `40d08c5fcf5c05c5966dd8a146081449f7d5e43c274efceb1023fd75a01a0e12`; q3-ahead `a0c13edd9e6917d067d6fc10c1a49aa45c2f091e8e8fa9e1ebc101c65256427d`. Anomaly: q4-lead says it returned the base unchanged, but its hash is `cc7ed1dd…ce13b340`, not the base hash. I diffed its code against the base text: the only difference is one added trailing newline at the end of the file. It behaves the same, but it is not byte-identical. ## Recommended stack (one file per spread) - **Spread 1: q1-ahead** (+1.64 ± 0.22). It also reports independent tuning validation: +1.307 on the next 640 tuning seeds and +2.018 on the remaining 1236. Its holdout mean is 43.4265 vs base 41.7849 on all 1969 s1 seeds in 60000–67999. - **Spread 2: base** (no qualifying candidate). - **Spread 3: q3-ahead** (+0.136 ± 0.041; small but about 3.3 SE). - **Spread 4: base.** - Arithmetic only: each spread is about a quarter of runs, so the expected change in overall mean edge is about (1.642 + 0.136)/4 ≈ **0.44**. That is far short of the 2.42-point gap from 107.17 to 109.59 named in the brief, so this round alone does not reach 1st. This assumes the gains carry over to the 107.17 file; the items measured against the 98.47 base, and the brief's own note on the 47.86 measurement concerned an earlier base. - The stacked file has **not** been built or tested by this merge. Each item checked "others identical" only against the base, so the combined file needs one run to confirm that each spread matches its source item. - The s1 changes overlap in mechanism (front-order retention in q1-ahead, q1-keep, q1-life and q1-bids), so their gains are **not additive**; only one file can be used per spread. Combining q1-ahead's ask-side retention with q1-bids' bid-side "banking" (+0.79, the lowest SE) is untested and is the most promising follow-up for s1. ## Findings that hold, and where items disagree 1. **Keeping a front order instead of cancelling it when the one-step size rule shrinks:** - Gains at spread 1 in four independent items: q1-keep (+0.31), q1-life (+0.44), q1-bids (bids, +0.79) and q1-ahead (as part of +1.64). - **Loses or does nothing elsewhere:** q3-keep found all three variants negative on 147 s3 tuning seeds, and argues the shrink reacts to real adverse moves. q4-keep found it reduced tuning edge at s4. q2-life rejected its whole-lot valuation at the reserved gate. q2-ahead's keep + ×1.5 sizing was eaten by arbitrage on unseen runs. - q3-bids measured a whole-life keep at s3 as +0.17 ± 0.24 (retail +1.06, arb −0.89): not significant, and it disagrees in sign with q3-keep's tuning result. - Net: unconditional retention pays at s1 only. At s2–s4 the evidence is negative or noisy. 2. **Partial retention via FIFO tranches** works around the fact that a front order is all-or-nothing (there is no resize). It gained at s3 (q3-ahead: 25%/75% split at the ca−3 replenishment tick). q3-keep proposed the same idea independently as its next step. At s2 it was tested (q2-keep: 5/15/30/50 lots) but the item returned the base (its experiments are recorded in its `tried` field, which this merge did not tabulate). Its noted lead: a 2× front-size tolerance gained +0.29 on only 160 runs, unconfirmed. 3. **Bigger sizes:** - Larger size at the lead tick mostly loses to the arbitrageur. Every item that tried it saw this: q1-lead (×3 lead: retail +5.03, arb −5.66), q1-ahead (broad multipliers failed tuning), q2-ahead, q2-bids, q3-bids, q3-life and q2-life (broad early increases lost to jumps). - The one exception is q1-ahead: raising the s1 cap from 3000 to 15000 under 1 cent works because it keeps the risk-based size rule. This matches the brief's earlier finding that size must follow the price's distance below the tick. 4. **Quoting at the rival's price from behind / waiting behind the rival lot:** lost in q1-keep, q1-ahead, q2-lead, q3-lead, q3-keep (top-ups) and q4-lead. This agrees with the brief. 5. **Demand-posterior sizing (port of the 107.17 file's compound-Poisson/lognormal fit):** - s1 (q1-demand): +0.35. s3 (q3-demand): +1.86, the largest s3 effect, but 14% slower. - s2 (q2-demand): +0.408 (SE 0.212) on 1987 unseen seeds, but it failed the speed gate by about 1% (151.39 vs 149.99 s), so the item returned the base. - In all three the gain comes from the **arb** side, with a retail cost at s1 and s3. If made no slower, these are the largest unexploited gains at s2 and s3. They are not about queue position, and the 107.17 file may already contain them (q3-demand says it ported "the 107.17 file's" mechanism). If so, they are not gains over 107.17. 6. **Wait-then-lead (stop inside quoting to let retail use up the rival lot):** no significant gain at any spread (q1-lead +0.12 ± 0.36; q2-lead, q3-lead and q4-lead froze the base). q2-lead estimates that a spread-2 lot needs about 85 steps of average buying, longer than the price stays in a one-cent band (item's estimate). ## Next steps proposed by items (kept, not verified) - s1: limit dormant front fragments or set a minimum retained lot (q1-ahead). Retain a risk-limited tranche of tick-1 stock bids across rival depletion (q1-bids). Per-share fill-vs-crossing valuation (q1-life). Size the lead by jump exposure (q1-lead). Separate fitted bid sizing from fitted ask sizing (q1-demand). Seeds 60000–67999 are now used up for s1 and need fresh unseen seeds. - s2: make the demand port faster (3×3 grid or deferred refreshes; q2-demand). Size up only when the rival's ask is about to be used up (q2-bids). Condition sizing on the probability of crossing that step, capped by the lot's 24–72 dollar value (q2-ahead). Compound-Poisson queue-tail survival (q2-life). Rate-gated waiting (q2-lead). - s3: make q3-demand no slower and apply the posterior only near the price (q3-demand). Predict multi-lot depletion (q3-ahead). Use a floor-sized order plus a separately cancellable remainder (q3-keep). Value the incremental one-tick advantage (q3-life). - s4: lead preservation conditioned on replacement timing and remaining queue (q4-keep, q4-lead). ## Missing No item result is missing or empty; all 20 parse and none is `blocked`.