Methodology
Transparent Scoring Logic
Rift Index의 모든 점수는 공개 가능한 계산식과 설명 가능한 입력값으로 산출됩니다. 어떤 지표도 블랙박스가 아닙니다.
계산 철학
Rift Index는 Raw → Expected → Residual → Value → Rating 파이프라인을 통해 선수·팀의 실력을 맥락 조정 후 잔차(초과 수행)로 측정합니다.
- Raw — 원시 경기 스탯 수집 (Oracle's Elixir)
- Expected — 패치/역할/상대강도/사이드 조건에서 기대되는 스탯값 산출
- Residual — Actual − Expected. 맥락을 제거한 "얼마나 잘했나"
- Value — 역할별 가중 합산으로 단일 지표화
- Rating — 시간 감쇠와 표본 가중으로 Elo/Power 점수 산출 → [1, 99] 공개 점수 변환
입력 피처 (컨텍스트 벡터 C)
기대치 모델의 입력으로 사용되는 컨텍스트 피처들입니다.
- patch
- 현재 적용 패치 번호
- role
- 라인 포지션 (TOP / JGL / MID / ADC / SUP)
- champion_family
- 챔피언 패밀리 분류 (~35개 군)
- matchup_family
- 상대 챔피언 패밀리
- side
- 블루/레드 사이드
- opponent_strength
- 상대 팀의 직전 30일 Team Elo (bootstrapped)
- jungle_help_ratio
- 정글 CS 방문 비율 (자원 구조)
- comp_archetype
- 드래프트에서 추론한 팀 아크타입
- game_length_bucket
- 경기 길이 구간 (short/mid/long)
- series_depth
- Bo 시리즈 내 몇 번째 게임
- fearless_depth
- 시리즈 내 사용된 챔프풀 깊이
- lineup_stability
- 최근 5경기 동일 라인업 비율
Team Elo
팀 간 상대적 전투력을 나타내는 Elo 기반 레이팅. 리그 강도(LS)를 블렌딩하여 리그 간 비교를 가능하게 합니다.
TeamElo* = TeamElo + λ × LeagueStrength P(A beats B) = sigmoid((Elo*_A - Elo*_B + DraftAdj + SideAdj) / τ) P(B beats A) = 1 - P(A beats B) ← 두 번 계산하지 않음 (부동소수점 오차 방지) 업데이트: TeamElo_new = TeamElo_old + K_stage × (S - P) K_stage: Bo1 = 20 | Bo3 = 16 | Bo5 = 12 | International = 25 신규 팀 초기값: 리그 평균 Elo
리그 강도(League Strength): 국제전(MSI/Worlds) 결과와 선수 이적 성과를 활용한 latent variable. 표본 < 5이면 global average로 shrinkage 처리.
Team Power
Team Elo에 더해 현재 활동성, 리그/대회 난도, 조직 연속성을 함께 반영하는 종합 팀 파워 점수.
TeamPower_raw = 0.24 × z(TeamElo*) + 0.12 × z(DominanceResidual) + 0.08 × z(RecentForm) + 0.07 × z(SOS) + 0.07 × z(LineupSynergy) + 0.06 × z(DraftFlex) + 0.04 × z(CloseoutEfficiency) + 0.12 × LeagueCoefficient + 0.04 × TournamentCoefficient + 0.12 × ActivityStatus + 0.04 × OrgContinuity PublicScore = clamp(0, 100, round_half_up(50 + 12 × raw_z))
- DominanceResidual
- GD, CSD 등 라인 지배력의 잔차 합산
- SOS
- SOS — 상대 팀 TeamElo* 가중 평균
- LineupSynergy
- 현재 5인 조합의 역할별 호환성 점수
- DraftFlex
- 다양한 픽/밴 전략 구사 능력
- CloseoutEfficiency
- 앞선 상황에서 경기를 끝내는 효율
- ActivityStatus
- 현재 시즌 활동 여부, 최근 경기 신선도, 현재 로스터 존재 여부
- OrgContinuity
- 현재도 운영 중인 조직의 시즌 연속성. 해체·휴면 팀에는 보너스 없음
Player Elo (Latent Skill)
팀 승패와 무관하게 개인 기대치 초과 수행을 누적하는 latent skill 모델. 역할별로 독립 계산됩니다.
ObsResidual[i, g, role] = Σ_k w(role, k) × z((m_k - E[m_k | C_g]) / σ_k) Skill[i, role, t] = ρ_role × Skill[i, role, t-1] + η × ObsResidual + ξ ρ_role = 0.85 (기억 감쇠) η = 0.30 (학습률) 표본 조건: 역할 내 12게임 이상, 챔프 패밀리 3개 이상
표본 미달 선수는 Provisional 플래그. 점수는 표시되지만 신뢰도 Low. 역할 변경 시 이전 역할의 Skill은 독립적으로 보존됩니다.
Role Power
현재 시점의 선수 파워랭킹 점수. Player Elo 외에 최근성과 패치 적응력, 현재 활동 상태를 반영합니다.
RolePower_raw = 0.40 × z(PlayerElo) + 0.14 × z(RecentForm) + 0.08 × z(PatchFit) + 0.05 × z(FearlessDepth) + 0.07 × z(Reliability) + 0.09 × LeagueCoefficient + 0.05 × TournamentCoefficient + 0.12 × ActivityStatus PublicScore = clamp(0, 100, round_half_up(50 + 12 × raw_z))
- RecentForm
- 최근 10경기 잔차 평균 z-score
- Reliability
- 역할 유지율 × 라인업 안정성
- ActivityStatus
- 현재 소속 여부, 최근 출전 시점, 최신 시즌 문맥 반영
Patch Fit
현재 패치에서의 성능이 이전 트레이딩 기준선 대비 얼마나 향상/저하됐는지 측정합니다.
PatchFit_raw = mean(Residuals on current_patch) - trailing_baseline_adjusted 현재 패치: dim_patch.is_current = TRUE 이번 패치 게임 < 3: PatchFit = NULL (Provisional)
Confidence Grade
점수의 신뢰 수준을 나타내는 등급. 표본 크기, 챔프풀 다양성, 리그 보정 강도 등을 종합합니다.
Confidence_raw = 0.30 × SampleStrength + 0.15 × UniqChampBreadth + 0.15 × RoleStability + 0.15 × LeagueCalibStrength + 0.15 × LineupStability + 0.10 × RecencyBalance 등급: High : raw ≥ 0.75 (teal) Medium : 0.45 ≤ raw < 0.75 (yellow) Low : raw < 0.45 (amber) 표본 0: confidence_raw = 0.0 → Low
Provisional vs Low Confidence: Provisional은 최소 표본 미달(12게임), Low는 데이터가 있지만 불확실성이 높은 상태입니다.
Fearless Depth (beta)
피어리스 다전제에서 comfort 챔프가 제거된 후에도 성능을 유지하는 능력.
comfort_pool = 최근 60일 상위 5개 챔프 패밀리 effective_pool = comfort_pool 제외 후 남은 패밀리 집합 FearlessDepth = retained_performance( effective_pool, controlling_for: opponent_strength, draft_difficulty ) 피어리스 시리즈 게임 < 6: fearless_depth_score = NULL (not Provisional) 피어리스 미경험: NULL (단순 미해당, 에러 아님)
Known Limitations
- ⚠소규모 리그 데이터 부족: LCK/LPL 이외 리그는 League Strength 표본이 적어 교차 리그 비교 신뢰도가 낮습니다. Confidence Grade로 표시됩니다.
- ⚠시즌 초반 Provisional: 신규 선수·팀은 12게임 데이터 쌓이기 전까지 Provisional 플래그가 붙습니다.
- ⚠타임라인 이벤트 미반영 (Phase 2): 세부 in-game 이벤트(와드/오브젝트 참여 등)는 현재 Value Timeline 미구현으로 반영되지 않습니다.
- ⚠패치 전환기 불안정: 새 패치 출시 직후 3게임 미만 데이터에서 Patch Fit이 NULL 처리됩니다.
- ⚠공식 Riot 데이터 아님: 현재 Oracle's Elixir 기반 bootstrap. 공식 데이터 전환 시
model_version이 갱신됩니다.
FAQ
Q. Team Elo와 Team Power는 어떻게 다른가요?
Q. Player Elo는 팀 성적에 영향을 받지 않나요?
Q. 왜 [1, 99] 범위이고 0과 100이 없나요?
Q. Provisional 선수를 왜 숨기지 않나요?
Q. Fearless Depth가 NULL인 선수는 점수에 불이익이 있나요?
Q. 데이터는 얼마나 자주 업데이트되나요?
용어 사전
- CSD
- CS Difference — 라인전 CS 차이
- GD
- Gold Difference — 골드 차이
- XPD
- XP Difference — 경험치 차이
- SOS
- Strength of Schedule — 일정 강도 (상대팀 평균 Elo)
- SV
- State Value — 특정 게임 상태의 승리 확률 기여도
- WPA
- Win Probability Added — 이벤트별 승률 변화량
- Bo3/Bo5
- Best of 3/5 — 다전제 경기 형식
- Fearless Draft
- 각 게임마다 이전 게임에서 쓴 챔피언을 다시 선택할 수 없는 드래프트 규칙
- Provisional
- 최소 표본(12게임) 미달로 불확실성이 높은 점수 상태
- Latent Skill
- 직접 관찰 불가능하지만 여러 지표에서 추론되는 내재적 실력
- z-score
- 평균 0, 표준편차 1로 정규화한 값 — 역할/패치 간 비교를 가능하게 함
Current model version: rift_index@2026.1