{"item":"information-b (batch e03-information)","credit":"Taylor (gtmcknight): replica2.py, Gaussian filter, fee rule, dp.py/qmdp.py solver, qm tables (github.com/gtmcknight/amm-sim @4812a6382311624e1506aca131ca35c378f930d9, research/solved). qt1 (QMRef), TwoComp (TC) and COMBO are IdentityMD items built on Taylor's work and were used unmodified.","status":"complete; replica only (plain python3 -I, CPython 3.14.4); no contract, no engine seed used","headline":{"chosen_live":"kappa=1e-5 (IG2 tables), chosen only on choose 64000..65023 by C-COMBO; frozen before report","finding":"No kappa beats COMBO live. Best (kappa=1e-5) is C-COMBO -0.028803 (se 0.013314) on choose and -0.016066 (se 0.009024) on report; kappa=0 is -0.27..-0.28; kappa=3e-5 about -1.04..-1.09; kappa=1e-4 about -16.9. Higher kappa lowers the first-call error rate (16.2% -> 15.9% -> 15.1% -> 10.3%) but the extra pins cost far more than the information returns. With the true flag, kappa=1e-5 gives Cflag-Flag +0.102716 (se 0.007554) on report, so the information weight helps slightly only when the classification is already right. The tables and their information weight are not where the first-call loss can be won back: on report Flag-COMBO is +2.570198 (se 0.020763) with the same tables.","report_C_1e-5_minus_qt1":0.58119,"report_COMBO_minus_qt1":0.597256},"hashes":{"source_commit":"4812a6382311624e1506aca131ca35c378f930d9 (git rev-parse HEAD after checkout)","inputs_research_solved":{"README.md":"02d2b51f17adbb5411a2a67f7a37255143ba381a73ff10abba557d7d23c0cef2","gates.py":"603280c1f595ca163ffaf2ba1ebdc7945fdb08dabae67fc53c922d39e1cce604","replica2.py":"6e37b4e61e1ffa5ffb1e43912ddb8659105989aa986eb48fcd1d7608f8dca685","evalpol.py":"6e67667bfed7798bdd3384652a6efc6ba0b1fce653740d0f9af2bcbcb8e6a27c","real.py":"1305b5333731c046c3e6736cc2578eff4635c88132a39c22f5780d78aef2c81e","latt.py":"925c0fe996b19fd51fb79a85d5e4dba4bc2f5453d0a156cc1e480f65a6a00cc8","dp.py":"ca4e7c378d23c46c7def4716611135c471a831d15234b984fe30d58d9eec5734","qmdp.py":"63b8c35048718c37eb0a5dae9e70849fa3af257c335e4a2e3a625c833f1dc1eb","pol_mid.json":"efbb5ee102db4d312f64565d9bf7232b6becbe02b624164f744a402bbbf2983b","qm_k1e-5.json":"5ff53e42ca87390e5f65d1caa3f7a480e67a8212fb0670274dfd562b05ba1afd"},"artifacts_sha256_equal_url_suffix":{"qt1":"8a6e303b662e1a5ea9bb47f31acedd3988ef65b3ddb66d074517aa59ad41ca40","TC":"d3c849db2ac31e567b57e52b80b86e8c24c842e5b4125b9d75c78e3cb07115b9","COMBO":"d360bea6c8c982717b7b43a8069a87013169c89ee3e4da25622db4d880b936d4","QMS1":"17d249ab0c33fc44931d9b105cf3f9e3846a560bd518b67310c2a56defacdecc","all_match":true},"extracted":{"qmref.py (qt1 \"## Python reference\" fence)":"1dfc9b7a3c2237ff7a93dd9f0af54b9bdab16f2ce0a7eb00784cb4432598db92","twocomp.py (TC \"## Code\" fence)":"9d3c1833321493fb51bbde4e1b4dabc2f8978bd6d774ee2af8dc8aed13f0f0af","combo.py (COMBO \"## Code\" fence)":"c5b711a0b4fb4783e8879a484bf87a427171f4a11aa5eb5ec3513c24ead1a796","blob.bin (QMS1 \"## Data\" base64)":"3ac7cb8811ecfb6a17f499aa4e9b70dd55f7fb6432b3aec3b904e11a3dece38e","Strategy.sol (qt1)":"c68887cff61180e12ba2b1ceb333edf76a830f91f63b5d775a8806fb9ec08aca"},"published_match":"qmref.py 1dfc9b7a..db92, twocomp.py 9d3c1833..0f0af, combo.py c5b711a0..a796, blob 3ac7cb88..e38e, qt1 Solidity c68887cf..ec08aca: all equal the published SHA256s"},"P":{"gates_py_output":["seed   perfect-info      gaussian+plain    gaussian+qm       lattice+qm","10000  448.261189  443.455598  443.522608  443.663520","10001  576.779199  571.463409  571.623551  571.977293","10002  531.886497  525.168028  525.865859  526.411631"],"gates_match_README_6dp":true,"qt1_is_QMRef_blob":{"10000":"443.101741","10001":"571.454483","10002":"525.908441","match":true,"note":"QMRef(blob.bin) from qmref.py, not real.RealPolicy (RealPolicy qm gives 443.522608 etc.)"},"COMBO_10000_10002":["444.195330","572.172682","526.274760"],"COMBO_matches_published":true},"controls":{"VN_regeneration":"DP_SAVEVN=1 DP_AMINL=-12 DP_NA=43 python dp.py solve 0.8 9.45 20 pol_mid.json -> 536.821 per run, 110 sweeps, 327 s on 4 cores; regenerated pol_mid.json A0..B2 tables identical to the repo file","qm_k1e-5_regeneration":"qmdp.py pol_mid.json qm.json 1e-5 (IG2 unset) from the regenerated VN: all ten A/B arrays max |diff| 0.0 vs repo qm_k1e-5.json; only the stored gain g differs in the 15th digit (0.05368206098114668 vs ...4493), so bytes differ","kappa0_level0_vs_pol_mid":"max |A0c(s=0)-A0| 0.005 bps and |A1s(s=0)-A1| 0.005 bps (2-dp rounding), as qmdp.py prints","COMBO_report_vs_published":"my COMBO mean 533.860143 / qt1 533.262886 / COMBO-qt1 +0.597256 se 0.013389 vs published 533.860222 / 533.262831 / +0.597391 se 0.013388; 10000..10002 identical at 6dp. Residual ~1e-4 in means not traced (likely CPython 3.14.4 here vs 3.12.3 there; last-bit libm/random differences on a few seeds). All pairs here are computed on my own runs, same interpreter, same seeds.","hidden_input_invariance":{"C_0":{"true_hidden":572.7551677933063,"scrambled_hidden":572.7551677933063,"no_hidden":572.7551677933063,"identical":true},"C_1e-5":{"true_hidden":573.9214026252955,"scrambled_hidden":573.9214026252955,"no_hidden":573.9214026252955,"identical":true},"C_3e-5":{"true_hidden":573.6679687001966,"scrambled_hidden":573.6679687001966,"no_hidden":573.6679687001966,"identical":true},"C_1e-4":{"true_hidden":557.4503443312615,"scrambled_hidden":557.4503443312615,"no_hidden":557.4503443312615,"identical":true},"COMBO":{"identical":true,"edge":573.8110971184676},"Flag(oracle, expected to differ)":{"true_flag":577.2148855551014,"inverted_flag":391.37500366593633}},"live_isolation":"In the screen every live policy (qt1, COMBO, C_k) is called through Counted(live=True) which passes only (is_buy, ax, ay, t, x, y); arb/p/s2/j reach only Flag and Cflag_k. init() args: QMRef.init ignores them (returns INIT); invariance test passes scrambled init args."},"information_formula":{"objective":"per cell (w, R, phase ph, rival mode, belief sd s): (a,b)* = argmax_{a,b} sum_e bel_s(e) V_N[ph](w-e, w2(e), a-e, b+e) + kappa*(1-hs[ph]) * IG2_s(a,b), bel_s = discretised N(0,s^2) on the 5 bps lattice, hs = dp.phase_probs(lam) (phase weighting as qmdp.py)","IG2_bps2":"IG2(a,b) = tau^2 - Z*V - amb_a - amb_b, tau^2 = s^2 + sigma^2; Z = Phi(a/tau) - Phi(-b/tau) (no-arb mass), V = variance of N(0,tau^2) truncated to (-b,a); ambiguity on each side: amb_a = 0.5*sum_d f_arb(a+d) R(d)/(f_arb(a+d)+R(d)) * (a+d-mu)^2 with R(d) = Z*rho*f_ret(d), rho=0.26, f_ret lognormal(median 11.12 bps, log-sd 1.176), f_arb = N(0,tau^2) density, mu = truncated mean; amb_b mirrored with -(b+d). Crossed quotes (a+b<=0) or Z<1e-9: IG2=tau^2 (pinned). Code: qmdp.igtab2 with IG2=1.","between_component_variance":"C quotes on COMBO's two-component belief: every single lookup uses TwoComp.moments, v = sum w_i(v_i + m_i^2) - m^2 = within + between-component variance (check: (0.3,lp,0),(0.7,lp+10bps,1e-6) gives 0.7e-6 + 0.21e-6 = 9.1e-7 exactly); on ambiguous first trades (0.005<pi<0.995) the arb branch (pi, lp, sd 0, phase 0) and retail branch (1-pi, mt, sqrt vt, phase 1) are looked up separately and offsets pi-averaged (COMBO rule); filter unchanged.","what_is_not_done":"The exact mixture argmax (argmax of pi*U_arb + (1-pi)*U_ret over (a,b)) was not implemented: it needs the U surfaces per cell, which the tables do not store; C uses COMBO's pi-weighted offsets of the per-branch optima instead."},"point_mass_zero_weight_checks":{"moments_point_mass":{"m":4.6,"v":0.0,"ok":true},"moments_zero_weight_equals_single":{"ok":true,"zero_weight":[4.6,3e-07],"single":[4.6,3e-07]},"moments_between_component":{"v_mix":9.100000000001403e-07,"within":7e-07,"between":2.0999999999999997e-07,"ok":true},"pi_1_branch_quote":{"mixed":[33.648,23.375199999999996],"branch":[33.648,23.375199999999996],"ok":true},"pi_0_branch_quote":{"mixed":[33.403299999999994,21.9142],"branch":[33.403299999999994,21.9142],"ok":true}},"params":{"kappas_predeclared":["0","1e-5","3e-5","1e-4"],"IG2":1,"DP_AMINL":-12,"DP_NA":43,"solve":"lam 0.8, sigma 9.45 bps, size 20","SLEV":[0,4,8,12,16,20,26,34],"filter":"TwoComp DUAL_CUTS=2 unchanged","replica":"replica2.run defaults, n_steps=10000, cfg=None, qcap=None","chosen_kappa":"1e-5","Cflag_settings":"same tables as the chosen C (all four reported)"},"tables":{"qm_IG2_k0.json":"5b5881f73f450b8afbdc72ecdbda290a9d5d266384ba3167308acc445f13eb17","qm_IG2_k1e-5.json":"eb4bf03433666ac371d968993a9c958b0721ac97e43a7d0e89d02e22aa4d858d","qm_IG2_k3e-5.json":"59364b9347898446956e7c02a17626e1567f086f26921e2d5554fc4ff851d562","qm_IG2_k1e-4.json":"e40b8fb63a2bc2e002d2b186898321648cd4a53d764afff4317db3affd8e7757","pol_mid.json (regenerated)":"10a44d234471f6283f9d0f00f3a4ab39ca42c1a06e1eee351b1c5cb5aec2aaef","qm_k1e-5 IG1 regenerated":"ccde8e8c587296bcd49816ad805e1a6e6aa962d31b27c2fe4fd3d3d299104d14","pol_mid_VN0.npy":"dc602095804048829da58040ce5b40dee25b25edaeeba921f45033e9894072b6","pol_mid_VN1.npy":"f703299597138864e18cd677741ec4b5635791188c6d468e7a0df8b04a8f8967","pol_mid_VN2.npy":"f1cd9cbc95cd25effe33b85467de08804f4c7cb26d53b7474a6381159182fb8b","regeneration":"cd research/solved copy; uv venv --python 3.12; pip numpy 2.5.4 numba 0.68.1; DP_SAVEVN=1 DP_AMINL=-12 DP_NA=43 python dp.py solve 0.8 9.45 20 $PWD/pol_mid.json; for k in 0 1e-5 3e-5 1e-4: DP_AMINL=-12 DP_NA=43 IG2=1 python qmdp.py $PWD/pol_mid.json $PWD/qm_IG2_k$k.json $k (11-13 s each). VN .npy files (263 MB) and tables (8 MB each) are not delivered; regenerate with these commands."},"choose_64000_65023":{"coverage":{"n_rows":1024,"seeds":"64000..65023","missing":0,"duplicates":0,"rows_sha256_sorted_canonical":"baa9e0fe2597eac888819d4cc9aafcc690cfafdc696199e8e37f4d5369478ded","file_sha256":"96ce8cc7d3fa10f45f0c5f7a4558850685b6bf5e373dd46ca015d07b47490523"},"mean_edge":{"qt1":535.720495,"COMBO":536.33012,"Flag":538.833479,"C_0":536.061998,"Cflag_0":538.832005,"C_1e-5":536.301318,"Cflag_1e-5":538.930445,"C_3e-5":535.238781,"Cflag_3e-5":538.362635,"C_1e-4":519.40904,"Cflag_1e-4":525.143537},"first_call_errors":{"qt1":{"wrong":1239361,"total":7197347,"rate":0.172197},"COMBO":{"wrong":1154220,"total":7201467,"rate":0.160276},"Flag":{"wrong":0,"total":7192654,"rate":0.0},"C_0":{"wrong":1137671,"total":7057838,"rate":0.161193},"Cflag_0":{"wrong":0,"total":7065340,"rate":0.0},"C_1e-5":{"wrong":1135476,"total":7184038,"rate":0.158055},"Cflag_1e-5":{"wrong":0,"total":7166996,"rate":0.0},"C_3e-5":{"wrong":1109320,"total":7398167,"rate":0.149945},"Cflag_3e-5":{"wrong":0,"total":7358548,"rate":0.0},"C_1e-4":{"wrong":839873,"total":8155567,"rate":0.102982},"Cflag_1e-4":{"wrong":0,"total":8118812,"rate":0.0}},"edge_error_tradeoff":[{"kappa":"0","C_mean_edge":536.061998,"C_minus_COMBO":-0.268123,"C_first_call_error_rate":0.161193,"Cflag_minus_Flag":-0.001473},{"kappa":"1e-5","C_mean_edge":536.301318,"C_minus_COMBO":-0.028803,"C_first_call_error_rate":0.158055,"Cflag_minus_Flag":0.096967},{"kappa":"3e-5","C_mean_edge":535.238781,"C_minus_COMBO":-1.091339,"C_first_call_error_rate":0.149945,"Cflag_minus_Flag":-0.470844},{"kappa":"1e-4","C_mean_edge":519.40904,"C_minus_COMBO":-16.921081,"C_first_call_error_rate":0.102982,"Cflag_minus_Flag":-13.689942}],"paired":{"COMBO-qt1":{"n":1024,"mean_diff":0.609625,"se":0.019403,"worst5":[[64101,-2.776983],[64845,-1.163868],[64374,-1.023434],[64795,-0.983171],[64555,-0.946189]],"wins":875},"Flag-COMBO":{"n":1024,"mean_diff":2.503358,"se":0.028557,"worst5":[[64901,-1.316929],[64003,-1.15932],[64132,-0.028623],[64778,0.009376],[64150,0.051428]],"wins":1021},"Flag-qt1":{"n":1024,"mean_diff":3.112983,"se":0.030987,"worst5":[[64322,0.08756],[64509,0.148183],[64593,0.208364],[64109,0.570966],[64636,0.581355]],"wins":1024},"C_0-COMBO":{"n":1024,"mean_diff":-0.268123,"se":0.018865,"worst5":[[64454,-2.273499],[64999,-2.063109],[64338,-1.947157],[64603,-1.813771],[64099,-1.744715]],"wins":335},"C_0-qt1":{"n":1024,"mean_diff":0.341502,"se":0.023618,"worst5":[[64348,-2.08977],[64454,-1.857222],[64022,-1.842969],[64101,-1.718222],[64707,-1.542489]],"wins":691},"Cflag_0-Flag":{"n":1024,"mean_diff":-0.001473,"se":0.015617,"worst5":[[64568,-1.8821],[64353,-1.870606],[64844,-1.595698],[64946,-1.590292],[64454,-1.404513]],"wins":489},"Cflag_0-COMBO":{"n":1024,"mean_diff":2.501885,"se":0.029261,"worst5":[[64003,-1.253522],[64778,-0.28105],[64568,0.07218],[64132,0.140286],[64103,0.155977]],"wins":1022},"Cflag_0-qt1":{"n":1024,"mean_diff":3.11151,"se":0.031877,"worst5":[[64322,0.171353],[64103,0.21074],[64778,0.339607],[64020,0.353868],[64101,0.487044]],"wins":1024},"C_1e-5-COMBO":{"n":1024,"mean_diff":-0.028803,"se":0.013314,"worst5":[[64044,-2.113044],[64003,-1.773495],[64682,-1.381315],[64458,-1.308014],[64839,-1.27451]],"wins":484},"C_1e-5-qt1":{"n":1024,"mean_diff":0.580822,"se":0.019874,"worst5":[[64101,-2.119136],[64458,-1.429545],[64348,-1.08836],[64795,-1.064959],[64698,-1.028516]],"wins":863},"Cflag_1e-5-Flag":{"n":1024,"mean_diff":0.096967,"se":0.009706,"worst5":[[64568,-1.490069],[64865,-0.918804],[64926,-0.81431],[64288,-0.790275],[64353,-0.722705]],"wins":646},"Cflag_1e-5-COMBO":{"n":1024,"mean_diff":2.600325,"se":0.028427,"worst5":[[64901,-0.764489],[64003,-0.475278],[64132,-0.220215],[64778,-0.182445],[64478,0.160232]],"wins":1020},"Cflag_1e-5-qt1":{"n":1024,"mean_diff":3.20995,"se":0.030949,"worst5":[[64322,0.025903],[64778,0.438212],[64509,0.461541],[64101,0.5993],[64875,0.624776]],"wins":1024},"C_1e-5-C_0":{"n":1024,"mean_diff":0.23932,"se":0.01821,"worst5":[[64720,-2.907327],[64044,-2.207874],[64783,-1.510961],[64920,-1.439673],[64447,-1.298489]],"wins":680},"Cflag_1e-5-Cflag_0":{"n":1024,"mean_diff":0.09844,"se":0.013102,"worst5":[[64376,-1.378507],[64549,-1.282032],[64656,-1.206996],[64395,-1.16901],[64901,-1.152268]],"wins":642},"C_3e-5-COMBO":{"n":1024,"mean_diff":-1.091339,"se":0.021061,"worst5":[[64261,-3.554097],[64326,-3.156092],[64768,-3.059449],[64568,-2.954428],[64697,-2.768348]],"wins":53},"C_3e-5-qt1":{"n":1024,"mean_diff":-0.481714,"se":0.023153,"worst5":[[64712,-2.758392],[64294,-2.67928],[64245,-2.668495],[64190,-2.618038],[64261,-2.556534]],"wins":266},"Cflag_3e-5-Flag":{"n":1024,"mean_diff":-0.470844,"se":0.017157,"worst5":[[64779,-2.662233],[64283,-2.473657],[64568,-2.004385],[64307,-1.988222],[64266,-1.905457]],"wins":193},"Cflag_3e-5-COMBO":{"n":1024,"mean_diff":2.032514,"se":0.029507,"worst5":[[64901,-1.231364],[64963,-1.136488],[64778,-1.064026],[64132,-0.974947],[64854,-0.956989]],"wins":1005},"Cflag_3e-5-qt1":{"n":1024,"mean_diff":2.642139,"se":0.031414,"worst5":[[64778,-0.443369],[64509,-0.435256],[64656,-0.343544],[64963,-0.311973],[64636,-0.310922]],"wins":1013},"C_3e-5-C_0":{"n":1024,"mean_diff":-0.823217,"se":0.028025,"worst5":[[64656,-3.924404],[64697,-3.822764],[64945,-3.655177],[64261,-3.573141],[64303,-3.347014]],"wins":186},"Cflag_3e-5-Cflag_0":{"n":1024,"mean_diff":-0.46937,"se":0.023517,"worst5":[[64656,-3.205536],[64779,-2.987831],[64376,-2.775373],[64395,-2.761312],[64494,-2.740064]],"wins":274},"C_1e-4-COMBO":{"n":1024,"mean_diff":-16.921081,"se":0.071179,"worst5":[[64689,-24.410074],[64114,-23.711641],[64303,-23.194955],[64549,-22.883591],[64553,-22.510178]],"wins":0},"C_1e-4-qt1":{"n":1024,"mean_diff":-16.311456,"se":0.070516,"worst5":[[64689,-23.815298],[64303,-23.277334],[64761,-22.220008],[64114,-22.041926],[64340,-21.945017]],"wins":0},"Cflag_1e-4-Flag":{"n":1024,"mean_diff":-13.689942,"se":0.066999,"worst5":[[64585,-20.874014],[64740,-19.711338],[64502,-19.51408],[64648,-19.42523],[64135,-19.280284]],"wins":0},"Cflag_1e-4-COMBO":{"n":1024,"mean_diff":-11.186584,"se":0.060911,"worst5":[[64740,-17.599052],[64327,-17.137403],[64585,-16.896111],[64114,-16.864446],[64247,-16.839011]],"wins":0},"Cflag_1e-4-qt1":{"n":1024,"mean_diff":-10.576959,"se":0.060334,"worst5":[[64327,-17.401121],[64247,-16.810873],[64740,-16.408463],[64162,-15.454014],[64689,-15.413789]],"wins":0},"C_1e-4-C_0":{"n":1024,"mean_diff":-16.652958,"se":0.074431,"worst5":[[64303,-24.210588],[64114,-24.175285],[64689,-24.112925],[64930,-22.898818],[64340,-22.802579]],"wins":0},"Cflag_1e-4-Cflag_0":{"n":1024,"mean_diff":-13.688468,"se":0.0709,"worst5":[[64585,-20.600939],[64135,-19.940237],[64970,-19.924337],[64995,-19.870763],[64648,-19.842509]],"wins":0}},"sec_per_run_4workers":{"qt1":0.0855,"COMBO":0.1414,"Flag":0.1022,"C_0":0.1395,"Cflag_0":0.1017,"C_1e-5":0.1402,"Cflag_1e-5":0.1027,"C_3e-5":0.1443,"Cflag_3e-5":0.1036,"C_1e-4":0.1539,"Cflag_1e-4":0.1119}},"report_10000_12047":{"coverage":{"n_rows":2048,"seeds":"10000..12047","missing":0,"duplicates":0,"rows_sha256_sorted_canonical":"0d099dd9cd6a960d721786064f30b7a7b35fd23b30bcfb8253ca7f1b7706d64b","file_sha256":"0800059fdefc09cbffe52d34e018dd6dd33d355959b0e0288d101e365bb3124d"},"mean_edge":{"qt1":533.262886,"COMBO":533.860143,"Flag":536.430341,"C_0":533.576959,"Cflag_0":536.431461,"C_1e-5":533.844077,"Cflag_1e-5":536.533057,"C_3e-5":532.820277,"Cflag_3e-5":535.960662,"C_1e-4":516.990983,"Cflag_1e-4":522.755851},"first_call_errors":{"qt1":{"wrong":2487829,"total":14374447,"rate":0.173073},"COMBO":{"wrong":2318254,"total":14382440,"rate":0.161186},"Flag":{"wrong":0,"total":14364018,"rate":0.0},"C_0":{"wrong":2283605,"total":14097015,"rate":0.161992},"Cflag_0":{"wrong":0,"total":14109343,"rate":0.0},"C_1e-5":{"wrong":2281825,"total":14348100,"rate":0.159033},"Cflag_1e-5":{"wrong":0,"total":14312067,"rate":0.0},"C_3e-5":{"wrong":2228676,"total":14774408,"rate":0.150847},"Cflag_3e-5":{"wrong":0,"total":14695434,"rate":0.0},"C_1e-4":{"wrong":1685157,"total":16294668,"rate":0.103418},"Cflag_1e-4":{"wrong":0,"total":16219086,"rate":0.0}},"edge_error_tradeoff":[{"kappa":"0","C_mean_edge":533.576959,"C_minus_COMBO":-0.283184,"C_first_call_error_rate":0.161992,"Cflag_minus_Flag":0.00112},{"kappa":"1e-5","C_mean_edge":533.844077,"C_minus_COMBO":-0.016066,"C_first_call_error_rate":0.159033,"Cflag_minus_Flag":0.102716},{"kappa":"3e-5","C_mean_edge":532.820277,"C_minus_COMBO":-1.039866,"C_first_call_error_rate":0.150847,"Cflag_minus_Flag":-0.469679},{"kappa":"1e-4","C_mean_edge":516.990983,"C_minus_COMBO":-16.86916,"C_first_call_error_rate":0.103418,"Cflag_minus_Flag":-13.67449}],"paired":{"COMBO-qt1":{"n":2048,"mean_diff":0.597256,"se":0.013389,"worst5":[[10146,-3.552497],[11062,-2.334849],[11808,-1.822738],[10519,-1.782691],[11376,-1.750296]],"wins":1753},"Flag-COMBO":{"n":2048,"mean_diff":2.570198,"se":0.020763,"worst5":[[11701,-1.138705],[11519,-0.810231],[11911,-0.365037],[10578,-0.297158],[10367,-0.244856]],"wins":2039},"Flag-qt1":{"n":2048,"mean_diff":3.167455,"se":0.022384,"worst5":[[11062,-1.300795],[10146,-0.016155],[11519,0.095586],[11376,0.277364],[10141,0.297378]],"wins":2046},"C_0-COMBO":{"n":2048,"mean_diff":-0.283184,"se":0.013205,"worst5":[[10746,-2.481013],[11076,-2.476945],[10546,-2.301893],[10181,-2.211883],[10190,-2.177797]],"wins":629},"C_0-qt1":{"n":2048,"mean_diff":0.314072,"se":0.016918,"worst5":[[10519,-2.72062],[11062,-2.33626],[11808,-2.219296],[10146,-2.067965],[10181,-2.034251]],"wins":1352},"Cflag_0-Flag":{"n":2048,"mean_diff":0.00112,"se":0.011382,"worst5":[[12006,-2.52302],[11488,-2.498502],[10208,-2.25334],[11922,-1.848748],[10357,-1.811509]],"wins":997},"Cflag_0-COMBO":{"n":2048,"mean_diff":2.571318,"se":0.022199,"worst5":[[11701,-2.916892],[11488,-1.685951],[11693,-1.389946],[10731,-0.663981],[11519,-0.586589]],"wins":2037},"Cflag_0-qt1":{"n":2048,"mean_diff":3.168574,"se":0.024006,"worst5":[[11488,-1.079967],[11701,-0.557791],[11062,-0.524536],[11693,-0.242369],[10146,-0.201848]],"wins":2042},"C_1e-5-COMBO":{"n":2048,"mean_diff":-0.016066,"se":0.009024,"worst5":[[11191,-2.095877],[11370,-1.831229],[11693,-1.468556],[10893,-1.268267],[11911,-1.250677]],"wins":971},"C_1e-5-qt1":{"n":2048,"mean_diff":0.58119,"se":0.014401,"worst5":[[10146,-3.460459],[11062,-2.315958],[11808,-1.820214],[10519,-1.779457],[11164,-1.747538]],"wins":1708},"Cflag_1e-5-Flag":{"n":2048,"mean_diff":0.102716,"se":0.007554,"worst5":[[12006,-2.101913],[10208,-1.167917],[10357,-1.031574],[10726,-0.933981],[11392,-0.905762]],"wins":1271},"Cflag_1e-5-COMBO":{"n":2048,"mean_diff":2.672914,"se":0.021316,"worst5":[[11701,-1.945788],[11693,-0.538746],[11911,-0.389702],[10731,-0.305428],[11519,-0.295766]],"wins":2041},"Cflag_1e-5-qt1":{"n":2048,"mean_diff":3.270171,"se":0.02292,"worst5":[[11062,-0.423465],[11808,-0.042483],[10731,0.253017],[10141,0.303308],[11701,0.413313]],"wins":2046},"C_1e-5-C_0":{"n":2048,"mean_diff":0.267118,"se":0.012193,"worst5":[[11810,-2.939991],[10772,-2.337231],[10915,-1.844361],[11407,-1.706567],[10526,-1.706235]],"wins":1427},"Cflag_1e-5-Cflag_0":{"n":2048,"mean_diff":0.101596,"se":0.009487,"worst5":[[10772,-2.676801],[11540,-1.429402],[10336,-1.421726],[10449,-1.393146],[10804,-1.380141]],"wins":1235},"C_3e-5-COMBO":{"n":2048,"mean_diff":-1.039866,"se":0.014767,"worst5":[[10942,-4.301696],[11519,-3.565771],[10207,-3.347559],[11019,-3.231907],[10401,-3.15363]],"wins":99},"C_3e-5-qt1":{"n":2048,"mean_diff":-0.44261,"se":0.016863,"worst5":[[10942,-3.764677],[10401,-3.566807],[10519,-3.173971],[10306,-3.088681],[10178,-3.063395]],"wins":547},"Cflag_3e-5-Flag":{"n":2048,"mean_diff":-0.469679,"se":0.012291,"worst5":[[10942,-7.327466],[11540,-2.339898],[10168,-2.301732],[10207,-2.19411],[10369,-2.184793]],"wins":357},"Cflag_3e-5-COMBO":{"n":2048,"mean_diff":2.100519,"se":0.021403,"worst5":[[10942,-2.871209],[11701,-2.762596],[10449,-1.473852],[10578,-1.404385],[11530,-1.127577]],"wins":2016},"Cflag_3e-5-qt1":{"n":2048,"mean_diff":2.697775,"se":0.022845,"worst5":[[10942,-2.33419],[11062,-0.802489],[10449,-0.735045],[10519,-0.606184],[11701,-0.403495]],"wins":2038},"C_3e-5-C_0":{"n":2048,"mean_diff":-0.756682,"se":0.020055,"worst5":[[10942,-5.264881],[11810,-4.335595],[10401,-4.071254],[10079,-3.646146],[11770,-3.624951]],"wins":402},"Cflag_3e-5-Cflag_0":{"n":2048,"mean_diff":-0.470799,"se":0.016943,"worst5":[[10942,-7.86489],[11540,-4.366641],[10449,-3.753851],[10401,-3.619028],[10772,-3.085683]],"wins":549},"C_1e-4-COMBO":{"n":2048,"mean_diff":-16.86916,"se":0.048777,"worst5":[[10942,-30.175087],[11019,-24.736473],[10920,-23.916945],[10960,-23.759862],[10659,-23.721409]],"wins":0},"C_1e-4-qt1":{"n":2048,"mean_diff":-16.271904,"se":0.048586,"worst5":[[10942,-29.638068],[11019,-24.084716],[10822,-23.985339],[10960,-23.45848],[12005,-23.388317]],"wins":0},"Cflag_1e-4-Flag":{"n":2048,"mean_diff":-13.67449,"se":0.046317,"worst5":[[10942,-29.062869],[11077,-21.40577],[11737,-19.882494],[12005,-19.842114],[10960,-19.775882]],"wins":0},"Cflag_1e-4-COMBO":{"n":2048,"mean_diff":-11.104291,"se":0.043286,"worst5":[[10942,-24.606611],[11077,-19.032068],[11737,-18.238389],[11770,-17.462256],[10659,-17.248446]],"wins":0},"Cflag_1e-4-qt1":{"n":2048,"mean_diff":-10.507035,"se":0.043485,"worst5":[[10942,-24.069593],[11770,-18.150434],[11737,-18.082487],[11077,-18.061978],[10519,-16.945569]],"wins":0},"C_1e-4-C_0":{"n":2048,"mean_diff":-16.585976,"se":0.052066,"worst5":[[10942,-31.138272],[11019,-24.447918],[11030,-24.318341],[12005,-23.940035],[10109,-23.663772]],"wins":0},"Cflag_1e-4-Cflag_0":{"n":2048,"mean_diff":-13.675609,"se":0.049756,"worst5":[[10942,-29.600293],[11077,-21.862184],[10401,-21.267231],[11737,-20.944679],[10336,-20.57656]],"wins":0}},"sec_per_run_4workers":{"qt1":0.085,"COMBO":0.1384,"Flag":0.1015,"C_0":0.1386,"Cflag_0":0.1008,"C_1e-5":0.1397,"Cflag_1e-5":0.1015,"C_3e-5":0.1437,"Cflag_3e-5":0.1036,"C_1e-4":0.1528,"Cflag_1e-4":0.1112}},"freeze":{"time_utc":"2026-11-10T04:18:54Z (report started after; choose finished 04:18:30)","kpol.py":"b5ce5240723222932ecfce1fa22708b0569d2046ea71f52e2a70d82d7c8234c3","run.py":"e8cf72ca716b3d52a768cf7b1a551f711d03bef79c7032312e9ae97f08feab3a","agg.py":"5323ebb95019f97882528f9afef4014a3b5d156651abd370287af7b029d32b4b","note":"all code/tables hashed in state/freeze.txt before the report run; unchanged after"},"source":{"kpol.py":"\"\"\"information-b: kappa sweep of quote tables under COMBO's two-component belief.\nCredit: Taylor (gtmcknight) -- replica2, Gaussian filter, fee rule, dp.py/qmdp.py solver and qm tables\n(github.com/gtmcknight/amm-sim @4812a6382311624e1506aca131ca35c378f930d9, research/solved).\nqt1 (QMRef), TwoComp and COMBO are IdentityMD items built on Taylor's work; used unmodified.\nC(kappa)     = COMBO (filter, state, pi-weighted branch quoting: unchanged) reading the full qmdp.py tables\n               regenerated at information weight kappa with IG2=1 (arb/retail-ambiguity variance drop),\n               instead of the qm-spline blob. Live: uses only its own callbacks (is_buy,ax,ay,t,x,y).\nCflag(kappa) = C(kappa) with pi := float(bool(arb)) right after the likelihood at a step's first own\n               trade (dt>=1); ORACLE diagnostic only. Flag = the same intervention on COMBO (blob tables).\nStandard library only.\"\"\"\nimport math, json, os, re, inspect, hashlib\nimport twocomp, combo\nfrom twocomp import QMRef\nfrom combo import Combo\n\nclass JTables:\n    def __init__(self, path):\n        J = json.load(open(path))\n        self.P = dict(S=J['S'], W0=J['W0'], NW=J['NW'], H=J['H_bps'], FB=J['FB'], W2L=J['W2L'])\n        self.A = {}; self.B = {}\n        for tag in ('0c', '1s', '1c', '2s', '2c'):\n            self.A[tag] = J['A' + tag[0] + tag[1]]; self.B[tag] = J['B' + tag[0] + tag[1]]\n\ndef table_key(path):\n    key = 'json:' + os.path.abspath(path)\n    if key not in QMRef._cache: QMRef._cache[key] = JTables(path)\n    return key\n\n# --- the flag intervention, applied as a one-line source patch to Combo.on_trade (everything else identical)\n_src = inspect.getsource(Combo.on_trade)\n_anchor = \"            pi = la / (la + lr) if la + lr > 0 else 0.\\n\"\nassert _src.count(_anchor) == 1\nPATCH_LINE = \"            pi = float(bool(arb))   # ORACLE: true flag, before posterior/rival/phase/quote updates\\n\"\n_fsrc = _src.replace(_anchor, _anchor + PATCH_LINE)\nimport textwrap\n_ns = dict(vars(combo)); exec(textwrap.dedent(_fsrc), _ns)\nclass ComboFlag(Combo):\n    oracle = True\nComboFlag.on_trade = _ns['on_trade']\nPATCH_SHA = hashlib.sha256(_fsrc.encode()).hexdigest()\n\nclass Counted:\n    \"\"\"wraps a policy: counts first-own-trade classification errors (truth used for labels only).\"\"\"\n    def __init__(self, pol, live=True):\n        self.p = pol; self.wrong = 0; self.total = 0; self.live = live; self.wants_j = True\n    def init(self, *a):\n        return self.p.init(*a)\n    def on_trade(self, is_buy, ax, ay, t, x, y, arb=False, p=100., s2=100., j=0):\n        first = t - self.p.tlast >= 1\n        if self.live:   # hidden inputs never reach a live policy\n            r = self.p.on_trade(is_buy, ax, ay, t, x, y)\n        else:\n            r = self.p.on_trade(is_buy, ax, ay, t, x, y, arb, p, s2, j)\n        if first:\n            self.total += 1\n            pred_arb = (self.p.cnt == 0)    # cnt stays 0 iff the filter classified the trade as arb (pi>.5)\n            if pred_arb != bool(arb): self.wrong += 1\n        return r\n","run.py":"\"\"\"Paired screen on Taylor (gtmcknight)'s replica2. usage: python3 -I run.py WINDOW START STOP WORKERS\nEach seed runs every policy once; appends one row per seed to ../state/WINDOW.jsonl; done seeds skipped.\"\"\"\nimport sys, json, time, os\nfrom pathlib import Path\nfrom multiprocessing import Pool\nW = Path(__file__).resolve().parent; SC = W.parent\nsys.path.insert(0, str(W)); sys.path.insert(0, str(SC / 'src/amm-sim/research/solved'))\nimport replica2 as R\nfrom qmref import QMRef as Q1\nfrom combo import Combo\nimport kpol\nBLOB = str(W / 'blob.bin'); KS = ['0', '1e-5', '3e-5', '1e-4']\ndef tab(k): return kpol.table_key(str(SC / 'vn' / f'qm_IG2_k{k}.json'))\ndef pols():\n    out = [('qt1', lambda: kpol.Counted(Q1(BLOB))), ('COMBO', lambda: kpol.Counted(Combo(BLOB))),\n           ('Flag', lambda: kpol.Counted(kpol.ComboFlag(BLOB), live=False))]\n    for k in KS:\n        out.append(('C_' + k, lambda k=k: kpol.Counted(Combo(tab(k)))))\n        out.append(('Cflag_' + k, lambda k=k: kpol.Counted(kpol.ComboFlag(tab(k)), live=False)))\n    return out\ndef init():\n    Q1(BLOB)\n    for k in KS: tab(k)\ndef score(seed):\n    row = {'seed': seed}\n    for name, mk in pols():\n        pol = mk(); t0 = time.perf_counter(); e = R.run(seed, pol)['edge']\n        row[name] = [e, pol.wrong, pol.total, round(time.perf_counter() - t0, 3)]\n    return row\nif __name__ == '__main__':\n    win = sys.argv[1]; a, b, nw = map(int, sys.argv[2:5]); out = SC / 'state' / (win + '.jsonl')\n    done = {json.loads(l)['seed'] for l in out.open()} if out.exists() else set()\n    todo = [s for s in range(a, b) if s not in done]; t0 = time.monotonic()\n    import multiprocessing as mp\n    with mp.get_context('fork').Pool(nw, initializer=init) as pool, out.open('a') as f:\n        for row in pool.imap_unordered(score, todo, chunksize=1):\n            f.write(json.dumps(row) + '\\n'); f.flush()\n    print(json.dumps({'window': win, 'range': [a, b], 'ran': len(todo), 'wall_s': round(time.monotonic() - t0, 1)}))\n","flag_patch":"one line inserted into Combo.on_trade after \"pi = la / (la + lr) if la + lr > 0 else 0.\": \"pi = float(bool(arb))\"; patched on_trade source sha256 9d8de7bfc585fecf9975ffd6036315562878789202c74176af7274c204def4b5"},"commands_timings":["git clone + checkout 4812a638 (verified)","curl 4 artifacts; sha256 == URL suffix","python3 -I ex.py (extract fences + base64 blob)","python3 -I gates.py: 3.8 s","python3 -I q3.py (qt1 seeds)","dp.py solve: 5m27s","qmdp.py x5: 11-13 s each","python3 -I checks.py: 4.2 s","python3 -I run.py choose 64000 65024 4: 343.0 s (11 policies/seed)","python3 -I agg.py choose; freeze","python3 -I run.py report 10000 11024 4: 349.6 s","python3 -I run.py report 11024 12048 4: 330.8 s","python3 -I agg.py report"],"limitations":["Replica only; nothing here is a board score. No policy reached +0.5 over qt1, so no contract was warranted.","C(1e-5) differs from COMBO only by full IG2 tables instead of the qm-spline (IG1) blob; the -0.016 report gap mixes the spline-vs-full and IG1-vs-IG2 effects (not separated).","Exact mixture argmax not implemented (see information_formula.what_is_not_done).","first_call_errors counts every own first trade with dt>=1; label = replica arb flag; prediction = filter pi>0.5 (cnt==0 after call). For Flag/Cflag the error is 0 by construction.","qt1/COMBO means differ from the published ones by ~1e-4 (see controls).","Only 4 kappas; no finer sweep between 0 and 3e-5."]}