{
 "approach": "Deepened the base's crossing cover (bid resting below p in the 2c-10c zone, sized to a YES shortfall, so the arbitrageur hands over stock as p crosses down). Two changes; the cover block was rewritten with named parameters (an unused demand-target branch, off by default, and a tick-1 guard that cannot trigger at the chosen range), and all other code is unchanged: (1) the YES target is 1.5x the desired ordinary ask quantity instead of 1.0x, so asks stay covered for more retail buying after a crossing; (2) the cover bid rests at floor(100p - 0.3) instead of floor(100p): when p sits less than 0.3 tick above a tick, the bid waits one tick lower instead of being filled almost surely at near-zero edge, which lowered arbitrage loss and kept retail. Raising size alone (1.5x-3x or a demand-horizon target) bought retail but paid more to the arbitrageur; the offset pays for the extra size. Zone breakdown on unseen seeds 50000-53999, mean per run, retail/arb by true-probability zone (percent): <2: base 73.689/-8.285, yours 73.733/-8.201; 2-5: base 13.059/-4.793, yours 13.119/-4.643; 5-10: base 8.314/-2.262, yours 8.343/-2.395; 10-25: base 10.618/-3.859, yours 10.622/-3.894; 25-75: base 15.649/-6.108, yours 15.649/-6.076; 75-90: base 2.267/-2.074, yours 2.267/-2.074; 90-95: base 0.768/-1.043, yours 0.768/-1.043; 95-98: base 0.655/-0.607, yours 0.655/-0.607; >98: base 1.910/-0.352, yours 1.910/-0.352. Retail is concentrated below 2c (tick-1 business) and 2c-10c; extending cover to tick 1, above 10c, or changing the wealth cap did not help. Tuned only on seeds 4000-4599 (screen) and confirmed on 6000-6999 before freezing. Unseen run-by-run: yours better in 1106 runs, worse in 912, equal in 1982. Timing 200 runs (seeds 50000-50199) in one process each: base 82.28 s, yours 82.87 s (+0.7%, within noise; both measured simultaneously on separate cores). Scored with a driver that calls the simulator's own sample_config and SimulationEngine (identical to the CLI: base on seeds 1000-1599 reproduced 108.63974289615767 via the CLI, and the driver reproduced the CLI on 1000-1119).",
 "blocked": null,
 "python_version": "3.12.3",
 "base_mean_edge": 108.63974289615767,
 "base_unseen": {
  "mean_edge": 97.54703502577898,
  "retail_edge": 126.92890288111946,
  "arb_edge": -29.381867855334075
 },
 "score": {
  "mean_edge": 98.27725846845576,
  "retail_edge": 125.27247583905955,
  "arb_edge": -26.995217370617826,
  "simulations": 4000,
  "seed_start": 4000,
  "failures": 0
 },
 "holdout": {
  "mean_edge": 97.7807811935935,
  "retail_edge": 127.06578690799103,
  "arb_edge": -29.2850057143897,
  "simulations": 4000,
  "seed_start": 50000,
  "failures": 0
 },
 "diff": {
  "mean": 0.23374616781452492,
  "standard_error": 0.07730470236432167,
  "retail": 0.13688402687157483,
  "arb": 0.09686214094437494
 },
 "seconds": {
  "base": 82.27741253585555,
  "yours": 82.86836009519175
 },
 "code": "\"\"\"Crossing-funded inventory for passive prediction-market quotes.\n\nUses tiny tick probes, a sub-tick probability filter, and marginal retail-versus-arbitrage sizing to quote one tick inside the competitor. Starting from the exactly reproduced base, adds demand-matched crossing cover at ticks 2-9. When estimated probability is between 2c and 10c and YES inventory is below the desired ordinary ask quantity, a bid rests at floor(100*p), sized to the inventory shortfall, capped by 30% of cash-plus-YES marked wealth and 3000 shares. This gets additional stock on a downward crossing rather than paying the next higher tick, while retaining the base tick-1 reservoir and other quoting rules. Higher fixed-tick reservoirs, broad surplus asks, cash gates, and alternative stock targets were compared on tuning seeds only; selection used the full 600-seed tuning mean. The code was frozen before the holdout.\n\nDeeper crossing cover: the cover bid's YES target is 1.5 times the desired ordinary ask quantity (was 1.0), and the bid rests at floor(100*p - 0.3) so that when p sits within 0.3 tick above a tick the cover waits one tick lower, buying on a crossing that has more room instead of on a near-certain arbitrage fill.\n\"\"\"\nimport math\nfrom orderbook_pm_challenge.strategy import BaseStrategy\nfrom orderbook_pm_challenge.types import CancelOrder, PlaceOrder, Side\n\nP = dict(lam_r=0.25, m=5.0, sig_n=1.2, lam_j=0.0019, sig_j=0.35, sig=0.02,\n         qmax=3000.0, rmin=2, kA=0.7, kL=0.15, pL=0.05,\n         ammo=1.0, ydem=0.4, W=200.0, fy=0.6, ammo_q=60.0, ammo_pmax=0.05, ammo_maxpay=0.02,\n         fb=0.9, fu=0.7, xu=0.1, sticky=1.0, min_ahead=2.0, keep_hi=1.5, keep_lo=0.7, Hu=300.0, bins=8.0, filt=1.0, uni=0.01, jumpinfo=1.0, dmin=0.0, kLb=0.08, kLf=0.08, pinf=1.0, pre=0.0, H1=100.0,\n         ydf=0.6, Wf=2000.0, g_hi=0.15, g_lo=0.15, qf=400.0, pmaxf=0.05, pre_gap=1.0,\n         ydf1=0.6, g1=5.0, f1=0.6, a1=100.0, nb1=0.0, gs=1.0, p1t=1.0, m1=1.0, zd=1.0, pfl=0.0005,\n         clo=0.02, chi=0.1, ctmin=2, coff=0.3, cg=1.5, cw=0.3, cmax=3000.0, cdem=0.0, chz=100.0)\nSQ2 = math.sqrt(2.0)\nSQ2PI = math.sqrt(2.0 * math.pi)\ndef cdf(x): return 0.5 * (1.0 + math.erf(x / SQ2))\ndef pdf(x): return math.exp(-0.5 * x * x) / SQ2PI\ndef inv(p):\n    p = min(max(p, 1e-9), 1 - 1e-9)\n    t = math.sqrt(-2.0 * math.log(min(p, 1 - p)))\n    x = t - (2.515517 + 0.802853 * t + 0.010328 * t * t) / (1 + 1.432788 * t + 0.189269 * t * t + 0.001308 * t ** 3)\n    x = -x if p < 0.5 else x\n    for _ in range(2):\n        d = pdf(x)\n        if d < 1e-12:\n            break\n        x -= (cdf(x) - p) / d\n    return x\ndef lpm(k):\n    return pdf(k) + k * cdf(k)\ndef fl(q):\n    return math.floor(q * 100 + 1e-9) / 100\n\nNODES = [(-2.2, .06), (-1.3, .17), (-0.6, .27), (0.6, .27), (1.3, .17), (2.2, .06)]\nPROBE = 0.01\n\n\nclass Strategy(BaseStrategy):\n    def __init__(self):\n        self.n = 0\n        self.ahead = set()     # main orders placed strictly ahead of any competitor order at their tick\n        self.res = {}          # order id -> uncovered quantity at placement\n        self.bc = None         # belief: sub-tick grid centres (ticks)\n        self.bw = None         # belief: weights\n        self.st = 0.5          # last one-step sd in ticks\n        self.pcb = self.pca = None\n        self.pb = set()\n        self.pa = set()\n        self.tb = 0\n        self.s = None          # competitor spread parameter\n\n    def _oid(self, tag):\n        self.n += 1\n        return tag + str(self.n)\n\n    def on_step(self, state):\n        H = max(1, state.steps_remaining)\n        cb = state.competitor_best_bid_ticks or 0\n        ca = state.competitor_best_ask_ticks or 100\n        if self.s is None:\n            self.s = max(1, (ca - cb + 1) // 2)\n        lo, hi = cb, ca\n        for o in state.own_orders:\n            if o.side is Side.BUY:\n                lo = max(lo, o.price_ticks)\n            else:\n                hi = min(hi, o.price_ticks)\n        if P['pinf'] > 0:\n            sb = {o.price_ticks for o in state.own_orders if o.side is Side.BUY and o.remaining_quantity <= PROBE + 1e-9}\n            sa = {o.price_ticks for o in state.own_orders if o.side is Side.SELL and o.remaining_quantity <= PROBE + 1e-9}\n            ea = self.pa - sa\n            eb = self.pb - sb\n            if sa and ea:\n                lo = max(lo, min(max(ea), hi))\n            if eb and (sb or min(eb) <= P['p1t']):\n                hi = min(hi, max(min(eb), lo))\n        if P['jumpinfo'] > 0 and self.pcb is not None:\n            if ca > self.pca + 1:\n                lo = max(lo, ca - 1)\n            if cb < self.pcb - 1:\n                hi = min(hi, cb + 1)\n        self.pcb, self.pca = cb, ca\n        if lo > hi:\n            lo, hi = hi, lo\n        # sub-tick belief over p_(t-1): predict with one-step noise, truncate to [lo, hi]\n        wid = max(hi - lo, 1e-6)\n        nb = max(2, min(48, int(round(wid * P['bins']))))\n        cs = [lo + (i + 0.5) * wid / nb for i in range(nb)]\n        if self.bc is None or P['filt'] <= 0:\n            ws = [1.0 / nb] * nb\n        else:\n            sg = max(self.st, 0.6 * wid / nb)\n            k = -0.5 / (sg * sg)\n            ws = []\n            uni = P['uni'] * sg\n            for c in cs:\n                t = uni\n                for ci, wi in zip(self.bc, self.bw):\n                    d = c - ci\n                    d2 = d * d * k\n                    if d2 > -12.5:\n                        t += wi * math.exp(d2)\n                ws.append(t)\n            tot = sum(ws)\n            ws = [w / tot for w in ws]\n        self.bc, self.bw = cs, ws\n        mean_t = sum(c * w for c, w in zip(cs, ws))\n        var_t = max(sum(c * c * w for c, w in zip(cs, ws)) - mean_t * mean_t, 0.0)\n        phat = min(max(mean_t / 100.0, 0.002), 0.998)\n        var = P['sig'] ** 2 + P['lam_j'] * P['sig_j'] ** 2\n        sd = math.sqrt(H * var)\n        self.tb = self.tb + 1 if hi <= 1 else 0\n        if self.tb > 0 and P['zd'] > 0:\n            # below the last tick there is no probe: the score keeps walking away from it\n            phat = min(phat, max(P['pfl'], cdf(inv(0.01) - P['zd'] * 0.02 * math.sqrt(self.tb) / sd)))\n        z = inv(phat)\n        Z = z * sd\n        sp = pdf(z) / sd * P['sig']\n        self.st = sp * 100.0\n        s = math.sqrt(sp * sp + var_t / 1e4 + 1e-8)\n        sd1 = math.sqrt(max(1.0, H - 1.0) * var)\n        jp = [(cdf((Z + n * P['sig_j']) / sd1), w) for n, w in NODES]\n        lj = P['lam_j']\n\n        def AB(x):\n            k = (x - phat) / s\n            a = s * lpm(k)\n            b = a - (x - phat)\n            ja = sum(w * max(0.0, x - p) for p, w in jp)\n            jb = sum(w * max(0.0, p - x) for p, w in jp)\n            return (1 - lj) * a + lj * ja, (1 - lj) * b + lj * jb\n\n        if H == 1:\n            def AB(x):\n                return (1 - phat) * x, phat * (1 - x)\n        rho = P['lam_r'] * 0.5\n        mu = math.log(P['m']) - 0.5 * P['sig_n'] ** 2\n        kA = P['kL'] if phat < P['pL'] else P['kA']\n\n        def qsize(loss, gain, px):\n            loss *= kA\n            if gain <= 0:\n                return 0.0\n            tail = loss / (rho * gain)\n            if tail >= 1.0:\n                return 0.0\n            return min(P['qmax'], math.exp(mu + P['sig_n'] * inv(1 - max(tail, 1e-6))) / px)\n\n        ptk = phat * 100\n        def qbid(t):\n            if not 1 <= t <= 99:\n                return 0.0\n            a, b = AB(t / 100.0)\n            if phat * 100 - t < P['dmin']:\n                return 0.0\n            if P['nb1'] > 0 and self.s == 1 and t == 1 and ptk < 1.0:\n                return 0.0\n            if phat < P['pL']:\n                ytg = P['ydem'] * min(H, P['W']) / max(ca - 1, ptk + 1) * 100.0\n                a *= (P['kLb'] if state.yes_inventory < ytg else P['kLf']) / P['kL']\n            return qsize(a, b, max(phat, 0.05))\n\n        def qask(t):\n            if not 1 <= t <= 99:\n                return 0.0\n            a, b = AB(t / 100.0)\n            if t - phat * 100 < P['dmin']:\n                return 0.0\n            return qsize(b, a, t / 100.0)\n\n        bids = [o for o in state.own_orders if o.side is Side.BUY and o.remaining_quantity > PROBE + 1e-9]\n        asks = [o for o in state.own_orders if o.side is Side.SELL and o.remaining_quantity > PROBE + 1e-9]\n        sticky = P['sticky'] > 0\n        def top(orders, comp, step):\n            if sticky and sum(o.remaining_quantity for o in orders if o.price_ticks == comp and o.order_id in self.ahead) >= P['min_ahead']:\n                return comp\n            return comp + step\n        bid_t = top(bids, cb, 1)\n        ask_t = top(asks, ca, -1)\n        qb = qbid(bid_t)\n        qa = qask(ask_t)\n\n        Y = state.yes_inventory\n        if ask_t == 1 and H > P['H1'] and P['pre'] > 0:\n            qa = qa if Y >= P['a1'] > 0 else 0.0          # let the competitor's 2-tick ask erode instead of fronting it for nothing\n        # ammunition: hold YES so that low asks are covered\n        ptick = phat * 100\n        amt = 0\n        qam = 0.0\n        if P['ammo'] > 0 and ask_t >= 2 and phat < max(P['ammo_pmax'], P['pmaxf']):\n            wealth = state.cash + Y * phat\n            x = max(ask_t, ptick + 1) / 100.0\n            capw = P['fy'] * wealth / max(phat, 0.005)\n            target = min(P['ydem'] * min(H, P['W']) / x, capw)\n            full = min(P['ydf'] * min(H, P['Wf']) / x, capw) if phat < P['pmaxf'] else 0.0\n            t = max(1, min(99, int(math.ceil(ptick + 1e-9))))\n            g = t - ptick\n            if Y < full and g <= P['g_hi'] and bid_t <= t < ask_t:\n                amt, qam = t, min(P['qf'], full - Y)     # a tick p has just crossed: nearly free\n            elif Y < target and phat < P['ammo_pmax'] and bid_t <= t < ask_t and t / 100.0 - phat < P['ammo_maxpay']:\n                amt, qam = t, min(P['ammo_q'], target - Y)\n            elif Y < full and t >= 2 and 1.0 - g <= P['g_lo']:\n                amt, qam = t - 1, min(P['qf'], full - Y)  # rest just under p: filled only on the crossing, or by retail\n\n        if P['pre'] > 0 and ca == 2 and phat < 0.01 and H > P['H1'] and Y < P['pre'] and not qam and 1.0 - ptick < P['pre_gap']:\n            amt, qam = 1, min(P['ammo_q'], P['pre'] - Y)\n        q1 = 0.0\n        if P['ydf1'] > 0 and P['m1'] < ptick < P['g1'] + 1.0 and amt != 1:\n            q1 = max(0.0, P['ydf1'] * min(H, P['Wf']) / (self.s / 100.0) - Y)\n\n        # Bridge expected retail demand until another tick crossing is available.\n        if P['clo'] < phat < P['chi']:\n            ct = max(P['ctmin'], min(99, int(math.floor(ptick - P['coff']))))\n            wealth = state.cash + Y * phat\n            qd = qa\n            if P['cdem'] > 0:\n                qd = max(qa, P['cdem'] * rho * math.exp(mu + 0.5 * P['sig_n'] ** 2) / max(ct / 100.0, 0.01) * P['chz'])\n            goal = min(P['cg'] * qd, P['cw'] * max(wealth, 0.0) / phat)\n            if Y < goal and ct < ask_t and not (ct == 1 and amt == 1):\n                amt, qam = ct, min(P['cmax'], goal - Y)\n        # order management\n        actions = []\n        free = state.free_cash - 2.0\n        keep_ask = 0.0\n        new_b = []\n        new_a = []\n        def cancel(o):\n            nonlocal free\n            actions.append(CancelOrder(o.order_id))\n            x = o.price_ticks / 100.0\n            if o.side is Side.BUY:\n                free += x * o.remaining_quantity\n            else:\n                free += (1 - x) * min(self.res.get(o.order_id, 0.0), o.remaining_quantity)\n            self.ahead.discard(o.order_id)\n            self.res.pop(o.order_id, None)\n        for o in state.own_orders:\n            if o.remaining_quantity <= PROBE + 1e-9:\n                cancel(o)\n        kept_ids = set()\n        def manage(orders, t, q, comp):\n            kept = 0.0\n            for o in orders:\n                if o.price_ticks == t and q > 0 and kept + o.remaining_quantity <= max(q * P['keep_hi'], 1.0):\n                    kept += o.remaining_quantity\n                    kept_ids.add(o.order_id)\n                else:\n                    cancel(o)\n            return kept\n        kb = manage(bids, bid_t, qb, cb)\n        ka = manage(asks, ask_t, qa, ca)\n        add_b = (qb - kb) if (kb < qb * P['keep_lo'] and bid_t != cb) else 0.0\n        add_a = (qa - ka) if (ka < qa * P['keep_lo'] and ask_t != ca) else 0.0\n\n        budget = P['fb'] * max(free, 0.0)\n        cost = add_b * bid_t / 100.0 + qam * amt / 100.0\n        if cost > budget:\n            f = budget / cost\n            add_b *= f\n            qam *= f\n            cost = budget\n        out = []\n        q1 = min(q1, P['f1'] * max(budget - cost, 0.0) * 100.0)\n        if q1 >= 0.01:\n            out.append(PlaceOrder(side=Side.BUY, price_ticks=1, quantity=fl(q1)))\n            free -= fl(q1) / 100.0 + 1e-6\n        if amt and qam >= 0.01:\n            q = fl(qam)\n            out.append(PlaceOrder(side=Side.BUY, price_ticks=amt, quantity=q))\n            free -= q * amt / 100.0 + 1e-6\n        if bid_t >= 1 and add_b >= 0.01:\n            q = fl(add_b)\n            oid = self._oid('b')\n            out.append(PlaceOrder(side=Side.BUY, price_ticks=bid_t, quantity=q, client_order_id=oid))\n            free -= q * bid_t / 100.0 + 1e-6\n            if bid_t > cb:\n                self.ahead.add(oid)\n        if ask_t <= 99 and add_a >= 0.01:\n            x = ask_t / 100.0\n            covk = sum(o.remaining_quantity - min(self.res.get(o.order_id, 0.0), o.remaining_quantity)\n                       for o in asks if o.order_id in kept_ids)\n            cov = max(0.0, Y - covk - 0.1)\n            unc = max(0.0, add_a - cov)\n            if unc > 0:\n                ub = max(0.0, free - (1 - P['fu']) * max(state.cash, 0.0)) if x >= P['xu'] else 0.0\n                if H < P['Hu'] and phat < 0.05:\n                    ub = max(0.0, free * (1 - H / P['Hu']))\n                unc = min(unc, ub / (1 - x))\n            q = fl(min(add_a, cov + unc))\n            if q >= 0.01:\n                oid = self._oid('a')\n                out.append(PlaceOrder(side=Side.SELL, price_ticks=ask_t, quantity=q, client_order_id=oid))\n                r = max(0.0, q - cov)\n                self.res[oid] = r\n                free -= r * (1 - x) + 1e-6\n                if ask_t < ca:\n                    self.ahead.add(oid)\n\n        # probes: tiny orders that the arbitrageur removes when p crosses them\n        f = int(math.floor(ptick + 1e-9))\n        r = max(int(P['rmin']), int(math.ceil(2.0 * s * 100)))\n        self.pb = set()\n        self.pa = set()\n        if free > 1.0:\n            for t in range(f, f + r + 1):\n                if cb < t < ca and 1 <= t <= 99:\n                    out.append(PlaceOrder(side=Side.BUY, price_ticks=t, quantity=PROBE))\n                    self.pb.add(t)\n            for t in range(f + 1 - r, f + 2):\n                if cb < t < ca and 1 <= t <= 99:\n                    out.append(PlaceOrder(side=Side.SELL, price_ticks=t, quantity=PROBE))\n                    self.pa.add(t)\n        return actions + out\n",
 "code_sha256": "2c0acfc867ad2feeaf07d14822d1f631d64db14e8d8c6cb1ca7f49017bbd0d5d",
 "tried": [
  "Scorer check: base via CLI on seeds 1000-1599 mean_edge=108.63974289615767 retail=136.2713209771645 arb=-27.631578081019335, failures=0 (exact match).",
  "Screen seeds 4000-4599, base mean=99.71022899357366 retail=128.67179767825917 arb=-28.961568684665334; diffs below are run-by-run vs base.",
  "Cover target 0.5x ask qty: diff -0.2218 (se 0.1153), retail -0.0706.",
  "Cover target 3x: diff -0.3094 (se 0.2690), retail +0.4985, arb worse by 0.81.",
  "Cover target sized to expected retail buy demand over 100 steps at the cover tick: diff -1.9524 (se 0.3676), retail +0.5122.",
  "Wealth cap 0.15 / 0.6 (was 0.3): diff -0.0051 / +0.0032 (cap rarely binds).",
  "Upper bound 7c / 15c (was 10c): diff +0.0158 (se 0.1429, retail -0.1056) / +0.0003.",
  "Extend cover to 1c-2c at tick 1 (when the tick-1 ammo is not already used): diff -0.0222 (se 0.1421), retail -0.1231.",
  "Offset 0.15 / 0.5 / 0.7 tick: diff +0.0077 / +0.1180 (se 0.0588) / +0.3904 (se 0.5821, retail -0.5017).",
  "Offset 0.3 tick: diff +0.0999 (se 0.0542), retail +0.0589; on confirm seeds 6000-6999 diff +0.0046 (se 0.0281), retail -0.0452: not kept alone.",
  "Target 2x: diff +0.0997 (se 0.1977), retail +0.3027; 2x+offset 0.3: +0.1542; 2x+offset 0.5: +0.1494.",
  "Target 1.5x + offset 0.3 + upper bound 15c: diff +0.0936 (se 0.0685).",
  "Target 1.5x: diff +0.1549 (se 0.1496), retail +0.2183.",
  "Selected target 1.5x + offset 0.3: screen diff +0.2107 (se 0.1477), retail +0.2225; confirm seeds 6000-6999 diff +0.2723 (se 0.1380), retail +0.0458, arb +0.226. Frozen; seeds 4000-7999 mean=98.2772584685 vs base 98.0996956804; unseen 50000-53999 diff 0.2337 (se 0.0773), retail +0.1369."
 ],
 "next": "The cover offset and target interact: try a target that grows with distance below the next ask tick (more stock when p has just crossed, less when about to cross), and an offset that depends on the one-step sd rather than a fixed 0.3 tick. Retail is mostly below 2c; the tick-1 reservoir (ydf1/f1) is the same kind of crossing cover and may gain from the same 1.5x/offset treatment. Validate with paired run-by-run differences; single-variant effects here are 0.1-0.3 with se 0.05-0.15 on 600-1000 seeds."
}