{"item": "history-price", "batch": "b6-learned", "track": "B", "status": "completed (partial holdout n=768 of 2048); negative result, no promotion", "conclusion": "A ridge-learned additive correction to the quoting log-price centre from 8 compact recurrent summaries of visible callback history does not improve the thr=0.9 lattice base. Holdout 10000..10767 (n=768 per arm, only part of 10000..12047 completed): -0.0019 se 0.0087 vs fresh unchanged base. Tuning -0.0048 se 0.0136, confirmation -0.0118 se 0.0135. Far below the +0.3 promotion bar. In-sample callback price RMS fell only 13.1919 -> 13.1886 bps: the base posterior mean is close to the conditional mean given these history features, so a mean correction has almost nothing to learn.", "mechanism": {"summary": "Base thrpol:ThrLattice thr=0.9 qm=qm_k1e-5.json is unchanged: same lattice belief, same arb/retail rule (pi>0.9), same rival estimate, same tables. The only change is the quoting centre: m' = m_base + delta and w' = w - delta, w2' = w2 - delta. delta = strength * (beta . x) in bps, capped at +-10 bps. beta was fitted offline by ridge regression (lambda=1e-3*n, intercept not penalised) of the label (ln p_true - m_base) in bps on features x. The labels came from 2,803,968 callbacks of the base on seeds 63000..63255. The corrected m is also what run.py's Blind wrapper reports for the price RMS. The base lattice is never shifted, so the correction does not feed back into classification.", "features_H_24": ["1", "w=(ln s - m_base) bps", "sd bps", "phase0", "phase0*w", "side (+1 pool bought X)", "side*sd", "first*innov", "(1-phase0)*w", "w2 (rival est - m_base) bps", "synced*w2", "synced", "hi", "ls*g", "ls*g*sd", "(hz-1)*w", "(hz-1)*sd", "ls*sc", "side*hi", "ls*g*w", "rl*gs", "rl*gs*(1-synced)", "gs", "ls*sc*sd"], "memoryless_ablation_M": "The first 12 features only: current call plus base state, with no added history. Fitted on the same data.", "persistent_added_scalars_8": {"mb": "base belief mean, kept separate from the corrected m. Causal origin: the base filter's own output at the previous callback", "hi": "EWMA (0.9 per confident pin) of signed innovation innov=(lp_arb - mb_prev) bps at first trades where the base pinned (v==0). lp_arb = ln(s(1-fb_prev)) on a buy, ln(s/(1-fa_prev)) on a sell. Uses only reserves and own previous fees", "hz": "EWMA (0.9) of innov^2/(v_prev_bps2 + dt*9.45^2), capped at 25, at confident pins. A per-run sigma-ratio proxy from timestamps, reserves and own fees", "ls": "side (+-1 from isBuy) of the last confident pin", "tp": "timestamp of the last confident pin. Gives k = t - tp and g = exp(-k/8)", "sc": "surprise since the last confident pin: sum of -ln(kept lattice mass) over silent-step cuts (steps with no own trade, cut by own previous quotes), capped at 10, reset at each pin", "rl": "rival-estimate displacement w2 at the last callback where the rival estimate was synced from a retail split (base's own synced flag)", "ts": "timestamp of that synced callback. Gives gs = exp(-(t-ts)/8)"}, "online_inputs": "Only the six afterSwap inputs (isBuy, amountX, amountY, timestamp, reserveX, reserveY), plus the policy's own past fees and state. No seed, flag, true price, rival reserves, run parameters or future callbacks. Labels are used only offline in train_hp.py. No continuation forks were used. State is reset per run because each run constructs a new policy object."}, "frozen_settings": {"model": "H", "strength": 1.0, "cap_bps": 10.0, "ridge_lambda": 0.001, "A_INN": 0.9, "TAU_steps": 8.0, "thr": 0.9, "qm": "qm_k1e-5.json (unchanged)", "weights": [0.1354551275559234, -0.001998290705900429, -0.000810943221378838, -0.054782761152164114, 0.0006317385135572714, 0.09346839552571319, 0.014892031586826482, 0.0034736677381744857, -0.0026300292225193843, -0.00964507938747556, 0.016379066542060654, -0.0457976248887499, -0.012105620225906234, 0.2691601347018784, 0.09411500458072714, -0.00019320278894641762, 0.013402184722332853, 0.0011263836686857592, -0.0019475103511351899, -0.00010120877187515148, -0.00014838984790170297, 0.002948760880656999, -0.062485220003698244, -0.00020874615114504098], "weights_file_sha256": "40dde194b792ed8a15ab20f702d4699a372b46752fb0d5fafbb457fe9e468208", "selection": "Settings tried on tuning seeds 63000..63255: H strength=1 (the candidate) and M strength=1 (the memoryless ablation, not eligible for selection). H strength 1 was selected and frozen before confirmation and holdout. Only 2 of the allowed 4 settings were used because of the seat's time budget: about 1.35 replica runs/s on this seat. The holdout was scored once."}, "training_fit": {"seeds": [63000, 63255], "callbacks": 2803968, "rms_base": 13.191877082504835, "rms_H_insample": 13.188606729650742, "rms_M_insample": 13.189345437519057, "mean_label": -0.028906517477584014, "ridge": 0.001}, "tuning": {"seeds": "63000..63255", "H_strength1_vs_base": {"n": 256, "mean_diff": -0.0048426496005236075, "se": 0.013589905429012212, "sum": -1.2397182977340435, "sumsq": 12.062274891615955, "worst5": [[63060, -0.5875500730857652], [63167, -0.46313429313426013], [63166, -0.451061725294835], [63126, -0.440209576907705], [63162, -0.42863347121055995]]}, "M_memoryless_strength1_vs_base": {"n": 256, "mean_diff": -0.010953074727503731, "se": 0.0119353332486174, "sum": -2.803987130240955, "sumsq": 9.329990575014921, "worst5": [[63126, -0.49770422921517365], [63077, -0.4812763380588194], [63030, -0.4742198854159483], [63167, -0.47025579937337625], [63236, -0.42928102721555206]]}, "H_vs_M": {"n": 256, "mean_diff": 0.0061104251269801235, "se": 0.009985865028995575, "sum": 1.5642688325069116, "sumsq": 6.519116772210744, "worst5": [[63111, -0.4505063105575573], [63189, -0.4392870209137527], [63060, -0.41229995226683513], [63151, -0.40873134113087417], [63162, -0.39913708251856406]]}, "diag_base": {"n_runs": 256, "first_trades": 1800460, "first_trade_misreads": 520809, "first_trade_misread_rate": 0.28926441020628063, "callbacks": 2803968, "callback_price_rms_bps": 13.191877082504835, "mean_edge": 527.1685303252768}, "diag_H": {"n_runs": 256, "first_trades": 1800449, "first_trade_misreads": 521250, "first_trade_misread_rate": 0.289511116393744, "callbacks": 2803409, "callback_price_rms_bps": 13.190980464488902, "mean_edge": 527.1636876756763}, "diag_M": {"n_runs": 256, "first_trades": 1800394, "first_trade_misreads": 521090, "first_trade_misread_rate": 0.28943109119448296, "callbacks": 2803379, "callback_price_rms_bps": 13.188429682810888, "mean_edge": 527.1575772505494}}, "confirmation": {"seeds": "63256..63511", "H_vs_base": {"n": 256, "mean_diff": -0.011841907809869046, "se": 0.013452829861099878, "sum": -3.0315283993264757, "sumsq": 11.850184129244438, "worst5": [[63511, -1.152706465331903], [63398, -0.49166314347894513], [63506, -0.46454360436075604], [63358, -0.44446194899614966], [63306, -0.44060686694240303]]}, "diag_base": {"n_runs": 256, "first_trades": 1806420, "first_trade_misreads": 523080, "first_trade_misread_rate": 0.28956721028332283, "callbacks": 2820614, "callback_price_rms_bps": 13.271076356252479, "mean_edge": 529.1539565729261}, "diag_H": {"n_runs": 256, "first_trades": 1806568, "first_trade_misreads": 523057, "first_trade_misread_rate": 0.2895307566612494, "callbacks": 2820397, "callback_price_rms_bps": 13.268164467322844, "mean_edge": 529.1421146651162}}, "holdout": {"note": "Scored once with unchanged run.py (Blind, needs_flag not set) on 10000..10767 only: 768 of the 2048 holdout seeds per arm, because of time on this seat. Actual completed n is reported and nothing is imputed. The fresh base is thrpol:ThrLattice thr=0.9 rerun on the same seeds. The base's own lead over ref/lattice_qm.json is inherited and is not new gain.", "seeds_completed": "10000..10767", "H_vs_fresh_base": {"n": 768, "mean_diff": -0.001891601433456606, "se": 0.00868729607784332, "sum": -1.4527499008946734, "sumsq": 44.45828193601297, "worst5": [[10522, -1.1665338630435826], [10624, -0.7727090778093952], [10289, -0.7542588905869252], [10325, -0.7339004920510206], [10484, -0.6790540368951952]]}, "H_vs_ref_lattice_qm": {"n": 768, "mean_diff": 0.31039271233672333, "se": 0.01765126966967229, "sum": 238.3816030746035, "sumsq": 257.5225121599049, "worst5": [[10632, -1.411696540740536], [10522, -1.3343446383407809], [10475, -1.1256514426007698], [10419, -1.1099682695385127], [10400, -0.9472397485423016]]}, "fresh_base_vs_ref_lattice_qm": {"n": 768, "mean_diff": 0.3122843137701799, "se": 0.017425762587491296, "sum": 239.83435297549818, "sumsq": 253.76760297482195, "worst5": [[10235, -1.1086062682385318], [10632, -1.0990637980064548], [10336, -1.0721474745108708], [10317, -0.8950199458317911], [10395, -0.8856527307611941]]}, "diag_H": {"n_runs": 768, "first_trades": 5429337, "first_trade_misreads": 1569118, "first_trade_misread_rate": 0.28900729499752914, "callbacks": 8492420, "callback_price_rms_bps": 13.27293164645314, "mean_edge": 535.7815619410279}, "diag_base": {"n_runs": 768, "first_trades": 5429924, "first_trade_misreads": 1567802, "first_trade_misread_rate": 0.28873369130028337, "callbacks": 8493877, "callback_price_rms_bps": 13.272587608513835, "mean_edge": 535.7834535424614}}, "diagnostics_summary": {"holdout_first_trade_misread": {"candidate": 0.28900729499752914, "base": 0.28873369130028337}, "holdout_callback_price_rms_bps": {"candidate": 13.27293164645314, "base": 13.272587608513835}, "note": "The misread rate is run.py's count over first trades with the thr=0.9 rule, which is unchanged. It is about 29% for both arms; the 16% figure is for latt.py's pi>0.5 rule. The history-vs-memoryless comparison on tuning: H minus M = +0.0061 se 0.0100. The history features add nothing measurable."}, "checks": {"zero_change": "strength=0 gave fees identical to thrpol.ThrLattice at every callback on seeds 63000 and 63001 (0 mismatches, check_hp.py). run.py paired diff on 63000..63007 was exactly 0.0.", "hidden_input_independence": "(a) The six-input callbacks recorded on 63000 and 63001 (10283 and 10290 calls) were replayed into a fresh policy with no replica: 0 fee or m mismatches. (b) Rerunning with the hidden replica arguments garbled (flag inverted, p*1.37, s2*0.5) gave edges identical to the digit (508.19258198778823 and 443.8364872243607). The policy's on_trade is always called with the six inputs only.", "thrpol_base_sha256": "663965707d4f20f81ab0ade8ed510742a330605fd9e889d426db1d920abc8958 (verified, file unchanged; its rival-policy modification was not used)", "limitations": ["Holdout incomplete: n=768 of 2048 per arm.", "Only 2 of 4 allowed tuning settings were run (one candidate and the ablation).", "Pure Python only, no acceleration.", "Replica only, no engine seeds.", "The labels come from base-policy trajectories; the candidate's own trajectories shift slightly.", "No Solidity port, so gas was not measured."]}, "gas_estimate": {"measured": false, "label": "unmeasured estimate, incremental over whatever port of the base exists", "operations_per_call": "24-term fixed-point dot product (24 MUL + 24 ADD), 2 exp (g, gs), clamp, 2 subtractions on w and w2. On first trades: EWMA updates (about 6 MUL), 1 division. On each silent step: 1 ln of the kept mass (up to 30 per call)", "storage": "8 added scalars, packable into 2 slots (int64/int32 fields)", "gas_range_estimate": "about 3,000 to 12,000 per call typical, worst case about 80,000 with 30 silent-step ln calls. Illustrative figures only; the lattice base itself has no Solidity port under 245,000 gas"}, "reproduction": "Put the bundle's files beside run.py in the pinned solved folder (e65314f8). Train: python3 -I train_hp.py 63000 256 hp_weights_full.json; the bundled hp_weights.json has the same H, M and fit fields. Score: python3 -I run.py histpol:HistLattice <seed0> <n> out.json qm=qm_k1e-5.json thr=0.9 wts=<abs path hp_weights.json> model=H strength=1. Base: python3 -I run.py thrpol:ThrLattice <seed0> <n> base.json qm=qm_k1e-5.json thr=0.9. Checks: python3 -I check_hp.py <abs path hp_weights.json> 63000 63001", "code_zb64": "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", "code_sha256_uncompressed_tar": "9599d1fadfa401703b77392b4c355692180dacde68c2a6dc6b7ee0509d0e412a", "code_files_sha256": {"histpol.py": "d0e72e0bdd72aa50f67257b9e558513a68151081af4b9e95f804b94d8c75aa8f", "train_hp.py": "79e31c749fa57ffab41be1ec0ac55c6340de76fae3001691dcb9064c1168eae7", "check_hp.py": "dd942074854a68ff93e70e816590795354283d3faa1515f4dd709a3fd87fdd01", "thrpol.py": "663965707d4f20f81ab0ade8ed510742a330605fd9e889d426db1d920abc8958"}, "code_format": "base64(zlib(ustar tar)) of histpol.py, train_hp.py, check_hp.py, thrpol.py (unchanged base) and hp_weights.json (weights only, no tables or traces)"}