Results Tracker

Points per game

W D L
Live

What Do We Need?

SD Wave History

Next 5 Opponents

MD#OpponentH/ADateELOLast 5Last

ClubElo Rating K=20 · HA=100 · 75/25 carry

Current
Pre-season
Season Δ
Last Match
League Rank

Strength of Schedule

Past
Upcoming

League Table — Ranked By xGD

TeamGxGG‑xGGAxGAGA‑xGAxGD
GOALS AND xG
WDL GoalsxG
GOALS CONCEDED AND xGA
WDL Goals ConcededxGA

SP Table — Ranked By SP GD

TeamSP GSP xGG‑xGSP GASP xGAGA‑xGASP GDSP xGD
SP GOALS AND SP xG
WDL SP GoalsSP xG
SP GOALS CONCEDED AND SP xGA
WDL SP GASP xGA
Build = Own Half (x ≤ 60) | Long = ≥ 32 yds

Build-Up Pass Split

Long % Short % --- 2025 avg 13.4%

Build Progression by Match · NWSL 2026

San Diego Wave · 8 matches · season-to-date
Line break attempts (avg —) Successful 1st unit line breaks (avg —) Reached Final Third (avg —)

Team Level vs SD baselines

Long > 63.4% 1 SD (52.9%–63.4%) < 1 SD (52.9%) Short > 90.6% < 88.2% Long % outlier
MATCHBUILDLONGSHORTLONG %SHORT %LONG C%SHORT C%

Pressing - Regain Rate by Match

Pressures vs Regain Rate · NWSL 2026

16 teams · season-to-date

Counterpress - Regain Rate by Match

Counterpressures vs Regain Rate · NWSL 2026

16 teams · season-to-date

Minutes Played Total Minutes Played in the Season

Minutes per Match Starter Sub Bench (unused)

NWSL 2026

Team Comparison · Comparison Metric: Shots

NWSL 2026

Team Comparison · Comparison Metric: Shots Conceded

NWSL 2026

Team Comparison · Comparison Metric: Passes Inside Box

NWSL 2026

Team Comparison · Comparison Metric: Successful Box Cross %

Live Source Status

Wiring guide — current state

✓ 1 · Cloudflare Worker is live
square-union-3135.sbazikian.workers.dev is responding with the proxy JSON. ESPN traffic is flowing through it. If you ever need to redeploy, paste worker.js from this project into the worker editor.
◐ 2 · ESPN — transport OK, content sparse
Worker → ESPN works. The standings tile may show "reachable, no data" (yellow) — that means HTTP 200 but 0 standings rows for the current year. NWSL hasn't filled in 2026 yet on ESPN's feed. The ESPN team schedule probe tile reports the actual event count. While it's empty, the dashboard runs on the seeded MD-8 snapshot.
◐ 3 · ASA — same pattern
Same transport path through the worker. If the tile is yellow, the season query returned an empty array — usually means the season isn't started yet on their side. Try season_name=2025 in the URL to confirm the connection works (the endpoint will return last year's data fine).
✗ 4 · FBref blocked — needs non-CF host
CF-Worker IPs are challenged by FBref's CF Bot Fight Mode. Not solvable in the worker. Redeploy the same worker.js on Vercel Edge, Deno Deploy, or Render.com (different IP range), then point WORKER_BASE at the new URL. Or skip FBref and use ESPN match summaries for player stats.
5 · ESPN match summaries (next wire-up)
When the schedule probe tile shows > 0 completed events, this becomes wireable:
/espn/apis/site/v2/sports/soccer/usa.nwsl/summary?event={eventId}
Pulls minutes, goals, assists, cards per player. Replaces seeded player data with live numbers — no FBref needed.
✓ 7 · FBref-JSON loader is wired
The cowork-produced JSON drops into data/nwsl-{year}-fbref.json. On every page refresh the dashboard auto-fetches it, merges into teamStats / players / sdMatches, and the seed becomes fallback for anything FBref doesn't carry (build splits, pressures, etc.). The FBref JSON snapshot tile above tells you whether the file was found and how many rows merged. While the file is missing, that tile shows ◐ awaiting file (yellow) and the dashboard runs on seed.
6 · StatsBomb open-data caveat
Open-data NWSL is limited to the 2018 season. SD Wave didn't exist before 2022, so it can't provide Wave-specific historicals. Useful only for league-baseline norms (build %, pressure rates) or to validate event-parsing logic.

Stat → Source Map

Stat / FieldUsed in tabSourceLive?Notes
Year: 2026 · click tabs to view different tables