Effective
#unadjusted-corporate-actions-in-published-meansMeasured at . Historical values, not current counts.
Original narrative and recorded follow-ups
Every mean forward return published on this page was overstated, and the largest ones were overstated by a multiple. The cause: a small number of rows whose forward window spans a split or reverse split the price series was never adjusted for. HCWC closed at $0.2352 on 2026-08-28 and at $7.53 on 2026-09-01, a single-session factor of 32.02, and then traded $7.12, $6.99, $7.00. That is a change in share count, not a 4,598% return. Nobody held a position that multiplied 48 times in a month. Removing rows whose window spans such an event moves the highest-qualified 1M mean from +21.06% to +4.67%, on 14 affected rows out of 1,411 -- one percent of the sample carrying three quarters of the published figure. Upper range moves +7.61% to +3.37%, Middle +13.19% to +5.71%, Lower +30.03% to +10.29%, and Lowest +75.62% to +5.51%. Every classification moves down. An existing quarantine reason, forward_return_out_of_range, could not catch this: its ceiling is 9,999.99%, so a 4,598% return is inside the bound. That constant stops arithmetic overflow and was never going to stop a corporate action. The detector added with this correction reads our own stored price series and refuses any window containing a single-session price factor at or beyond 5x in either direction, which no continuous market produces. It takes no view on which corporate action occurred; it only declines to call the window a return. Six hundred admitted registry rows across 55 tickers contain such a window, 259 of them resolved. Seven of the 55 are mega-caps -- AMAT, AMD, AXP, GE, HD, KLAC, MU -- where a five-fold single session is not a split but a bad print in our own stored series, which is disqualifying on the same grounds and is its own open defect. The rule is stated rather than tuned, and it lowers every number it touches, including the one this page led with. This entry said, from 2026-09-07, that every mean forward return published on this page was overstated. That was measured for the 1M column and written about the whole page. Measured for the 3M column on 2026-09-08 with the same query at 90 days: Middle range +9.72% becomes +9.77% once its 24 discontinuity-spanning rows are removed, and Upper range +9.52% becomes +10.35% once its 9 are -- both understated, not overstated. Lower range +3.85% becomes +3.57%. Two of the eight published means moved the other way, so the sentence was broader than its evidence and is left as first written, earlier in this entry, so a reader can see it. The highest-qualified 3M cell has one row and is not published.
- Affected registered rows
- 600
- Admitted rows total (denominator)
- 91319
- Affected resolved rows
- 259
- Resolved rows total (denominator)
- 30691
| Classification | Rows |
|---|---|
| Highest qualified | 14 |
| Upper range | 53 |
| Middle range | 101 |
| Lower range | 56 |
| Lowest range | 35 |
Affected tickers
AEHL, AEMD, AMAT, AMD, APUS, ARTL, AXP, BIAF, BIYA, BNRG, BRCC, BYAH, BYND, CCHH, CLDI, CLGN, CPOP, CSAI, CXAI, CYCU, DBGI, ELAB, FEED, FFAI, FGL, GAME, GCTK, GE, GLMD, GRML, GRNQ, HAO, HCWC, HD, IMCC, IPW, JDZG, JUNS, KAPA, KLAC, LEXX, LGCL, LGVN, LIMN, MBAI, MBRX, MU, MVIS, MYSZ, NCT, NRDY, NXL, OMH, ONFO, PLAG
Recorded SQL; not re-run for this publication.
The recorded query filters to resolved 30-day rows; it does not independently reproduce the full affected-row count recorded above. That count awaits a corrected replay.
Recorded SQL
with px as (select symbol, snapshot_at::date as d, price, price / nullif(lag(price) over (partition by symbol order by snapshot_at),0) as f from score_snapshots where price is not null), events as (select distinct symbol, d from px where f >= 5 or f <= 0.2), reg as (select r.ticker, r.trading_day, r.band, s.forward_return_30d as ret from score_track_record_cohort_registry_effective r join score_snapshots s on s.id = r.source_snapshot_id where r.cohort_status = 'admitted' and s.forward_return_30d is not null), flagged as (select reg.*, exists (select 1 from events e where e.symbol = reg.ticker and e.d > reg.trading_day and e.d <= reg.trading_day + 30) as spans_split from reg) select count(*) filter (where spans_split) as affected_rows, count(*) filter (where spans_split and ret is not null) as affected_resolved_rows, count(*) as admitted_rows_total, count(*) filter (where ret is not null) as resolved_rows_total, band, avg(ret) as mean_published, avg(ret) filter (where not spans_split) as mean_clean, (select count(*) from score_track_record_cohort_registry_effective where cohort_status = 'admitted') as admitted_rows_total, (select count(*) from reg) as resolved_rows_total from flagged group by band