STAT-API
The Winner's Tape · NFL Week 2

The Top Edge Sat Out: How 232.38 Won the Week 2 Millionaire

The portfolio's biggest edge play was not in the winning lineup, and that lineup's best scores came from receivers it held below the field.

By Nate Calder · Contest analyst
Sun Sep 27, 3:24 PM ET•3 min read
Winning score
232.38
1st of 172,761 · $1,000,000
Players used
164
of 276 the field used (412 in the pool)
Edge total
+1.23
points per lineup vs the field
Lineups
150
30 cashed · $1,001,395
Key points
  • The top edge play, Ja'Marr Chase at +1.80 per lineup (41 of 150 lineups, against 14.1% for the field), was not in the winning lineup.
  • The winning lineup's best scores came from Jaxon Smith-Njigba, 45.50 at 6.7% against the field's 10.2%, and CeeDee Lamb, 38.30 at 12.7% against 19.0%.
  • That lineup alone is worth +0.78 of the +1.23 edge total; the other 149 lineups averaged 116.02, close to the field's 115.54.
  • Among the 8 portfolios of 150 lineups in the top 10, the winner's edge total ranked 8th: the others ran +5.02 to +31.70.

The result

The $3M Millionaire drew 172,761 entries on Sunday, Sep 20. One lineup took first with 232.38 points and $1,000,000. It came from the elidkatz1 portfolio: 150 lineups, 30 of them in the money, $1,001,395 in all. The lineups used 164 players, 59.4% of the 276 the field used, with no core play.

Counted by lineup, its edge total, +1.23 points per lineup gained against the field, is mostly the winning lineup: that lineup alone is worth +0.78 of it, and the other 149 averaged 116.02. The portfolio's average lineup scored 116.80, against the field's 115.54. The build gave it 150 chances; one of them hit.

Pro view

elidkatz1's lineups and exposure in Contest Analysis (Pro view)
elidkatz1's 150 lineups in Contest Analysis. Open the tool.
Open Contest Analysis

The edge and the lineup

The edge list and the winning lineup mostly point to different players. Ja'Marr Chase led the edge list at +1.80 per lineup: 41 of 150 lineups, 27.3% against the field’s 14.1%, for 26.50 points. He was not in the winning lineup. Dalton Schultz came next at +1.44, 31.3% against 22.4%, and he was in the winning lineup.

The lineup's best scores came from the other side of the ledger. Jaxon Smith-Njigba scored 45.50; the portfolio held him at 6.7%, against the field's 10.2%. CeeDee Lamb scored 38.30 at 12.7%, against 19.0%. Both sat below the field in the portfolio.

That reads like a portfolio whose biggest player gains and whose ceiling ran through different players: the biggest gains sat above the field, and both of the winning lineup's best scores came from players it held below the field. The tape cannot say which part was a read and which was variance.

The chalk

The chalk was all at RB. The portfolio held Bijan Robinson in 49 of 150 lineups, 32.7% against the field's 47.3%. He scored 11.10, below the field's 12.84 per roster spot, so the underweight was worth +0.25 per lineup.

Derrick Henry's score went the other way. The portfolio was again under the field, 29.3% against 37.5%, and he scored 17.70: that cost -0.40. Christian McCaffrey sat at 24.7%, near the field's 22.9%, and his 22.60 added +0.18. The chalk edges nearly cancel; the winning lineup carried 1 chalk player, Christian McCaffrey.

The build

136 lineups, 90.7%, paired the QB with at least one teammate, across 23 QB teams. The most common, DAL, showed up in only 8.0%. A bring-back appeared in 37.3%. No QB team took more than a small slice of the lineups.

The winning lineup was a QB + 2 SF build: Brock Purdy, owned by 9.5% of the field, with Christian McCaffrey and George Kittle. That QB sat in 8.7% of the portfolio. Its lowest-owned seat was Tre Tucker at 0.7%, for 25.90. The lineup table below shows the rest.

The rest of the top

The edge leader, best finish 6th, ran 13 lineups for +37.75, a different portfolio size. Against the other portfolios of 150 lineups, the winner still ranked 8th of 8: they ran +5.02 to +31.70. Its other lineups sat close to the field's average; the title came from one lineup's ceiling.

On the chalk, 8 of the top 10 sat under the field on Derrick Henry, 6 on Bijan Robinson, and 1 on Christian McCaffrey.

The lesson

The biggest edge gains came where exposure sat above the field, yet the winning lineup's best scores came from receivers the portfolio held below it. Next week, compare where your edge comes from with where your ceiling lineups come from; this week they were different players.

The winning lineup

232.38 points with $0 of the $50,000 cap left. Stack: QB + 2 SF.

Field own = share of all 172,761 lineups. Winner exp. = share of the winning portfolio's 150 lineups.

