Complete beginner? Start here.

Your learning path

You don't need a stats degree or a finance job - just curiosity and an hour here and there. Here's the order I'd learn things in, with honest time estimates.

Prefer a structured syllabus over a path? The same material is organised into 11 free courses - each with an ordered syllabus, a downloadable code-and-data bundle, and progress you can tick off. This page and the courses agree with each other; they're two doors into one curriculum. For the full route map - including the honest timeline and what this site won't teach you - read the cornerstone learning guide.

The foundations, in order

Do these five first, in this order. They're sport-agnostic and everything else builds on them.

  1. Install your tools

    Set up Python, a code editor, and the core libraries. About 30 minutes, once.

    Beginner · ~8 min

  2. Learn the 12 pandas moves

    The handful of operations that show up in every project. An afternoon.

    Beginner · ~8 min

  3. Make your first chart

    Turn a table into a clean, labeled figure with matplotlib. An hour.

    Beginner · ~6 min

  4. Read an API's docs

    Learn to pull live data by example, using the public NHL API. An hour.

    Beginner · ~8 min

  5. Clean a messy file

    The unglamorous skill that makes everything else possible. An hour or two.

    Intermediate · ~8 min

Then pick a sport

Once the foundations feel comfortable, choose whichever sport you actually care about - you'll learn faster on data you enjoy. Each sport's hub lists its tutorials from beginner to advanced.

Then go deeper: statistics, then models from scratch

This is the part of the curriculum most tutorial sites don't have, and it's deliberately ordered. First you learn to describe data honestly, then to ask whether an effect is real, and only then to build predictive models - implemented in plain numpy so you see every moving part, not called from a black-box library. Each step uses real sports data as its running example.

  1. Describe data honestly

    Summary statistics, distributions, and what the mean hides.

    Beginner · ~5 min

  2. Ask what predicts winning

    Correlation and regression, with their classic traps.

    Advanced · ~8 min

  3. Measure luck itself

    Monte Carlo simulation: how far pure chance moves a season.

    Intermediate · ~5 min

  4. Put error bars on a claim

    Bootstrap a confidence interval for home-court advantage.

    Intermediate · ~9 min

  5. Test whether an effect is real

    A permutation test, built by hand.

    Intermediate · ~5 min

  6. Watch a model learn

    Gradient descent from scratch in pure numpy.

    Advanced · ~5 min

  7. Predict a win, not a number

    Logistic regression from scratch.

    Advanced · ~7 min

  8. Grade your model honestly

    Train/test splits, cross-validation, ROC curves and AUC.

    Advanced · ~6 min

After the modeling arc, the applied statistics tutorials - Elo ratings, Bayesian updating, exponentially weighted form, outlier detection, the chi-square test - each take one classic technique and put it to work on a real sports question. By then you'll recognise every ingredient.

Finish with the capstone

When you've done a few sports, tackle the capstone, Same Question, Five Sports: Quantifying Home Advantage Across Leagues. It reuses everything - APIs, cleaning, aggregation, plotting - to answer one question across five leagues.

What you'll need installed

  • Python 3.10 or newer – the language everything is written in.
  • A code editor – VS Code is free and excellent.
  • Spreadsheet software (optional) – handy for eyeballing CSVs; Excel, Numbers, or free LibreOffice all work.

The very first tutorial walks you through all of it. See you there.