# Fantasy Ranker, any window, any scoring

Set your league's scoring values and any two dates. Every skater and goalie who played inside that window is re-priced from NHL per-game logs and re-ranked underneath you. Nothing here is projected.

## The window

Five regular seasons are on disk: 2022-23 through 2025-26, and 2026-27 as it is played, finished games only, added each night. The page opens on 2025-26 until every club has played 20 games of 2026-27. A season the window swallows whole is read from a summed season file. Only the season the window cuts into is read month by month, and every game outside the two dates is dropped before a single point is priced. The page prints the game count it actually used.

## Category trends

Choose a category to automatically rank players by their longest consecutive run ending in the selected season. No run length needs to be entered. Ties are ordered by ending production, with lower GAA first. Switch to historical mode to find each player's longest run anywhere in the saved archive up to the cutoff; equally long runs use the latest ending season. Each row identifies its run dates, number of seasons and yearly transitions. Six seasons of increasing production means five increases. Only runs of at least two seasons appear, and missing data, insufficient GP or a failed yearly comparison breaks a run. These are longest runs within the available archive, not necessarily full-career records. The fixed-number-of-seasons mode remains available.

The category finder uses a separate ten-season archive, 2016–17 through 2025–26, captured on 31 August 2026. It includes every player in those NHL season reports, rather than a shortlist of highlights. Select goals, assists, points, shots, hits, PIM, power-play points, game-winning goals, blocks or a goalie category. Compare season totals or per-game production over three to ten consecutive seasons ending in the season you choose.

Increasing means every yearly transition rises. Three seasons require two increases; ten seasons require nine. Decreasing and flat-or-increasing searches are also available. Minimum GP applies in every season; missing seasons and categories exclude the run. Use the optional minimum yearly change to ignore tiny increases. Filtering uses full precision even when displayed numbers look tied. GAA and save percentage remain official season ratios in both unit views; lower GAA is better.

Results show each season's value and games played, an individually scaled sparkline and the change from first to last. Search by name, filter position in the ending season, sort results, export every matching player or copy the search link. These controls apply to full-season trends independently of the scoring sheet and custom-date board. The patterns describe past production and do not predict the next season.

## The scoring

Five published sheets ship with the page: ESPN points, Yahoo points, a commonly cited Fantrax baseline, Yahoo rotisserie categories, and the owner's own league. Every value is editable, and negatives are allowed. Power-play and short-handed values are bonuses paid on top of the goal or the assist, the way ESPN and Yahoo pay them. Rotisserie is not a points game, so it is scored as a sum of z-scores across the league's categories and the construction is printed rather than hidden.

## What the board prints

Choose **Stats totals** or **Stats per game** above the board to see standard NHL statistics without fantasy scoring weights. Skaters show GP, G, A, P, SOG, HIT, PIM, PPP and GWG; goalies show GP, W, GAA, SV, SV% and SHO. These columns remain available regardless of the scoring preset. Date windows, search, club and position filters, and minimum games apply to both views. Click a column heading or use Sort stats; the row number follows that ordering, not a fantasy rank.

Per-game counting stats use appearances as the denominator, including goalie wins, saves and shutouts. GP remains a count. GAA uses goals against and total playing time; save percentage uses total saves divided by shots faced. Unavailable values remain blank. Use **Fantasy ranking** to return to the scoring-sheet board.

Rank is points per game inside the window at the minimum games you set, ties broken by total points. Beside it: the raw categories your sheet pays for, the total, the tier, a five-cell floor-and-ceiling strip, a boom rate and a bust rate, the market gap, and how many games the player's club plays in the first four weeks of 2026-27.

Tier bands come from the gap between consecutive ranks. A tier ends where the step down is at least the stated gap and eight names have gone by, and the gap that broke it is printed on the rule.

Floor and ceiling are counted one game at a time. The five cells are the share of his games at zero or less, then three bands one median wide, then everything above three medians, where the median is that window's median points per game. Boom is the share of games at twice his own median. Bust is the share that paid nothing.

Goaltenders carry a quality-start rate: the share of starts at a save percentage of .917 or better, or two goals against or fewer on at least twenty shots. The NHL publishes no such statistic, so the rule is stated on the page. They also carry a start share against their club's games in the window, and the tandem role from the goalie start board.

## Scarcity and the market

A curve per position plots points per game against positional rank. Replacement level is marked from your roster shape times the number of teams, and the cliff is the largest single step down inside the top sixty. Goaltenders are drawn on their own panel because a goalie point and a skater point are not the same size.

A scatter puts the published market's average draft rank across and your seat up, with the diagonal drawn and the ten widest disagreements named either way.

## Your boards

A board is a name plus the sheet, the roster shape, the window, the ranks you moved and everyone you marked taken or yours. Keep as many as you like, duplicate them, export them all as JSON. Everything lives in this browser under the key `hi-ranker-v2` and nowhere else. A share link carries the active board only and opens read only until the reader copies it.

Draft-day mode adds a taken box per row, strikes the names that are gone, keeps a best-available shelf per position, counts the round and the pick, and fills a roster tray as you claim players.

## The files

`data/fantasy_games/index.json` and its month files, `data/fantasy_seasons/{season}.json`, `data/fantasy_scoring_presets.json`, `data/fantasy_2027.json`, `data/fantasy_schedule_2027.json`, `data/goalies/board.json` and `data/lineups/`. Built by `scripts/build-fantasy-daterange.js` from NHL boxscores, player game logs and the stats faceoff report.

Nearby: the [fantasy draft desk](https://hockeyinsights.ca/fantasy/), the [weekly streamer desk](https://hockeyinsights.ca/fantasy/streamers/), [consistency profiles](https://hockeyinsights.ca/fantasy/consistency/) and the [goalie start board](https://hockeyinsights.ca/goalies/).
