How to grade your team honestly in Week 1

A letter grade is only useful if you know what it measures. Here is what the free SharperSunday team grade counts, what it ignores on purpose, and how to read yours before Week 1 changes your mind.

Week 1 is when everyone re-grades their roster on one box score. Sunday night the team is an A. Monday morning, after two starters combined for nine points, it is a C and the group chat agrees.

A grade should be a measurement, not a mood. The free team grade is one, and this post is the label on the box: what goes in, how the letter is computed, what it deliberately leaves out, and how to read yours without letting one week rewrite it.

What goes in

Three inputs, all of them yours.

Your actual roster. The grader reads your Sleeper league and pulls the players you have right now, not the ones you drafted.

Your league’s format. Team count, superflex or 1QB, points per reception, tight end premium, and the exact starting slots your commissioner set. Two managers with identical players get different grades in different leagues, and they should.

Each player’s Edge value, priced for that format. Every dynasty number in SharperSunday is an Edge value, and it comes from real trades rather than projections; the Edge post covers where it comes from. The grader recomputes every value for your settings before it ranks anything, then applies a small league-context adjustment on top. We do not itemize that adjustment, but its inputs are your league’s public Sleeper settings, nothing else.

How the letter is built

Starters first. The grader fills your starting slots the way an optimal lineup would: the highest-value eligible player into each slot, quarterbacks into quarterback slots, any of running back, receiver or tight end into a flex, any of the four into a superflex. Bench, injured reserve and taxi slots do not count. A position’s score is the average value of the starters it ends up with there.

Then the curve. Each position score is turned into a percentile against every other team in your league. That percentile becomes the letter:

Where your position ranks in a 12-team leagueGrade from the curve
1st or 2ndA+
3rdA
4th or 5thB+
6th or 7thB
8thC+
9th or 10thC
11thD
12thF

That is the whole reason the grade is league-relative. An earlier version used fixed thresholds, and on the market’s value scale nearly every roster came out an A. A grade that everyone gets is not a grade.

Then the floor. A curve alone has a flaw: in a stacked league, a genuinely elite group could rank 9th and read as a C. So each position also gets an absolute floor from the tier its starters average out to, and the grade is whichever is better:

Tier of your average starterGrade floor
GenerationalA+
EliteA
High-end StarterB+
StarterB
DepthC
BenchD
FringeF

Most rosters’ floors land at B or below, so in a normal league the curve still does the spreading. The floor only lifts groups that are strong on their own terms. A position with no viable starter at all is an F regardless.

Then the overall. The four position scores are weighted and the result is curved and floored the same way. The weights shift with your format:

Position1QB weightSuperflex weight
Quarterback20%30%
Running back30%25%
Wide receiver30%30%
Tight end20%15%

Superflex leagues pay for quarterbacks, so quarterbacks count for more there. The superflex post shows how large that repricing is at the player level.

Strength and weakness

The report names one strength and one weakness, and it does not pick them by league rank. It picks them by absolute quality and by whether you can actually fill the starters your league requires.

A weakness is only called a real hole if the position grades C or worse, or if you are short a required starter there. If neither is true, the report says so: you are deep everywhere, and the “weakness” is just your least dominant spot. That distinction matters in Week 1, when a bad Sunday from one player makes a solid position feel like a hole. The grade will not agree unless the roster does.

What the grade does not measure

This is the part worth reading twice.

Sunday’s box score. Edge values come from trades. One game produces offers, not prices, so a player’s value does not move on Monday because of his stat line, and neither does your grade. If your roster grades a B+ on Tuesday after a bad week, that is the market saying your assets are still your assets.

Projections. There is no projection anywhere in the grade. It is a snapshot of what the market would pay for your starters in your format, not a forecast of your points.

Age, team phase or momentum. The in-app roster view layers more context onto each player. The public grade does not carry a player’s age or your team’s competitive window at all. If you are rebuilding with a young core, the grade sees the value of the core today, not where it is going.

Your bench. Starters are graded. Bench players matter only to the count of viable options the report shows next to each position, and to whether a required slot can be filled.

Draft picks. Picks are not part of the team grade. The same report gives you a separate draft grade for your most recent draft and a league grade that ranks every roster, and the league grade is where your window comes in.

Players the model has not priced. A player without an Edge value counts as zero in the grade. The grader never invents a number to fill a gap. In the table published September 8, 1,050 players carried a served value, and in our 12-team test league that covered 118 of the 119 players in Week 1 starting lineups. A thin-data player on your bench may be missing; a starter almost never is.

Schedule, byes, injuries, matchups. None of it. The grade is a roster, not a week.

Why Week 1 is a fair time to grade

Two things make this week a clean read rather than a noisy one.

First, the market is calm. In the first week of September, none of the top 200 players on the Edge board moved more than 20%. The values under your grade today are the values the market settled on over the summer, before any box score.

Second, the public grade and the in-app grade run the same math. The two are kept in lock-step so the letter you see without an account is the letter your co-manager sees with one. The public page recomputes from a copy of the same nightly Edge table, refreshed with every site build and checked against a three-day freshness limit.

How to read yours

  • Read the position grades before the overall. The overall is a weighted blend; the positions tell you where the blend came from.
  • Check whether the weakness is real. If the report says you are deep everywhere, do not go trade for a fix. If it names a hole at C or worse, that is the position to shop, and the trade market post covers what a fair price looks like.
  • Take an A with the floor in mind. An A+ at a position means either the league’s best group or a generational one. Both are worth protecting from panic sells.
  • Remember what is missing. Age, window and picks are not in this letter. A B roster with a young core and three firsts is a different team than a B roster full of 30-year-olds, and the grade will not tell you which you are. Your co-manager will.

Grade the roster you have, then ask about it. Once your Sleeper league is connected, the co-manager already knows every player on it, your format, and where each of them sits on the board. Ask it whether your weakness is worth trading for, and it answers about your team, not a generic one.

Start free and grade your roster


Data note: the grading rules in this post are read from the public grader’s engine, blog-astro/src/lib/gradeEngine.ts (verified 2026-05-30, draft and league grades added 2026-05-31, contextual layer unified 2026-07-10), which is the lock-step twin of the in-app gradeTeamRelative in services/powerRankingsHelpers.ts. The 12-team rank-to-letter table is computed from its percentile thresholds (A+ at the 90th percentile, A 75th, B+ 60th, B 45th, C+ 30th, C 18th, D 8th, tie-averaged rank divided by 11); the tier floors, position weights, starter-slot fill rules, the C-or-worse hole rule and the zero-for-unpriced behavior are its code. Tier names are from services/valueTierConstants.mjs. The “Priced for your league” disclosure rule is the 2026-07-11 ruling recorded in .claude/skills/prior-decisions/SKILL.md. The 1,050 served players are the fit.emittedPlayers field of values/value_tables.json on sharpersunday-data@val-160 (generated 2026-09-08T04:52Z); the 118-of-119 Week-1 starter coverage and the zero top-200 movers over six days are from docs/audit/DATA_INTEGRITY_2026-09-08.md. The snapshot refresh and the three-day freshness check (warn-only at deploy, hard-fail on the trainer) are scripts/buildEdgeValueSnapshot.mjs and scripts/checkDataFreshness.mjs. A grade describes market value at one moment, not a forecast of points.