PivotScout Rating
How the PivotScout Rating works
PivotScout Rating is a signed single-game skater rating centered on 0. It measures what happened while the skater was on track, compares that to the team's normal game environment, and then adjusts for teammate strength, power-jam context, short-handed jams, and VTAR. Positive numbers are good; negative numbers mean the skater's shifts trailed the expected context.
Part 1
The four statsbook sections that feed the rating
1. Score sheet
For each jam, PivotScout reads each team's jam points and cumulative score. Star-pass rows are folded into the current jam, so the jam total used by the rating is the full team score for that jam.
2. Lineups sheet
PivotScout reads the five skater numbers listed for each team in each jam. A skater is rated only on jams where their number appears in their team's lineup. Those same lineups identify the four teammates whose VTAR values become the teammate-strength adjustment.
3. Penalties sheet
Penalty rows are joined back to the period and jam. If the penalized skater matches that team's jammer for the jam, PivotScout marks it as a jammer penalty. Opponent jammer penalties create a power-jam-for context. Own jammer penalties create a power-jam-against context. Teammate penalties reduce the jam weight and can trigger short-handed adversity credit.
4. Game Summary VTAR
PivotScout reads each rostered skater's total average plus/minus from the Game Summary VTAR table. That value is used twice: once as the skater's own VTAR signal, and once for every teammate in the lineup-strength calculation.
Part 2
The exact formula
For a skater s on team T, let A_s be the set of jams where the skater
appeared. Let O be the opponent. In the formula, pm means jam plus/minus:
the skater's team's points in that jam minus the opponent's points in that same jam. If PivotScout
shows a jam as 8-3 for the skater's team, then pm = 8 - 3 = +5. If the jam is
2-6, then pm = 2 - 6 = -4.
Jam-level values
pm_j = points_T_j - points_O_j. This is the team's plus/minus in jam j.
It is the raw result PivotScout starts from because the rating is asking, "What happened on the
scoreboard while this skater was on track?"
teammate_penalties_j = penalties by T skaters in j excluding s. This counts penalties
taken by the skater's teammates, not the skater being rated. The thought process is that a skater
should not get full blame for a messy jam if the lineup around them was short or disrupted by other
people's penalties.
own_penalty_j = penalties by s in j. This records whether the rated skater personally
took a penalty in the jam. PivotScout uses it as a gate: short-handed credit and short-handed loss
relief can go to the skaters left dealing with the problem, but not to the skater who caused it.
w_j = max(0.7, 1 - (0.08 * teammate_penalties_j)). This is the jam weight. Each teammate
penalty reduces the weight by 0.08, but the weight cannot drop below 0.70.
That keeps penalty-hit jams in the rating while stopping one chaotic jam from overpowering the rest
of the skater's game.
baseline_T = average(points_T_j) over every game jam. This is the team's normal scoring
rate in that game. PivotScout uses it when judging power-jam offense, because scoring eight points
on a power jam means something different for a team normally scoring two per jam than for a team
normally scoring seven.
Jam score
base_j = (pm_j - team_average) * w_j. This turns the jam into a value relative to the
team's normal game. If the team usually wins jams by +1.20, then a +5 jam
starts as +3.80 before context. That makes the breakdown easier to read: positive means
better than the team's average jam, negative means worse than the team's average jam.
+ 0.35 * max(0, points_T_j - baseline_T) if the opponent jammer was penalized. This adds
power-jam-for credit only for scoring above the team's normal scoring baseline. The idea is to reward
actually converting the advantage, not merely being present while the other jammer sat.
+ 0.35 * (pm_j - (-4)) if the skater's own jammer was penalized. This judges
power-jam-against defense against an expected -4 margin. Holding the jam to better than
-4 earns credit, because that is a good defensive result while short a jammer. Giving up
worse than -4 still hurts, but the skater is no longer punished just for being in a
situation where losing points is expected.
+ 0.45 * pm_j if teammates were penalized, own_penalty_j = 0, and
pm_j > 0. This is short-handed adversity credit. It only appears on positive jams, and
only for skaters who did not personally take a penalty, because PivotScout is trying to notice the
players who still win the scoreboard while someone else has compromised the lineup.
+ 0.25 * abs(pm_j) if teammates were penalized, own_penalty_j = 0, and
pm_j < 0. This is short-handed loss relief. The jam still hurts, but it hurts less for
the skaters who were left trying to survive a bad situation they did not create.
Game-level conversion
relative_impact = sum(jam_score_j) / sum(w_j). This converts all of the skater's
context-adjusted jam scores into a per-jam value. Because the team average was already included in
each jam's base, this value is already relative to the team environment.
team_average = average(points_T_j - points_O_j) over every game jam. This is how the team
performed overall in the game. It is pulled into every jam's base calculation so the breakdown shows
context immediately instead of hiding the team adjustment at the end.
teammate_context = average(avg teammate VTAR in each appearance). For every appearance,
PivotScout averages the VTAR values of the other four skaters on track, then averages those values
across the skater's game. This estimates how much help the skater had. Stronger teammates make good
results a little less surprising; weaker teammate groups make good results harder to earn.
Final rating
opportunity = (power_for_count * 0.45) + (short_positive_count * 0.85).
This adds a small game-level context adjustment. Power-jam-for appearances add opportunity credit,
and positive short-handed jams add extra credit because they are unusually valuable. Power-jam-against
defense is handled inside the jam score against the -4 benchmark rather than as a flat
game-level penalty.
vtar_signal = skater_total_avg_plus_minus * 2.5. This brings the statsbook's own VTAR
signal into the rating. It is not allowed to dominate the formula, but it helps preserve useful
role-aware plus/minus information that already exists in the source workbook.
rating = relative_impact * 7.5 - teammate_context * 1.4 + opportunity + vtar_signal.
The rating starts at 0, which is neutral. Relative impact is the biggest lever because
the core question is still scoreboard impact. Teammate context is subtracted so results beside
stronger groups are discounted slightly. Opportunity and VTAR then add the smaller contextual signals.
The result is not clamped, so especially strong games can go high positive and difficult games can go
negative.
Part 3
A complete worked example
Suppose a skater appears in four jams. Their team averages +1.20 plus/minus per jam across the
whole game and scores 5.00 points per jam on average. The skater's own total average VTAR is
+0.60.
| Jam | Score | pm | Context | Weight | Jam score |
|---|---|---|---|---|---|
| 1 | 8-3 | +5 | Normal jam | 1.00 | (5 - 1.2) * 1.00 = 3.80 |
| 2 | 2-6 | -4 | One teammate penalty, own jammer penalty | 0.92 | (-4 - 1.2) * 0.92 + (-4 - -4) * 0.35 + 4 * 0.25 = -3.78 |
| 3 | 10-0 | +10 | Opponent jammer penalty | 1.00 | (10 - 1.2) * 1.00 + (10 - 5) * 0.35 = 10.55 |
| 4 | 4-2 | +2 | Two teammate penalties, positive short-handed jam | 0.84 | (2 - 1.2) * 0.84 + 2 * 0.45 = 1.57 |
weighted_score = 3.80 - 3.78 + 10.55 + 1.57 = 12.14
total_weight = 1.00 + 0.92 + 1.00 + 0.84 = 3.76
relative_impact = 12.14 / 3.76 = 3.23
teammate_context = 0.50, so teammate_adjustment = -0.50 * 1.4 = -0.70
opportunity = 1 * 0.45 + 1 * 0.85 = 1.30
vtar_signal = 0.60 * 2.5 = 1.50
rating = 3.23 * 7.5 - 0.70 + 1.30 + 1.50 = +26.3
Part 4
What changes the rating?
With teammate context, opportunity, and VTAR held at the example values, each extra +1.00
of relative impact adds 7.5 rating points.
The teammate term is -1.4 * teammate_context. Replacing a +3.00 VTAR teammate
with a -1.00 VTAR teammate lowers a four-teammate average by 1.00, which raises
the rating by 1.4 points if the jam result is otherwise unchanged.
Every +1.00 in the skater's own total average VTAR adds 2.5 rating points.
Every -1.00 removes 2.5.
Part 5
Specific value changes
Swap one teammate
A lineup has teammate VTAR values +3.0, +1.0, +0.0, -1.0, so the average is
+0.75. Swap the +3.0 skater for a -1.0 skater and the average
becomes -0.25. The teammate adjustment changes from -1.05 to +0.35,
a +1.40 rating-point swing.
Turn a normal 10-0 into a power jam
If the team baseline is 5.00 points, a normal 10-0 jam contributes
10.00. If the opponent jammer was penalized, it contributes
10 + (10 - 5) * 0.35 = 11.75. It also adds +0.45 in the final opportunity term.
Win while teammates are in penalty trouble
A 4-2 jam with two teammate penalties has w = 0.84. The base contribution is
2 * 0.84 = 1.68. Because the skater's team still won the jam while short-handed,
PivotScout adds 2 * 0.45 = 0.90 at jam level and +0.85 in the final opportunity term.
The skater who took the penalty does not get that short-handed boost for their own penalty.
Lose while teammates are in penalty trouble
A 2-6 jam with one teammate penalty has w = 0.92. The base contribution is
-4 * 0.92 = -3.68. PivotScout then adds 4 * 0.25 = +1.00 of short-handed
loss relief, so the jam lands at -2.68 before any power-jam context. The loss still
counts, but it is softened for the skaters who were short because of someone else's penalty.
Own jammer penalty risk
During a power-jam-against jam, PivotScout compares the jam to -4. A -4 jam
adds 0 because it matches expectation. A -2 jam adds
(-2 - -4) * 0.35 = +0.70, because holding a power jam against to minus two is good
defense. A -7 jam adds (-7 - -4) * 0.35 = -1.05, because it fell three
points below the defensive benchmark.
Part 6
How to read the number
A rating around 0 means the skater's on-track results were close to the team's normal game
environment after context. Scores of +20 or higher are very good and show in green. Scores
from +8 to +19.9 are good and show in yellow. Scores between -7.9
and +7.9 are average and show in white. Scores from -19.9 to -8
are not good and show in orange. Scores below -20 are bad and show in red. Negative scores
do not automatically mean a bad skater; they can also flag brutal usage, missing lineup data, or a game
where a unit repeatedly took difficult shifts.
The rating is intentionally context-aware, not context-free. It is best used as a scouting prompt: start with the number, open the skater profile, then check the actual jams, role split, power-jam context, and who shared the track.