← All articles
engine·2026-05-08

How the Trade Finder ranks suggestions

The Trade Finder doesn't return every legal trade — that's noise. It returns the trades both sides actually benefit from. Here's the math.

Step 1: Per-team starting-lineup expected points

For each team we greedy-fill the league's roster slots (QB / RB / WR / TE / FLEX / SUPERFLEX / K / DST) with the highest ROS-projected player on the roster. Sum = SLEP.

Step 2: Position surplus / need

Per position, position_strength = sum(top_K_at_pos) − league_median(top_K_at_pos). Positive = surplus (tradeable). Negative = need (target).

Step 3: Candidate generation

For your team and each potential partner, enumerate 1-for-1, 2-for-1, and 2-for-2 packages where you have surplus at their need and they have surplus at yours. Capped at top-8 surplus assets per side to keep search bounded.

Step 4: Scoring


score = ΔSLEP_user + ΔSLEP_partner − α · |ΔSLEP_user − ΔSLEP_partner| − β · packagePenalty

Filters to min_mutual_gain > 0.5 AND |gap| < 100 ROS pts. Then we multiply by partner trade propensity (from the manager grader) so high- trading GMs surface first.

Why this beats raw "trade value"

Most trade calculators score in points. We score in *mutual lineup gain*. A 2-for-1 dumping bench depth into a star RB might look fair on a value calculator but flunks here unless both starting lineups improve.