The math behind the confidence
Forecasts, trade ideas, and luck
Weekly forecasts
We verified Sleeper's documented public API. It provides league scores, weekly matchups, rosters, drafts, transactions, and avatars. We did not verify a documented, dependable player-projection feed. This site therefore uses our own team scoring history, not guessed player projections or an unofficial endpoint.
For each team, take 65% of a recency-weighted average of its last five completed scores and 35% of its full-season average. Recent scores receive weights 1, 2, 3, 4, 5. Blend that estimate with three games' worth of the league average. This keeps a tiny sample from becoming a confident opinion. With no games, a configurable 120-point fallback and wide uncertainty are clearly a cold start.
Spread comes from the team's score variability, blended with three observations of league variability, with at least a 10-point standard deviation. Weekly win probability uses the difference between two normal score distributions. The simulation draws nonnegative scores, rounded to hundredths; this approximation is not an injury, bye-week, weather, or lineup forecast.
Playoff and title odds
Run the remaining regular-season schedule 10,000 times, then play the configured championship bracket. Completed results are fixed. Each simulation draws a new score for each team in each remaining week. Record, points for, then points against break standing ties; unresolved exact ties are random. League-median bonus games are included when enabled. Division winners receive top seeds when that modeled rule is enabled. Playoff ties favor the modeled higher seed.
Multiweek rounds sum their scoring weeks. During the playoffs, the saved winners bracket supplies participants and completed winners; completed scoring weeks stay fixed. Unknown schedules, unsupported playoff formats, or incomplete completed games cause the season forecast to be withheld rather than invented. Commissioner seeding can override any default. The exact assumptions are visible on Predictions and editable in config/models.json.
A fixed random seed makes the same inputs reproducible. Ten thousand trials produce at most roughly one percentage point of sampling uncertainty at 95% confidence near 50% odds. That is only simulation noise. The model's assumptions can be much further off.
Prediction receipts and accuracy
The first forecast for the week after the active NFL week is saved once, with its creation time and training cutoff. It cannot be silently replaced when later scores arrive. Offline previews do not create eligible receipts. Old games are never backfilled as successful predictions. A changed schedule is graded only if the predicted teams actually met.
Hit rate counts correct favored-team picks in decisive games, excluding ties and exact 50/50 forecasts. Mean absolute error is the average distance between predicted and actual team scores. Brier score averages squared probability errors, with tied outcomes scored as 0.5. Lower is better for both error measures. Odds-history charts begin when real snapshots are saved.
Trade values and roster fit
The default source is FantasyCalc's documented public dynasty-value API, configured for the league's team count, quarterback slots, and reception scoring. We cache it for at least 24 hours, including failed-request attempts. A last-good cache can be used for up to seven days with its timestamp displayed. This personal league site is non-commercial. Disable the source with use_fantasycalc in config/models.json if the terms or availability change.
Players match by Sleeper ID, not a guess at their names. Picks use generic year/round values, never an assumed early or late slot. Unpriced assets are excluded from proposals; missing values do not mean worthless players. Roster value totals exclude picks and omit unpriced skill players, with coverage on team pages. Custom scoring, health, and league preferences are not fully captured by this market proxy.
If that source is disabled, unsupported, or unavailable for more than seven days, the entire report switches to a labeled local formula. Market and local units are never mixed within a proposal. For this fallback, use up to eight observed scoring weeks and blend the average with four observations of the same-position league median. Production units are 40 times that blended average divided by the positional median, capped at 80. Apply the existing position-specific age multiplier. With fewer than four observations, current-draft rounds 1, 2, and 3 add 12, 6, or 3 units. Missing ages and tiny samples are flagged; uncertain players are excluded from automatic swap proposals in either mode.
Fallback first-, second-, third-, and fourth-round picks use 58, 30, 16, and 8 units, discounted by 15% for each additional future year. No early or late slot is assumed. Initialize original picks for three draft years and apply the current traded-picks ownership snapshot. Conflicting ownership is excluded. Verify special expansion allocations, league rule changes, and picks on the actual trade screen.
Fairness = 100 × smaller package value ÷ larger package value. The default filter is 78. This measures formula balance, not whether an owner will accept. Position swaps require needs and surplus on opposite sides, plus an increase in both teams' planning depth. Depth sums the top players up to positional starting/depth counts, plus 15% of the next two backups. FLEX depth is split between RB and WR; superflex adds QB depth. These are planning units, not an optimal lineup forecast.
At least 70% modeled playoff odds labels a contender; at most 30% labels a rebuild candidate. A veteran-for-pick idea also requires useful depth improvement for the buyer. The seller's benefit is a longer time horizon. Check whether that owner actually wants to rebuild, plus health, bye weeks, roster limits, taxi status, and sample size. Suggested pitches are drafts only. The site sends no trade offers.
Luck index
For each regular-season paired week, compare a team's score with every other paired team. Expected wins for that week equal the fraction it would beat, with ties counting half. Add those fractions across weeks. Luck = actual head-to-head wins (ties count half) minus expected wins. Positive means favorable results relative to the all-play comparison; negative means a rough schedule. League-median bonus games are excluded from both sides. This is a schedule summary, not proof that an owner is lucky or skilled.
Historical newsletters and activity
Historical editions are reconstructions from saved scores, transaction buckets, and results through each issue's week. They do not borrow final-season standings or later player performance. Names and ownership can reflect the snapshots available at import. Missing scores are labeled. Original sent newsletters remain available exactly as issued, preserving their delivery-verification hashes.
The timeline uses completed Sleeper transactions and draft picks. Individual draft pick times may be unavailable; those entries label the draft-start timestamp. New ownership, taxi, and reserve differences can be observed between refreshes, but their actor and exact action time are unknown. The initial snapshot does not invent a historical change log.
No documented public Sleeper chat endpoint was verified. We do not scrape private chat or use undocumented chat APIs. GroupMe's official authenticated API can retrieve a group's messages; an opt-in digest with group consent and redaction is a possible later addition. No chat is imported by this version.
Avatars and caching
Manager avatar IDs come from the users response. Download the documented thumbnail once per avatar ID, keep a local copy, and serve it from this Pages site. New IDs get new files. A missing or failed image displays colored initials. The full-size Sleeper avatar URL is recorded in the private cache for reference. Original frozen issues are not rewritten to add portraits.
Sources checked: Sleeper public API, Sleeper playoff seeding, Sleeper tiebreakers, FantasyCalc API and usage terms, official GroupMe API, and Chart.js. Chart.js 4.5.1 is served locally under its MIT license.