{"item": "value-residual", "batch": "b6-learned", "track": "B", "status": "negative", "promotion": {"bar": "gain >= 0.3 over unchanged base", "met": false}, "mechanism": {"summary": "Small additive fee residual on the unchanged thrpol:ThrLattice thr=0.9 qm=qm_k1e-5.json base. Per side: fee = clamp(base_fee + 1e-4*clip(eta*(THETA.phi_side)/CURV, -cap, cap)). THETA is a 10-coefficient linear model of the gradient d(continuation EDGE)/d(fee, bps), fit offline by least squares to central differences from common-random-number action forks; CURV is |mean fork second difference| (edge per bps^2), so eta=1 is a Newton step.", "labels_offline": "forktrain.py: a stepwise copy of replica2.py (bitwise-equal edges to replica2.run on 63000/63001, check_stepper.py). On 400 sampled steps per seed, snapshot (both RNG streams, pools, price, edge, policy clone) at step start; for each of the first 2 own callbacks of that step replay 5 arms (base, bid +-2 bps, ask +-2 bps applied to the fee returned at that callback and kept as the fee in force for the filter) over H=30 future steps; label = realized own-pool edge at t+30. Retail draws do not depend on fees so arms share prices and orders exactly. Training seeds 64000..64319 (320 seeds, 256,378 side-samples, labels clipped at |q99.5|=0.01525 edge/bps). Split-half (even->odd seeds) prediction/label correlation 0.0245.", "online_features": {"const": "1", "w/50": "own displacement ln(reserveY/reserveX) - m in bps; m = base lattice posterior mean (built from the six inputs)", "R/30": "rival displacement ln(s2h)-m; s2h = base rival-spot estimate from own trades and band clip", "sd/10": "base lattice posterior sd, bps", "ph0, ph2": "phase of this call from base arb read (thr 0.9) and own call count in this step (timestamps)", "stale/10": "NEW history signal: timestamp now minus timestamp of the last own call that left the lattice a point mass (lo_i==hi_i), capped 30", "gapE/3": "NEW history signal: EWMA(0.9) of dt between first own trades of successive steps, capped 20 (timestamps only)", "hit": "+1 if this call traded on this side (isBuy -> bid), else -1", "|w|/50": "as w", "mirror": "ask features = bid features with w->-w, R->-R, hit per side; one shared THETA"}, "frozen_constants": {"THETA": [4.15532e-05, 7.72424e-07, 3.17034e-05, 2.62032e-05, -2.3281e-06, -6.14335e-06, -2.47606e-05, -8.39632e-06, 3.52524e-06, -1.40648e-05], "CURV": 1.98927e-05, "fit_ridge": 0.01, "fit_n": 256378}}, "frozen_settings": {"eta": 0.25, "cap_bps": 1.0, "thr": 0.9, "qm": "qm_k1e-5.json", "tables_and_threshold_unchanged": true, "selected_on": "63000..63255 only, frozen (vrpol.py sha256 f1ab081cc91132d4c607463184775372da316d5fc994ecd97ffc551ed812e615) before confirmation and holdout"}, "settings_tried": [{"eta": 0.5, "cap": 2, "paired_vs_base": {"n": 256, "mean_diff": -0.06778805313574798, "se": 0.027144635376883955, "sum": -17.353741602751484, "sumsq": 49.276719035558365, "worst5": [[63247, -1.206295091570837], [63164, -1.1129699035926706], [63110, -1.0799396468270857], [63044, -1.0154202583904635], [63117, -0.9963177034744604]]}}, {"eta": 1.0, "cap": 2, "paired_vs_base": {"n": 256, "mean_diff": -0.20453359308045904, "se": 0.03154918324272534, "sum": -52.360599828597515, "sumsq": 75.68601250190937, "worst5": [[63167, -1.6631365263457951], [63132, -1.5823833368174292], [63044, -1.4712630391128414], [63247, -1.3800441404954427], [63045, -1.2781568428995342]]}}, {"eta": 0.25, "cap": 1, "paired_vs_base": {"n": 256, "mean_diff": 0.02102987613507623, "se": 0.01997376950142074, "sum": 5.383648290579515, "sumsq": 26.156769294005095, "worst5": [[63223, -1.3032807397935358], [63247, -1.1086285381771859], [63045, -0.9456745017884032], [63188, -0.693015945600564], [63117, -0.6884296031512349]]}, "selected": true}, {"eta": 0.5, "cap": 1, "paired_vs_base": {"n": 256, "mean_diff": -0.013087626874393354, "se": 0.025432763012627743, "sum": -3.3504324798446987, "sumsq": 42.26861357148345, "worst5": [[63045, -1.3572729932973289], [63188, -1.1653237514022976], [63247, -1.117137313498688], [63110, -1.0566199444236304], [63098, -0.9709057423168588]]}}], "tuning": {"seeds": "63000..63255", "selected_paired_vs_base": {"n": 256, "mean_diff": 0.02102987613507623, "se": 0.01997376950142074, "sum": 5.383648290579515, "sumsq": 26.156769294005095, "worst5": [[63223, -1.3032807397935358], [63247, -1.1086285381771859], [63045, -0.9456745017884032], [63188, -0.693015945600564], [63117, -0.6884296031512349]]}}, "confirmation": {"seeds": "63256..63511", "paired_vs_base": {"n": 256, "mean_diff": -0.03987116821033254, "se": 0.018005135064497354, "sum": -10.20701906184513, "sumsq": 21.569755307675806, "worst5": [[63347, -1.1025535613463262], [63285, -0.7802105916655364], [63463, -0.773656687956759], [63302, -0.6710054996751751], [63361, -0.6293546085149728]]}}, "holdout": {"seeds": "10000..12047", "runs": "unchanged run.py through Blind, PROCS default, chunks 10000+512,10512+640,11152+640,11792+256 for both arms; scored once", "paired_vs_fresh_unchanged_base": {"n": 2048, "mean_diff": -0.023739257951222975, "se": 0.007584963455642824, "sum": -48.61800028410465, "sumsq": 242.34164661094508, "worst5": [[11266, -1.422207629684749], [11463, -1.351746052397175], [10168, -1.3420219672942721], [11845, -1.24702508757332], [10434, -1.1310354607833233]]}, "paired_vs_ref_lattice_qm": {"n": 2048, "mean_diff": 0.29915266185926825, "se": 0.011511377686218927, "sum": 612.6646514877814, "sumsq": 738.8037180008004, "worst5": [[11487, -2.143534225053827], [10942, -1.6514999155756414], [10842, -1.6111287578846714], [11857, -1.5194036682191836], [11380, -1.5139523464576996]]}, "fresh_base_vs_ref_lattice_qm": {"n": 2048, "mean_diff": 0.3228919198104912, "se": 0.01069159987528695, "sum": 661.282651771886, "sumsq": 692.7408990952625, "worst5": [[11487, -1.9115248303883163], [10942, -1.6076924222966227], [10982, -1.4457581244053017], [11380, -1.2365145499310302], [10990, -1.1504964526710637]]}, "note": "base inherited +0.32289 vs lattice reproduced exactly by the fresh base run; it is not new gain. New gain = paired_vs_fresh_unchanged_base = -0.0237 se 0.0076."}, "diagnostics": {"definition": "run.py Blind counters: misread = first own trades of a step whose is_arb differs from the true flag (base read uses thr=0.9, hence ~29%, not the 16% of the pi>0.5 lattice); price RMS = rms of (m - ln p) over all callbacks", "holdout": {"candidate": {"n": 2048, "mean_edge": 534.1200770360207, "first_trades": 14456105, "first_trade_misread": 0.2878525716297716, "callback_price_rms_bps": 13.338509887286438}, "base": {"n": 2048, "mean_edge": 534.1438162939719, "first_trades": 14472181, "first_trade_misread": 0.28883400504733875, "callback_price_rms_bps": 13.277152756808208}}, "confirmation": {"candidate": {"n": 256, "mean_edge": 529.1140854047158, "first_trades": 1804706, "first_trade_misread": 0.2884397791108358, "callback_price_rms_bps": 13.333648643488972}, "base": {"n": 256, "mean_edge": 529.1539565729261, "first_trades": 1806420, "first_trade_misread": 0.28956721028332283, "callback_price_rms_bps": 13.271076356252479}}, "tuning": {"candidate": {"n": 256, "mean_edge": 527.189560201412, "first_trades": 1798488, "first_trade_misread": 0.28830439791647205, "callback_price_rms_bps": 13.252089270246625}, "base": {"n": 256, "mean_edge": 527.1685303252768, "first_trades": 1800460, "first_trade_misread": 0.28926441020628063, "callback_price_rms_bps": 13.191877082504835}}}, "checks": {"zero_change_bitwise_fees_and_edge": {"seeds": [63000, 63005], "callbacks": 63749, "identical": true}, "hidden_input_independence": {"replay_six_inputs_identical": true, "callbacks": 63589, "on_trade_params": ["self", "is_buy", "ax", "ay", "t", "x", "y"], "needs_flag_with_oraclearb_opt": false, "oraclearb_in_opts_after_init": false, "frozen_policy_calls_whose_fees_differ_from_base_on_same_inputs": 63589}, "per_run_reset_identical": true, "stepper_parity": "forkable stepper edge == replica2.run edge == thrpol edge bitwise on seeds 63000, 63001", "needs_flag": "disabled: VRes.needs_flag=False; oraclearb opt is dropped at construction", "no_seed_or_hidden_inputs_online": "on_trade takes exactly the six afterSwap inputs; THETA/CURV are constants; labels and forks exist only in forktrain.py/fit.py", "commands": "every command under 470 s (longest ~350 s); plain Python, no acceleration used"}, "limitations": ["Labels are on-policy first-order gradients around the base over a 30-step horizon; the long-run effect of a changed fee on belief/rival state beyond 30 steps is not in the label.", "Signal is weak (split-half corr 0.0245): 320 training seeds; more seeds or a longer horizon were not tried within the time budget.", "Larger steps lost monotonically on tuning (eta 1 cap 2: -0.20); the selected small step was +0.021 se 0.020 on tuning, -0.040 se 0.018 on confirmation and -0.024 se 0.0076 on holdout: the tuning gain was noise.", "Gas is an estimate, not measured: the base lattice filter itself has no Solidity port."], "incremental_cost": {"operations_per_call": "2 dot products of 10 terms (20 mul + 20 add), 1 abs, 2 clips, 2 fee adds + clamps, 1 EWMA update, 1 compare/store of pin timestamp; w, R, sd, phase are already computed by the base", "storage_slots": "+1 (pin timestamp uint32 and gapE fixed-point packed in one slot)", "gas_estimate": "LABELED ESTIMATE, not measured: ~2,000-4,000 gas per afterSwap on top of the base port (one extra SLOAD/SSTORE of a packed warm slot plus ~60 arithmetic ops); constants inline in code"}, "conclusion": "Negative. A fork-trained additive value residual with two new observable history signals does not improve the thr=0.9 lattice base; the frozen setting loses 0.024 (se 0.0076) on the 2048-seed holdout. Not promoted.", "code_zb64": "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", "code_sha256": "30d675032f927ad994c2ec49d17e2a330a8db1416aed6736fe8578756f69346b", "code_sha256_note": "sha256 of the uncompressed USTAR tar", "code_files": {"vrpol.py": "f1ab081cc91132d4c607463184775372da316d5fc994ecd97ffc551ed812e615", "thrpol.py": "663965707d4f20f81ab0ade8ed510742a330605fd9e889d426db1d920abc8958", "forktrain.py": "53ff1602f2207c11264605e4204c18aaaf580d4c3e73809222b1ab28e2aaa730", "fit.py": "c4c6f4467502ae32017cc9bfb0b55340cab943f84dc4dde5d4d986b77ec56a16", "check_stepper.py": "e1ced082eb5c966ac34171410ad772bcf4a4d9222adc328224b4b5e180094ef4", "checks.py": "e703708d81015d383bffe54e201e1107e6948521da19e23beb59a5995afa87e3", "report.py": "89403fea0135568e7b9e835aece85efcda4146d880510ee048ef2e4722a8461d", "REPRODUCE.md": "d23039b711c9030b3b8ea70d9e9af02d2acd6c2c95276d2c4f475c15550487a4"}, "provenance": {"solved_folder": "https://raw.githubusercontent.com/gtmcknight/amm-sim/e65314f88de945f6d055bfc2aab01c482ab6570e/research/solved", "base_artifact": "https://api.imd.fun/artifacts/c9d678abb0ed0ee3a31b13a8203b6ee993896db0b6a3875c5c4f52a369bf0434 (thrpol.py sha256 663965707d4f20f81ab0ade8ed510742a330605fd9e889d426db1d920abc8958, rival-policy modification ignored)"}}