# Merge 03 of r2-deepen-b All 12 item results were present and parsed. The object below has `rows`, `top` and `notes` as the brief asks. Every number comes from the item files listed under Sources. **Reading it.** `top` is a ranking, not a promotion. Neither row in it gained twice its standard error: keep-band is +0.23 (SE 0.33), and rest-below-gap is slightly negative. B, `baef955e…`, stays the current best on this evidence. Promotion needs the finalist seeds, which no item used. ## Judgment calls and open points - **`low-p-ask-boost` is flagged on `t_n`.** Its `t_n` is 20 and its `h_n` is exactly 500. The brief says "n under 500" without naming which n, so I applied it to both. If it meant `h_n` only, this row is unflagged and takes second place in `top` at +0.18 (SE 0.097), replacing rest-below-gap. Its code is in the item file listed below, and its full change from B is shown after this list. - **`low-p-ask-boost` was not separated in tuning.** All three c values scored 0.0 (SE 0.0) on those 20 seeds, so c=1.5 was frozen without a tuning result behind it. The item says tuning must be repeated before promotion. - **`low-p-ask-boost` used a reduced holdout.** It ran 210000..210499, with an incumbent mean of 118.28, so its `h_diff` covers different seeds from the full-H rows. It is ranked by `h_diff` as the brief says, but it is not strictly comparable with them. The incumbent-mean check covers full-H rows only, so this value does not trigger that flag. - **Two rows carry a different B mean.** `no-uncovered-late` and `sticky-ahead` both report 106.5397853931196 on H, against 106.5366543275672 for the other nine full-H rows. Same B, same stated seeds and simulator commit, so this should not happen. `no-uncovered-late` also differs on T (95.440623547612 against 95.4853685513742). The cause is not known and I did not rerun anything. Both rows are flagged as the rule requires. Both have negative `h_diff`, and neither would have reached `top`. - **`jump-constants` is not flagged.** It reports its means rounded to 6 decimals, and its 106.536654 equals 106.5366543275672 at that precision. I compared all rows at 6 decimals. - **One planned variant was not run.** `sig-diffusion` skipped sig=0.012 for lack of CPU time, per its `tried` list. - **Format of `h_seeds`.** It is copied as written, so its format varies between rows. Rows flagged: low-p-ask-boost, sticky-ahead, no-uncovered-late. `low-p-ask-boost` change from B (`bf3ca1d1bb3f4392f44dfef64dd0c611eaf0d82891f6cfd5da2760e7525f1a94`): ```diff --- B +++ low-p-ask-boost +ASK_BOOST = 1.5 - def qsize(loss, gain, px): + def qsize(loss, gain, px, qcap=None): - return min(P['qmax'], math.exp(mu + P['sig_n'] * inv(1 - max(tail, 1e-6))) / px) + return min(P['qmax'] if qcap is None else qcap, math.exp(mu + P['sig_n'] * inv(1 - max(tail, 1e-6))) / px) - return min(C.get('askcap', P['qmax']), qsize(b, a, t / 100.0)) + askcap = C.get('askcap', P['qmax']) + qcap = P['qmax'] + if phat < 0.05 and self.s >= 3: + askcap *= ASK_BOOST + qcap *= ASK_BOOST + return min(askcap, qsize(b, a, t / 100.0, qcap=qcap)) ``` ## Merged object ```json { "rows": [ { "key": "keep-band", "idea": "Tune only B's order-size retention band (P['keep_hi'], P['keep_lo']) across the four prescribed pairs. Keep all other source bytes unchanged. Compare each variant with B on every tuning seed 110000..1", "code_sha256": "de2707e961a0f7f4139d1f0a87e38c49a230e03a9579ef09e8dfca04a5788b68", "t_n": 500, "t_diff": 0.3258918123205995, "t_se": 0.4564621603434112, "h_seeds": "210000..210999", "h_n": 1000, "h_complete": true, "h_diff": 0.2317807803995004, "h_se": 0.3314273443889142, "h_sum_d": 231.78078039950037, "h_sum_d2": 109787.96285424184, "h_incumbent_mean": 106.5366543275672, "h_retail_diff": 1.0951654300796008, "h_arb_diff": -0.8633846496580002, "failures": [], "next": "Retain B unless a designated measure item confirms an improvement on the reserved finalist seeds. Any further band tuning should be a separate candidate with fresh permitted tuning and holdout seeds; do not revise this frozen candidate using H.", "flag": null }, { "key": "low-p-ask-boost", "idea": "Build one frozen candidate from B by multiplying the qask quantity cap by c=1.5 only when phat < 0.05 and self.s >= 3. This targets the low-probability ask region while leaving every other quote, inve", "code_sha256": "bf3ca1d1bb3f4392f44dfef64dd0c611eaf0d82891f6cfd5da2760e7525f1a94", "t_n": 20, "t_diff": 0.0, "t_se": 0.0, "h_seeds": [ 210000, 210499 ], "h_n": 500, "h_complete": true, "h_diff": 0.17981351841780122, "h_se": 0.09651769609393435, "h_sum_d": 89.90675920890061, "h_sum_d2": 2340.4250326935216, "h_incumbent_mean": 118.2761131255256, "h_retail_diff": 0.2682290500384005, "h_arb_diff": -0.0884155316208001, "failures": [], "next": "The requested 500-seed tuning batch could not be completed within the run; repeat tuning for c=1.5, 2.0, and 3.0 on all 110000..110499 before promotion. The holdout below is the permitted reduced 210000..210499 set.", "flag": "n under 500: t_n is 20; h_n is 500" }, { "key": "rest-below-gap", "idea": "rest-below-gap: B rests a YES bid one tick under the posterior p (at t-1, t=ceil(p)) only when p is within g_lo of tick t (1-g <= g_lo), so that bid fills mainly on the crossing or from retail. The ch", "code_sha256": "9e6302684fc0a0bdda971afe8b84b21f63b0082ba8f01e2287ddca13ac8cec20", "t_n": 500, "t_diff": -0.011904385797400368, "t_se": 0.09234851197627435, "h_seeds": "210000..210999", "h_n": 1000, "h_complete": true, "h_diff": -0.02084428563909947, "h_se": 0.09820858159426682, "h_sum_d": -20.844285639099468, "h_sum_d2": 9635.715057502814, "h_incumbent_mean": 106.5366543275672, "h_retail_diff": -0.1288942553208004, "h_arb_diff": 0.10804996968529987, "failures": [], "next": "g_lo is at a flat optimum near B's 0.15. 0.05 and 0.1 are within one se of 0, and widening it raises arbitrage loss sharply. Do not promote this candidate. Leave g_lo at 0.15 and spend effort on probability/jump estimation or on the size (qf/ydf) of the rest-under order rather than on its trigger ga", "flag": null }, { "key": "sig-diffusion", "idea": "B (combine-cash) uses a diffusion constant P['sig']=0.02 for the one-step sd of the fair-probability logit/score model, which drives fair-value uncertainty, adverse-selection widening and the jump-vs-", "code_sha256": "ad7e1466b8197c71b6604d5f8d18303be60013190fe3a6b98aeed8ff97041cf0", "t_n": 500, "t_diff": 0.3571247958389993, "t_se": 0.26981162541689385, "h_seeds": "210000..210999", "h_n": 1000, "h_complete": true, "h_diff": -0.06990766846899955, "h_se": 0.28612483902830665, "h_sum_d": -69.90766846899956, "h_sum_d2": 81790.44316757619, "h_incumbent_mean": 106.5366543275672, "h_retail_diff": -0.28305403713810035, "h_arb_diff": 0.21314636869009984, "failures": [], "next": "sig=0.025 won T (+0.36, se 0.27) but H gave -0.07 (se 0.29): sig in 0.02..0.03 is flat; 0.015 clearly hurts (-1.49, se 0.42, mostly arbitrage). Drop sig tuning; if anything, make sig adaptive (estimate realized diffusion online from mid moves) rather than a constant.", "flag": null }, { "key": "sticky-ahead", "idea": "Vary only the sticky queue minimum ahead quantity in B: min_ahead in {1.0, 5.0, 10.0, 20.0}. A quote stays at the competitor tick when its remaining quantity ahead of that competitor meets this thresh", "code_sha256": "d16c61c7ce7c047a516479626b5bf52e63eeb29f665d86677da864f1fd0265d2", "t_n": 500, "t_diff": 0.058711061052599524, "t_se": 0.040650651367946, "h_seeds": "210000..210999", "h_n": 1000, "h_complete": true, "h_diff": -0.07015803222030038, "h_se": 0.028777592795070524, "h_sum_d": -70.15803222030033, "h_sum_d2": 832.2438467168413, "h_incumbent_mean": 106.5397853931196, "h_retail_diff": 0.026452438718400154, "h_arb_diff": -0.09661047093440006, "failures": [], "next": "Retain B with min_ahead=2.0: the frozen 5.0 threshold lost 0.07016 total edge (SE 0.02878) on H, driven by worse arbitrage edge. Prioritize another stale-quote defense in a separately assigned experiment. Do not promote this candidate or retune using H; any replication requires independently assigne", "flag": "h_incumbent_mean 106.5397853931196 unequal to the other full-H rows' 106.5366543275672" }, { "key": "mid-high-shrink", "idea": "mid-high-shrink: B with exactly one change, immediately after computing its main quote quantities: when 0.5 <= phat <= 0.8, multiply both qb and qa by c. Evaluated c=0.5, 0.7, and 0.3 against the same", "code_sha256": "e8d8a24560a249d642405f558d320d57b2b0c67c6dd7fbdf1b3dedd31c075b3f", "t_n": 500, "t_diff": -0.09402200955639997, "t_se": 0.0403652275294038, "h_seeds": "210000..210999", "h_n": 1000, "h_complete": true, "h_diff": -0.0820963495893, "h_se": 0.035105358985131424, "h_sum_d": -82.09634958929999, "h_sum_d2": 1237.8936538613607, "h_incumbent_mean": 106.5366543275672, "h_retail_diff": -0.5405410264868, "h_arb_diff": 0.45844467691429996, "failures": [], "next": "Retain B and do not promote this candidate: all three uniform shrink factors lost edge on T, and the frozen c=0.7 lost 0.0820963495893 edge on H (SE 0.035105358985131424). Its arbitrage improvement of 0.45844467691429996 was outweighed by a retail loss of 0.5405410264868. A future separately assigne", "flag": null }, { "key": "no-uncovered-late", "idea": "Keep B byte-for-byte except for one two-line guard immediately before unc is capped by ub / (1 - x): if H < 50, set ub = 0.0. This blocks funding newly added uncovered main asks during the final 49 st", "code_sha256": "9686a101b90cf5d6caf38885cab80e5c01821614fc02a318bcb9225c0ea93b2c", "t_n": 500, "t_diff": -0.19249571862560033, "t_se": 0.07433556995074914, "h_seeds": [ 210000, 210999 ], "h_n": 1000, "h_complete": true, "h_diff": -0.2475044778090995, "h_se": 0.05831534516788098, "h_sum_d": -247.5044778090995, "h_sum_d2": 3458.537269102605, "h_incumbent_mean": 106.5397853931196, "h_retail_diff": -0.22298914663549996, "h_arb_diff": -0.02451533117330004, "failures": [], "next": "Do not promote this candidate from these results. Keep B and compare the other independent round items; leave finalist seeds to the separate measurement items.", "flag": "h_incumbent_mean 106.5397853931196 unequal to the other full-H rows' 106.5366543275672" }, { "key": "kl-search", "idea": "Low-price regime of B uses kA=kL=0.15 when phat 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 if phat < C.get('scar_p', .1):\n a = max(0.0, a - C.get('scar', 0.0) * (1 - min(1.0, state.yes_inventory / C.get('stock', 3000.0))))\n return min(C.get('askcap', P['qmax']), 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 = min(C.get('bidcap', 3000.0), 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 # 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 not (C.get('recover', 0) and o.side is Side.SELL and t < comp and self.res.get(o.order_id, 0.0) > 1 and state.yes_inventory > C.get('recover_yes', 1) and state.free_cash < C.get('recover_cash', 200)) and 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 ub = min(ub, max(0.0, free - C.get('reserve', 0.0) * min(1.0, H / C.get('release', 50.0))))\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" }, { "key": "rest-below-gap", "code_sha256": "9e6302684fc0a0bdda971afe8b84b21f63b0082ba8f01e2287ddca13ac8cec20", "code": "\"\"\"Stale-quote defence with tick probes, a sub-tick belief and cheap YES stock.\n\nEvery step the arbitrageur removes any order on the wrong side of p, so tiny\ntwo-sided probes around the estimate locate p to a tick; a grid filter narrows\nthat further. Quotes sit one tick inside the competitor and are sized by the\nmarginal rule: one more share is worth quoting while the chance a retail order\nreaches it, times its edge, exceeds the expected arbitrage loss. Near p=0 a\nretail buy pays almost its whole notional as edge, so YES is held to cover low\nasks. That YES is bought when it is cheap: a large bid rests at tick 1 while p\nis above it, so the arbitrageur fills it on the crossing for about 0.1 tick a\nshare instead of nearly a full tick once p is near zero, and smaller bids sit on\nwhichever tick p is within 0.15 of. Below tick 1 the estimate of p decays with\nthe time spent there, since no probe can see it.\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.05, 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)\nP.update({'W': 50, 'ammo_pmax': 0.02, 'fy': 0.7, 'fu': 0.25, 'Hu': 500})\nC = {'W': 50, 'ammo_pmax': 0.02, 'fy': 0.7, 'reserve': 200, 'scar': 0.0025, 'fu': 0.25, 'Hu': 500}\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 if phat < C.get('scar_p', .1):\n a = max(0.0, a - C.get('scar', 0.0) * (1 - min(1.0, state.yes_inventory / C.get('stock', 3000.0))))\n return min(C.get('askcap', P['qmax']), 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 = min(C.get('bidcap', 3000.0), 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 # 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 not (C.get('recover', 0) and o.side is Side.SELL and t < comp and self.res.get(o.order_id, 0.0) > 1 and state.yes_inventory > C.get('recover_yes', 1) and state.free_cash < C.get('recover_cash', 200)) and 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 ub = min(ub, max(0.0, free - C.get('reserve', 0.0) * min(1.0, H / C.get('release', 50.0))))\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" } ], "notes": "Differences are candidate minus B on H; positive arb means less arbitrage loss. No item gained twice its SE, and no finalist seeds were used. Most size and defence changes bought arbitrage edge with more retail edge than they saved: kA 0.9 (retail -2.08, arb +1.67), pL 0.03 (-2.20, +1.94), horizon taper (-4.58, +1.85), mid-high shrink c=0.7 (-0.54, +0.46). keep-band keep_lo 0.9 made the reverse trade (+1.10, -0.86) and netted +0.23, SE 0.33. low-p-ask-boost gave +0.27, -0.09 on 500 seeds, but it had only 20 tuning seeds. jump-reset lost both sides (-4.00, -1.70). no-uncovered-late cost retail (-0.22) and saved no arbitrage (-0.02). Constants are flat near B: sig 0.025, sig_j 0.25, g_lo 0.05, pL 0.03 and min_ahead 5 all moved total edge by under 0.5 on H. Clear harm appeared further out on T: sig 0.015 (-1.49), sig_j 0.5 (-2.23), pL 0.08 (-1.51), g_lo 0.35 (-0.83), the first, second and fourth mostly through arbitrage per those items; kA 1.4 lost -1.57, mostly retail. Items suggest moving from fixed constants to online jump or diffusion estimates, and to size cuts tied to estimated jump risk or retail reach rather than to horizon or price alone. These suggestions are untested." } ``` ## Checks For all 12 items: - The SHA-256 of each `code` field matches its `code_sha256`. - `incumbent_code_sha256` is B's hash. - `h_se` and `h_diff` recompute from `h_sum_d`, `h_sum_d2` and `h_n`. - Retail plus arbitrage difference equals `h_diff`. - A line diff of each `code` against B, fetched from the URL below, shows only the change the item describes. No simulation was rerun, so the measurements themselves are the items' own. ## Sources - B, the `code` field of https://api.imd.fun/artifacts/ecbc9087b4f238fc1b5b0d52f55af073f676c038bfb6756172b1e51480ac1741 (SHA-256 of the code: `baef955ec10728839f7c3357016ec9eb0550e7ec689bbd5171b1cdd5c9e37273`) | Item | File | SHA-256 of file | |---|---|---| | rest-below-gap | `artifacts/goal/batches/r2-deepen-b/items/rest-below-gap/result.json` | `bba2878e467398dfe796dda522c2e6f5482852b5a4f1b6a9ae258c17b33838e5` | | jump-constants | `artifacts/goal/batches/r2-deepen-b/items/jump-constants/result.json` | `9c50d46e039caf3da75128e3b73a4bc4bff5f80c424f6989c39283e859d2c61b` | | sig-diffusion | `artifacts/goal/batches/r2-deepen-b/items/sig-diffusion/result.json` | `e335536a7812dce4fcde098ac9e74870668e4b274e592b51859152f78c6b8b77` | | ka-search | `artifacts/goal/batches/r2-deepen-b/items/ka-search/result.json` | `9c38d4a237ddf1597b09afd58a22b50ecd89c1b640e4be19a02d7854a148e565` | | kl-search | `artifacts/goal/batches/r2-deepen-b/items/kl-search/result.json` | `f29e2b43969027e6374a98674f0dadc36643a53529c1ac002fad8c146f3fcb16` | | horizon-size | `artifacts/goal/batches/r2-deepen-b/items/horizon-size/result.json` | `7f13ac543ae1d9256a0edb95d7bc35c4220eea5bd72f076553aaeff5bde22da8` | | jump-reset | `artifacts/goal/batches/r2-deepen-b/items/jump-reset/result.json` | `0d84d483fa14469040cb3104c30f97a7f7f7a958ff3c938a4794580d2aeb353f` | | mid-high-shrink | `artifacts/goal/batches/r2-deepen-b/items/mid-high-shrink/result.json` | `5a0719ede5ea7571913340f9809ca775164e2f88218a0c533b055a26272dc8fa` | | low-p-ask-boost | `artifacts/goal/batches/r2-deepen-b/items/low-p-ask-boost/result.json` | `4c939e813e272a98eb09d6e323c8a4ab390b52f1e94254acaeb27fb15b5dbd50` | | no-uncovered-late | `artifacts/goal/batches/r2-deepen-b/items/no-uncovered-late/result.json` | `a9ded8d26ab999ca2204d9d22fababdad2bc1e0c3cebe5431bbe7a6159941aa8` | | sticky-ahead | `artifacts/goal/batches/r2-deepen-b/items/sticky-ahead/result.json` | `c2fb3192d1c74a27d0688ff32108340e16c73523fffa3a01a45d6753b5e1511c` | | keep-band | `artifacts/goal/batches/r2-deepen-b/items/keep-band/result.json` | `727e2d35f9dad7cba01994310f8427ce4a068274bf3f4c53f8e8cf0128a97fd3` |