Champion Methodology
Champion Tier System
챔피언은 player/team과 동격의 1급 엔티티다. 패치와 메타에 따라 2주마다 가치가 달라지는 챔피언의 강도를 잔차(residual) 기반으로 측정한다 — raw 승률이나 픽률이 아니라.
모델 버전: rift_index@2026.1
왜 잔차 기반인가
같은 챔피언이라도 강팀 vs 약팀, 블루 vs 레드 사이드, Bo5 결승 5세트 등 맥락에 따라 승률이 크게 달라진다. Residual = Actual − E[result | context]는 이 모든 맥락을 통제한 순수 챔피언 기여를 분리한다.
metric_residual = Actual − E[metric | patch, role, league_strength,
opponent_strength, side, series_depth, fearless_state]3-Layer 티어 시스템
Meta Tier
"이 패치가 이 챔프에게 얼마나 우호적인가?" - PatchFitΔ, PresenceRate, BanPressure, PriorityPick 기반.
단위: patch / patch_range
Effective Tier
"표본 안에서 실제로 얼마나 이겼나" - WinResidual, DraftValueResidual, GameImpactResidual 기반.
단위: league × season × split
Context Tier
"어떤 조건에서 강해지는가?" - side, game_length, series_depth, fearless_slot, opponent_archetype matrix.
카드 상세 drawer에서만 노출
ChampionPower 공식
ChampionPower_raw = 0.25 z(EffectiveResidual) // WinResidual 가중 평균 + 0.15 z(DraftEdgeContribution) // D01 + 0.15 z(PatchFitΔ) // M01 + 0.10 z(PresenceRate_adj) // M02, league 강도 보정 + 0.10 z(ObjectiveAggregate) // O01–O06 + 0.10 z(ScalingFit) // S01–S06 + 0.10 z(Resilience) // R01–R06 + 0.05 z(FlexIndex) // M06 ChampionPower = clamp(1, 99, round_half_up(50 + 12 × ChampionPower_raw))
50 = 리그 평균, 70 = 리그 최상급, 90+ = 역사적 수준. 반올림은 Python banker's rounding이 아닌 0.5 올림을 사용한다.
티어 등급 경계값
| 등급 | ChampionPower 범위 | 설명 |
|---|---|---|
| S+ | ≥ 82 | 역사적 수준 — 해당 시즌을 정의하는 챔피언 |
| S | 75–81 | 리그 최상급 — 메타 중심부 |
| A | 66–74 | 우선 픽/밴 대상 |
| B | 55–65 | 상황 픽 |
| C | 45–54 | 평균 이하 |
| D | < 45 | 메타 밖 |
경계값은 표본 window percentile + 절대 ChampionPower 임계 동시 만족을 요구. 둘 중 하나만 만족 시 한 단계 하락.
8개 지표 축
약 55개 지표는 아래 8개 축으로 분류된다. 공개 점수는 축별 대표 1–2개씩 총 10–15개.
패치/메타 내 생태 건강도 — PatchFitΔ, PresenceRate, BanPressure
0–14분 라인 페이즈 가치 — CSD@14, GD@14, SoloKillRate
15–25분 구간 기여 — Roam, PickThreat, SkirmishWinRate
5v5 교전 기여 — FightLeverage, EngageQuality, FrontToBackValue
드래곤/바론/헤럴드/타워 관여 — DragonSetupCredit, BaronThreatContribution
시간축 가치 변화 — CurveSlope, PowerSpikeWindow, GameLengthBucketEV
픽밴/카운터/synergy — DraftEdgeContribution, SynergyIndex, CounterMatrixCell
국제전/시리즈 심도 대응 — InternationalResidual, FearlessDepthContribution
표본 규칙 & Confidence
| 윈도우 유형 | 최소 표본 (picks) |
|---|---|
| 리그 × 스플릿 카드 | 12+ |
| 대회 카드 (MSI/Worlds) | 6+ |
| 크로스 리그 집계 | 25+ |
| Context Tier 셀 | 5+ |
표본 미달 → Provisional 배지 (회색 + 점선 테두리). Provisional ≠ Low Confidence — Provisional은 표본 미달, Low는 모델 불확실성.
ChampConf_raw = 0.30 SampleStrength // pick 수 로그스케일 + 0.20 LineupDiversity // 몇 팀이 픽했나 + 0.15 PatchStability // 윈도우 내 패치 변화 적음 + 0.15 MatchupCoverage // 상대 family 다양도 + 0.10 LeagueCalibration // 리그 강도 calibration 안정 + 0.10 RoleFixation // 단일 포지션 여부 High ≥ 0.75 · Medium 0.45–0.75 · Low < 0.45
레어도 — 챔피언 카드
불변식 & 안티패턴
불변식
- 모든 챔프 공개 점수는 residual. raw 승률은 raw 데이터 드롭다운에서만.
- 한 (champion, role, league, season, split, model_version) 조합 = 카드 1장.
- 종료 스플릿 카드 immutable. 재계산 = 새 model_version 별도 카드.
- lineage 3컬럼 (source / fetched_at / license_tier) 필수.
- Tier 등급은 percentile + 절대 임계 동시 만족 필요.
금지 안티패턴
- "OP 챔프", "사기 챔프" 단정적 표현 금지. "이 윈도우 상위 X%"로.
- 단일 지표 티어링 금지 — 항상 ChampionPower + 드라이버 3개.
- 개인 플레이어 없이 챔피언 단독 승패 설명 금지.
- 밸런스 패치 직후 48시간 카드는 Provisional 고정.
- Tier1 외 리그 데이터를 ALL_TIER1 집계에 혼합 금지.
python analytics/statiz_lab/scripts/run_derivatives.py.