Skip to content
eStatcast

Expected Duel Win Probability

xDuelCS2v0.1.0 · baseline · validated 2026-07-16

What it measures

How likely a player was to win each fight before it happened, based on weapons, health, distance, flashes, smoke, and nearby support. A kill in a 20% situation is worth more than one in a 90% situation.

Formal definition

Logistic model P(attacker wins engagement) over pre-outcome features: weapon-class matchup, distance bucket, health differential, armor, blind fractions of both players, through-smoke indicator, and trade-support proximity for both sides. Evaluated per kill event from replay-derived state.

Inputs

  • duel events (replay)
  • position samples (support distances)
  • flash-effect events

Exclusions

  • team-kills
  • suicides
  • bot takeovers
  • events with confidence < 0.5

Sample & population

Minimum sample
50 duels
Baseline population
All parsed duels in the same game and window
Direction
neutral
Unit
prob

Percentile interpretation

Not ranked directly; feeds Duel+ and Opening Impact.

Confidence = source confidence × model confidence. Values from baseline models are capped at 0.7. Below-minimum samples display the value grayed out with no percentile.

Example

An eco pistol player wide-swings a rifler holding an angle: xDuel ≈ 0.18 for the pistol player.

Known limitations

  • v0 coefficients are priors calibrated on synthetic fixtures, not fitted on pro data
  • Cannot observe crosshair placement or peeker's advantage directly

Model card

xduel_cs2 v0.1.0
MODELlogistic_regression · baseline
Training data — read this

Hand-specified directional priors, sanity-calibrated on the synthetic fixture corpus v1 (fictional matches). NOT fitted on production esports data.

Calibration

Reliability checked on synthetic corpus only; expect miscalibration on real data until re-fit. Confidence for downstream metrics is capped at 0.7 while status=baseline.

Features
  • weapon_advWeapon-class matchup advantage (attacker perspective, -1..1)
  • dist_closeEngagement below close-range threshold
  • dist_longEngagement beyond long-range threshold
  • health_diff(attacker HP − victim HP) / 100 at engagement
  • armor_advAttacker has armor
  • victim_flashedVictim blind fraction (blind ms / 1500, capped)
  • attacker_flashedAttacker blind fraction
  • through_smokeEngagement through smoke
  • attacker_supportedAttacker teammate within trade range
  • victim_isolatedVictim's nearest teammate beyond trade range
Coefficients (v0.1.0)
intercept0.00
weapon_adv1.80
dist_close0.10
dist_long-0.05
health_diff1.40
armor_adv0.25
victim_flashed1.60
attacker_flashed-1.60
through_smoke-0.70
attacker_supported0.15
victim_isolated0.20
Not intended for

Betting or wagering decisions · Cross-game comparisons · Absolute skill claims

Change log

  • v0.1.0 · 2026-07-16Initial baseline release

→ Rank players by xDuel