Edge Score V3b vs same-window PnL: an in-sample diagnostic, not a forward test
Read this first: target leakage, not a forward test
The rolling series below is an in-sample contemporaneous rank correlation (the Edge Score and the realized PnL are computed on the same in-window positions, and the dominant input, conviction = concentration = max|pnl|/total_risk, is PnL-derived). It is NOT a forward test; it overstates predictive skill and should be read as a descriptive diagnostic only.
The honest forward result is the pre-registered per-wallet temporal holdout (AsPredicted #287368): the frozen-coefficient Edge Score held a small positive out-of-sample Spearman of +0.11 (95% CI [0.05, 0.18]) with forward PnL. This did not clear the pre-registered +0.30 threshold, and a refit did not generalize. Forward predictive skill is small and not yet established at the pre-registered bar.
Version scope: everything on this page was computed under the original V3b constants. The live Edge Score constants were refit on 2026-07-13 after a bounded-input correction, so these diagnostics do not describe current scores; the dated method-change note is at /methodology.
Across 26 rolling 30-day windows from October 1, 2025 through April 25, 2026 on the V1-M reference cohort, the V3b composite (frozen coefficients posture +0.7876, conviction +2.7220, discipline -1.1508) produced a mean rolling Spearman of +0.391 and a median of +0.375 against signed-log PnL computed on the same in-window positions. 26 of 26 windows finished above the Brier-only baseline of +0.147. This is an in-sample contemporaneous diagnostic, not a forward test: the score and the realized PnL share the same positions and the dominant input (conviction) is PnL-derived, so it overstates predictive skill. The honest forward result is the pre-registered per-wallet temporal holdout (AsPredicted #287368): out-of-sample Spearman +0.11 (95% CI [0.05, 0.18]), which did not clear the pre-registered +0.30 threshold.
Rolling Spearman (in-sample, same-window PnL)
30-day windows, stepped every 7 days, 10-position minimum per wallet. Score and PnL computed on the same in-window positions (in-sample contemporaneous, not forward). Shaded band is the 95% percentile bootstrap CI (1,000 resamples per window).
How to read this chart
- The teal line is the Spearman correlation between the V3b composite and signed-log PnL within each 30-day window. Each window is scored independently using only the positions that resolved inside it, and the same positions also produce the PnL the score is correlated against. Because the score and the target share positions (and conviction is PnL-derived), the correlation is contemporaneous and in-sample, not forward. Wallets with fewer than 10 resolved positions in a window are excluded for that window.
- The shaded band is the 95% percentile bootstrap CI. A narrow band means the rho estimate for that window is precise; a wide band means the cohort in that window was small or noisy. Both are reported, never just the point estimate, per the credibility-claim audit rules.
- The amber dashed line at +0.514 is the in-sample out-of-fold Spearman published in the V1 paper. Both that benchmark and the rolling series here are in-sample measures, so windows at or above the line are not evidence of forward skill.
- The red dashed line at +0.147 is the Brier-only baseline (calibration alone vs PnL) published in the 10K-wallet study. Windows that finish above this line are adding signal beyond raw calibration.
- The vertical dashed line marks the Control H blinding cutoff at 2025-09-30. The V3b coefficients were fit on a snapshot through April 15-16 2026. The cutoff is retained for context, but it does not make any segment a forward test: every window correlates the score against PnL from the same in-window positions, so the leakage is present on both sides of the cutoff.
Methodology
- Model
- Edge Score V3b (frozen production coefficients).
- Coefficients
- posture 0.7876, conviction 2.7220, discipline -1.1508. Frozen at the V1 paper publication and unchanged.
- Cohort
- V1-M reference cohort, n_unique_positions >= 5 in wallet_analysis_20260425_201800.csv.
- Window
- 30-day rolling, stepped every 7 days, with a minimum of 10 resolved positions per wallet per window.
- Per-window features
- skill_brier is computed window-locally as the wallet’s baseline Brier (under the window’s marginal frequency of wins) minus its observed Brier on the window’s positions. concentration is the largest absolute per-position PnL share over total in-window risk. n_unique_positions is the count of resolved positions inside the window.
- Score
- Edge Score V3b raw composite under the frozen production z-score parameters. Spearman is rank-invariant, so the unbounded raw score is equivalent to the production percentile mapping for correlation purposes.
- Confidence interval
- 95% percentile bootstrap on (Edge Score, signed-log PnL) pairs, 1,000 resamples per window.
- Source data
-
services/api/scripts/output/wallet_all_positions_20260425_201800.csv(V1-M position tape, 542,241 resolved positions) andservices/api/scripts/output/wallet_analysis_20260425_201800.csv(per-wallet features for the cohort filter). - Generator
-
services/api/scripts/forward_validation_rolling_spearman.py. Generated Mon, 27 Apr 2026 23:11:51 GMT. - Underlying JSON
- forward-validation-rolling-spearman.json (one record per window; same schema as the chart data).
Limits of this dashboard
- This is not a forward test. The score and the realized PnL are computed from the same in-window positions, and the dominant input (conviction = concentration = max|pnl|/total_risk) is PnL-derived. The series therefore has target leakage and overstates predictive skill. Read it as a descriptive contemporaneous diagnostic, not as out-of-sample predictive validation.
- Survivor bias still applies. The cohort comes from the leaderboard-ranked snapshot; wallets that blew up and were delisted before the snapshot are absent from every window.
- Window-local skill_brier and the conviction and discipline pillars are computed window-locally, but this does not make the series forward: conviction is derived from in-window PnL, so the score is mechanically correlated with the same-window PnL it is scored against. The z-score reference statistics come from the V1 training cohort and are kept frozen here.
- The min-positions-per-wallet filter excludes thin slices and cuts noise, but it also concentrates the held-out estimate on high-activity wallets. The cohort sizes per window are surfaced in the tooltip and in the underlying JSON.
- A point estimate from a single window is not a methodology verdict, and neither is this whole series: it is in-sample. The real out-of-sample question is answered by the pre-registered per-wallet temporal holdout (AsPredicted #287368), which produced an out-of-sample Spearman of +0.11 (95% CI [0.05, 0.18]) with forward PnL and did not clear the pre-registered +0.30 threshold. See the V1.5 result for the forward finding.
The FDR-screened wallet registry and its forward test
The composite above is one lens. A separate, simpler question is whether any individual wallet’s resolved record beats chance after multiplicity correction. In a retrospective screen of per-wallet resolved Polymarket records (frozen 2026-04-25 position tape), 178 of 3,871 wallets cleared a Benjamini-Hochberg screen at q = 0.10, a cleared proportion of 4.6% (95% Wilson interval [3.98%, 5.30%]). At q = 0.10, the expected number of false discoveries among the 178 cleared wallets is at most 17.8. The screen is in-sample and retrospective: it identifies records that were unlikely under chance, and it does not establish that those wallets keep an edge going forward.
Whether the cleared set keeps its edge is the subject of a strictly prospective test, pre-registered as AsPredicted #294147 before the forward window opened; the public receipt carries the filing timestamp and the frozen content hashes. The candidate set (178 wallets), the control set (3,693 wallets), and the methodology were frozen before any forward evidence accrued. The forward window runs 2026-06-02 through 2026-08-30 and the test matures on time and outcomes alone.
This page reports accrual counts only, never interim pooled effect estimates, while the window is open. The sample floors require at least 40 candidate wallets to clear the 10-position floor and at least 1,000 qualifying candidate forward positions to resolve. The confirmatory verdict is withheld from this page until the pre-registered window closes on 2026-08-30, even once those floors are met, so no mid-window read is surfaced as a result. A null or inconclusive outcome at maturity is a valid pre-registered result and will be reported as such.
Terminal readout, window one, closed 2026-08-30
The pre-registered window has closed. Everything below is the verdict harness’s own output under the frozen rule, published on close with no one deciding on the day whether to publish it, together with the disclosures written before the outcome was known. Each point estimate carries its interval or its denominator in the same line. A null, a partial or a negative outcome reaches this surface through the same code path and is reported the same way.
- Verdict (frozen rule)
- persistence_confirmedcomputed by the pre-registered rule, not chosen after the fact; the field-6 sensitivity rerun agreed, so no downgrade applies
- Candidate arm, pooled forward edge
- +3.83pp95% BCa CI [+2.09pp, +6.16pp] over 139 resampled wallet clusters, effective independent clusters 5.28 by Kish, NOT 139
- Control arm, pooled forward edge
- +0.90pppre-specified non-cleared control, NOT band-matched
- Excess (T)
- +2.93pp31 of 10,000 permutations at or above the observed statistic
- Evidence
- 71,529 resolved forward positions139 active wallets; 63 of 178 frozen candidates cleared the 10-position floor
- Equal-weight contrast (pre-registered secondary)
- +5.79pp95% BCa CI [+3.19pp, +8.86pp] over 1,591 equally weighted wallets, so the nominal count is also the effective one; each qualifying wallet weighted equally, descriptive only, the verdict rule reads the pooled primary
- Higher-evidence stratum (frozen in-sample n >= 100)
- +3.98pp95% BCa CI [+2.20pp, +6.64pp]; this pool is position-weighted and this artifact does not report its effective independent-unit count, so no cluster count is shown; 60 wallets, 67,717 pooled positions
- Lower-evidence stratum (frozen in-sample n 30 to 99)
- +1.11pp95% BCa CI [-0.19pp, +3.05pp]; this pool is position-weighted and this artifact does not report its effective independent-unit count, so no cluster count is shown; 79 wallets, 3,812 pooled positions
- Independent evidence, Kish effective clusters
- 5.28nominal 139 active wallets over 71,529 pooled positions; the single largest wallet supplies 41.2% of them. Post-hoc readout added 2026-08-12, not pre-registered, no verdict reads it
- Leave-one-wallet-out excess (T)
- [+2.49pp, +4.50pp]dropping each of 139 active candidate wallets in turn against the unchanged control arm; minimum above zero: yes. Post-hoc, added 2026-08-12, not pre-registered
- Largest single capture day
- 9,914 positions on 2026073113.9% of the candidate arm arrived in one collection day, pooled edge that day +7.99pp. Capture day is the archive a position was FIRST seen in, not its resolution date, so a large day is an ingestion event rather than accrual. Post-hoc, added 2026-08-12, not pre-registered
- Field-6 coverage by resolution month (pre-filter candidate rows)
- 2026-06 8.7%; 2026-07 44.3%; 2026-08 99.7%share of the candidate arm's in-window PRE-FILTER rows carrying a recorded open timestamp, by resolution month, over 87,706 pre-filter candidate rows: archived rows of frozen candidate wallets BEFORE the micro-market rule, the identity dedup and the quarantine, so this denominator is larger than the qualifying count in the Evidence row and the two must not be compared. The archive only began recording the open timestamp on 2026-07-25, so the field-6 rerun is closer to a recent-evidence subsample than an even cut of the window. Post-hoc, added 2026-08-12, not pre-registered
- Field-6 sensitivity, opened and resolved in window
- persistence_confirmed95% BCa CI [+2.37pp, +7.89pp]; this pool is position-weighted and this artifact does not report its effective independent-unit count, so no cluster count is shown; covers 41,151 of 71,529 (57.5%) of the candidate arm's qualifying positions, the rest carrying no recorded open timestamp; agrees with the primary
- Floor-only reading of both legs (post-hoc)
- persistence_confirmed, excess +2.96pp90 of 10,000 permutations at or above the observed statistic; candidate pooled edge +3.87pp, 95% BCa CI [+2.16pp, +6.19pp]; this pool is position-weighted and this artifact does not report its effective independent-unit count, so no cluster count is shown; over 63 candidate and 1,528 control wallets clearing the 10-position floor (71,180 candidate positions); agrees with the primary reading. Post-hoc reading disclosure, added 2026-09-01, not pre-registered
Disclosures, written before this result existed
- One of three pre-specified sensitivity checks runs on only part of the evidence. Field 6 of the pre-registration specifies a rerun restricted to positions both opened and resolved inside the window. Our archive did not record a position open timestamp before 2026-07-25, so the rerun is computed only over the rows that carry one, and the share of each arm it covers is reported in its row above. That coverage is NOT even across the window: because the timestamp only began flowing near the end of it, the rerun leans on the most recent evidence, which makes it closer to a recency subsample than an independent cut. The month-by-month coverage is reported above rather than summarised into one percentage, so the tilt is visible instead of inferable. This is an omission in our archive schema, not a limit of the underlying data: the timestamp was available in the collection pipeline and was not persisted. It was corrected on 2026-07-25. That check is verdict-bearing rather than decorative: where its rerun and the two-leg computation disagree, the pre-registered rule downgrades the published verdict to partial_persistence, and the verdict row above states whether that downgrade fired.
- The pooled estimate is position-weighted, so a wallet contributes in proportion to how much it traded and the effective number of independent clusters is FAR below the nominal wallet count. The row above reports both counts and the single largest wallet's share of the arm; read the effective figure, never the nominal one, as the number of independent units behind the interval. Two further checks are reported above rather than asserted here: the pre-registered equal-weight contrast, which gives every qualifying wallet the same weight regardless of how much it traded and is the filed anti-concentration check, and a leave-one-wallet-out sweep of the excess, which was added on 2026-08-12 and is not pre-registered.
- The pre-registered equal-weight contrast, which gives every qualifying wallet the same weight regardless of how much it traded, is reported in its own row above with its own interval. Where the two differ, the pooled primary is the pre-registered statistic and is the one the verdict rule reads; the equal-weight figure is descriptive and publishes whichever direction it points.
- The pre-registered evidence split is reported above, one row per stratum, each with its own interval and its own position count. The strata are defined by frozen in-sample position count, so the lower stratum carries less forward evidence by construction and its interval is correspondingly wider. Read each stratum against its own interval rather than against the pooled headline. Nothing here claims the effect is uniform across them.
- Forward evidence is supposed to accrue as positions resolve, and some of ours did not arrive that way. A collection day on which a large block of already-resolved positions is first captured is an ingestion event, not accrual, and the largest such day is reported above with its share of the arm and its own pooled edge. It is not a protocol violation: the window, the frozen sets, the exclusion rule and the verdict rule are unchanged, and the same collector serves both arms. It does mean the evidence is lumpier in time than a steady-accrual reading would suggest, and it is disclosed here because a reader who finds a large single-day block after publication is entitled to have been told first. This disclosure was added on 2026-08-12.
- This measures persistence of realized edge over entry prices. It is not validated forecasting ability: realized edge is partly price structure and fill quality, the control is pre-specified but not band-matched, and this is a cohort average that licenses no statement about any individual wallet.
Window one, what the readout means. Written 2026-09-01, after the terminal read
Figures below are fixed to the 2026-09-01 computation (snapshot, sha256 bd18a521...c47b), which is the frozen terminal artifact. The first closed-window computation, on 2026-08-31 (snapshot, sha256 877812c5...7180), read the same verdict: candidate +3.83pp, 95% BCa [+2.09pp, +6.18pp], on 71,486 candidate and 441,347 control positions; excess +2.94pp, 26 of 10,000 permutations at or above it; Kish 5.28; equal-weight +5.78pp, 95% BCa [+3.11pp, +8.86pp]. The floor-only reading below is a dated addendum (sha256 cbf57c28...3448) computed over the same frozen lineage, not an edit to the frozen bytes.
Window one of AsPredicted #294147 closed on 2026-08-30. The rule filed before the window opened returned persistence_confirmed. Five dated notes were added while the window was open, all linked on this page: two corrected the implementation toward the filed rule (2026-06-07, 2026-07-03), one disclosed the parent extract’s record-retention limit (2026-07-27), one disclosed two tooling defects (2026-07-30), one corrected a label (2026-08-14); none changed a registered set, hash, floor, seed, statistic or verdict rule. Start with its weight: of the candidate arm’s 71,529 forward positions from 139 active wallets, one wallet supplied 41.2% and the five largest 62.2%, so the position-weighted headline rests on the equivalent of about 5.28 equally weighted wallets (Kish effective sample size), not 139. That figure is post-hoc, added 2026-08-12 with the window open and an interim result visible, and gates nothing.
What was filed. Does an in-sample-selected wallet set keep a positive realized-edge difference after its freeze? Filed 2026-06-01, the day before the window opened (receipt verified 2026-07-25): 178 candidate wallets that cleared a Benjamini-Hochberg screen at q = 0.10 on the 2026-04-25 tape, 3,693 non-cleared controls, one measure (realized outcome minus the entry price, computed dollar-weighted; see the 2026-08-14 note), two required legs (candidate pool beats control pool by wallet-label permutation at the one-sided 0.025 level; candidate 95% BCa lower bound above zero), floors of 40 qualifying wallets and 1,000 candidate positions. Only the sign and pass rule were registered, no magnitude.
What it showed, as computed 2026-09-01. Candidate +3.83pp, 95% BCa [+2.09pp, +6.16pp], on 71,529 positions from 139 active wallets, 63 of 178 frozen candidates clearing the 10-position floor; both floors met. Control +0.90pp, 95% BCa [+0.64pp, +1.33pp], on 443,880 positions from 2,406 active wallets. Excess +2.93pp; 31 of 10,000 label permutations at or above it. Both legs are computed over every frozen wallet with at least one qualifying position, a reading fixed in the harness on 2026-06-06 before any forward row existed; restricted to the 63 and 1,528 wallets clearing the 10-position floor, both legs also pass (reported in its own row above). The filed both-in-window rerun is approximate: open timestamps began 2026-07-25, so it covers 41,151 of 71,529 candidate positions (57.5%; 84 active wallets, 46 clearing the floor; rows resolved before 2026-07-25 that carry an open timestamp were captured late). Both legs pass there (excess +3.66pp, 62 of 10,000 permutations at or above it; 95% BCa [+2.37pp, +7.89pp]), so the filed partial_persistence downgrade is not triggered.
The concentration objection, and two checks. The filed check for exactly this objection, the equal-weight contrast, gives each floor-clearing wallet one vote (63 candidate, 1,528 control) and still separates the arms: +5.79pp, 95% BCa [+3.19pp, +8.86pp]. It is a different estimand from the pooled excess, so its larger point value is not evidence that the pooled result is stronger than it looks; what it shows is that removing the position weighting does not remove the separation. Concentration limits the pooled headline’s precision; on this check and the leave-one-wallet-out sweep, it does not supply its sign. A post-hoc leave-one-wallet-out sweep (not pre-registered; point estimate only) keeps the excess between +2.49pp and +4.50pp across all 139 drops.
What this does not show. It is persistence of realized edge over entry price, not forecasting ability: realized edge is partly favorite-longshot price structure and fill quality, the control is pre-specified but not band-matched, and the residual test that would net that out is not yet filed. It is a cohort average, licensing nothing about any single wallet: at nominal q = 0.10 about 17.8 of the 178 in-sample clears are expected false discoveries, and the 2026-07-30 amendment on this page says why the true share may exceed it. Evidence over-weights shorter-dated markets, and both arms are conditioned on forward activity. Evidence is admitted on each market’s scheduled end date, the quantity our archive records as its resolution date, which can differ from when it actually settled. That is a deviation from the filed word “resolve”, mitigated but not erased by being frozen, arm-uniform and fixed before the window opened. Recomputed 2026-09-04 on each market’s actual settlement time, taken independently from the venue’s closedTime and the Polygon settlement block (the two disagree on window membership for 1 of the 211,518 markets both cover and on the settlement day for 16; median difference zero hours; the counts here are on the Polygon settlement block, which covers all 211,520): 1,549 of 71,529 candidate positions (2.2%) and 23,213 of 443,880 control positions (5.2%) had settled outside the window they were counted in. On the settlement-defined pool the frozen rule returns the same label, persistence_confirmed, with the pooled contrast at +2.96pp (was +2.93pp), leg A p = 0.0029, and the candidate BCa interval +2.08pp to +6.32pp over 127 active wallets (was 139); the Kish effective-cluster caveat was computed on 139 wallets and has not been recomputed on 127. The 10.7 percent figure previously reported here measured a different quantity, positions first archived before their scheduled day, and is superseded by these counts. Window one’s collector admitted only positions scheduled inside its 90-day window, so long-horizon markets were never in its pool; the same design means positions scheduled outside the window that settled inside it were never captured, so that direction is unmeasured here, and this verdict stays not quotable as a result until it is. The +2.93pp excess is about a third of the +8.7pp in-sample gap the set was selected on, a selection-biased figure quoted from the filing without an interval. The 2026-07-03 mid-window correction quarantined 167 rows, excluded here. The per-arm count of positions first captured after the 2026-07-30 collector fix, promised for this readout by the amendment below, is not yet reported; it will be added to this page when measured, with its date.
Window two is filed: AsPredicted #303724 (receipt verified 2026-07-26) is filed to run the identical design on the frozen sets over 2026-08-31 to 2026-11-28, contiguous and, as filed, sharing no position, new seeds, same floors; its first closed-window computation runs on 2026-11-29, the computation of 2026-11-30 is its terminal read and freezes the artifact (a two-day late-capture allowance fixed on 2026-09-02, before any window-two evidence had been read), and it publishes whatever the rule returns. Window-two collection began on 2026-09-02, two days after the window opened. Resolutions from 2026-08-31 and 2026-09-01 are eligible for recovery on later collection passes: every candidate wallet is fetched on every pass and control wallets on a rotating slice, and the first pass had already recovered 1,076 candidate rows dated to those two days. Not every such row will come back: the collector reads a wallet’s most recent activity, and a busy wallet’s older rows can fall out of it. The recovered count will be reported with window two’s read.
Provenance. This narrative was gated by this project’s automated independent-review agent on 2026-09-01 (pass with required edits, applied), an in-house AI check with a non-overridable veto rather than a third-party or human review, against draft sha256 253706b6...280f; the text published here is draft sha256 30fe3296...c958, which differs by the two filled placeholders, by the edits a second automated review required on 2026-09-02, by the 2026-09-03 correction of the boundary-deviation figure (10.7% on the unit the test scores, replacing 9.1% computed on wallet-market pairs), and by the 2026-09-04 settlement-time recomputation that superseded that figure. The founder, the only human in the chain, approved publication on 2026-09-02. No signature statement is reproduced: no human signed a verbatim text, and this line records what was reviewed and what was approved rather than putting words in anyone’s mouth.
Dated notes for window one, in the order they were written
Every note written for this window while it was open, plus the one reading note filed after its close. None changed a registered set, hash, floor, seed, statistic or verdict rule. The 2026-07-30 amendment is quoted in full in its own block below; the others are restated here from the dated internal record.
- 2026-06-07
- Correctness fix to the shared position aggregation, before any forward readWin or loss on positions derived from SELL fills was being resolved against the wrong outcome index and came out inverted; BUY-derived positions were unaffected. The window had opened on 2026-06-02 and the collector's first successful run was 2026-06-07, under the defect, producing a single archive. That archive was deleted and regenerated under the corrected code, which resolves win or loss against the side actually held. No statistic, frozen set, floor, seed, window or verdict rule changed, and no forward result had been read or published.
- 2026-07-03
- Resolution-screen correction, mid-window, toward the filed exclusionsField 6 of the filing excludes voided, disputed, invalid and ambiguous resolutions. The scoring in use since the window opened had not implemented that intent for markets closing on an exact tie, markets under a UMA dispute, voided markets, or UMA states still pending, so some rows carried an outcome the filed exclusions should have kept out. From 2026-07-03 the screen excludes those cases. Every archived market was re-fetched and re-screened; 168 position keys (0.18% of archived rows) were quarantined, and every verdict computation from that date, including the terminal read, excludes them (167 archived rows matched). No floor, seed, window, statistic or decision rule changed. The pinned methodology hash covers configuration rather than this code path, a gap recorded for future filings.
- 2026-07-27
- Window-one extractor disclosure (record retention)Window one's parent extract retained each wallet's newest 2,000 activity rows, and the public data API demonstrably does not serve complete history for some hyperactive wallets even without that cap (measured example: 2,614 API-served resolved conditions vs 3,912 chain-derived for one high-activity wallet). Positions missing from public surfaces skew toward losses, so in-sample edges on truncated records are biased upward. This window's extractor removes the cap, walks each wallet to end-of-history with truncation recorded per wallet in a completeness manifest, and every provisional candidate is checked against its on-chain record under the frozen rule above. The window-one and window-two Arm B frozen sets are unchanged and their forward tests are unaffected (sets frozen before their windows; measurement arm-uniform); their candidate set should be read as the screen's output on the 2026-04-25 extract as it existed. The defect's expected direction is toward attenuating forward persistence, not manufacturing it; that observation must never be strengthened into a claim that the true effect is larger. The in-sample FDR-guarantee line is softened accordingly: nominal q = 0.10 assumes valid per-wallet records, and loser-skewed truncation weakens that guarantee for the screen stage.
- 2026-07-30
- Selection-extract and collector defects, disclosed with their handlingTwo instances of one defect (a missing page-size parameter on an event-metadata lookup) were found while preparing a later filing, one in the extract builder behind the 2026-04-25 selection and one in the daily forward-position collector. Both are disclosed in full, verbatim, in the amendment block below, together with what each can and cannot do to the forward tests and the follow-up measurements they name.
- 2026-08-14
- Entry-weighting terminology correction, before either window's readThe filings describe the entry price as volume-weighted. The frozen computation, pinned by content hash since before window one opened and unchanged since, is dollar-weighted: each fill's price weighted by the dollars filled at it. The two definitions diverge only when a position's fill prices vary, and the dollar-weighted edge is the smaller. Measured on 150 wallets' raw fills, the divergence in realized edge was median 0.36pp, 90th percentile 1.25pp, maximum 4.06pp, one-way. No code, analysis or archive changed; every verdict operates on the frozen dollar-weighted quantity.
- 2026-09-01
- Reading note: the wallet unit of the two verdict legsField 5 of the filing runs the two legs over "qualifying wallets"; field 7 defines the 10-position floor as the condition for counting toward the qualifying-wallet floor and the equal-weight secondary. The harness, fixed on 2026-06-06 before any forward row existed, runs both legs over every frozen wallet with at least one qualifying forward position and applies the floor where field 7 places it. This is a reading disclosure, not a deviation: no registered object changed and the reading predates the data. To make the other reading checkable, a floor-only rerun over the floor-clearing wallets is reported as a labelled post-hoc row; no verdict reads it.
Registry dataset
The frozen per-wallet registry behind this screen is being prepared for public release and is pending a data-release review. Nothing is downloadable today. Leave an email and the dataset link is emailed after release.
Amendments to this package, 2026-07-30, dated before the first terminal read
Two defects in our own tooling, found on 2026-07-30 while preparing the third filing in this series, disclosed here in full before window one's terminal read exists. Neither changes any registered set, hash, window, floor, seed, statistic or verdict rule, and nothing below is a reason to delay or qualify the 2026-08-31 readout. The full amendment text below is verbatim from the dated internal record.
AMENDMENT (2026-07-30). A second defect in the extract builder behind our selection stage, disclosed with its direction and its limits. On 2026-07-30, while preparing a third filing in this series, we found a further defect in the extract builder that produced the 2026-04-25 parent extract on which both registered windows (AsPredicted #294147 and #303724) rest. The builder looked up event metadata on the Gamma /events endpoint in batches of 50 slug parameters without sending a page-size parameter. That endpoint's default page size is 20, so a batch of 50 could come back with as few as 20 events answered, and every fill whose event went unanswered was silently dropped from the wallet's record, visible only in a skip counter nothing monitored. The code fix, with a test that fails if the fix is reverted, is commit 30372aca (2026-07-30).
WHERE IT SITS. This is a SELECTION-stage defect, compounding the retention of each wallet's newest 2,000 activity rows disclosed in this package: it degraded the per-wallet records on which the screen computed its in-sample statistics and chose the 178 candidate and 3,693 control wallets. Those sets were frozen on 2026-04-25 and pinned by content hash in both public receipts, before window one opened on 2026-06-02 and before window two's 2026-08-31 open. No set, hash, window, floor, seed, statistic or verdict rule changes with this amendment. The candidate set should be read, as the retention disclosure in this package also states, as the screen's output on the 2026-04-25 extract as it existed.
WHAT THIS CAN AND CANNOT DO TO THE FORWARD TESTS. The forward measurement is arm-uniform: one pipeline scores both arms on the same window, the same frozen measure, the same exclusion rule and the same resolution source, so a selection-stage record defect cannot manufacture a forward difference between the arms. What it can do is degrade the selection itself: incomplete records add noise to the in-sample statistics the screen ranked on, so the frozen candidate set is expected to be a noisier selection than an uncorrupted screen would have produced. The expected direction of that noise on the forward tests is to attenuate the candidate-versus-control contrast toward zero, not to create it. We state the direction and stop there: we do not restate it as a claim that the true effect is larger than whatever the forward tests report. The registered object is the frozen set as it was actually selected, and the forward tests score that object and nothing else.
THE LOSS RATE ON THIS EXTRACTOR IS NOT MEASURED. The 55.90% figure associated with this defect (184,470,230 of 329,998,137 fills discarded) is a census, taken 2026-07-30, of a different extraction run (the 2026-07-28 full-history run), whose code added a run-wide cache shared across wallets that made every miss permanent and global for that run. The 2026-04-25 builder had no such cache and re-queried per wallet, so a slug unanswered for one wallet could still be answered for another. That difference only stops a miss from spreading across wallets; it does not recover the missing wallet's own fills, since each of its batches was answered once, at up to 20 events per batch, on a single pass. And the two runs read different inputs: full histories against the newest 2,000 activity rows per wallet. The 55.90% census therefore neither bounds nor estimates this extractor's loss rate, in either direction, and we will not put a number, or a bound, on it until we have measured one. The measurement is the named follow-up below, not an assumption.
IN-SAMPLE FDR CLAIM, FURTHER WEAKENED. The in-sample claim behind these windows is that 178 of 3,871 discretionary wallets cleared Benjamini-Hochberg at q = 0.10 for positive realized edge over entry prices, expected false discoveries at most about 17.8. That q = 0.10 figure assumes each wallet's record is a faithful sample of its resolved positions. The newest-2,000-rows retention already weakened that assumption; this defect weakens it further. The nominal figure should not be read as carrying its original guarantee for these windows, and the realized false-discovery proportion may exceed it. The forward tests do not inherit this particular weakness, because they score the frozen sets on outcomes that postdate the freeze; it is the in-sample screening claim that is weakened.
FOLLOW-UP M1, NAMED HERE (2026-07-30): measure the 2026-04-25 extractor's enrichment loss rate. Method, in order: (a) if the original build's per-wallet skip counters survive in its logs, the loss rate is the exact ratio of skipped fills to skipped plus retained fills, per wallet and pooled; (b) otherwise, replay: using the corrected full-history extraction over the same frozen wallet universe (a run the third filing already requires), restrict each wallet's stream to fills at or before the 2026-04-25 cutoff, apply the newest-2,000-rows retention to reproduce the original raw input, enrich with the fixed code, and compare the resulting resolved-fill set row for row against the frozen extract (sha256 cf95c5f1b9a957477f6b3c98bdf235744eff8f34230083a4c8bffd4657ef2ec6). Report the pooled loss rate, the per-wallet distribution, and separately the count of frozen-extract rows absent from the replay, which measures API drift since 2026-04-25 and is reported on its own, never folded into the loss rate. Target: report on or before 2026-09-30. This measurement does not gate the window-one terminal read on 2026-08-31; if the terminal readout publishes first, it publishes with the unmeasured status stated above, and this package is amended when the number exists.
AMENDMENT (2026-07-30), SECOND INSTANCE OF THE SAME DEFECT, IN THE MEASUREMENT STAGE, DISCLOSED WITH ITS HANDLING. The missing page-size parameter also existed in a third copy of the slug lookup, inside the production analyzer module that the daily forward-position collector for these windows uses on its primary path. On any single collection pass, fills whose event metadata went unanswered were not scored on that pass, in whichever arm the affected wallet sat, through the same code path. Three properties of the collector bound the consequence, and the second is not even across the arms. The forward archive is append-only with idempotent de-duplication, so a position captured once is never lost. The slug batches are recomposed from run to run, so a position missed on one pass can be captured on a later one; but candidate wallets are collected on every daily pass, while control wallets rotate through a bounded slice and are each visited roughly once every 12 days at the collector's current setting, and a resolved position can only be captured on passes after it resolves. A missed candidate position therefore gets a fresh capture chance every day, a missed control position only when the rotation returns, and a control position that resolves late in a window may see few passes, or none, before a read date. And wallets yielding fewer than 30 resolved positions from the primary path are also read through a second, paginated source. The residual, stated plainly: we have not measured how much in-window evidence remained uncaptured at any given read date, and we have not established the direction, if any, of that residual with respect to outcomes. The code path is shared, so neither arm is exempt, but a shared path does not make the loss equal across arms: a wallet loses nothing on a pass until a lookup batch exceeds the default page size, so per-wallet loss scales with how many distinct events the wallet trades, the design does not match the arms on that, and the visit cadence above gives the two arms unequal recovery chances. Both legs of the verdict rule therefore carry an unmeasured sampling residual whose size and direction we do not claim to know; what bounds it is the recovery mechanics above and the follow-up census below, not an argument.
HANDLING, WITH DATES. The fix to the shared analyzer helper is commit b2146b91, with a test that fails if it is reverted. From the fix date to each window's close, the daily passes re-offer previously unanswered slugs. Because the archive is partitioned by write date, rows first captured after the fix whose resolution predates it are identifiable, and each window's terminal readout will report that count, split by arm, as the measured signature of this defect on the measurement stage (follow-up M2); the split matters because the visit cadence above gives the arms unequal recovery chances, and a pooled count would hide a recovery concentrated in one arm. No read date, window boundary, floor, statistic or verdict rule changes. This is the same class of event as the 2026-07-03 resolution-screen deviation already in this package: an implementation defect corrected toward the filed intent mid-window, documented with dates, with no registered threshold changed. The terminal read uses whatever the archive holds on the read date, exactly as filed.
The CLV-edge forward test: confirmatory read (2026-07-11 archive, settlement time; corrected 2026-09-04), AsPredicted #296461
A separate, strictly prospective test asked whether ranking wallets by closing-line value predicts their later realized edge. The predictor is each wallet's mean 24-hour CLV over the frozen 2026-04-25 position tape: how far the market price had moved 24 hours after the wallet's fill, relative to its entry price. The forward outcome is each wallet's mean realized edge (won minus entry VWAP probability) over positions resolving on or after 2026-06-13. The test was pre-registered as AsPredicted #296461 on 2026-06-12, before any forward evidence existed. Frozen at filing: the pass bar (Spearman rho at or above +0.10 with the 95% bootstrap CI lower bound above zero), the sample floors (300 wallets and 3,000 pooled forward positions), the per-wallet floors, the exclusion rules, the bootstrap design (wallet-resampled, 10,000 resamples, seeded), and the checkpoint convention. The frozen methodology hash is af24f0826cfc4945d251f68acdb503c373f3c873bdaaaeb1e1a139bad9dfc788; any post-hoc change to a gate, floor, or window flips the hash on the next run.
Correction, 2026-09-04: the 2026-07-03 read was not the confirmatory read
On 2026-07-03 this page reported a pass (Spearman +0.159, 95% CI +0.063 to +0.255, 464 wallets, 19,740 positions). That computation admitted a position to the forward window by its market’s scheduled end date; the filing said “resolve”. Recomputed on each market’s actual settlement time, taken independently from the venue’s closedTime field and from the Polygon settlement block (the two agree on window membership for all but 2 of 38,016 markets and on the settlement day for all but 3; median difference zero hours), 17,561 of the 59,945 admitted positions (29.3%) had settled before the window opened, and 10,256 of the 19,740 the correlation rested on (52.0%); those are the wrongly admitted direction only. The scheduled operator had also wrongly excluded 316 positions on the venue operator (313 on the chain operator; 133 in the correlation pool on both) that settled on or after the window opened; they are admitted here. At that artifact, under settlement time, 155 wallets clear the pre-registered floor of 300, so the pre-registered rule returns insufficient sample, and the 2026-07-03 read was not the confirmatory read the filing defines. The correlation over those 155 wallets is +0.145 with a 95% interval from -0.023 to +0.306; it is computed below the pre-registered wallet floor, so the frozen rule returns no verdict on it, and it neither passes nor fails the bar.
The filing defines the confirmatory read as the first daily artifact at which both floors hold. Re-applying that rule on settlement time across the frozen archive (83 daily files, 2026-06-08 to 2026-09-01), the floors are first met at the 2026-07-11 archive (289 wallets the day before), and the frozen replay’s read there is a pass: Spearman +0.188, 95% CI +0.071 to +0.302, over 304 wallets (the floor of 300 is met by four) and 20,101 forward positions; the pre-registered secondary, which carries no pass or fail, is +0.045 with a 95% interval from -0.062 to +0.153, spanning zero. The chain settlement operator returns the same read to full precision (20,100 positions). This read is a reconstruction made on 2026-09-04 by re-applying the filed stopping rule to the frozen archive, after the 2026-07-03 pass and the below-floor number at that artifact were both known; the rule admits one answer, and both settlement sources return the same archive. Later archives are descriptive only under the frozen rule, and they are shown here because the confirmatory read is the highest point of the series it sits on: sampled weekly through 2026-09-01, the frozen replay returns a pass at eight of the nine later archives, and not at the 2026-07-18 archive, where the interval’s lower bound is -0.003 (355 wallets); rho declines from +0.188 to +0.107 (95% CI +0.035 to +0.179 at 2026-09-01, 741 wallets). The filing’s second criterion, entry on or after the window start, is not applied by the frozen replay and cannot be measured from the archive, which records no entry time; the ranking tape holds only positions resolved by 2026-04-25, so no position sits in both the predictor and the forward pool, and the deviation is definitional rather than a leak from predictor to outcome. Two of the markets had no venue settlement record and kept their scheduled date under the venue operator; the chain operator covers all of them. The 12.6% and 23.0% capture-date figures and the +0.144 sensitivity this page carried from 2026-09-02 are superseded. The recomputation artifacts, which name every input by path and sha256, are published beside this page; the position archives and the settlement extracts are held in the private repository and supplied on request. This result is not yet quotable as a result: quotability opens only together with this disclosure and the series, once the disclosure sidecar carries the field that binds them.
The 304 wallets at the confirmatory read are the intersection of two counted denominators, both read from that artifact: 2,572 of 3,509 ranking-side wallets cleared the 30-position and 20-covered ranking floors, and 588 of 1,290 forward-active wallets cleared the 10-position forward floor. Uncovered wallets and excluded positions are counted in the artifact, never dropped silently.
The recomputation artifacts, each naming its inputs by path and sha256: the settlement recomputation of the 2026-07-03 artifact, the accrual sequence (venue) and (chain), the confirmatory read at the 2026-07-11 archive (venue) and (chain), and the descriptive later-archive series (venue) and (chain). Their hashes and the quotability state travel in the settlement-boundary sidecar. The producer is services/api/scripts/clv_edge/settlement_accrual_confirmatory.py.
The pre-registered secondary spans zero
The pre-registered secondary comparison asks whether CLV ranks wallets better than plain realized edge. It is a paired difference of forward Spearmans (CLV rank minus realized-edge rank, the same wallets, the same forward outcome), wallet-resampled bootstrap, 10,000 resamples, and it carries no pass or fail. At the confirmatory read the secondary is +0.045 with a 95% interval from -0.062 to +0.153: it spans zero, with the point favouring the CLV ranking; the 2026-07-03 secondary (-0.092) is superseded.
This is one read, on one venue, over one in-window period. Per the frozen specification, the confirmatory read is the first daily artifact where both floors hold, so the confirmatory read for this filing is the read at the 2026-07-11 archive under settlement time; later archives are descriptive only under the frozen rule and are shown beside it, and any further confirmatory claim requires a new pre-registration. A rank correlation of +0.188 over 304 wallets is modest, and the series it sits on top of declines toward the bar. It is not a forecast, it does not establish that CLV-ranked wallets can be traded profitably, and, given the secondary result above, it does not justify preferring CLV over realized edge as a ranking input. A failed bar would have been reported here the same way.
The 2026-07-03 verdict artifact, every input archive sha256, the frozen tape sha256, the seed, and the methodology hash are committed at docs/ops/evidence/clv-edge-forward-verdict/latest.json (methodology hash af24f0826cfc4945d251f68acdb503c373f3c873bdaaaeb1e1a139bad9dfc788, master seed 20260613); the confirmatory read carries the same methodology hash and the same seed. The forward evidence is the same collector archive the FDR forward test above reads. Exclusions applied to the forward side, all counted in the artifact that reports them. At the 2026-07-03 artifact: 26,617 pre-window, 5,587 micro-market, 1,976 non-objective resolution source, out of 94,125 rows total, leaving 59,945 qualifying positions before the per-wallet floor. At the 2026-07-11 archive under settlement time: 50,577 pre-window, 10,755 micro-market, 3,971 non-objective resolution source, out of 139,049 rows total, leaving 73,746 qualifying positions before the per-wallet floor.
Superseded 2026-09-04. Boundary operator, as disclosed 2026-09-02. This paragraph and the one after it are kept as the dated record of what was disclosed on 2026-09-02, when capture dates were the only available proxy for settlement time. Both are superseded by the settlement-time correction at the top of this section, and neither supports a verdict. This test admits a position by its market’s scheduled end date, which is what the shared archive records as a resolution date and can differ from when the market actually settled. The registered window has a start and no end, so one boundary is exposed, in two directions. A position that settled before 2026-06-13 but was scheduled to end on or after it is admitted as forward evidence; a position scheduled to end before 2026-06-13 that actually settled on or after it is excluded from it. Only the first direction could be measured from capture dates, and it is measured here; the second could not be identified without settlement timestamps (corrected 2026-09-03: this paragraph said one direction). Both directions were measured on 2026-09-04 in the settlement-time recomputation at the top of this section, which supersedes the figures below. Measured over the 23 archives named in the artifact’s manifest by reproducing its own admission filter, which reproduces its exclusion_counts field for field: of the 59,945 positions this readout admits (the artifact’s own exclusion_counts.qualifying_positions), 7,544 (12.6%) already appear, with their outcome determined, in an archive captured before 2026-06-13, so they are admitted against the filed “resolve on or after” reading. The correlation above does not rest on that pool. It rests on the 19,740 pooled positions from the 464 wallets clearing both floors (the artifact’s n_forward_positions and n_wallets, the same 19,740 in the tile above), a subset of the admitted set, and within that subset the share is higher: 4,535 of 19,740 (23.0%).
Superseded 2026-09-04. What happened when the capture-date subset was dropped, as reported 2026-09-02. This bound was computed on the positions capture dates could identify, about half of the ones that had actually settled before the window. It is kept as the dated record and it supports no verdict; the correction at the top of this section replaces it. This did not need a settlement timestamp to bound, because those mis-admitted positions were already identified. Dropping them and re-applying the frozen floors, on the same master seed 20260613 and the same 10,000-resample wallet bootstrap: Spearman rho +0.144, 95% CI [+0.032, +0.252], on 14,826 positions from 321 wallets, both floors still met (321 against 300, 14,826 against 3,000). The lower bound stayed above zero and rho stayed above the +0.10 bar, on a thinner margin. Two things change at once here, the positions and the wallet set, so this is a bound rather than a like-for-like restatement. It is post-hoc, not pre-registered, and no verdict reads it. Capture day is a proxy for settlement time. The exact recomputation against the settlement timestamp was published on 2026-09-04, in the correction at the top of this section, and this bound did not survive it: it was computed on the positions capture dates could identify, about half of the ones that had actually settled before the window.
References
- V1 paper: Edge Score Methodology V1 (in-sample OOF Spearman +0.514, Fama-French bootstrap null p < 0.0001).
- V1-M paper: Edge Score V1-M cross-venue extension (defines the V1-M reference cohort used here).
- Brier-only baseline: 10,000-wallet Polymarket study (Spearman +0.147 between Brier and signed-log PnL).