Live board
Today's Read
catches 4.4 points less often than his 5.88-yard target depth predicts, and +1.31 yards after catch versus expectation. That is earned production rather than volume, and it tends to persist.
Model rank
Market
—
Confidence
low
TE · CLE · Bye 11
Elite Profile
Calibrated public rating
Projection
9.2
Half-PPR / game
Market ADP
66.7
Consensus overall
FFT fair value
67.9
Calibrated pick
Draft delta
-1.2
Market minus FFT
Draft recommendation
Fairly priced
Risk / reliability
Low Risk
Reliability
84 / 99
Coverage
80%
Live board
catches 4.4 points less often than his 5.88-yard target depth predicts, and +1.31 yards after catch versus expectation. That is earned production rather than volume, and it tends to persist.
Model rank
Market
—
Confidence
low
2026 week 2
Our projection
8.3
Weighted weekly consensus
BDL projection
7.7
BALLDONTLIE weekly
Sleeper projection
7.9
Sleeper weekly
Game status
Not reported
No injury description reported
Latest practice
Not reported
Game-day active
Active
Started
Pending
Participation
Pending
Game market
Total — · Spread —
Implied team total — · cross-book median
Live draft market
ADP 89.6 · Rostered 92.1%
BDL change -1.5%
BALLDONTLIE data checked 9/20/2026, 5:47:46 PM ET. Sportsbook values are consensus context, not betting advice.
Measured 2026 · Regular season
Loading 2026 results…
Actual BALLDONTLIE box scores · FFT-computed fantasy points · Preseason excluded. Missing stats are not zeroes.
2026 / Player Game Center
Harold Fannin Jr. · Recorded performance, game context, fantasy takeaways.
Loading game data…
Measured game log
Actual BALLDONTLIE box scores · FFT-computed fantasy points. Missing weeks are never filled with zeroes.
No 2026 regular-season stat line recorded for Harold Fannin Jr. yet.
This view will populate automatically when measured games enter the data spine.
FFT Newsroom
Position-relative
Target Command & Offensive Role
94
Elite
Top 1% at TE
Replacement + Draft Economics
99
Elite
Top 1% at TE
TD / High-Value Opportunity
56
Average
Top 46% at TE
Receiving Talent
71
Strong
Top 19% at TE
Offensive Ecosystem
30
Watch
Top 76% at TE
Fantasy Playoff Schedule
46
Watch
Top 64% at TE
Games
16
Half-PPR
114.4
Total TD
7
The measured inputs doing the most work inside this grade.
Value Over Replacement
+27.9
proj. half-PPR pts
Rank Delta
+5
position spots vs ADP
Value Grade
B+
Good Value
Market
66.7
FFT value
67.9
Board Δ
-1.2
Week 15
@ NYG
Rank 24th
NeutralWeek 16
@ BAL
Rank 26th
ToughWeek 17
vs IND
Rank 7th
EliteEvery dot is a real position peer with a market price.
Deep research dossier
The decision dashboard ends above. Open only the research sections you need below—the full evidence remains available without overwhelming the player overview.
Claims written down before the season, sealed at registration, and graded in public — misses kept.
No pre-registered call was made on Harold Fannin Jr.. The record holds 29 calls in total, selected from the board by signal strength and divergence — most players do not clear that bar, and silence here means we did not stake a claim on him, not that he graded badly.
What he actually did last season. Measured, not projected.
Games
16
PPR pts
186.4
Half-PPR pts
114.4
PPR / game
11.7
Receiving
Targets
107
Receptions
72
Rec yards
731
Rec TDs
6
Target share
20.5%
Air yards share
17.1%
WOPR
0.43
Rushing
Carries
7
Rush yards
13
Rush TDs
1
Yards / carry
1.86
Passing
Pass yards
0
Pass TDs
0
Interceptions
0
nflverse season totals for 2025, joined on normalised name and position (gsis 00-0040663). These are actuals — nothing here is modelled.
Every ADP source we hold, side by side, and where our model sits against them.
Consensus ADP
66.7
Median
68.0
Sources ranking him
3/4
Agreement
High
| Source | Rank / ADP |
|---|---|
| Yahoo ADP | 70.0 |
| Sleeper ADP | 68.0 |
| RTSports ADP | 62.0 |
| Fantasy Football Calculator ADP (live) | unranked |
The sources that ranked him disagree by 8.0 picks between highest and lowest (standard deviation 3.4).
Mean and median are computed across the sources that actually ranked him — an unranked source never enters the average, because a sentinel treated as a pick number would drag a real player hundreds of slots. Spread, deviation and agreement are null under two ranked sources rather than 0, since one source cannot agree with itself. The FFT model rank is our own output and is never folded in as if it were an outside source.
Consistency and range — the part a season total hides.
Weeks with a line
16
PPR / game
11.7
Std dev
5.5
Coeff. of variation
0.48
Boom rate
25% (4/16)
Bust rate
13% (2/16)
Best week
25.4 wk 14
Worst week
4.5 wk 4
Recent form — last 4 games with a line
17.0 PPR per game over weeks 14, 15, 16, 17 — +5.3 against his season average.
| Wk | Opp | PPR | Tgt | Rec | Yds | Car | RuYd | TD | RZ |
|---|---|---|---|---|---|---|---|---|---|
| 1 | CIN | 13.6 | 9 | 7 | 63 | 1 | 3 | 0 | 1 |
| 2 | BAL | 9.8 | 5 | 5 | 48 | 0 | 0 | 0 | 0 |
| 3 | GB | 5.5 | 4 | 3 | 25 | 0 | 0 | 0 | 0 |
| 4 | DET | 4.5 | 6 | 2 | 24 | 1 | 1 | 0 | 2 |
| 5 | MIN | 11.3 | 4 | 4 | 13 | 0 | 0 | 1 | 1 |
| 6 | PIT | 15.1 | 10 | 7 | 81 | 0 | 0 | 0 | 1 |
| 7 | MIA | 7.6 | 5 | 4 | 36 | 0 | 0 | 0 | 0 |
| 8 | NE | 18.4 | 8 | 6 | 62 | 1 | 2 | 1 | 1 |
| 10 | NYJ | 8.4 | 7 | 4 | 44 | 0 | 0 | 0 | 0 |
| 11 | BAL | 4.6 | 5 | 2 | 26 | 0 | 0 | 0 | 1 |
| 12 | LV | 8.4 | 6 | 4 | 40 | 1 | 4 | 0 | 0 |
| 13 | SF | 11.3 | 5 | 3 | 43 | 1 | 0 | 1 | 0 |
| 14 | TEN | 25.4 | 11 | 8 | 114 | 0 | 0 | 1 | 1 |
| 15 | CHI | 12.0 | 14 | 7 | 48 | 1 | 2 | 0 | 2 |
| 16 | BUF | 19.5 | 6 | 4 | 34 | 1 | 1 | 2 | 2 |
| 17 | PIT | 11.0 | 2 | 2 | 30 | 0 | 0 | 1 | 0 |
The weekly LINES are measured: 2025 game logs, joined on gsis id 00-0040663. Everything derived from them above — per-game, standard deviation, coefficient of variation, boom and bust rates, recent form — is computed by us and carries the FFT model (beta) label. It is not an observed stat.
This whole block is on the PPR scale, including the thresholds — the artifact publishes boom and bust in PPR (TE: boom ≥ 15, bust ≤ 5) and converting only the points would leave the rates measured against a different ruler than the one they were defined on. The hero above is half-PPR because that is what the model ranks on. Two rulers, each labelled, rather than one silently mixed. Rates need at least 4 games to carry weight; recent form is the last 4.
Route concepts, red-zone opportunity, and separation-adjusted catch rate.
RZ targets
11
RZ carries
2
RZ TDs
5
aDOT
5.9
Concept EPA / target
0.022
Classified targets
107
Catch residual
-4.388
YAC over expected
1.31
Most-run concept: QUICK_OUT on 27.1% of his classified targets.
Every field is derived by FFT from openly-licensed nflverse play-by-play, or taken from the free public NFL Next Gen Stats endpoint. No licensed trial data (Sportradar, BALLDONTLIE) is included, which is why this file can be committed and shipped with the build. Red zone: Plays snapped inside the opponent 20-yard line. Red-zone usage measures opportunity; this repo’s own backtest shows it adds little on top of plain volume, so it is retained as context and is deliberately not described as an edge.
The component projection behind the headline number, and what it was built from.
Projected games
14.4
Half-PPR (season)
132.2
PPR (season)
165.0
Confidence
high
Proj targets
94.2
Proj receptions
65.6
Proj rec yards
672
Proj rec TDs
5.1
Proj carries
3.4
Proj rush yards
9
Proj rush TDs
0.2
Proj pass yards
0
Proj pass TDs
0.0
Proj INTs
0.0
Touchdown regression
He actually scored 7 touchdowns last season. Against his measured opportunity the model expects a change of -1.7. The gap between what a player scored and what his opportunity implies is one of the four signals the edge engine reads.
What this projection was built from
16 g in 2025, 6.7 tgt/g, 76% snaps (regressed to the role, not the position), TE1 on depth chart, age 22, -1.7 TD vs 2025 on red-zone opportunity
fft-projection-2.3.0-beta. The model reads measured production, opportunity and age, and reads no ADP field at any stage — so it can disagree with the market, which is the only reason a disagreement is worth anything. Draft capital was not resolved for this player, which the model treats as unknown rather than as undrafted.
Which sources answered for this player, and which did not.
Model run caveats
How the model works
Inputs, method, and the forbidden-inputs list. It reads no ADP at any stage.
Where it loses
Pre-registered calls, graded in public, misses kept on the page.
Model Rankings
Every player, with the model's BUY / FADE call against consensus ADP built into the board.