SlotPlayerTeamSalaryField ownWinner exp.Pts
QBBrock PurdySF$6,2009.5%8.7%28.48
RBChristian McCaffreySF$8,00022.9%24.7%22.60
RBJ.K. DobbinsDEN$5,0002.5%5.3%3.60
WRJaxon Smith-NjigbaSEA$8,10010.2%6.7%45.50
WRCeeDee LambDAL$7,30019.0%12.7%38.30
WRTre TuckerLV$4,5000.7%2.0%25.90
TEDalton SchultzHOU$3,20022.4%31.3%29.00
FLEXGeorge KittleSF$4,6004.5%8.0%18.00
DSTPatriotsNE$3,1005.3%2.0%21.00

The top 10 portfolios

Each user in the first 10 rows of the standings, by best rank. Numbers only.

Edge total = points per lineup gained against the field. Mean chalk exp. = average exposure to Bijan Robinson, Derrick Henry and Christian McCaffrey, 0% counted.

Best rankEntriesPlayers usedEdge totalMean chalk exp.
1st150164+1.2328.9%
2nd150118+12.5532.0%
3rd150135+5.0232.2%
4th150119+5.9535.1%
5th150114+13.4627.8%
6th1334+37.7518.0%
6th15087+6.2035.3%
8th150150+6.1431.6%
9th326+16.9922.2%
10th15066+31.7046.9%

Open the tape

Every lineup of the winning portfolio, each player's exposure and edge against the field, and the rest of the top 10 are in Contest Analysis.

Reproduce it

The core facts come from two calls: the standings (the field block: pool size, the players the field used, the field's average lineup, the chalk) and the winner's lineups (players used, exposure, edge and the edge total). The winning lineup table comes from the contest download, and the top-10 table from each top-10 user's lineups. Every call is listed under Receipts. The calls need a Pro API key.

TypeScript (fetch)
const BASE = 'https://api.stat-api.com/api/v1/dfs/contests/7644474';
const headers = { Authorization: 'Bearer <YOUR_API_KEY>' }; // a Pro key

type Standings = { standings: Array<{ rank: number; username: string; points: number }> };
type UserLineups = {
  user: { entries: number; players_used: number; avg_points: number; edge_total: number };
  exposure: Array<{ name: string | null; lineups: number; exposure_pct: number; field_pct: number | null; edge: number | null }>;
};

const get = async <T>(path: string): Promise<T> => {
  const res = await fetch(`${BASE}${path}`, { headers });
  if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
  return (await res.json()) as T;
};

const top = await get<Standings>('/standings?limit=10');
const winner = top.standings[0].username;
const tape = await get<UserLineups>(`/users/${encodeURIComponent(winner)}/lineups`);
console.log(winner, tape.user.entries, tape.user.players_used, tape.user.edge_total);
for (const p of [...tape.exposure].sort((a, b) => (b.edge ?? 0) - (a.edge ?? 0)).slice(0, 3))
  console.log(p.name, p.lineups, p.exposure_pct, p.field_pct, p.edge);

Endpoints behind this post

GET /api/v1/dfs/contests/7644474/standings?limit=10The standings and the field block: pool size, the field's average lineup, the chalk (Pro)
GET /api/v1/dfs/contests/7644474/users/elidkatz1/lineupsEvery lineup of one user, with players used, exposure and edge (Pro)
GET /api/v1/dfs/contests/7644474/download?format=jsonEvery lineup of the contest and the player pool with field ownership (Pro)
Receipts

Built automatically from the contest data. Every number links to its API call.

  • GET https://api.stat-api.com/api/v1/dfs/slates/seasons?sport=nfl2026-09-27T21:18:08Z
  • GET https://api.stat-api.com/api/v1/dfs/slates?operator_id=1&date=2026-09-202026-09-27T21:18:08Z
  • GET https://api.stat-api.com/api/v1/dfs/contests?slate_id=2908712026-09-27T21:18:11Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/download?format=json&enrich=dfs.player_stats2026-09-27T21:18:17Z
  • GET https://api.stat-api.com/api/v1/dfs/slates/2908712026-09-27T21:18:17Z
  • GET https://api.stat-api.com/api/v1/dfs/slate_settings/1302026-09-27T21:18:17Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/standings?limit=102026-09-27T21:18:17Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/users/elidkatz1/lineups2026-09-27T21:18:17Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/users/Hebrewcheetah/lineups2026-09-27T21:18:17Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/users/BobbyFi/lineups2026-09-27T21:18:17Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/users/xmalachi/lineups2026-09-27T21:18:17Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/users/CactusJack2/lineups2026-09-27T21:18:17Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/users/BrandonTigers/lineups2026-09-27T21:18:17Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/users/ikeyser21/lineups2026-09-27T21:18:18Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/users/driverseati/lineups2026-09-27T21:18:18Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/users/tennis69/lineups2026-09-27T21:18:18Z
  • GET https://api.stat-api.com/api/v1/dfs/contests/7644474/users/mrgoodseats/lineups2026-09-27T21:18:18Z