S16 V4: small reference corrections and reproduction
V4 predicts whole-Worlds per-game picks, bans, presence and conditional mean pick rank/BP step. Role rates use the same event-game denominator and sum to overall picks. Worlds actual results are unavailable.
1. Inherited S15 historical model
w(g) ∝ exp(-ln(2)·age/45 - 0.25·patch_gap) × importance(g) × exp(0.8·clip((pre_game_Elo-1500)/400,-1,1)) × event_size^(-0.25) × first_game_factor
V3’s17 features, six frequency ridge models, five position ridge models and learned coefficients are unchanged.39 S15 historical windows; first27 select ridge0.03/residual blend0.75/position blend0.5. Pre-game Elo, event importance,45% qualified-team mixture, first-game factor1.4, patch distance and45-day half-life remain.
Complete inherited method, features, strength assumptions and training errors.
S15 shared coefficients · Declared V4 priors
2. Numeric and mechanism changes
patch_delta(c,r) = clip(1.25 × numeric(c,r) + 1.25 × mechanism(c,r) + 1.0 × system(c,r), -1.6, 1.6)
Numeric changes remain favorable log(new/old) × ability importance × role relevance; cooldowns/costs/damage-taken invert sign. Mechanisms retain individual importance priors; system effects are not amplified.26.19 is historical-exposure adjusted;26.20 applies directly. Historical regression/support precedes exp(delta) and projection.1.25 scales response elasticity, not25 percentage points of every champion rate.
1.25 is a fixed untrained sensitivity assumption, not an estimated true elasticity. The dashboard compares1.0/1.25/1.5; effects differ by numeric magnitude, ability/mechanism importance and role relevance. V3’s negative Rocketbelt haste correction is retained.
3. Pro practice on the official role
player_counts(c) = Σ eligible_game 2^(-age_days/10)
player_share(c,r) = (player_counts(c,r) + 20 × patched_professional_pick(c,r)/2) / (Σ_c player_counts(c,r) + 20)
practice_candidate(c,r) = 2 × mean_over_19_team_starters(player_share(c,r))
practice_pick = patched_professional_pick + clip(0.05 × (practice_candidate - patched_professional_pick), -0.02, 0.02)
Use Worlds-team starters, verified public accounts, in-window solo ranked, with played role matching the official role. Pool accounts per player and average people, preventing grinder domination. Missing players contribute exactly the professional baseline.5% is maximum blend;20 pseudo-games and coverage further shrink its effective influence.
A novel practice role needs≥3 games and≥1 Worlds starter. One player’s practice remains weak evidence, not an event-wide meta guarantee.146 accounts/2361 records/1781 main-role/580 excluded autofill;39/95 players with eligible samples. Only55 accounts cross the window boundary; retained histories cannot all be called complete30-day records.
4. KR Master+ role reference
kr_effective_blend(c) = 0.05 × observed_eligible_kr_games(c) / (observed_eligible_kr_games(c) + 2000)
new_role_share(c) = (1-kr_effective_blend) × current_role_share + kr_effective_blend × observed_eligible_kr_role_share
Reallocate a champion’s existing pick volume; do not copy ranked frequency into Worlds. A novel KR role requires≥500 games,≥5% of this champion’s ranked picks,≥0.25% provider lane pick rate, and prior professional champion usage. Unlisted states beyond424 visible rows are unknown and fall back toward professional priors; unsupported roles failing gates stay off.
Pro observations receive exp(favorable weighted log change) only for patches still ahead of their recorded version:16.18 gets26.19+20,16.19 only26.20,16.20 neither. Recenter adjusted hero weights to the original effective observed volume so buffs cannot invent reliability; unknown patches get no exact correction. KR aggregate lacks per-game versions and receives no extra patch multiplier. Both blend after the professional patch prior; no proven causal origin of ranked trends is claimed. Ranked win rate does not directly change bans; final projection may adjust them mechanically.
5. Novel roles and draft positions
support = historical_role OR qualified_practice_role OR qualified_kr_role
Σ_c pick(c,r)=2; Σ_c ban(c)=10; Σ_r pick(c,r)+ban(c)≤1
mean_BP_step = mean_pick_rank + 6 + 4 × P(pick_rank≥7)
Novel-role point forecasts cap at0.5 percentage points, checked after projection. Patch shocks/epsilon alone cannot add roles. Zero-pick positions are null. Ranked games have no BP sequence; new lanes borrow a50:50 professional champion/role position prior, never a ranked-trained draft order. Overall means weight predicted role picks.
6. Error and verification scope
The new layer has no S15/training error or verified accuracy gain. Exact pre-S15 pro practice could not be recovered;197 partial15.18 KR rows missing Bot/Support cannot train it. Feeding current S16 ranked data into past windows would leak future information. Learned S15 coefficients retain frozen hashes.
Baseline V3’s13 S16 windows/210 games: pick RMSE5.3696pp, presence RMSE8.5959pp, champion-role RMSE2.4542pp, weighted rank MAE1.4602, weighted BP-step MAE2.4612. These are V3 retrospective errors, not V4 errors. Full S15 training/last7-window errors are in the baseline report.
V4 checks252 OP.GG raw responses and five KR raw tables, UTC bounds, identity, played roles, deduplication, auxiliary-off exact V3 equality, no patch-only novel roles, no repeated observed patch shocks, future/old practice invariance, marginals and valid position moments.80 historical-series bootstraps hold ranked observations/new priors fixed and omit missing-account/parameter uncertainty.
7. Reproduction
python -X utf8 research/scripts/forecast_s16_worlds_v4.py
python -X utf8 research/scripts/render_s16_forecast_v4.py
python -X utf8 research/scripts/audit_s16_forecast_v4.py --skip-raw
node research/scripts/check_s16_dashboard.cjs s16_preparation/outputs_v4
These reproduce frozen repository inputs offline. Full source replay additionally needs untracked raw compressed responses; then omit--skip-raw. Online acquisition uses collect_s16_solo_reference.py; its acquisition_config freezes the window. Preserve a separate snapshot when refreshing, so old forecasts can be backtested.
Coverage · Role evidence · Audit · Input hashes · Baseline errors
8. Examples (whole-Worlds denominator)
| Champion | Role | V3 % | V4 % | Pro games / players | KR champion share % |
|---|---|---|---|---|---|
| Lucian | top | 0.0000 | 0.0638 | 8 / 3 | 4.24 |
| Lucian | mid | 0.0000 | 0.1990 | 18 / 5 | 8.20 |
| Lucian | bot | 18.5917 | 17.7782 | 23 / 8 | 87.50 |
| Aurora | top | 0.3351 | 0.3888 | 5 / 2 | 14.28 |
| Aurora | mid | 7.8643 | 8.0454 | 9 / 5 | 84.49 |
| Azir | mid | 1.4818 | 1.4747 | 1 / 1 | 89.83 |
| Tahm Kench | top | 0.0000 | 0.0142 | 1 / 1 | 23.63 |
| Tahm Kench | sup | 1.1627 | 1.1788 | 0 / 0 | 74.04 |