I officially launched LOWFI - my constrained NFL projection system - a few weeks ago. So far, it’s lived in weekly posts breaking down the season so far, the next set of games, and team ratings.
While I’m happy with the launch, it was never what was originally intended - posting weekly was a result of me not getting the rebuild done quite in time. But my goal was always something more polished, more exciting, more informative.
So it’s with great happiness that I can now say I’ve completed my original goal, and only a few weeks late! LOWFI now has its own site. And if I say so myself, it’s pretty cool!
It’s got some beautiful visuals to go along with new features, new insights, and a ton of data you can play around with yourself. It updates itself every Tuesday morning. And it automatically scores itself against the market, posting the results for anyone to see.
It’s also been a ton of fun to build, which says something about my current social life.1
As a reminder, LOWFI stands for Latent Outlook Weekly Forecasting Interval, and it comes in two flavors - LOWFI/1, which is the advanced model that learns about points, opponents, and uses some fancy statistics, and LOWFI/0, which is the original model and knows only who won and lost (and technically, not even that). Both are represented on the site.
The site is structured across a series of views, each with its on set of features which are detailed below.
Games
The Games page shows the week’s slate. Each game gets both models’ lines, both models’ win probabilities and the market’s, side by side in a sortable view. LOWFI/1 is also used to provide betting views, including cover, push, and quarter-Kelly Criterion2
The column I’d look at first is edge: how far each model’s line sits from the market’s. The table opens sorted by LOWFI/1’s edge, so the games where it disagrees with the book most are at the top. Sort by LOWFI/0’s edge instead and you get a different list, which is the point of running two models.
Below the table, you can find the result of 10,000 simulations of every game, so you can see the shape of each forecast, the possible distributions of the final margin, and not just the average outcome.
Ratings
The Ratings page is where you can see how each version of LOWFI views each team. Flip the toggle between LOWFI/1 and LOWFI/0 to see the teams that the models disagree on most. LOWFI/0 only knows who won, while LOWFI/1 knows by how much, and against whom.
Each view carries different information about the team, based on what the model is built from. LOWFI/1’s view shows the model’s perspective on each team’s current offensive and defensive strength, its net expected point differential against an average team, and where they rank on raw points scored and allowed, before LOWFI adjusts for opponents and other things.
LOWFI/0, which only knows wins and losses, shows its estimate of each team's true strength, how uncertain it is, and the team's actual and Pythagorean win percentages.
Under that are the season projections for both models - playoff odds, division odds, projected wins, projected point differential - all sortable. And at the bottom, there are a few views showing how the season is progressing week by week. For LOWFI/1, you can find net rating by team by week, and "true strength” from LOWFI/0, before landing on a race-track chart showing where each team ranks each week, according to the model selected.
Teams
Every team gets its own page, and they pack in a ton of information. On each team page, you’ll find:
Records, ratings, strength of schedule, and important odds - right on the top, in easy to view tiles.
Observed performance - points for, against, and point differential, raw and compared to league average, with the current ranks.
Four ways to read the team - its record, its Pythagorean record, and both models current best estimate for final win-total. This helps you understand that there are multiple ways to view a team’s performance as of now and into the future, all in one place.
Every simulated season - the current probabilistic distribution of total final wins according to each model.
LOWFI/1 offensive and defensive rating breakdown - the LOWFI/1 rating taken apart term by term for offense and defense to show how the model assesses the current team.
Week by week - each model’s read of the team at every point in the season, with a toggle for LOWFI/1’s offense and defense
The full schedule - shows each model’s expected margin and win probability for every game, the market’s where it’s posted, and the date every number was produced. Games already played show the forecast LOWFI made before the game, not a new one made afterward.
History
The History page is every team at every week, back to 2004, in one interactive chart. Hover on a line to read it and click to pin it. Pin your team and its rival and you can see two decades of a rivalry as two lines. Switch the rating to offense and find the year your team’s offense fell off a cliff.3
The historic views are technically “retrodictions”, which is just a way of saying predicting a past that’s already happened. That’s fine, statistically, as the models only know what they could have known prior to a game being played, even in the past. But these data were also included in the training set, so the models kinda know what happened already, even if they don’t know it explicitly.4
Under the chart there’s a best-and-worst table for every rating.
Scoreboard
Every Tuesday, LOWFI’s forecasts are written to an archive before the week’s first game kicks off, and the site reads that archive back. Ratings never get recomputed, predictions don’t change, estimated margins of victory stay intact. If LOWFI thought your team was a 60% favorite and they lost by twenty, that 60% stays on the page forever. Every forecast carries the date it was made, and if anything changes on the site moving forward, that means I either found a bug and fixed it…or I haven’t found it yet!
That’s why the Scoreboard exists. It scores every game under the rules from FiveThirtyEight’s old NFL forecasting game5: a coin flip earns nothing, being certain and right earns up to 25, and being certain and wrong costs up to 75. Both models and the market play along. Open a season to see its weeks, and a week to see its games - everything is on the page, and the season to date is summed at the top.
Take the data
All the data you see on the site is free to download, under a Creative Commons license. You can find the weekly archives, the full ratings history back to 2004, and every game’s forecast. There’s a data dictionary, a caveats file I encourage everyone to read before doing your own analyses, and example code written in R that shows you how to use the repo. If you do something with it, I’d love to see it.
And if you want to know what any number on the site means, Definitions has every one of them.
What happens to the weekly posts
They’re likely going away - the site does their job better anyways, and it’s way less work for me. Moving forward, posts are likely to be analyses or check ins on LOWFI, or other things I’m working on unrelated to LOWFI itself. I may schedule notifications that LOWFI’s site has updated, but that probably won’t last long if I decide to do it at all.
Either way - it’s time for LOWFI to grow up and move out of the house and start living the life I always intended for it. One housekeeping note: I found a few minor bugs in the code that got fixed on the way into the site. If a number here disagrees with one from an earlier post, the site’s number is the right one.
Go poke at it. Pin some lines. Find the worst week in the database. Tell me what’s broken. And have fun!
-Jake
sad face
Reminder - LOWFI wasn't built to beat the market - and it usually doesn't! I wouldn’t use it to place bets, is what I’m saying. Check out the Scoreboard page to show that while it does pretty well for not having a ton of information, but the market will win.
Duck Hodges, you will be remembered
f you want the long version of how either model works, it’s in How LOWFI/1 works and How LOWFI/0 works. The short version is in Introducing LOWFI.
Later adapted by Lee Sharpe



