MATCH TICKER
HLLCS // HOW IT WORKS
← Back to League
[04] FEET & STINK

FEET & STINK Rating Engine

FEET = individual player rating. STINK = club teamwork and leadership.

//

What FEET Is (and Isn't)

FEET and STINK do not award standings points or decide who wins the league—match results and playoff brackets do. Instead, FEET measures how strongly each player's teams perform relative to expectations. Your team's top 49 rated players set your Roster Strength, which seeds Round 1 of the regular season, measures strength of schedule, and serves as a late tiebreaker (see the tiebreaker table).

//

Glossary & Terminology

Six terms show up across player profiles, team pages, and match previews:

FEET (Fighting Effectiveness and Efficiency Tracker)
A player's rating. It moves after every confirmed match based on whether your side beat or fell short of the expected sector margin. Only players have a FEET rating.
Lineup FEET
The average FEET of the players who actually played a match, weighted by time played. Match predictions start from Lineup FEET and then add STINK.
STINK (Strategic Teamwork, Intangibles, and Knowhow)
A club's teamwork and leadership rating. It captures the part of a team's results that individual player ratings cannot explain, rising when a squad consistently beats what its lineup was expected to do.
PI (Performance Index)
How you performed compared with other players in the same role league-wide, weighted by the time you spent in each role.
EWR (Engagement Win Rate)
Your kill share in engagements, smoothed so a small number of kills or deaths does not swing your score.
Roster Strength
The average FEET of a team's top 49 rostered players who have played at least one confirmed match. It seeds Round 1, feeds strength of schedule, and breaks late ties.
//

How Ratings Update

Your FEET rating updates after every confirmed match—including exhibitions, regular season, play-in, and playoffs—based on how your team performed compared to expectations.

  1. 01
    Every new player starts at 50, the league average. Player ratings update after every match; a team's STINK settles after its first few matches.
  2. 02
    An expected margin is set from the lineups on the field. Before ratings move, the system calculates what sector margin the two lineups should have produced based on their prior FEET ratings, each club's STINK, and any learned map/side advantage.
  3. 03
    The on-field result is compared to that expectation. Beat the expected margin (blending final sector score and time spent in the sector lead), and everyone who played on your side goes up. Fall short, and everyone goes down—even in a narrow win.
  4. 04
    How much you move scales with time played. A substitute who played part of the match moves less than a teammate who played all 90 minutes.
  5. 05
    Standout role performances earn a bonus share of positive movement (or take a smaller share of negative movement), up to 30% either way compared with others in the same role. A quiet stat line is never penalized.

Exhibitions count at full weight just like regular season and playoff matches. Raw kills are never scored directly, there are no weapon discounts, and public-server games are never used.

//

We won the match. Why did our FEET rating go down?

If your team was heavily favored to win decisively—or trailed for most of the game before a late flip—barely winning can still be below what your lineup was expected to produce.

Standings and ratings reward two different things: standings give you the full points for winning on the scoreboard, while FEET updates based on whether your team beat or missed its pre-match expected margin (which combines final sectors and how long each side held the sector lead). Conversely, an underdog that pushes a heavy favorite to the wire gains FEET even in a narrow loss.

How it's calculated: Expectation gap worked example

Ratings move by the surprise e=y−y^e = y - \hat{y}, where yy is the observed margin (blending final score and time held in the sector lead) and y^\hat{y} is the pre-match expected margin.

Suppose Team Alpha's lineup averages 62.0 FEET and Team Bravo's averages 44.0, with neither side carrying STINK or a map edge. With an 18-point rating gap, Alpha is predicted to win by y^=+1.8\hat{y} = +1.8 sectors. Alpha wins 3–2 on the final scoreboard, but Bravo held 3 sectors for 60% of the match, so the time-blended margin is only y=+0.4y = +0.4 sectors. The surprise is e=0.4−1.8=−1.4e = 0.4 - 1.8 = -1.4. Alpha takes the standings points for their 3–2 win, while a full-match player on Alpha drops about 1.6 FEET points and one on Bravo gains about 1.6.

//

My squad held a quiet defensive flank. Does a low combat score hurt my rating?

No. Holding a quiet flank or playing a low-kill role never reduces your rating gain or increases your rating loss.

Individual performance adjustments are reward-only and compare you strictly against other players in the exact same role across the league. If you post standout numbers for your role, you earn up to +30% more of your team's gain (or absorb up to 30% less of a loss). If your stat line is average or below average because your squad held a quiet sector, your adjustment stops at zero—you receive 100% of your team's standard rating change with no deduction.

To qualify for a standout adjustment, you must play at least half the match (up to 30 minutes for matches an hour or longer). Players under that time threshold simply receive their time-weighted share of the team result.

How it's calculated: One-sided role adjustment example

Consider two Squad Leaders on the winning side: Point SL fights on the main strongpoint with high combat and objective scores, earning a role performance score of z=+1.6  ⟹  g=1.24z = +1.6 \implies g = 1.24 (a 24% bonus share of the team's rating gain). Defensive Flank SL holds a quiet cutoff sector with 2 kills and 1 death, finishing below the league average for Squad Leaders (z=−0.7z = -0.7). Because negative scores are floored at zero (z≤0  ⟹  g=1.00z \le 0 \implies g = 1.00), Defensive Flank SL receives the full 100% team gain with zero penalty.

//

What is STINK, and where can I see it?

STINK is a club's teamwork and leadership rating, shown on match preview pages next to each team's Lineup FEET. It never affects Roster Strength, Round 1 seeding, or standings tiebreakers.

When a squad consistently beats what its individual player ratings predicted—through shotcalling, preparation, and coordination—its STINK rises and raises the team's expected margin in future match previews. If a stacked lineup underperforms its expected margin, its STINK softens.

Between seasons, a club keeps the share of its STINK that matches the share of its roster that stayed with the team (for example, keeping 80% of the roster retains 80% of STINK, while a complete rebuild resets to zero).

How it's calculated: Team strength & STINK formula

A team's predicted strength STS_T in a match is the time-weighted average rating of its players on the field plus the club's STINK τT\tau_T:

ST=∑i∈Tωiθi+τTS_T = \sum_{i \in T} \omega_i \theta_i + \tau_T

Between seasons, STINK is multiplied by (1−uT)(1 - u_T), where uTu_T is the fraction of roster turnover.

//

Does playing on a favored side or map inflate ratings?

No. Playing a favored faction, map, or midpoint does not inflate your rating, because the expected margin adjusts as the system learns which sides win more often across the league.

Every faction, Vietnam map, and midpoint starts at dead even (zero advantage). Over time, if one side consistently wins by wider margins on a specific map or midpoint, the expected margin shifts to account for that edge. Winning by less than that advantage counts as underperforming expectations, while holding ground on the harder side earns rating credit even in a close loss.

How it's calculated: Learned map & midpoint advantage example

The expected margin combines both teams' predicted strength with a layered environmental term hh (global US-vs-NVA bias + map side bias + midpoint side bias):

y^=SUS−SNVA+h\hat{y} = S_{\text{US}} - S_{\text{NVA}} + h

Illustrative example: Suppose a map and midpoint has a learned US edge of h=+0.8h = +0.8 sectors, and Team Red (US) and Team Blue (NVA) enter with equal ratings (SRed−SBlue=0S_{\text{Red}} - S_{\text{Blue}} = 0). Red is expected to win by y^=+0.8\hat{y} = +0.8 sectors. If Red wins 3–2 with a time-blended margin of y=+0.4y = +0.4 sectors, the surprise is e=0.4−0.8=−0.4e = 0.4 - 0.8 = -0.4: Red earns the standings points for the win, while Blue gains FEET for outperforming the harder side.

//

What happens to ratings between seasons or when someone sits out?

Sitting out for a few weeks never lowers your FEET rating. Your number stays right where you left it.

Missing weeks during a season: While you sit out, only your rating uncertainty grows slightly each week. When you return to the lineup, your rating responds a bit faster to your next few matches until your current form settles again.

Between seasons: At the start of a new season, active players are re-centered so the league average stays at 50, and every returning player gets an offseason uncertainty boost (25% of starting variance) so early matches in the new season can move ratings more freely.

//

The Mathematics & EWR Table

For players who want the exact equations behind match margins, rating updates, role Performance Index, and Engagement Win Rate (EWR), expand the reference below.

How it's calculated: Full rating equations & EWR smoothing table

Match margin yy blends time-averaged sector control MM and final sector margin FF:

y=wM⋅M+(1−wM)⋅Fy = w_M \cdot M + (1 - w_M) \cdot F

Expected margin y^\hat{y} compares both teams' lineup FEET and STINK plus the learned environmental term hh:

y^=ST−SO+h,e=y−y^\hat{y} = S_T - S_O + h, \quad e = y - \hat{y}

Each rating (μ\mu) and variance (σ2\sigma^2) updates in proportion to its share of total match variance VV:

μnew=μ+c⋅σ2V⋅e\mu_{\text{new}} = \mu + \frac{c \cdot \sigma^2}{V} \cdot e
σnew2=σ2(1−c2σ2V)\sigma^2_{\text{new}} = \sigma^2 \left(1 - \frac{c^2 \sigma^2}{V}\right)

Standout role performers receive a bounded, one-sided multiplier gig_i on their share:

gi=1+λ⋅sign(eT)⋅clip(zi,0,2)g_i = 1 + \lambda \cdot \text{sign}(e_T) \cdot \text{clip}(z_i, 0, 2)

With λ=0.15\lambda = 0.15, no player's share moves more than 30% above or below the team average, and ziz_i is floored at 0 so below-average stats never penalize a player.

Performance Index (PI) and Smoothed EWR

PI compares four role-standardized metrics: Combat/min, Objective/min, Support/min, and EWR (Engagement Win Rate). Rather than raw killskills+deaths\frac{\text{kills}}{\text{kills} + \text{deaths}}, EWR applies a Bayesian prior of 5 kills and 5 deaths (50% baseline):

EWR=kills+5kills+deaths+10\text{EWR} = \frac{\text{kills} + 5}{\text{kills} + \text{deaths} + 10}
K / DRaw Win RateSmoothed EWRSample Size Effect
1 – 0100.0%54.5%Single kill doesn't distort to 100% win rate
0 – 10.0%45.5%Single death doesn't plummet to 0%
3 – 0100.0%61.5%Low volume pulls modestly above 50% baseline
5 – 550.0%50.0%Balanced exchange equals prior baseline exactly
10 – 283.3%68.2%Strong performance regressed toward mean
20 – 580.0%71.4%Growing sample earns higher confidence
50 – 1576.9%73.3%Large sample converges near raw rate
100 – 3076.9%75.0%Very high volume confirms sustained dominance