The stuff this cycle made, archived 2026-10-21 and rendered from
git show rev65-attempt47-iterations11ofx:stuff/….
cap-power-replication.mdcap-single-draw-check.mdcap-weight-floor.mdAnswer to the power half of the cycle 83 direction, independent seed. With seed 83003 and 3000 sims per n, the fixed-share cap at 0.50 of the AD sum changes power against t(3) by -0.001, +0.000, +0.001 at n=25, 50, 100, each inside two paired standard errors of zero. The 0.25 share cap loses -0.023, -0.017, -0.006: the n=25 loss is outside the 0.02 tolerance and all three are more than two SE from zero, so member-2's -0.017 at n=25 for the same cap (stuff/cap-single-draw-check.md) was on the lucky side of its own noise. Against a right-skewed alternative (standardized exp(N(0,1))) the caps are never binding (hit fraction 0.000 to 0.021) and power is unchanged or up by at most 0.011.
The moment half replicates member-2: var/mean^2 under t(3) stays above 2/3 at every n and both caps (best 1.03 at n=25, 3.26 at n=50, share 0.25). Rule 2 numbers: the post-cap top-1% largest-draw share is 0.43/0.48 (share 0.50) and 0.20/0.22 (share 0.25) at n=25/50 against the uncapped 0.99/1.00, and the cap was hit in 0.175/0.233 (share 0.50) and 0.421/0.367 (share 0.25) of t(3) samples. The cap removes single-draw dominance; the residual dispersion comes from the next-largest draws, as member-2 found.
Winsorizing was dropped here because member-2 already showed it loses 0.10 to 0.18 of power, which is far outside the tolerance.
sum_i (F_n(i) - Phi(z_i))^2 / Phi(z_i) on standardized sorted data, scaled by n^-1/2; code identical to member-2's.
law n version cap_rule mean var var/mu^2 p90 p95 p99 power top1% hitfrac
normal 25 uncapped none 0.0352 5.684e-04 0.458 0.063 0.078 0.117 0.050 0.47 0.000
normal 25 share50 share<=0.50 0.0346 4.491e-04 0.375 0.062 0.075 0.107 0.050 0.28 0.032
normal 25 share25 share<=0.25 0.0329 3.970e-04 0.367 0.059 0.071 0.099 0.050 0.20 0.363
normal 50 uncapped none 0.0265 3.156e-04 0.449 0.045 0.056 0.085 0.050 0.45 0.000
normal 50 share50 share<=0.50 0.0260 2.302e-04 0.340 0.045 0.055 0.078 0.050 0.27 0.017
normal 50 share25 share<=0.25 0.0254 2.080e-04 0.322 0.044 0.054 0.075 0.050 0.18 0.116
normal 100 uncapped none 0.0197 2.456e-04 0.634 0.033 0.040 0.060 0.050 0.34 0.000
normal 100 share50 share<=0.50 0.0193 1.222e-04 0.327 0.033 0.040 0.057 0.050 0.19 0.008
normal 100 share25 share<=0.25 0.0191 1.125e-04 0.307 0.033 0.039 0.055 0.050 0.12 0.041
t3 25 uncapped none 0.6007 1.559e+01 43.221 0.302 1.033 13.602 0.370 0.99 0.000
t3 25 share50 share<=0.50 0.0904 1.086e-02 1.328 0.202 0.307 0.525 0.369 0.43 0.175
t3 25 share25 share<=0.25 0.0759 5.908e-03 1.025 0.161 0.231 0.411 0.347 0.20 0.421
t3 50 uncapped none 5298.8927 1.563e+10 556.812 1.674 26.191 14043.444 0.603 1.00 0.000
t3 50 share50 share<=0.50 0.1300 7.793e-02 4.609 0.277 0.392 0.826 0.603 0.48 0.233
t3 50 share25 share<=0.25 0.1045 3.562e-02 3.260 0.211 0.289 0.596 0.586 0.22 0.367
t3 100 uncapped none 80191.8839 1.825e+11 28.383 106.167 20451.999 2500000.411 0.835 1.00 0.000
t3 100 share50 share<=0.50 1.0577 6.725e+02 601.089 0.426 0.654 3.010 0.836 0.50 0.317
t3 100 share25 share<=0.25 0.7258 2.989e+02 567.410 0.309 0.461 2.018 0.829 0.25 0.421
lognormal 25 uncapped none 0.2184 1.077e-02 0.226 0.357 0.417 0.530 0.952 0.11 0.000
lognormal 25 share50 share<=0.50 0.2184 1.077e-02 0.226 0.357 0.417 0.530 0.955 0.11 0.000
lognormal 25 share25 share<=0.25 0.2184 1.078e-02 0.226 0.357 0.417 0.530 0.963 0.11 0.021
lognormal 50 uncapped none 0.3140 1.527e-02 0.155 0.477 0.537 0.678 1.000 0.06 0.000
lognormal 50 share50 share<=0.50 0.3140 1.527e-02 0.155 0.477 0.537 0.678 1.000 0.06 0.000
lognormal 50 share25 share<=0.25 0.3140 1.527e-02 0.155 0.477 0.537 0.678 1.000 0.06 0.000
lognormal 100 uncapped none 0.4541 1.871e-02 0.091 0.635 0.702 0.843 1.000 0.04 0.000
lognormal 100 share50 share<=0.50 0.4541 1.871e-02 0.091 0.635 0.702 0.843 1.000 0.04 0.000
lognormal 100 share25 share<=0.25 0.4541 1.871e-02 0.091 0.635 0.702 0.843 1.000 0.04 0.000
law n version diff se |diff|<=0.02 |diff|<=2se
t3 25 share50 -0.001 0.002 True True
t3 25 share25 -0.023 0.005 False False
t3 50 share50 +0.000 0.002 True True
t3 50 share25 -0.017 0.004 True False
t3 100 share50 +0.001 0.001 True True
t3 100 share25 -0.006 0.002 True False
lognormal 25 share50 +0.003 0.001 True False
lognormal 25 share25 +0.011 0.002 True False
lognormal 50 share50 +0.000 0.000 True True
lognormal 50 share25 +0.000 0.000 True True
lognormal 100 share50 +0.000 0.000 True True
lognormal 100 share25 +0.000 0.000 True True
Files: stuff/cap-power-replication.py (reproduces everything), stuff/cap-power-replication.csv (one row per law, n, version).
Answer to the cycle 83 direction. No on the moment half, yes on the power half. Bounding the single-draw contribution to the cycle 75 gate statistic removes the runaway tail (t(3) p99 falls from 12.8 and 9444 to 0.36 and 0.51 at n=25, 50 under the 0.25 share cap) but var/mean^2 stays above 2/3 at every n and every cap tried: best is 0.91 at n=25 and 1.36 at n=50 (share cap 0.25). The fixed-share caps cost no normal-calibrated power: capped minus uncapped at n=25, 50, 100 is -0.005, +0.002, +0.001 (share 0.50) and -0.017, -0.013, 0.000 (share 0.25), all inside the 0.02 tolerance. Winsorizing the largest |draw| is not acceptable: it loses 0.17, 0.18, 0.10 of power.
Rule 2 shows why the ceiling is not restored. After the cap the largest draw's share of the AD sum in the top 1% of t(3) sims is 0.49/0.47 (share 0.50) and 0.22/0.22 (share 0.25) against the uncapped 0.99/1.00, so the cap did remove single-draw dominance; the surplus dispersion left over comes from the second and third most extreme t(3) draws, whose 1/Phi(z) weights are also unbounded. At n=100 that is explicit: with two extreme draws in one sample the share-capped statistic still reaches p99 of 2.8 and var/mean^2 in the thousands.
sum_i (F_n(i) - Phi(z_i))^2 / Phi(z_i) on standardized data, scaled by n^-1/2; identical pure-python code to cycle 82's tail-trim-check.py.stuff/cap-single-draw-check.py, output stuff/cap-single-draw-check.csv, runs in about 2 s.winsor replaces the largest |draw| by the second-largest |draw| before standardizing (winsorize quantile 1 - 1/n = 0.960, 0.980, 0.990); share50 and share25 cap any one AD term at 0.50 and 0.25 of the AD sum (the term is reduced until it equals exactly that share of the new sum).| n | variant | cap rule | mean | variance | var/mean^2 | p90 | p95 | p99 | power |
|---|---|---|---|---|---|---|---|---|---|
| 25 | uncapped | none | 0.5419 | 11.05 | 37.62 | 0.3433 | 1.077 | 12.79 | 0.372 |
| 25 | winsor | winsor q=0.960 | 0.05547 | 0.003167 | 1.03 | 0.1096 | 0.15 | 0.2847 | 0.199 |
| 25 | share50 | share<=0.50 | 0.09064 | 0.01004 | 1.222 | 0.2081 | 0.2925 | 0.5271 | 0.368 |
| 25 | share25 | share<=0.25 | 0.07532 | 0.005187 | 0.9142 | 0.1608 | 0.2221 | 0.3636 | 0.355 |
| 50 | uncapped | none | 4394 | 1.457e+10 | 754.9 | 2.554 | 33.91 | 9444 | 0.585 |
| 50 | winsor | winsor q=0.980 | 0.1021 | 0.1473 | 14.13 | 0.1499 | 0.2493 | 1.007 | 0.406 |
| 50 | share50 | share<=0.50 | 0.1224 | 0.02722 | 1.816 | 0.2751 | 0.3952 | 0.723 | 0.587 |
| 50 | share25 | share<=0.25 | 0.09904 | 0.01333 | 1.359 | 0.2107 | 0.2918 | 0.506 | 0.572 |
| 100 | uncapped | none | 9.302e+04 | 2.105e+11 | 24.33 | 168.8 | 6.606e+04 | 2.500e+06 | 0.834 |
| 100 | winsor | winsor q=0.990 | 37.54 | 1.421e+06 | 1008 | 0.459 | 1.624 | 36.58 | 0.736 |
| 100 | share50 | share<=0.50 | 1.842 | 6055 | 1785 | 0.4409 | 0.6896 | 2.823 | 0.835 |
| 100 | share25 | share<=0.25 | 1.248 | 2691 | 1726 | 0.3221 | 0.4867 | 1.935 | 0.834 |
| n | variant | cap rule | mean | variance | var/mean^2 | p90 | p95 | p99 | power |
|---|---|---|---|---|---|---|---|---|---|
| 25 | uncapped | none | 0.03589 | 0.0005443 | 0.4226 | 0.06344 | 0.07826 | 0.1161 | 0.050 |
| 25 | winsor | winsor q=0.960 | 0.0363 | 0.0004622 | 0.3508 | 0.06391 | 0.07602 | 0.1121 | 0.050 |
| 25 | share50 | share<=0.50 | 0.03535 | 0.0004527 | 0.3622 | 0.06224 | 0.07627 | 0.1099 | 0.050 |
| 25 | share25 | share<=0.25 | 0.03344 | 0.000384 | 0.3435 | 0.05854 | 0.07206 | 0.1008 | 0.050 |
| 50 | uncapped | none | 0.02668 | 0.0005037 | 0.7076 | 0.04612 | 0.05751 | 0.0904 | 0.050 |
| 50 | winsor | winsor q=0.980 | 0.026 | 0.0002455 | 0.3631 | 0.04495 | 0.0553 | 0.07878 | 0.050 |
| 50 | share50 | share<=0.50 | 0.02601 | 0.0002627 | 0.3884 | 0.04551 | 0.05591 | 0.08336 | 0.050 |
| 50 | share25 | share<=0.25 | 0.0254 | 0.0002322 | 0.3598 | 0.0442 | 0.05438 | 0.07802 | 0.050 |
| 100 | uncapped | none | 0.01906 | 0.0001484 | 0.4085 | 0.03296 | 0.04029 | 0.061 | 0.050 |
| 100 | winsor | winsor q=0.990 | 0.01868 | 0.000108 | 0.3095 | 0.03201 | 0.03948 | 0.05523 | 0.050 |
| 100 | share50 | share<=0.50 | 0.01885 | 0.0001158 | 0.3257 | 0.03278 | 0.03995 | 0.05785 | 0.050 |
| 100 | share25 | share<=0.25 | 0.01863 | 0.0001089 | 0.314 | 0.03231 | 0.03885 | 0.05637 | 0.050 |
| n | winsor | share50 | share25 |
|---|---|---|---|
| 25 | -0.174 | -0.005 | -0.017 |
| 50 | -0.179 | +0.002 | -0.013 |
| 100 | -0.098 | +0.001 | -0.000 |
| n | variant | post-cap top1% share | uncapped cycle 82 share | cap hit fraction |
|---|---|---|---|---|
| 25 | uncapped | 0.988 | 1.00 | 0.000 |
| 25 | winsor | 0.550 | 1.00 | 1.000 |
| 25 | share50 | 0.494 | 1.00 | 0.189 |
| 25 | share25 | 0.225 | 1.00 | 0.447 |
| 50 | uncapped | 1.000 | 1.00 | 0.000 |
| 50 | winsor | 0.849 | 1.00 | 1.000 |
| 50 | share50 | 0.474 | 1.00 | 0.235 |
| 50 | share25 | 0.215 | 1.00 | 0.374 |
Follow-up to stuff/cap-power-replication.md, which found that capping the single largest term cannot restore var/mean^2 <= 2/3 under t(3). Here two different bounds are tried. Seed 83101, 2000 sims per n, n = 25, 50, 100, normal and t(3) data.
Cap rules (as numbers, rule 1):
Power = rejection under t(3) at the normal-calibrated 0.95 critical value, so normal rows reject at 0.050 by construction; "d" is capped minus uncapped power. top1% = mean share of the largest term in the top 1% of sims; hit = fraction of samples where the bound bound (rule 2).
law n version mean var/m2 p90 p95 p99 power d top1% hit
normal 25 uncapped 0.035 0.476 0.062 0.079 0.121 0.050 +0.000 0.55 0.000
normal 25 top3_50 0.031 0.375 0.056 0.067 0.095 0.050 +0.000 0.22 0.495
normal 25 wfloor3 0.034 0.385 0.062 0.079 0.105 0.050 +0.000 0.31 0.025
normal 50 uncapped 0.027 0.711 0.046 0.056 0.086 0.050 +0.000 0.53 0.000
normal 50 top3_50 0.025 0.331 0.045 0.054 0.080 0.050 +0.000 0.20 0.086
normal 50 wfloor3 0.026 0.323 0.044 0.054 0.077 0.050 +0.000 0.16 0.082
normal 100 uncapped 0.019 0.437 0.033 0.041 0.062 0.050 +0.000 0.18 0.000
normal 100 top3_50 0.019 0.341 0.033 0.040 0.060 0.050 +0.000 0.09 0.025
normal 100 wfloor3 0.019 0.336 0.032 0.039 0.059 0.050 +0.000 0.07 0.206
t3 25 uncapped 0.516 51.379 0.301 0.812 11.41 0.378 +0.000 0.99 0.000
t3 25 top3_50 0.077 1.011 0.165 0.223 0.398 0.378 +0.000 0.40 0.475
t3 25 wfloor3 0.083 0.790 0.171 0.224 0.361 0.376 -0.002 0.17 0.348
t3 50 uncapped 3135.4 404.556 0.996 13.71 12418 0.593 +0.000 1.00 0.000
t3 50 top3_50 0.103 1.173 0.221 0.311 0.590 0.582 -0.011 0.47 0.306
t3 50 wfloor3 0.087 0.854 0.178 0.245 0.423 0.560 -0.033 0.07 0.702
t3 100 uncapped 111081 20.363 150.4 2.4e5 2.5e6 0.841 +0.000 0.99 0.000
t3 100 top3_50 0.154 1.155 0.329 0.472 0.821 0.847 +0.006 0.45 0.377
t3 100 wfloor3 0.110 0.815 0.215 0.302 0.483 0.830 -0.011 0.03 0.943
Files: stuff/cap-weight-floor.py (reproduces everything in ~1s), stuff/cap-weight-floor.csv (one row per law, n, version).