Banner Month

About

What is this?

Banner Month answers a simple question: how good has it been to be a sports fan of your teams — or your city — lately? It tracks every regular-season game in the four major US leagues (MLB ⚾, NBA 🏀, NHL 🏒, NFL 🏈) and turns wins and losses into one running score — then tells you where the month you are having sits against every month you have already had.

Every morning a scheduled job pulls the previous day's final scores from ESPN's public scoreboard API and commits them to this site's repository. There are no servers and no database — the pages you're reading are static files that read those score files directly.

The views

City index — the home page. Every city competes with one team per league, and the page crowns the best day, week, month, and year. Clicking a city opens that city's teams in the My Teams view. In the best-year section you can also pick any city and see it highlighted against the rest of the field, and the "best fandom" section shows the best possible team in each league regardless of city.

My teams — pick your own team in each league (or "None") and see your combined score, per-team tiles with sparklines, and a game-by-game log. Your picks are stored in the page URL, so you can share your exact view with a friend using the Share button.

Blog — every chart the analysis jobs draw, newest first. Each morning brings a randomly drawn city's season; every Wednesday adds two league-wide reads — which fandoms are living a season unlike their own others, and which are running furthest outside their own norm. Each post carries the numbers behind its charts and has its own page you can link to. Charts are kept for 90 days; the headlines and the numbers stay for good, so an old link still resolves.

City groups — how cities are defined. A city with two teams in one league (say, both the Mets and the Yankees) competes as one group per combination, so no group ever has two teams from the same league; the city is represented by whichever of its combinations scores best.

The three scoring methods

MethodWinLossTie
Wins+100
Net W−L+1−10
Weighted+365 ÷ season length−365 ÷ season length0

Wins is the simple count. Net W−L subtracts losses, so a losing month actually looks like one. Weighted makes every game worth its share of the year — 365 divided by the league's regular-season length — so leagues with few games count more per game:

LeagueSeason gamesPoints per game
MLB162±2.25
NBA82±4.45
NHL82±4.45
NFL17±21.47

The idea: one NFL Sunday carries about as much of a season's weight as three weeks of baseball. A Commanders win (+21.5) can cancel out a rough Nationals homestand — and a bad Wizards season can sink your whole year.

Details

Exhibition games (spring training, preseason) and postponed games are excluded. NFL ties are recorded with no winner and score zero in every method. Scores update each morning around 10:00 UTC, covering games completed the previous day (US/Eastern).

Source code and data: github.com/AlexJF12/sports-win-index.