Aller au contenu
Accès anticipé— LegendsTracker est en développement actif.

Documentation technique

Notre méthodologie

Chez LegendsTracker, chaque chiffre a une formule. Cette page documente tous nos algorithmes, nos sources de données, nos limites et nos choix statistiques. Transparence totale.

Nos données

Toutes nos données proviennent de l'API officielle Riot Games. Nous utilisons trois endpoints principaux :

  • match-v5 : Données complètes de chaque partie (timeline, gold, dégâts, objectifs, événements)
  • spectator-v5 : Données en temps réel des parties en cours
  • league-v4 : Classements ranked, LP, rangs

10

serveurs Riot

172

analysés (172 curés)

Chaque

patch

100%

API Riot

Honnêteté sur notre échantillon : LegendsTracker est un projet indépendant. Notre base de données contient environ 800 à 1 200 parties par champion par patch, là où des sites comme LoLalytics ou U.GG en agrègent 500 000+. Nous compensons cette différence avec des méthodes statistiques adaptées (Bayesian smoothing), mais nos winrates sont naturellement plus volatils. Nous préférons être transparents plutôt que de prétendre une précision que nous n'avons pas.

Player DNA : 35 features × 13 archétypes

Le Player DNA est notre système de profilage unifié. Il extrait 35 features comportementales de tes 30 dernières games ranked (regroupées en 6 chromosomes : Combat, Macro, Mécaniques, Mental, Team, Tempo) et te classe parmi 13 archétypes hand-validés (Sniper, Berserker, Architecte, Fantôme, Showman, Gardien, Coinflip, Tyran, Rat, Prédateur, Phénix, Mur, Patient).

Chaque feature est z-scorée (écart à la moyenne globale en σ), puis on identifie tes 3 signatures (forces récurrentes, top-3 σ positifs) et ton block(faiblesse récurrente, σ le plus négatif). L'archétype est attribué par scoring rule-based : score = moyenne(z[clés positives]) − moyenne(z[clés négatives]) (une moyenne, pas une somme — pour que des archétypes à 3 ou 5 clés restent comparables). Plan A (centroid HDBSCAN sur 100k vecteurs EUW) en backlog Sprint 4.

Transparence — limites actuelles du Player DNA

La normalisation z-score du Player DNA est aujourd'hui calculée contre une distribution globale, pas encore par bucket (rang × rôle) : le corpus actuel (capacités de stockage et niveau de jeu du dev) est trop mince pour des buckets fiables. La calibration par rang × rôle est en cours, en parallèle de l'entraînement HDBSCAN sur 100k vecteurs EUW (Plan A, sprint 4) qui remplacera le scoring rule-based actuel.

Comment une métrique devient un score

Chaque métrique brute (CS/min, vision, dégâts…) est convertie en score 0-100 par interpolation linéaire contre un benchmark calibré par rang, puis ajustée par un multiplicateur de rôle. C'est cette mécanique qui alimente la note de match détaillée (section suivante) et le z-scoring du Player DNA.

score = ((valeur - borne_basse) / (borne_haute - borne_basse)) × 100

Le score est ensuite clampé entre 0 et 100.

Benchmarks par rang

Les bornes sont calibrées sur des données réelles extraites le 23/03/2026 depuis notre base de données (830k+ games ranked EUW1). Refresh manuel lors des gros patches — un scheduler hebdomadaire est en roadmap :

RangCS/minKDAKP%DPMGold/minDeaths/game
Iron4.92.437%5443507.5
Bronze5.83.445%6984016.5
Silver6.63.546%8094346.4
Gold6.83.546%7394286.4
Platinum7.13.546%7634386.4
Emerald7.63.647%7744546.2
Diamond7.63.648%7604526.0
Master7.73.648%7314485.8
Grandmaster7.93.949%7624575.5
Challenger8.14.250%7984665.3

Multiplicateurs par rôle

Les benchmarks sont ajustés par rôle pour comparer équitablement un support et un ADC :

RôleCSVisionDPMObjectifsKP
Support×0.25×2.0×0.55×0.4×1.30
Jungle×0.75×1.3×0.70×1.5×1.15
Top×1.0×0.8×0.90×0.8×0.90
Mid×1.0×0.9×1.0×0.7×1.05
Bot (ADC)×1.1×0.8×1.1×0.9×1.10

Système de grades

Chaque match reçoit un grade global (S, A, B, C, D) basé sur 6 catégories pondérées. Le grade est calculé par rapport à ton rang, pas en absolu : un B en Diamond est bien meilleur qu'un A en Bronze.

Les 6 catégories

CatégoriePoidsMétriques principales
Teamfight25%DPM, kill participation, damage share*
Laning20%CS@15, gold diff@15, XP diff
Survie18%Deaths (inversé), KDA, bonus faibles morts
Income13%Gold/min, CS/min
Vision12%Vision score, wards détruites
Objectifs12%Objective damage/min, tower kills

* Le damage shareest ajusté par rôle : la plage 8-35 % de référence est multipliée par le rôle joué (UTILITY × 0.45 → plage 3.6-15.75 %, BOTTOM × 1.15 → 9.2-40.25 %, etc.). Avant ce fix, un support tank à 10 % de damage share plafonnait ~20/100 sur cette composante (25 % du Teamfight) quoi qu'il fasse — maintenant un support à 12 % obtient un score équivalent à un ADC à 28 %.

⚠️ Ces plages sont des cibles atteignables par rôle, pas une décomposition additive : la somme des médianes par rôle ne fait pas 100 %. Le damage share d'une équipe somme à 100 % par construction (5 joueurs se partagent 100 % des dégâts), mais chaque rôle a une enveloppe différente pour ce qu'il est censé peser individuellement.

Poids des catégories par rôle

Les 6 poids ci-dessus sont ceux des laners(Top / Jungle / Mid / ADC). Un support n'a structurellement ni revenus (gold/CS) ni last-hit d'objectifs : le juger là-dessus le plombe quoi qu'il fasse. Le rôle UTILITY redistribuedonc ces poids vers ce qu'un support contrôle réellement.

CatégorieLanersSupport
Teamfight25%28%
Laning20%15%
Survie18%20%
Income13%5%
Vision12%30%
Objectifs12%2%

