Classification: (a), a concrete mechanism on a market we cannot trade. The source measures the estimated equity allocation of Chinese public mutual funds and uses changes in that aggregate positioning to time the A-share index. It also splits time into trend and range regimes with an MA system and reports that the positioning signal only times the market in ranges. We have no fund-position data and no CNEQ estate to run it on (L103). The crypto analogue of 'aggregate positioning of an identifiable participant class' is Binance's published positioning metrics. The metrics feed (data/supplementary/metrics/<SYM>/all.parquet, BinanceVisionCollector, 5-minute rows from 2021-12-01) carries long_short_ratio (all-account global ratio) and top_trader_long_short_ratio. POINT-IN-TIME PRE-STUDY (daily closes, 10 alts, 2022-04 to 2026-09, non-overlapping 5-day events, |z|>1.5 on the 60-day z-score of log long_short_ratio): (1) FOLLOWING the crowd lost in every variant, and FADING it earned a gross +0.55% per 5-day trade over 1155 events (t ~1.9). By regime: range +0.44% (n=410, t 1.0), trend +0.62% (n=745, t 1.55). (2) The source's regime split is NOT reproduced: the signal is stronger in trends than in ranges. The hypothesis therefore uses no regime gate and records the source's range-only claim as falsified here. (3) Top-trader ratio and positioning-change (residualised on price) variants showed no edge, roughly 0 +/- 0.3%, and are excluded. (4) Fading crowd LONG extremes carries most of the edge (+1.02% on n=174 in ranges), while fading crowd SHORT extremes is about flat. (5) Per year, range-regime means are 2022 +0.45%, 2023 +0.92%, 2024 +0.33%, 2025 -0.02%, 2026 +0.62%. Seven of 10 symbols are positive. This is a modest, honestly weak edge. Implementation: one independent position per symbol, at most 10 concurrent, 10% of equity notional each, leverage fixed at 1.0. The universe is capped at 10 names per L173, and the per-bar work is O(1) rolling statistics on daily bars (precompute the daily metric series once in __init__ and use bisect for as-of lookup, per the sandbox-timeout lessons).