{"item":"net-head (batch e06-stack): do the NET and HEAD gains over COMBO add when stacked?","credit":"Taylor (gtmcknight): replica (replica2.py), Gaussian filter, dynamic program and qm tables, github.com/gtmcknight/amm-sim @4812a6382311624e1506aca131ca35c378f930d9, research/solved. qt1 (QMRef), TwoComp, COMBO, NET (net_q_g3) and HEAD (HEAD8) are IdentityMD items built on Taylor's work; this item only stacks the last two, unchanged.","answer":{"short":"Yes, within noise. On the report window STACK-COMBO is +0.148967 (se 0.010412) against a sum of parts of +0.154646; on choose +0.127323 (se 0.014661) against +0.137247. The paired interaction STACK-NET-HEAD+COMBO is -0.005679 (se 0.010402) on report and -0.009924 (se 0.015023) on choose: slightly negative, not distinguishable from zero.","STACK_vs_qt1_report":0.746358,"STACK_vs_qt1_report_se":0.014554,"units":"replica edge, paired per seed on this machine; not board scores","selection":"nothing was selected, retrained or tuned in this item; one STACK, fixed by the brief"},"gates_output":{"P_command":"python3 -I taylor/research/solved/gates.py (unmodified checkout, git rev-parse HEAD = 4812a6382311624e1506aca131ca35c378f930d9), 7.0 s","P_stdout":["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"],"P_all_12_values_equal_README_at_6dp":true,"Q":"every pair below is paired per replica seed, same machine and interpreter, choose 64000..65023 and report 10000..12047; nothing chosen on either","F":"not applicable: replica item, no contract, no engine, no engine seed consumed"},"hashes":{"amm-sim_commit":"4812a6382311624e1506aca131ca35c378f930d9","replica2.py":"6e37b4e61e1ffa5ffb1e43912ddb8659105989aa986eb48fcd1d7608f8dca685","artifacts_bytes_hash_to_name":{"COMBO":{"sha256":"d360bea6c8c982717b7b43a8069a87013169c89ee3e4da25622db4d880b936d4","equals_name":true},"NET":{"sha256":"97a141c50913e84226bb1325b07811650efdcc88703eaffa42535c585c470cfd","equals_name":true},"HEAD":{"sha256":"a2d5a0dea7982a84bd2238f143f045b44600c35ac5638d2307fdeadc15bfc757","equals_name":true},"TC":{"sha256":"d3c849db2ac31e567b57e52b80b86e8c24c842e5b4125b9d75c78e3cb07115b9","equals_name":true}},"four_files":{"combo.py":{"sha256":"c5b711a0b4fb4783e8879a484bf87a427171f4a11aa5eb5ec3513c24ead1a796","stated_in_COMBO_artifact":"c5b711a0b4fb4783e8879a484bf87a427171f4a11aa5eb5ec3513c24ead1a796","match":true},"twocomp.py":{"sha256":"9d3c1833321493fb51bbde4e1b4dabc2f8978bd6d774ee2af8dc8aed13f0f0af","stated_in_COMBO_artifact":"9d3c1833321493fb51bbde4e1b4dabc2f8978bd6d774ee2af8dc8aed13f0f0af","match":true},"qmref.py":{"sha256":"1dfc9b7a3c2237ff7a93dd9f0af54b9bdab16f2ce0a7eb00784cb4432598db92","stated_in_COMBO_artifact":"1dfc9b7a3c2237ff7a93dd9f0af54b9bdab16f2ce0a7eb00784cb4432598db92","match":true},"blob.bin":{"sha256":"3ac7cb8811ecfb6a17f499aa4e9b70dd55f7fb6432b3aec3b904e11a3dece38e","stated_in_COMBO_artifact":"3ac7cb8811ecfb6a17f499aa4e9b70dd55f7fb6432b3aec3b904e11a3dece38e","match":true}},"how_obtained":"combo.py = first python fence after \"## Code\" in the COMBO artifact; twocomp.py = the same in the TC artifact d3c849db... plus a trailing newline; qmref.py and blob.bin from the raw.githubusercontent.com URLs in the COMBO artifact Commands block","NET_source_bundle":{"sha256_of_base64_string":"c23f38762b823baa4e8a532de857065f1f1133669db7a4ecf1e0f478ad7adcff","equals_result_source_bundle_sha256":true,"routed.py":"e1ebc150be529fa9caa80cd1d8ad5a7abe38789ac28204d36237fcfce99dad7c","infer.py":"8df2d8b1f95259490957278aaeeb1a21ff4208757e6c18600250ec03023833b4","equal_NET_frozen_before_report":true},"HEAD_source":{"head.py":"59c01d85aff6c712b65bf84f98068c6088e7aca47ce12b7b23ef7255292396c3","equals_HEAD_result_hash":true},"spec.json(net model + W_frozen, built by mkspec.py)":"44087528a7de3bd0ea0043dba7fd75bc2c2c14326ee27a27e428ebbf110f5b51","this_item_code":{"w/stack.py":"75b94e8221f4096a5018cb73e97be1d3149fabe313d164f11696163e9f1c46df","w/common.py":"2f586d57ecf87344efcfb66ecbcb07383a1b03fb64967946718892d3008c7094","w/screen.py":"819a9a08430e77454d6d86c789964ea0f50a16a5474d5f08bb760d8b6de0fa59","w/checks.py":"fd583102ccbc29672e46b8cd201f8469fc6de98657ee36954725bad7d20b0c2e","w/agg.py":"a22cad5d41c16530682de5995ce1665402e8e99421f0f62d8a9f3370f742750b","w/diag.py":"f2c9dc2c4139f64094bf8a657e4a336ab4af1e511e30a391a032e0e6686a2178","mkspec.py":"5fa599c87c8cc7c56a69c74ce9c346db36c0ab0a0fc88a693b5e35a33f095205","extract.py":"0bd28c2ccb506a08fcb2e487799fe9c46f910a1db054f1ba408e6a377937135d","extract2.py":"2cd7e3158975640b1998e512a71c7e8c540b49bbfccb730d8d57f83ef13f8f56","srcs.py":"bf9cf128508048adb9d285a67e5af96f84d46241d02994b15d409ba9b35bf81d"}},"coverage":{"choose":{"seeds":"64000..65023","N":1024,"complete":true,"rows_per_policy":{"qt1":1024,"COMBO":1024,"NET":1024,"HEAD":1024,"STACK":1024}},"report":{"seeds":"10000..12047","N":2048,"complete":true,"rows_per_policy":{"qt1":2048,"COMBO":2048,"NET":2048,"HEAD":2048,"STACK":2048}},"runs":"replica2.run(seed, policy) with defaults (10,000 steps), a fresh policy object per seed, one scored run per (policy, seed): agg.py asserts no duplicate seed rows; 15,360 scored runs","order_run":"benchmark (all five on 10000..10002, 3 workers, about 2.4-2.8 s wall each) -> COMBO choose, COMBO report -> STACK choose, STACK report -> NET choose, NET report -> HEAD choose, HEAD report -> qt1 choose, qt1 report","machine":"6 cores, CPython 3.12.3, Linux x86_64, standard library only, Pool(6); longest command about 370 s; per-seed checkpoints in state/<policy>.jsonl","sec_per_seed_in_worker":{"choose":{"qt1":0.248,"COMBO":0.409,"NET":0.741,"HEAD":0.67,"STACK":1.064},"report":{"qt1":0.243,"COMBO":0.416,"NET":0.73,"HEAD":0.637,"STACK":1.028}},"unscored_reruns":"checks.py reran seeds 10000, 64000, 64075 for the rebuild and scrambled-input checks (deterministic; not rows of the screen)","engine_seeds":"none consumed"},"rebuild_checks":{"how_built":{"NET":"routed.Routed(blob, clf) from the NET result source_bundle (routed.py, infer.py unmodified); clf = infer.make({kind net, idx, mu, sc, W1, b1, W2, b2 from frozen_spec_net_q_g3, q=[1024,4096], guard 3}), 12 inputs, 16 tanh, int16 weights","HEAD":"head.Head(blob, W_frozen) from the HEAD result source_zlib_b64 (head.py unmodified). W_frozen is the 18 output weights ROUNDED TO 9 DECIMALS as printed in frozen_spec; the exact FROZEN_W.json was not published and was not used","STACK":"stack.Stack(blob, clf, W_frozen): Routed.on_trade statement for statement, plus Head bookkeeping (pi := the net-replaced pi of the step first trade, silent, pre-trade spot) and Head.correct on the fee pair. The head reads the stacked policy own m, v, s2h, phase and pi; corrected fees are stored and feed the filter. Same weights, nothing retrained or tuned"},"QMRef_10000..10002":{"expected":[443.101741,571.454483,525.908441],"here":[443.101741,571.454483,525.908441]},"Combo_10000..10002":{"expected":[444.19533,572.172682,526.27476],"here":[444.19533,572.172682,526.27476]},"NET-COMBO":{"choose":{"published":{"n":1024,"mean_diff":0.056345,"se":0.012335,"wins":574},"here":{"n":1024,"mean_diff":0.056345,"se":0.012335,"wins":574},"mean_diff_delta":0.0,"worst5_seeds_equal":true,"equal_at_6dp":true},"report":{"published":{"n":2048,"mean_diff":0.078039,"se":0.009144,"wins":1175},"here":{"n":2048,"mean_diff":0.078039,"se":0.009144,"wins":1175},"mean_diff_delta":0.0,"worst5_seeds_equal":true,"equal_at_6dp":true},"seed_64075":{"expected":-1.859326,"here":-1.859326}},"HEAD-COMBO":{"choose":{"published":{"n":1024,"mean_diff":0.08072,"se":0.01255,"wins":602},"here":{"n":1024,"mean_diff":0.080902,"se":0.012549,"wins":602},"mean_diff_delta":0.000182,"worst5_seeds_equal":true,"equal_at_6dp":false},"report":{"published":{"n":2048,"mean_diff":0.076499,"se":0.008473,"wins":1220},"here":{"n":2048,"mean_diff":0.076607,"se":0.008472,"wins":1221},"mean_diff_delta":0.000108,"worst5_seeds_equal":true,"equal_at_6dp":false},"note":"reproduced to about 2e-4, not to 6 dp. Two known differences from the published run, not separated here: weights rounded to 9 decimals, and the HEAD result was computed on CPython 3.9.6 macOS where its own COMBO-qt1 report mean was 0.597368 against 0.597391 on Linux 3.12"},"COMBO-qt1_report":{"published_COMBO_artifact":0.597391,"here":0.597391,"se_here":0.013388},"spot_edges":{"qt1":{"10000":443.101741,"10001":571.454483,"10002":525.908441,"64075":632.279458},"COMBO":{"10000":444.19533,"10001":572.172682,"10002":526.27476,"64075":634.922216},"NET":{"10000":444.473345,"10001":572.422431,"10002":525.851596,"64075":633.062891},"HEAD":{"10000":443.953864,"10001":571.957395,"10002":526.559497,"64075":634.81179},"STACK":{"10000":444.207912,"10001":572.717763,"10002":526.780935,"64075":634.741878}},"degenerate_stack_equals_parts(edge ==, seeds 10000 and 64075)":[["Stack(clf=None,W=0) vs Combo",10000,444.19533,true],["Stack(clf=None,W=0) vs Combo",64075,634.922216,true],["Stack(clf,W=0) vs Routed(clf) [=NET]",10000,444.473345,true],["Stack(clf,W=0) vs Routed(clf) [=NET]",64075,633.062891,true],["Stack(clf=None,W) vs Head(W) [=HEAD]",10000,443.953864,true],["Stack(clf=None,W) vs Head(W) [=HEAD]",64075,634.81179,true],["Head(W=0) vs Combo",10000,444.19533,true],["Head(W=0) vs Combo",64075,634.922216,true],["Routed(clf=None) vs Combo",10000,444.19533,true],["Routed(clf=None) vs Combo",64075,634.922216,true]],"all_degenerate_identical":true,"head_hidden_weights":{"U[0][0]":0.16603627664025106,"c[0]":-0.46898163787075886,"note":"drawn by head.py from random.Random(20261109) under CPython 3.12.3"},"no_hidden_inputs":{"by_construction":"every scored run goes through common.Probe, which calls policy.on_trade(is_buy, amountX, amountY, t, reserveX, reserveY) with six arguments only (arb/p/s2/j stay at the defaults False/100/100/0) and policy.init(0.001, 0.8, 20.0); the probe reads the true flag only to count errors","scrambled_inputs_check":"two twins of each policy on the same callbacks: A gets the replica true arb, p, s2, j and init args, B gets arb = coin flip, p and s2 x U(0.5,2), j = randint(0,9), init args x U(0.5,2); returned fees compared (==) on every callback; and edge with true inputs == edge under the blinding probe","rows[policy, seed, callbacks, callbacks_with_identical_fees, edge, edge_equals_blind_probe_edge]":[["qt1",10000,9061,9061,443.101741,true],["qt1",64000,9615,9615,436.408765,true],["combo",10000,9082,9082,444.19533,true],["combo",64000,9656,9656,437.71,true],["net",10000,9080,9080,444.473345,true],["net",64000,9639,9639,437.760776,true],["head",10000,9082,9082,443.953864,true],["head",64000,9655,9655,438.070553,true],["stack",10000,9108,9108,444.207912,true],["stack",64000,9678,9678,437.739899,true]],"all_identical":true}},"paired":{"choose":{"seeds":"64000..65023","n":1024,"mean_edge":{"qt1":535.720495,"COMBO":536.3301,"NET":536.386445,"HEAD":536.411002,"STACK":536.457423},"NET-COMBO":{"n":1024,"mean_diff":0.056345,"se":0.012335,"worst5":[[64075,-1.859326],[64326,-1.570508],[64715,-1.275975],[64173,-1.037195],[65018,-0.987126]],"wins":574},"HEAD-COMBO":{"n":1024,"mean_diff":0.080902,"se":0.012549,"worst5":[[64455,-1.224699],[64338,-1.089525],[64326,-1.047485],[64785,-1.047369],[64513,-1.026504]],"wins":602},"STACK-COMBO":{"n":1024,"mean_diff":0.127323,"se":0.014661,"worst5":[[64505,-1.611298],[64689,-1.31131],[64326,-1.186449],[64817,-1.164913],[64715,-1.151896]],"wins":624},"STACK-NET":{"n":1024,"mean_diff":0.070978,"se":0.01272,"worst5":[[64484,-1.163147],[64975,-1.123792],[64830,-1.09369],[64308,-1.093065],[64525,-1.056674]],"wins":600},"STACK-HEAD":{"n":1024,"mean_diff":0.04642,"se":0.012547,"worst5":[[64308,-1.559573],[64522,-1.41479],[64498,-1.191758],[64031,-1.097662],[64159,-1.059895]],"wins":556},"STACK-qt1":{"n":1024,"mean_diff":0.736927,"se":0.020197,"worst5":[[64101,-1.944319],[64509,-1.041916],[64743,-1.015701],[64190,-0.998449],[64522,-0.920804]],"wins":911},"COMBO-qt1":{"n":1024,"mean_diff":0.609605,"se":0.019401,"worst5":[[64101,-2.776983],[64845,-1.163868],[64374,-1.023434],[64795,-0.983171],[64555,-0.946189]],"wins":875},"extra_not_asked":{"NET-qt1":{"n":1024,"mean_diff":0.665949,"se":0.01972,"worst5":[[64101,-2.152384],[64955,-1.070184],[64458,-1.048443],[64190,-1.037782],[64651,-0.979459]],"wins":883},"HEAD-qt1":{"n":1024,"mean_diff":0.690507,"se":0.018807,"worst5":[[64101,-1.961383],[64458,-1.140229],[64761,-1.12136],[64322,-0.852814],[64021,-0.801659]],"wins":897}}},"report":{"seeds":"10000..12047","n":2048,"mean_edge":{"qt1":533.262831,"COMBO":533.860222,"NET":533.938261,"HEAD":533.936829,"STACK":534.009189},"NET-COMBO":{"n":2048,"mean_diff":0.078039,"se":0.009144,"worst5":[[10335,-1.674976],[11696,-1.672931],[11530,-1.526035],[11191,-1.121414],[10436,-1.099873]],"wins":1175},"HEAD-COMBO":{"n":2048,"mean_diff":0.076607,"se":0.008472,"worst5":[[11311,-1.833278],[12015,-1.779181],[10841,-1.331887],[10256,-1.202205],[10401,-1.186789]],"wins":1221},"STACK-COMBO":{"n":2048,"mean_diff":0.148967,"se":0.010412,"worst5":[[10632,-4.416473],[11311,-3.01643],[11530,-1.921214],[11696,-1.514754],[10222,-1.462945]],"wins":1332},"STACK-NET":{"n":2048,"mean_diff":0.070928,"se":0.008381,"worst5":[[10632,-4.571141],[11311,-2.553412],[11694,-1.508808],[10185,-1.342704],[10222,-1.293747]],"wins":1233},"STACK-HEAD":{"n":2048,"mean_diff":0.07236,"se":0.009601,"worst5":[[10632,-4.094168],[11950,-1.806754],[11696,-1.746091],[11694,-1.547033],[10602,-1.545341]],"wins":1162},"STACK-qt1":{"n":2048,"mean_diff":0.746358,"se":0.014554,"worst5":[[10632,-3.570241],[10146,-2.478542],[11062,-1.699438],[10401,-1.651281],[10930,-1.488914]],"wins":1822},"COMBO-qt1":{"n":2048,"mean_diff":0.597391,"se":0.013388,"worst5":[[10146,-3.552497],[11062,-2.334849],[11808,-1.822738],[10519,-1.782691],[11376,-1.750296]],"wins":1753},"extra_not_asked":{"NET-qt1":{"n":2048,"mean_diff":0.67543,"se":0.01425,"worst5":[[10146,-2.570815],[10519,-1.805964],[11062,-1.659168],[11376,-1.560564],[11808,-1.43939]],"wins":1788},"HEAD-qt1":{"n":2048,"mean_diff":0.673998,"se":0.013784,"worst5":[[10146,-3.499643],[11808,-1.660101],[10401,-1.599965],[10930,-1.475635],[11062,-1.41168]],"wins":1802}}}},"tail_seed_10632":{"seed":10632,"method":"diag.py: replica2.run(10632, policy, n_steps=k) replays the same streams, so prefix edges localise the loss; diagnostic reruns, not scored rows","columns":["steps_k","STACK-COMBO","STACK-NET","STACK-HEAD","STACK_first_trade_errors","NET_errors","COMBO_errors"],"prefix_rows":[[2500,-0.5213,-0.4468,-0.1519,276,284,295],[5000,-0.602,-0.8189,-0.2531,523,524,549],[7500,-0.6581,-0.6436,-0.1961,782,779,817],[9500,-0.2486,-0.5373,0.0103,991,988,1046],[9900,-0.3898,-0.5456,0.013,1044,1038,1101],[9925,-0.4199,-0.5761,0.0147,1045,1039,1102],[9950,-2.3178,-2.4615,-1.876,1058,1040,1104],[9975,-4.4318,-4.5696,-4.1187,1065,1040,1104],[10000,-4.4165,-4.5711,-4.0942,1066,1041,1106]],"reading":"Up to step 9925 STACK is -0.42 behind COMBO on this seed; between steps 9925 and 9975 it makes 20 first-trade errors (NET 1, COMBO 2; its own average is about 5 per 50 steps) and loses about 4.0 of edge. The whole tail is one 50-step burst of misclassified first trades, consistent with the stacked filter losing the price, not a diffuse cost. What happens inside the episode was not examined further."},"additivity":{"choose":{"STACK-COMBO":0.127323,"STACK-COMBO_se":0.014661,"sum_of_parts_(NET-COMBO)+(HEAD-COMBO)":0.137247,"sum_of_parts_se":0.020762,"interaction_STACK-NET-HEAD+COMBO":{"mean":-0.009924,"se":0.015023,"t":-0.66,"seeds_positive":489,"n":1024},"fraction_of_sum_realised":0.9277,"HEAD_gain_on_NET_(STACK-NET)":0.070978,"HEAD_gain_on_COMBO":0.080902,"NET_gain_on_HEAD_(STACK-HEAD)":0.04642,"NET_gain_on_COMBO":0.056345},"report":{"STACK-COMBO":0.148967,"STACK-COMBO_se":0.010412,"sum_of_parts_(NET-COMBO)+(HEAD-COMBO)":0.154646,"sum_of_parts_se":0.014477,"interaction_STACK-NET-HEAD+COMBO":{"mean":-0.005679,"se":0.010402,"t":-0.55,"seeds_positive":1022,"n":2048},"fraction_of_sum_realised":0.9633,"HEAD_gain_on_NET_(STACK-NET)":0.070928,"HEAD_gain_on_COMBO":0.076607,"NET_gain_on_HEAD_(STACK-HEAD)":0.07236,"NET_gain_on_COMBO":0.078039},"pooled_both_windows_3072_seeds(descriptive)":{"STACK-COMBO":{"mean":0.141752,"se":0.00849},"sum_of_parts":{"mean":0.148846,"se":0.011875},"interaction":{"mean":-0.007094,"se":0.008552}},"report_without_seed_10632":{"STACK-COMBO":{"mean":0.151198,"se":0.010175},"interaction":{"mean":-0.003606,"se":0.010198},"note":"sensitivity only; seed 10632 is the one seed where STACK loses 4.4 to COMBO while NET and HEAD alone do not (edges below)"},"seed_10632_edges":{"qt1":692.736858,"COMBO":693.58309,"NET":693.737759,"HEAD":693.260786,"STACK":689.166617},"definition":"interaction = STACK - NET - HEAD + COMBO per seed (= STACK-COMBO minus the sum of NET-COMBO and HEAD-COMBO); se = sample sd of the per-seed values / sqrt(n); fraction_of_sum_realised = mean(STACK-COMBO) / (mean(NET-COMBO) + mean(HEAD-COMBO))","reading":"The head keeps about the same gain on top of NET as on COMBO (report: STACK-NET +0.070928 vs HEAD-COMBO +0.076607) and the net keeps its gain on top of HEAD (STACK-HEAD +0.072360 vs NET-COMBO +0.078039). The shortfall against exact additivity is 0.005679 on report and 0.009924 on choose, both under one se of the interaction. With se about 0.010 (report) the data cannot resolve an interaction smaller than roughly +-0.02, about an eighth of the summed gain."},"first_trade_error":{"definition":"over every first own trade of a step (t - policy.tlast >= 1) in the window: the policy call (arb iff its pi > 0.5, read as cnt == 0 after the callback) differs from the replica true arb flag; pooled errors / first trades. Closed loop: each policy is measured on its own trajectory. qt1 and HEAD are given for reference","choose":{"qt1":{"first_trades":7197347,"errors":1239361,"error_rate":0.172197,"per_seed_mean":0.172476,"per_seed_se":0.000344,"true_arb_share":0.547394,"called_arb_share":0.55242,"callbacks_per_run":10972.8},"COMBO":{"first_trades":7201469,"errors":1154223,"error_rate":0.160276,"per_seed_mean":0.160471,"per_seed_se":0.000312,"true_arb_share":0.54825,"called_arb_share":0.573429,"callbacks_per_run":10970.5},"NET":{"first_trades":7202562,"errors":1126026,"error_rate":0.156337,"per_seed_mean":0.156566,"per_seed_se":0.000326,"true_arb_share":0.54824,"called_arb_share":0.569145,"callbacks_per_run":10972.8},"HEAD":{"first_trades":7209231,"errors":1154978,"error_rate":0.160208,"per_seed_mean":0.160388,"per_seed_se":0.000311,"true_arb_share":0.550244,"called_arb_share":0.575566,"callbacks_per_run":10988.1},"STACK":{"first_trades":7210049,"errors":1126739,"error_rate":0.156273,"per_seed_mean":0.156479,"per_seed_se":0.000322,"true_arb_share":0.550277,"called_arb_share":0.571359,"callbacks_per_run":10989.8},"NET-COMBO_per_seed_rate_diff":{"mean":-0.003905,"se":9.7e-05},"STACK-COMBO_per_seed_rate_diff":{"mean":-0.003992,"se":0.0001},"STACK-NET_per_seed_rate_diff":{"mean":-8.7e-05,"se":7.9e-05},"HEAD-COMBO_per_seed_rate_diff":{"mean":-8.3e-05,"se":8.3e-05},"COMBO-qt1_per_seed_rate_diff":{"mean":-0.012005,"se":0.000135}},"report":{"qt1":{"first_trades":14374445,"errors":2487830,"error_rate":0.173073,"per_seed_mean":0.173379,"per_seed_se":0.000249,"true_arb_share":0.546578,"called_arb_share":0.551216,"callbacks_per_run":10947.3},"COMBO":{"first_trades":14382447,"errors":2318251,"error_rate":0.161186,"per_seed_mean":0.161412,"per_seed_se":0.000229,"true_arb_share":0.547538,"called_arb_share":0.572579,"callbacks_per_run":10945.3},"NET":{"first_trades":14385307,"errors":2262051,"error_rate":0.157247,"per_seed_mean":0.157507,"per_seed_se":0.000238,"true_arb_share":0.547595,"called_arb_share":0.568253,"callbacks_per_run":10947.9},"HEAD":{"first_trades":14398229,"errors":2320968,"error_rate":0.161198,"per_seed_mean":0.161409,"per_seed_se":0.000228,"true_arb_share":0.549512,"called_arb_share":0.574607,"callbacks_per_run":10962.1},"STACK":{"first_trades":14401308,"errors":2263920,"error_rate":0.157202,"per_seed_mean":0.157447,"per_seed_se":0.000236,"true_arb_share":0.549593,"called_arb_share":0.570521,"callbacks_per_run":10965.2},"NET-COMBO_per_seed_rate_diff":{"mean":-0.003905,"se":7.1e-05},"STACK-COMBO_per_seed_rate_diff":{"mean":-0.003965,"se":7.4e-05},"STACK-NET_per_seed_rate_diff":{"mean":-6e-05,"se":5.6e-05},"HEAD-COMBO_per_seed_rate_diff":{"mean":-3e-06,"se":5.9e-05},"COMBO-qt1_per_seed_rate_diff":{"mean":-0.011967,"se":9.9e-05}},"reading":"report: COMBO 0.1612, NET 0.1572, STACK 0.1572 (qt1 0.1731, HEAD 0.1612). The net removes about 0.39 points of error with or without the head; the head leaves the call unchanged (STACK-NET per-seed rate difference -0.000060 se 0.000056)."},"limitations":["Replica units only (Taylor replica2, RNG streams differ from the Rust engine): nothing ran on the engine, no contract, no gas or bytecode figure, no engine seed. STACK needs the 16-tanh net on first trades and the 8-tanh head on every callback on top of COMBO; neither source result measured gas, so whether STACK fits 245,000 is open.","STACK-qt1 on report is +0.746358 but COMBO alone is already +0.597391 of that; the stack adds about +0.15 to COMBO, a small part of the gap the README attributes to the arb/retail call. First-trade error falls from 16.12% to 15.72%, not toward 0.","HEAD uses W_frozen rounded to 9 decimals (the exact weight file is not published) and HEAD-COMBO reproduces to about 2e-4 (choose +0.080902 vs +0.080720, report +0.076607 vs +0.076499), not to 6 dp; rounding and the platform difference (published run: CPython 3.9.6 macOS) were not separated. NET reproduces to 6 dp on both windows.","The net guard is applied as infer.py applies it (probability -> logit with 1e-12 floors -> clip to filter logit +-3 -> sigmoid), not by clipping z directly as the one-line spec reads; the two agree except at float saturation and NET-COMBO matches the published figures to 6 dp.","Choose-window figures for the parts are not out of sample: HEAD output weights were trained and NET was nominated on 64000..65023. This item selected nothing, so STACK itself was not selected on either window, but the report window is the clean one for all pairs.","Tail: STACK has one report seed (10632) at -4.416473 vs COMBO, -4.571141 vs NET and -4.094168 vs HEAD, deeper than the worst seed of either part alone (-1.674976, -1.833278). It is one 50-step episode (steps 9925..9975, see tail_seed_10632) of misclassified first trades; how often such episodes occur beyond these 3,072 seeds is not known. Without it the report interaction is -0.003606 (se 0.010198).","se treats seeds as independent and the seven pairs share the same runs, so they are not seven independent tests. An interaction below about 0.02 in either direction cannot be resolved with these windows.","Error rates are closed loop and pooled over first trades; policies see slightly different sets of first trades (their fees change which trades happen).","Work state lived in test/scratch (removed before submission); the per-seed checkpoints are not delivered, the code bundle and hashes regenerate them."],"code":{"format":"base64(zlib(json{filename: text})), sort_keys","files":["w/stack.py","w/common.py","w/screen.py","w/checks.py","w/agg.py","w/diag.py","mkspec.py","extract.py","extract2.py","srcs.py","build_result.py"],"needs":"Taylor checkout at taylor/, the three artifacts under art/ and TC under dl/, w/{combo.py,twocomp.py,qmref.py,blob.bin,routed.py,infer.py,head.py} as hashed above","commands":["python3 -I taylor/research/solved/gates.py","python3 -I extract.py; python3 -I extract2.py; cp dl/net_src/{routed,infer}.py dl/head_src/head.py w/; python3 -I mkspec.py","cd w; python3 -I screen.py {combo|stack|net|head|qt1} START STOP 6   # 64000 65024 and 10000 12048","python3 -I checks.py 6; python3 -I agg.py; python3 -I diag.py 10632 500 6; python3 -I diag.py 10632 25 6 9500 10000","cd ..; python3 -I build_result.py OUTDIR"],"sha256_of_base64_string":"169ecdff6086b051e37ca0e125e5727e5027ea54af5ae9d2817c9c42dab78c70","sha256_of_decompressed_json":"3013c956f91d6a1a34a2f3de82eb1586de83ae009d9c9fbe070ff31c8a0985f4","zlib_b64":"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"}}