Objectifs & tours — retour communauté (2026-05-30) : dans la catégorie Objectifs, le takedown perso de tours ne pèse que 0.05 pour un support (contre 0.35pour un laner). Laisser l'or des plaques à ton ADC est le bon play— ce n'est plus pénalisé. Ton dégât aux objectifs (drake/baron à l'auto) capte déjà ta vraie contribution, et la catégorie entière ne pèse que 2 % de ta note de support.

Comment lire un grade (post-match)

Depuis le 2026-05-20, chaque sous-grade (Laning / Combat / Survie / Objectifs / Vision / Farm) du résumé de match est cliquable. En ouvrant le détail, tu vois :

  • Chaque sous-métrique avec ta valeur vs le benchmark de ton rang + rôle et un statut ▲ / ─ / ▼.
  • Le score normalisé 0-100 de la sous-métrique (mini-barre colorée) et son poids % dans la note de catégorie.
  • Un repère sur les benchmarks ajustés à ton rôle (cf. table des multiplicateurs plus haut), avec un bandeau « Calibré pour <rôle> » en tête.
  • Une bulle « X pèse le plus dans cette note » qui pointe la sous-métrique responsable quand le grade tire vers le bas — utile pour savoir ce qu'il faut bosser en priorité.

La règle générale : un score sous 50 / 100 sur une sous-métrique fortement pondérée explique presque toujours un grade C ou D. À l'inverse, un S / A sur la catégorie n'est jamais « chance » — il y a au moins deux sous-métriques au-dessus de 70.

Seuils de grade

S = 85+
A = 68-84
B = 48-67
C = 28-47
D = < 28

Percentile par rang (interpolé)

Le score brut 0-100 est converti en percentile contre les joueurs du même rang via une interpolation linéaire par paliers. Ça évite les jumps discrets — un score 79 n'est plus brutalement à 78% et un 80 à 90% : la fonction lerp entre les ancres pour une progression continue.

ancres : 0→5, 20→12, 30→22, 40→35, 50→50, 60→65, 70→78, 80→90, 90→97, 100→99

Impact map (impact dans la partie)

L'Impact map (impactScore, 0-100) mesure ton poids réel dans cette partie précise, pas contre ton rang. Il est role-aware :

impactScore = KP_eff × 0.55 + participation_objectifs × 0.45

Pour UTILITY, la participation aux objectifs (un share du dégât d'équipe — un support en fait 5-15 % quoi qu'il arrive) est remplacée par la vision et la présence, qui mesurent vraiment sa présence sur la map :

impactScore (UTILITY) = KP_eff × 0.40 + part_vision × 0.30 + densité_assists × 0.20 + participation_objectifs × 0.10

KP effectif — pondéré par le volume de kills (retour Discord 2026-05-30).Le KP brut est un % du total de kills de l'équipe : 67 % sur 3 kills (= 2 participations) pesait autant que 67 % sur 26. Pour le scoring uniquement, on applique un facteur de volume KP_eff = KP × clamp(kills_équipe / 10 ; 0.3 ; 1). Concrètement 67 %×0.3 ≈ 20 passe enfin sous 31 %×1 = 31 : sur un stomp 3-26, le support adverse à 31 % / 26 kills domine. Le KP brut reste affiché tel quel (67 %) — seul son poids interne change.

MVP / LVP

Le badge MVP est attribué au joueur avec le meilleur globalScore (0-100) parmi les 10 joueurs. La formule est role-aware :

globalScore = impactScore×0.38 + min(KDA, 8)×7.5 + DPM/maxDPM×18 + Vision/maxVision×12 + CS/maxCS×10 + Gold/maxGold×10 - Deaths×1.5 + 4

Pour UTILITY, la formule drop CS/Gold (non pertinents pour le rôle) et redistribue vers vision et impact :

globalScore (UTILITY) = impactScore×0.45 + min(KDA, 8)×7.5 + Vision/maxVision×18 + DPM/maxDPM×6 - Deaths×1.5 + 4

La contribution KDA est cappée à 8 : sans ce cap, un Perfect KDA (ex: 6/0/28 → KDA 34) saturait le score à 100 et tuait la discrimination MVP entre joueurs Perfect-KDA. impactScore lui-même est role-aware (cf. Impact map ci-dessus, KP pondéré par le volume inclus).

Carry — chaque rôle à sa manière

  • Carry Dégâts— laners qui portent par les kills : kill share ≥ 50 % de l'équipe, ≥ 5 kills, en victoire.
  • Carry Engage— supports qui portent par engage/peel/vision : UTILITY + victoire + KP ≥ 65 % + ≤ 3 morts + ≥ 1.5 vision/min. Avant 2026-05-09, le badge "Carry" générique excluait structurellement les supports.

Badges de partie « Dieu de X »

Chaque partie distribue aussi des badges « meilleur de la game » sur une métrique donnée. Depuis le 2026-05-30, les « Dieu de X » exigent des planchers absolusen plus d'être le meilleur — pour qu'un 1/3/1 sur un stomp ne décroche pas « Dieu du Support » juste parce qu'il est le seul support de son équipe :

  • Dieu du Support — meilleur supportScore de la partie, et ≥ 10 assists et ≥ 25 de vision.
  • Dieu de la Vision — meilleur score de vision, et ≥ 25 au total et ≥ 1.4/min (une longue game à vision médiocre ne suffit plus).
  • Dieu du CS — meilleur CS/min des laners, ≥ 7 (hors support).

Choix assumé : on garde la reconnaissance en défaite. Une grosse game de support, ou une vision réellement élite (44 de vision en 18 min = 2.4/min), méritent leur badge même équipe perdante — la vision posée existe que tu gagnes ou non. Le supportScore qui classe le « Dieu du Support » intègre KP, vision, assists moins un malus par mort : un 0.6 KDA ne coiffe donc plus un support propre.

Role Signature : chaque rôle a ses propres KPIs

Les grades globaux donnent une moyenne, mais un Top splitpusher et un ADC carry n'ont pas les mêmes responsabilités. La Role Signature est un score composite propre à chaque rôle, construit sur 5 KPIs avec des poids différents par rôle.

Formule : score = Σ(grade_kpi × poids_kpi) avecS=95, A=82, B=68, C=52, D=30. Le résultat est un score /100 qui reflète ce que ton rôle est censé faire.

Les 5 signatures

TOP

Pression side + impact TF

Impact TF (KP + dmg share)30%
CS diff vs adversaire25%
Pression splitpush (dgts tours)20%
Tanking (dgts encaissés % team)15%
CS / min10%
JUNGLE

Tempo · Ganks · Objectifs

Kill participation30%
Objectifs early (< 15 min)25%
Taux de ganks réussis20%
Dégâts objectifs (% team)15%
Camps farmés / min10%
MIDDLE

Dégâts · Priorité · Roams

Part des dégâts d'équipe30%
Kill participation25%
Roams détectés20%
CS diff vs adversaire15%
CS / min10%
BOTTOM (ADC)

Dégâts · Farming · Survie

Part des dégâts d'équipe35%
CS / min25%
Morts (inverse — survie)20%
CS diff vs opposant10%
Dégâts / gold dépensé10%
UTILITY (Support)

Vision · Peel · Présence

Vision score / min30%
Kill participation25%
Control wards / min20%
Efficacité des roams15%
Tanking (engage/peel)10%

Support — pondération par sous-archétype : les 5 poids UTILITY affichés ci-dessus sont le set par défaut. Depuis le 12/05, le rôle UTILITY applique 5 jeux de poids distincts selon le sous-archétype du champion (enchanter, tank, catcher, mage, ou défaut) : une Leona catcher est jugée surtout sur sa KP et ses roams, une Soraka enchanter surtout sur sa vision et son peel.

Exemple concret : un ADC à 30% de dmg share obtient un A (seuil 28%+), et comme cela pèse 35% de son score, il impacte directement le grade global. Un support avec la même stat obtient aussi un A mais cela ne pèse que 0% dans son rôle (pas un KPI) — sa vision/min compte 30% à la place. Chaque rôle est jugé sur ce qui lui appartient vraiment.

Analyse des morts : contextuelle et role-aware

Chaque mort est taguée et scorée à partir des événements de la timeline Riot (positions, alliés/ennemis à proximité, wards, objectifs, HP avant la mort, gold diff). Le système produit un score 0-100 et une catégorie (good / acceptable / bad / terrible).

Les 13 tags détectés

teamfight

Mort en 3v3+, alliés proches

good_trade

Trade positif (kills ennemies > alliées ±10s)

objective_trade

Mort pour un objectif sécurisé

ganked

Killer/assist d'une autre lane (jungler, roam, TP)

solo_killed

Tué en 1v1 (0 assist, 1 ennemi proche)

caught_out

Seul contre 2+ ennemis, hors teamfight

overextend

Territoire ennemi + 0 allié proche

no_vision

0 ward alliée posée dans la fenêtre 90s

facecheck

Bush/river sans ward avec ennemis proches

pre_objective

Seul, < 2 min avant un spawn majeur

dive_gone_wrong

Près d'une tour + territoire ennemi

repeated_death

Même killer 2+ fois

low_resource_death

HP < 30 % 30 s avant — aurait dû back

Score de qualité

Base à 50. Chaque tag applique un bonus/malus :

score = 50 + bonus(tags) - malus(tags) + phase_modifier(role, phase) + role_bonus
TagPointsCondition supplémentaire
objective_trade+30
good_trade+25
teamfight+15
objectiveSecuredNearby+20bonus de contexte
nearbyAllies ≥ 3+10bonus de contexte
caught_out-25
pre_objective-25
overextend-20
facecheck-20
dive_gone_wrong-20
no_vision-15
repeated_death-15
low_resource_death-15
good (≥ 70)
acceptable (45-69)
bad (25-44)
terrible (< 25)

Modificateurs contextuels

Phase de la partie

  • Early (< 14 min) : caught_out -5, solo_killed -3, objective_trade +5 — les erreurs de lane impactent toute la game
  • Mid (14-24 min) : neutre
  • Late (≥ 25 min) : caught_out -8, teamfight +8, objective_trade +8 — une erreur solo peut perdre la game

Bonus par rôle

  • Support : si un allié low HP proche, +10 (peel attempt reconnu) — pas de tag caught_out / solo_killed
  • Jungle : pas d'overextend en late game (invasion = job), early caught_out +3
  • ADC : pas d'overextend en late game side lane (splitpush = job), late +3

Fix ward detection (avril 2026) : les événements WARD_PLACED de l'API Riot n'incluent pas toujours la position. On distingue maintenant wards confirmées proches (position connue + dans le rayon 3000) et effort de vision (total de wards alliées posées dans la fenêtre 90s, position ou non). Le tag no_visionne se déclenche que si zéro ward n'a été posée — plus de faux positifs qui pénalisaient -15 pts injustement.

Fix vision pré-objectif lifetime-aware (mai 2026) : avant, la métrique Wards avant objectifs ne comptait que les wards posées dans la fenêtre [drake−2min ; drake]. Une Control Ward posée 5 minutes avant le drake (anticipation typique d'un jungler) n'était jamais comptée → l'IA de coaching accusait à tort le joueur de « ne pas warder le drake ». Maintenant, chaque ward a une fenêtre de vie calculée : Control Ward = ∞ (jusqu'à kill/remplacement), Yellow Trinket = 120s, Sight Ward = 150s, Blue Trinket = 60s. Les événements WARD_KILL sont matchés par (wardType, position ±150 unités) pour fermer la fenêtre plus tôt si la ward a été détruite. Le signal envoyé au coach IA passe d'un compteur brut à une couverture qualitative : « X/Y objectifs avec ≥1 ward active en river/enemy 60s avant le spawn ».

Plan de progression : 100% déterministe, calé sur ton scoring

Le plan de progression de 14 jours est généré directement depuis ton diagnostic scoring, sans appel IA. Avant (jusqu'au 12 avril 2026), un appel Claude inventait les objectifs et les seuils — coûteux, lent (~15s), et parfois incohérent. Maintenant, c'est généré côté serveur en pur TypeScript : instant, gratuit, et déterministe.

Comment c'est généré

1. Le serveur fetch tes 30 derniers ranked depuis cached_matches

2. Le Player DNA calcule tes scores et identifie tes 3 axes les plus faibles (briques utilisées par le badge system)

3. Pour chaque axe faible, on pioche 1-2 objective templates dans un catalogue de 12 objectifs curated (cs_per_min, vision_per_min, deaths_per_game, kda, kill_participation, control_wards, etc.)

4. Chaque objectif a une cible alignée sur le benchmark du rang suivant (10-15% au-dessus de ton niveau actuel — réaliste sur 2 semaines)

5. Le nombre d'objectifs et de games requises est adapté à ton tier coach (Iron-Silver : 3 obj × 3 games | Gold-Plat : 4 × 5 | Emerald-Diamond : 4-5 × 5-6 | Master+ : 5 × 6)

6. Le daily focus 14 jours est rotation thématique sur tes 3 axes faibles (4 tâches concrètes par axe, alternées par jour)

Convergence DNA — à terme (Sprint 6.5), le plan utilisera directement le block et les gaps prototypedu DNA pour cibler les leviers archétype-aware (ex. « tu es Berserker, ton plan vise tilt_resistanceen priorité »). En attendant le Player DNA fournit la même information sous une forme compatible avec le catalogue d'objectifs templates.

Catalogue de 12 objectifs templates

Chaque template définit une metric extractable depuis le match data, un target, et 3 tips actionnables écrits à la main :

Améliore ton CS/min

cs_per_min
farm

Augmente vision score / min

vision_per_min
vision

Réduis tes morts / game

deaths_per_game
survie

Améliore ton KDA

kda
teamfight

Sois présent aux team events

kill_participation
roaming

Présence sur les fights d'objectif

kp_objectives
objectifs

Augmente ton DPM

damage_per_min
teamfight

Pose plus de wards

wards_per_game
vision

Achète plus de control wards

control_wards
vision

Augmente ta part des dégâts

damage_share
teamfight

Contribue plus aux objectifs neutres

objective_damage
objectifs

Optimise ton gold/min

gold_per_min
goldEfficiency

Auto-validation des objectifs

À chaque visite de ta page Progression, le système re-fetch tes derniers matchs et vérifie automatiquement chaque objectif via extractMetric() :

for (match of last20RankedMatches) { if (extractMetric(match, obj.target.metric) >= obj.target.value) { obj.qualifying_matches.push(match.id) } } if (obj.qualifying_matches.length >= obj.target.games_required) { obj.completed = true }

Pas besoin de cliquer pour valider — dès que tu fais une game qui remplit la condition (ex: 8 CS/min), elle est automatiquement comptée. Tu vois ta progression évoluer en temps réel.

Pourquoi déterministe vs IA ? Avant, un appel Claude générait le plan en ~15s, coûtait des tokens, et inventait parfois des seuils incohérents. Maintenant : génération en < 200ms, zéro coût, et les seuils sont alignés à 100% avec les benchmarks que le Player DNA utilise déjà. La cohérence avec le diagnostic est garantie.

Arbre de compétences

L'onglet Progression affiche aussi un arbre de micro-compétences (timing de recall, survie, focus objectifs, gestion des waves, vision…). Depuis juin 2026, chaque note est calculée côté serveur à partir de tes vraies timelines : tes ~15 dernières ranked passent dans les mêmes analyseurs que le reste du site (analyse des morts, wave management, macro, pings) et l'agrégat note chaque compétence sur ce qui s'est réellement passé en game.

Règle de transparence : si une compétence n'est pas mesurable sur tes parties récentes (timeline absente, donnée manquante), elle est affichée « indisponible » — jamais remplie avec une note neutre qui ferait semblant. La note globale de l'arbre ne moyenne que les compétences réellement évaluées.

Tier List : Bayesian + Wilson score

Avec un échantillon de ~1 000 parties par champion, le winrate brut est trop volatil. Un champion à 60% de winrate sur 80 parties n'est pas forcément meilleur qu'un champion à 52% sur 3 000 parties.

Le problème du petit échantillon

Avec peu de données, les champions peu joués ont des winrates extrêmes (40% ou 60%) simplement par variance statistique. On combine deux estimateurs complémentaires : Bayesian smoothing pour estimer la vraie WR, et Wilson score interval (borne basse 95%) pour pénaliser l'incertitude des petits samples.

1. Formule du winrate bayésien

bayesianWR = (games × winrate + C × prior) / (games + C)

C = 150 : Constante de lissage (plus C est grand, plus on tire vers la prior)

prior = 50% : Winrate a priori (moyenne attendue)

games : Nombre de parties du champion

winrate : Winrate brut observé

Exemple concret : Un champion à 60% de WR sur 50 parties : bayesianWR = (50 × 60 + 150 × 50) / (50 + 150) = 52.5%. Sur 500 parties : (500 × 60 + 150 × 50) / 650 = 57.7%. Plus l'échantillon est grand, moins le lissage a d'impact.

2. Wilson score interval (borne basse 95%)

Le Bayesian estime un point central, mais n'exprime pas l'incertitude. Deux champions peuvent avoir le même bayesianWR avec des intervalles de confiance radicalement différents. Le Wilson score donne la borne inférieure de l'IC 95% — un champion avec 50 games (σ ≈ 7%) finit mécaniquement sous un champion avec 1000 games (σ ≈ 1.6%).

wilsonLower = (p̂ + z²/2n − z·√(p̂(1−p̂)/n + z²/4n²)) / (1 + z²/n)

avec z = 1.96 (95% CI), = winrate observé en fraction, n = games.

3. Score final

Mix 70% Bayesian (stabilité globale) + 30% Wilson (pénalise l'incertitude) + bonus popularité :

score = (bayesianWR × 0.7 + wilsonLower × 0.3) + max(log₂(games / avgGames) × 3, −3)

Le bonus récompense les champions populaires (méta-validés par le volume) sans plafond positif. Le malus est borné à −3 points depuis le 2026-05-20 : la régression bayésienne gère déjà la fiabilité des petits samples — au-delà, on double-pénaliserait les pocket picks viables (un champion à 200 games sur un pool moyen à 800 prenait −6, soit ~1 tier entier en plus de la régression).

Le mix Bayesian/Wilson stabilise le tier d'une patch à l'autre : les champions « outlier chanceux » remontent moins.

Attribution des tiers

Les champions sont triés par score décroissant, puis répartis par percentile :

S+ : Top 5%
S : Top 15%
A : Top 35%
B : Top 65%
C : Top 85%
D : Reste

Petits pools. « Top 5 % / 15 % » n'a aucun sens sur un pool minuscule : un pool de 5 champions classés ou moins (typiquement 24-48 h après un patch) ne se voit attribuer ni S+ ni S — le meilleur plafonne à A tant que le pool n'atteint pas 6 champions. On ne fabrique pas un tier élite à partir du seul fait d'être 1er d'une poignée de champions.

Seuil minimum adaptatif : entre 10 et 50 parties pour être inclus, selon le volume moyen du pool. Sur un patch fraîchement sorti (peu de données) le seuil descend vers 10 pour ne pas vider la liste, puis remonte vers 50 dès que la collecte rattrape — le Bayesian/Wilson ramène de toute façon les petits samples vers le prior 50 %.

Estimation du rang théorique

Le rang théorique estime le rang auquel tu devrais être en croisant tes performances avec celles des autres joueurs de ton rang actuel. Depuis le 2026-05-12, il est propulsé par le Player DNA: on n'agrège plus des seuils par rang sur tes moyennes, on lit directement les z-scores que le service ML calcule sur 35 features (cf. /api/ml/dna).

Algorithme

1.

Le service DNA renvoie, pour chaque feature, un z-score normalisé contre la distribution globale du pool (la normalisation par rang × rôle est en cours de calibration — cf. note de transparence plus haut). z=+1 = 1σ au-dessus de la moyenne ; les features non applicables au rôle (roam pour jungle/support, wave management pour jungle/support) renvoient z=0.

2.

On agrège un sous-ensemble de 17 features corrélées au rang (mécaniques C3, macro C2, mental C4, team C5, et 2 outcomes C1). Les features playstyle (early aggression, risk profile, tempo, …) sont exclues pour ne pas pénaliser un style atypique.

3.

Z agrégé = Σ(z × poids), pondération concentrée sur cs_efficiency (15%), damage_per_gold, vision_per_min, objective_priority (10% chacun) — voir le tableau plus bas.

4.

Décalage de tier = round(z agrégé ÷ 0.55), clampé à ±3 tiers. 0.55σ ≈ un cran (calibré sur l'écart empirique entre moyennes de tiers sur les features mécaniques).

5.

Rang théorique = rang courant + décalage, clampé entre Iron et Challenger.

Pondération (somme = 1.0)

cs_efficiencyMécaniques15%
vision_per_minMacro10%
objective_priorityMacro10%
damage_per_goldMécaniques10%
multi_kill_rateMécaniques8%
tower_pressureMacro6%
anti_gank_awarenessMacro6%
kp_dmg_balanceTeam6%
snowball_conversionOutcomes5%
tilt_resistanceMental4%
post_death_recoveryMental4%
comeback_rateMental4%
hourly_consistencyMental3%
comeback_contributionOutcomes3%
role_expectation_matchTeam2%
death_evennessTeam2%
wave_managementMacro (laners)2%

Score de confiance

confiance = min(100, 35 + sampleFactor × 50 + min(1, |z agrégé| ÷ 1.5) × 15)

En dessous de 20 ranked gamesdans la fenêtre DNA, aucune estimation n'est rendue (z-scores per-bucket trop bruités). sampleFactor(0 à 1) mesure la solidité de l'assignation d'archétype — ce n'est pas un simple ratio de games. Confiance bornée entre 35% (sample mince, signal mou) et 100% (sample plein, signal net > 1.5σ).

Tilt Detector : 7 signaux

Le Tilt Detector analyse ta session récente (parties consécutives < 90 min d'écart) et détecte 7 signaux de tilt.

Lose streak

Nombre de défaites consécutives

Seuils : 2 = low, 3 = medium, 4 = high, 5+ = critical

CS decline

Baisse du CS/min entre 1ère et 2ème moitié de session

Seuils : 10-15% = low, 15-20% = medium, 20-30% = high, 30%+ = critical

Deaths rising

Augmentation des morts moyennes

Seuils : 1.5-2 = low, 2-3 = medium, 3-4 = high, 4+ = critical

Champion switching

Ratio champions uniques / parties jouées

Seuils : 80-90% = medium, 90%+ (5+ games) = high

Queue rage

Relance rapide après défaite (< 2 min)

Seuils : 1 = medium, 2+ = high, 3+ = critical

Session winrate

Winrate global de la session

Seuils : 15-35% = medium, ≤15% = high, 0% = critical

Shorter games

Baisse de durée de game (FF plus tôt)

Seuils : > 3 min de baisse = medium, > 6 min = high

Calcul du score

tiltScore = Σ(poids_sévérité) + bonus_session_longue

Poids : low = 8, medium = 15, high = 22, critical = 30

Bonus fatigue mentale : scale linéaire dès 4 games — +min(20, round((games − 3) × 2.5)), plafonné à +20 dès 12 games

Cool 😎 (0-19)
Warming 😐 (20-44)
Tilted 😤 (45-69)
Full Tilt 🔥 (70-100)

Système de badges

31 badges répartis en 9 catégories, chacun avec 4 niveaux de rareté progressifs. Les seuils sont fixes et absolus (pas relatifs au rang), mais trois badges sont ajustés par rôle principal pour que chaque rôle puisse les unlock à son niveau naturel : damage_dealer et gold_income sont normalisés par multiplicateur de rôle (un support à 330 DPM = un ADC à 660 DPM = Bronze), et cs_machine est verrouillé pour les mains UTILITY (CS non pertinent — ils ont déjà ward_master, control_ward, ward_killer).

Combat

KDA, KP, Dégâts, Penta, Quadra, Duelliste

Farm

CS/min, Gold/min, Perfect CS, Early Farmer

Vision

Ward Master, Contrôle Total, Chasseur de Wards

Survie

Survivant, Intouchable, Comeback, Survivant Early

Objectifs

Tours, Obj Damage, FB, Dragon, Baron, Plaques

Progression

Win Streak, Grinder, WR, One Trick, Phoenix

Apprentissage

Première Autopsie, Coaché, Matchups, Analyste

Social

Ambassadeur, Conteur, Connecté, Quêtes

Spécial

Pionnier, Supporter, XP Machine

Chaque badge a 4 tiers : Bronze Argent Or Légendaire. La progression vers le tier suivant est affichée en pourcentage.

Analyse Team Luck

Le système détecte automatiquement les joueurs problématiques (AFK, inters, smurfs) dans chaque équipe pour évaluer le facteur chance/malchance de tes parties.

Détection AFK

  • Hard AFK : temps joué < 60% de la durée de la game
  • Soft AFK : game > 15 min ET gold/min < 120 ET dégâts < 1 500
  • Semi-AFK : game > 15 min ET gold/min < 180 ET dégâts < 3 000 ET ≤ 2 morts (support : seuils resserrés — gold/min < 120 ET dégâts < 1 800)

Détection int

  • Hard int : ≥ 10 morts ET damage share < 8% ET KDA < 0.5
  • Soft int : ≥ 8 morts ET deaths/min > 0.4 ET KDA < 0.8

Détection smurf

  • Smurf suspecté : KDA > 2.5× la moyenne du lobby ET KDA > 6 ET DPM > 1.5× la moyenne ET (kills ≥ 12 OU kills+assists ≥ 20) — les 4 conditions réunies
  • Carry extrême : KDA > 8 ET kills ≥ 15 ET DPM > 1.8× la moyenne du lobby

Perf individuelle vs équipe

Comment on sépare ta contribution réelle du résultat de l'équipe. Une victoire ne prouve rien à elle seule — un joueur peut carry un 20/0 dans une défaite, ou être porté 1/8/15 dans un stomp. Voici comment LegendsTracker attribue la performance à l'individu plutôt qu'au scoreboard collectif.

Pourquoi 500 000 dégâts ne veut rien dire

Les chiffres bruts (dégâts totaux, gold total, CS total) sont dépendants de la durée de partie et du tempo de l'équipe. Un ADC à 500k dégâts en 40 min est pire qu'un ADC à 300k en 22 min. Et un carry à 35% damage share dans une défaite a souvent mieux joué qu'un teammate à 40% dans une victoire 25-3.

Règle : une métrique n'est comparable que si elle est rapportée au contexte. Soit normalisée par minute (DPM, GPM, CSPM), soit par part de l'équipe (damage share, kill participation), soit par rapport à un benchmark ajusté (rôle + rang).

Damage share > Damage total

Le damage share est ta part des dégâts de l'équipe. Il élimine l'effet « longue partie = plus de dégâts » et fait ressortir ta contribution relative.

damage_share = tes_dégâts / Σ(dégâts_équipe) × 100
JoueurDégâts brutsDuréeDPMDamage shareVerdict
ADC A (défaite)120 00025 min4 80038%Carry ✓
ADC B (victoire)180 00045 min4 00022%Mid

Le joueur B a plus de dégâts bruts mais joue moins bien en proportion du temps et de l'équipe.

Normalisation par rôle

Chaque métrique est scalée par les attentes du rôle. Un support à 800 DPM c'est excellent ; un ADC à 800 DPM c'est une alerte rouge. On utilise des multiplicateurs benchmarkpour comparer équitablement des rôles qui ne jouent pas le même jeu.

RôleDPM attenduDamage share cibleVision/minCS/min
TOP ~600 22-26% 1.2 7.5
JUNGLE ~550 20-25% 1.4 5.5
MID ~750 25-30% 1.2 7.8
ADC ~800 28-34% 1.1 8.5
SUPPORT~350 10-15% 3.5 0.8

Ton score ajusté = métrique_brute / benchmark_rôle × 100. Un support à 3.8 vision/min obtient 109% sur cet axe — même s'il a 0 CS.

Normalisation par rang

À l'intérieur d'un même rôle, les attentes varient énormément entre Bronze et Master. On applique des benchmarks par rang pour ne pas comparer un Fer à un Diamant. Le même 7.5 CS/min vaut un A+ en Bronze et un C en Master.

score_ajusté = métrique_brute × (benchmark_Platine / benchmark_ton_rang)

Platine sert de rang de référence (milieu de la distribution). Les benchmarks sont ré-calibrés à chaque patch majeur pour refléter les shifts méta.

Contexte de partie (stomp vs close)

Un KDA 10/2/5 dans un stomp 30-5 n'est pas aussi impressionnant qu'un 6/3/12 dans un close game 40-35. On calcule un facteur closeness pour pondérer les perfs :

closeness = 1 - |kills_bleu - kills_rouge| / max(kills_bleu, kills_rouge)

Stomp 30-5

closeness ≈ 0.17

Perfs atténuées (carry facile)

Close 42-38

closeness ≈ 0.90

Perfs valorisées (clutch)

Ce facteur n'est appliqué qu'au grade final (S/A/B/C/D), pas au scoring axes lui-même — pour éviter de punir quelqu'un qui performe dans un stomp.

Qui a carry ? L'algo d'attribution

Le badge Carry et le rang individuel MVP sont calculés par un score composite — pas par le KDA seul :

carry_score = damage_share × 0.40 + KP × 0.25 + gold_share × 0.15 + obj_damage_share × 0.20
  • Damage share (40%) : ce que tu as fait aux ennemis
  • Kill Participation (25%) : ta présence en teamfight
  • Gold share (15%) : tu étais « celui qui déroule » économiquement
  • Objective damage share (20%) : tu as fait tomber les tourelles/drakes/baron

Le KDA n'entre pas directement dans carry_score. Un carry à 15/0/8 avec 20% damage share et 40% KP n'a pas carry — il a juste farmé sans pression. Le vrai carry est celui qui absorbe les ressources ET les convertit en pression objectifs.

Ce qu'on ne peut PAS fixer

  • Les décisions macro (rotations, call, shot-calling vocal) : invisibles dans l'API Riot
  • Le positionnement en teamfight (front vs back) : on n'a pas les coordonnées XY par frame
  • Les focus targets (qui a focus qui) : agrégé seulement, pas par cible
  • Le facteur champion (un Yuumi fera toujours moins de damage share) : compensé par Role Signature

Pour ces angles morts, on se repose sur le coaching IA qui lit la timeline complète et contextualise — là où les formules déterministes s'arrêtent.

Theorycraft Engine

Le Theorycraft est un simulateur (pas un optimiseur) interactif de build qui calcule, à partir d'un combo que tu définis, l'estimation des dégâts en respectant les passifs des champions curés, les scalings AP/AD/HP, et les principaux effets d'items (spellblade, on-hit, proc, burn). Il ne reproduit pas une base de données meta comme Mobalytics — il re-calcule depuis les formules Riot officielles sur le périmètre couvert.

Important — c'est un labo, pas une vérité absolue. Le moteur ne cherche pas le build optimal : il chiffre la séquence que tu lui donnes. Les recommandations d'items sont des presets curés à la main et un scoring heuristique de fallback — utiles pour comparer des options, mais pas une optimisation globale. League est trop complexe (interactions runes ↔ items, passifs uniques, seuils de spike, matchups, courbes de power) pour qu'un seul score capture « le » build idéal.

Données curées à la main

  • 172 champions curés dans champion-spells.ts — chaque sort (Q/W/E/R) + passif avec ses ratios AD/AP/HP, ses triggers (on_hit, on_3_hit, after_ability), et ses notes particulières
  • 83 items dans item-effects.ts avec leurs effets passifs (spellblade Sheen, on-hit Nashor/Titanic/BotRK, %HP Kraken, burn Liandry, etc.)
  • 172 builds curés meta dans champion-builds.ts172/172 du roster (Yunara et Zaahen ont leurs sorts, build curé à venir), hand-picked kit-aware avec raisons par item et résumé du kit
  • 17 keystones avec calcul de dégâts (Conqueror stacks, Electrocute, Dark Harvest, etc.) et 45 runes mineures avec descriptions FR inline

Suggestions de build (4 niveaux de priorité)

Ce sont des suggestions de point de départ, pas une optimisation prouvée. L'objectif est de te donner un build cohérent à charger en un clic, que tu peux ensuite tweaker à la main.

1.
Intent override utilisateur
Clic sur une pill AD / AP / Tank / Hybrid / Support → swap la reco par un preset hardcodé. Utile quand tu veux forcer un build non-standard (ex « tank Darius »).
2.
Build méta live (Émeraude+)
Depuis juin 2026, le simulateur affiche les builds réellement joués sur le champion, agrégés depuis nos matchs Émeraude+ et triés par borne de Wilson basse (pas par winrate brut). Un build live ne devient le défaut que si l'échantillon est solide — au moins 200 games sur la lane et 20 games sur le build — sinon il reste consultatif et le preset curé garde la main.
3.
Preset curé du champion
Build hand-picked meta du champion, respectant son passif et ses scalings. Exemples : Veigar → Mejai's Soulstealer (stacks AP passif Phenomenal Evil), Nasus → Trinity Force (Sheen proc sur Q Siphoning Strike), Shyvana → Liandry+Rylai+Riftmaker (AP scale E). C'est le défaut quand le build live n'atteint pas ses seuils d'échantillon. Ces presets reflètent une piste meta crédible — ils ne prétendent pas être « le » build optimal.
4.
Kit-based scoring (fallback heuristique)
Si un champion n'est pas curé : l'algo analyse son kit (AD vs AP ratios, burst vs sustained, passifs on-hit, multihit, execute) et score chaque item par estimation heuristique de dégâts (ratios approximatifs, pas une simulation parfaite — beaucoup de passifs uniques et d'interactions runes/items ne sont pas modélisés). Les profils burst (assassins) sont scorés via la formule d'amplification d'armure correcte — la léthalité compte 1:1, sans facteur de correction. À considérer comme une piste de départ, pas comme une réponse définitive.

Combo calculator step-by-step

Le moteur de combo calculateCombo (moteur unifié, partagé entre la page et les recommandations) simule une séquence d'actions (Q W E R A C — ou un preset comme Burst / All-in / Execute) et estime step-by-step :

  • HP ennemi recalculé après chaque step (permet aux items %HP de scale dynamiquement : BotRK 8% current HP, burn Liandry 2% PV max/s rafraîchi entre les sorts — pas de stack)
  • Mitigation par armure ou magic resist effective (après pénétration flat + pourcentage)
  • Procs on-hit tracké par auto : Nashor's, Titanic, BotRK, Wit's End, Terminus, Muramana
  • Sheen cooldown 1.5s — Trinity/Lich Bane/Iceborn ne proc pas deux fois à la suite
  • Elder Dragon execute true damage si HP ennemi < 20%
  • Empowers spécifiques : Karma Mantra — le Q post-R (Soulflare) détone un bonus scalé au rang de R (W/E Mantra = utilitaire, pas de dégâts)

Limites assumées : tous les passifs uniques ne sont pas modélisés à l'identique du jeu (certains effets conditionnels, soins, shields, CC, et interactions runes ↔ items sont simplifiés ou ignorés). Le moteur donne un ordre de grandeur fidèle pour comparer des options, pas une reproduction frame-perfect du client League.

Formule quadratique Riot officielle

Toutes les stats par niveau utilisent la formule Riot officielle :

Stat(n) = Base + Growth × (n - 1) × (0.7025 + 0.0175 × (n - 1))

Le coefficient quadratique est ce qui fait qu'un champion a une courbe de croissance non linéaire entre niveau 1 et 18. On utilise exactement cette formule pour HP/Mana/AD/Armor/MR, ce qui garantit que les stats calculées matchent le client LoL à la décimale près.

Cible ennemie : champion ou monstre jungle

Pour tester ton build contre une vraie cible, tu peux choisir :

  • 🎯N'importe quel champion — via le picker partagé avec le pick principal, avec son niveau et ses items ennemi configurables
  • 🐲12 monstres jungle hardcodés (Patch 16.x) : Drake / Elder / Baron / Herald / Void Grub / Raptor / Krug / Wolves / Gromp / Blue / Red / Scuttle — stats HP/Armor/MR bypass le flow champion pour simuler un combo dive objectif
  • 🛡️4 presets de classe (Tank / Bruiser / Squishy / Dummy) pour config rapide

Le slider HP% permet de simuler un enemy low HP pour tester les exécutes (ex Collector < 5%, Darius R < 20% + 5 stacks bleed, Garen R true damage villain marked).

Buffs contextuels

  • 🐉6 types de dragons (Infernal, Mountain, Ocean, Cloud, Chemtech, Hextech) avec stacks 0-4 + SOUL à 4
  • 👑Baron Nashor : +AD, +AP, +empower siege sur minions
  • 🐲Elder Dragon : execute burn true damage sur ennemis < 20% HP
  • Temps de game : active les scalings time-based (Gathering Storm, Overgrowth, Kindred marks, Smolder Q stacks)

Précision actuelle — modélisé vs approximé

On préfère être transparent plutôt que prétendre à une précision frame-perfect. Voici exactement ce que le moteur calcule, et ce qu'il approxime ou ignore. Précision estimée vs jeu réel : ~88-92% sur des combos standards.

Modélisé exactement

  • Stats agrégées (AD/AP/HP/mana/armor/MR/AS/crit/AH/lethality/MS) depuis items + runes + objective buffs + level scaling quadratique Riot
  • Mitigation ordre officiel : flat reduction → % reduction → bonus pen → total pen → lethality (appliquée 1:1, sans scaling par level)
  • Crit : base 200% crit damage, Infinity Edge +30% (flat). L'action Auto applique le crit moyen du build (1 + crit% × bonus), l'action Crit force le critique
  • Sustain : lifesteal AA-only, omnivamp tous dégâts (ranged abilities ×0.33), Conqueror heal fully-stacked (melee 9% / ranged 8%)
  • Conqueror / Lethal Tempo stacks dynamiques par step
  • Item synergies : Muramana (bonus mana → AD), Bloodmail (max HP → AD), Rabadon (×1.35 AP total), Seraph (mana → AP), Warmog (+10% bonus HP), IE crit, Sheen famille (CD 1.5s)
  • On-hit per auto : Nashor's, Titanic, BotRK, Wit's End, Terminus, Muramana, Kraken (3e hit : 140→310 selon niveau, jusqu'à +50% selon PV manquants)
  • Black Cleaver shred dynamique : stacks trackés par hit (auto/spell phys + procs phys), refresh d'armor effective entre actions. Cap 6 stacks (30% reduction) (round 2)
  • Grievous Wounds — 7 items détectés : Mortal Reminder, Morellonomicon, Executioner's Calling, Bramble Vest, Chempunk Chainsword, Thornmail, Oblivion Orb. −40% sustain quand l'ennemi build l'un d'eux (round 2)
  • Magic damage amplification : Liandry's Torment (+6% max stacks) + Abyssal Mask (+12% aura) appliqués au post-mitigation magic damage, multiplicatifs entre items (round 2)
  • Shields lifeline intégrés à l'EHP : Sterak's Gage (100 + 80% bonus AD, phys + magic), Maw of Malmortius (200 + 150% bonus AD, magic), Kaenic Rookern (18% max HP, magic). Assume actifs (scenario défensif) (round 3)

Approximé (impact limité)

  • Liandry's amp : assume max stacks atteints (ramp réel 6s, applicable à la majorité des combos)
  • Abyssal Mask : assume aura active (ennemi à <700u). Pas de check de range
  • Black Cleaver : stack ajouté en POST-hit, donc le tout premier hit ne bénéficie pas du shred. Légèrement sous-évalué pour combos très courts (1-2 hits)
  • Grievous Wounds : assume contact réciproque (l'ennemi nous touche au moins une fois pour appliquer le debuff). Pas de tracking temporel
  • DoT (Liandry burn 3s, Sunfire 1s, Blackfire stacking) : valeur totale calculée mais sans timeline tick par tick
  • Champion-spells : 172/172 couverts, dernière sync majeure 2026-04-15 (patch 16.9.1 partiellement appliqué). Yunara + Zaahen ajoutés le 14/05 ; la sync complète des autres champions touchés par 16.9.1 se fait champion par champion

Non-modélisé (à venir)

  • Animation / cast time / windup : combos supposés instant cast. Surestime le DPS soutenu pour champions avec long animation (Veigar W, Brand R, etc.)
  • Tenacity / slow resist reconnus en buffs mais pas appliqués au CC duration ou MS
  • Projectile travel time : ranged autos supposés instantanés
  • Simulation combat over time / DPS timeline 3s/6s/18s — calcul instantané uniquement pour l'instant
  • Counter-build auto vs archétype ennemi (full AP → suggère Maw automatiquement, etc.)

Le theorycraft n'est pas un outil de coaching direct — c'est un laboratoire. Il te donne un ordre de grandeur réaliste derrière tes idées de build (« et si je full crit Yasuo ? », « combien je tape un Drake avec ce stuff ? », « Mejai's Veigar à 25 stacks, ça représente quoi comme dégâts ? »). Il ne remplace pas l'expérience de jeu : un build « qui chiffre bien » contre un dummy peut être faible en game à cause du tempo, du matchup ou des spikes. Combine-le avec le coaching IA et le Plan de progression pour boucler l'analyse complète : data → theorie → pratique.

Win Probability

La win probabilityn'est pas un simple pourcentage heuristique. Elle repose sur des modèles XGBoost calibrés entraînés sur des snapshots de parties réelles à différentes minutes clés.

Ce que regarde le modèle

  • Écarts d'économie et d'état : gold_diff, level_diff, kill_diff, tower_diff
  • Contrôle des objectifs : dragons, hérauts, barons, elders, void grubs
  • Momentum récent : features *_per_min et *_delta_5m pour savoir si la partie s'accélère ou se retourne

Minutes servies dans le produit

Le pipeline supporte les minutes 5, 10, 15, 20 et 25. Côté produit, nous servons aujourd'hui les snapshots 10 / 15 / 20 / 25quand ils existent dans la timeline du match.

10 min

snapshot produit

15 min

snapshot produit

20 min

snapshot produit

25 min

snapshot produit

Qualité probabiliste

Nous séparons la probabilité brute du modèle de la probabilité servie au joueur. La seconde est calibrée via isotonic regression pour mieux refléter la réalité observée.

proba_servie = calibrateur_isotonic(proba_brute_xgboost)

Concrètement, ça évite qu'un modèle trop confiant affiche 95% là où l'historique montre plutôt 82%. On privilégie une probabilité utile et honnête plutôt qu'un score spectaculaire.

Explainability

Pour expliquer le score, nous utilisons les contributions XGBoost(pred_contribs=True) :

  • Top contributors locaux : pourquoi ce match précis bascule vers le bleu ou le rouge
  • Global feature effects : quelles features pèsent le plus en moyenne à une minute donnée
  • Lecture IA : une couche LLM traduit ensuite ces signaux en français naturel sans remplacer le score ML

Robustesse du pipeline

  • Split par match_id pour éviter la fuite de données entre snapshots d'une même partie
  • Évaluation par patch et sur fenêtre récente pour vérifier que le modèle tient dans le temps
  • Drift monitoring sur les distributions de features et de probabilités
  • Tuning borné des hyperparamètres pour éviter un sur-ajustement opportuniste

Transparence et limites

Ce que nous faisons bien

  • Toutes les formules sont documentées publiquement sur cette page
  • Le Bayesian smoothing compense notre petit échantillon de manière mathématiquement prouvée
  • Nos benchmarks sont calibrés sur des données réelles par rang et par rôle
  • Le Player DNA (35 features × 13 archétypes) est unique sur le marché — aucun tracker ne profile aussi finement
  • Mises à jour à chaque patch Riot

Ce que nous pourrions améliorer

  • Notre échantillon (~1 000 games/champion) est petit, les winrates de champions peu joués sont moins fiables
  • Les benchmarks par rang sont actuellement statiques (mise à jour manuelle), un système automatisé améliorerait la précision
  • Les benchmarks par rang/rôle du Player DNA sont calibrés sur un échantillon limité — affinage continu via l'entraînement HDBSCAN à venir
  • Le Theorycraft est un simulateur, pas un optimiseur : il chiffre les combos que tu lui donnes, mais ne « trouve » pas le build optimal (trop de facteurs à modéliser dans League). Certains passifs uniques et interactions runes/items sont simplifiés ou absents
  • Le Tilt Detector repose sur des heuristiques (règles définies) et non sur du machine learning
  • Certaines métriques API Riot ne sont pas disponibles (position XY précise, clics, caméra)

Notre philosophie

LegendsTracker préfère être honnête et utile plutôt que de prétendre une précision artificielle. Nos algorithmes sont conçus pour donner des tendances fiables et des conseils exploitables, même avec un échantillon modeste. Le coaching IA complète les données brutes en apportant du contexte et de la nuance.

Dernière mise à jour : 3 juin 2026 · Coaching autopsie en streaming temps réel (SSE) · Tier list : seuil adaptatif + garde-fou petits pools · Win Probability XGBoost calibrée (10/15/20/25) + explainability · Theorycraft V2 (172 champions curés, combo calculator, intent presets, jungle monsters) · Plan de progression déterministe · Données API Riot Games

LegendsTracker n'est pas approuvé par Riot Games et ne reflète pas les opinions de Riot Games.