Forecasting tools and applications for business settings. The first half of the course covers traditional econometric forecasting; the second half turns to predictive analytics and machine learning. Everything is implemented in Python.
About this course — what it teaches, what it assumes you already know, and the books it reads from.
This site carries the course materials — every slide deck, lab, assignment, the book and the workbook — and nothing specific to one university, term or section. It has no calendar dates, no grading scale, no lecture recordings and no course policies.
If you are enrolled, Canvas is authoritative for all of those: your syllabus, the term calendar and due dates, the lecture videos, the academic-integrity and accessibility policies, and how work is submitted and graded. Where the two ever disagree, Canvas wins.
The rest of the course documents:
| Document | What it covers |
|---|---|
| Setup & Quarto guide | Installing Python, Quarto and an editor; how to work in a .qmd |
| Homework quickstart | Getting the data, doing an assignment, checking it, submitting |
| Using AI on homework | Which tools are allowed, the prompt log, what you must write yourself |
| Troubleshooting | When something will not install, render or run — read this before emailing |
| Course datasets | What each dataset is and why it is in the course — read before Homework 1 |
| Final project rubric | How points are awarded |
All are free online. None needs to be purchased.
| Book | Used for |
|---|---|
| FPP-Py — Forecasting: Principles and Practice, the Pythonic Way | Lectures 1–3; the primary text |
| FPP3 — the R edition | Same material, R code. Chapter 12 is numbered differently — both numbers are always given |
| ISLP — An Introduction to Statistical Learning with Applications in Python | Lectures 4–6. FPP covers no tree methods and no regularization; this fills that gap |
| BMCP — Bayesian Modeling and Computation in Python | Lectures 10–12. PyMC and ArviZ throughout, which is what we use |
Every lab and homework in this course reads from prepared data files that are not in the repository. Run these three commands once, from the repository root, before Week 1:
python scripts/prep_m5.py # M5 / Walmart — the course spine
python scripts/prep_fred.py # FRED macro series — Lecture 2
python scripts/prep_electricity.py # hourly electricity demand — Lecture 3
Each downloads from a public source, needs no login or API key, and writes to
data/processed/. Once they have run, nothing in this course needs the network again.
XGBoost will not import on macOS without the OpenMP runtime. Install it once with
brew install libomp, then pip install xgboost. Do this before Lab 5 rather
than during it.
Setup and Quarto guide — installing
Python, Quarto and an editor (VS Code or Positron), what a .qmd file is, and the four
errors you will hit. Google Colab will not work — it cannot open
.qmd files.
When something breaks later — a package that will not install, a render that fails, a lab that errors halfway — go to Troubleshooting first. It covers the failures this course actually produces.
You will also need: jupyter, pandas, numpy,
matplotlib, statsmodels, scikit-learn, prophet,
pygam, xgboost, torch, pymc, and arviz.
jupyter is not optional — Quarto runs your Python through a Jupyter kernel. Assignment submission, the AI workflow, and the prompt log live in the
course environment repository.
The sixteen teaching weeks, in order, with the lecture each one covers. There are no calendar dates here: those belong to a particular term and section, and a break week falls in a different place each semester. Enrolled students get the dated calendar — including breaks and due dates — from Canvas, where the week numbers match these.
| Assignment | Covers | Due | Prompts |
|---|---|---|---|
| Assignment 1, Part 1 | Exponential smoothing, forecast evaluation | Week 2 | 4 |
| Assignment 1, Part 2 | ARIMA, VAR, Granger causality | Week 3 | 8 |
| Assignment 2 | Prophet, pyGAM, component decomposition | Week 4 | 10 |
| Assignment 3 | Decision trees, random forests, feature importance | Week 6 | 12 |
| Assignment 4 | XGBoost tuning, LASSO paths, Elastic Net | Week 7 | 12 |
| Assignment 5, Part 1 | Windowing datasets, FFN, 1D CNN | Week 9 | 9 |
| Assignment 5, Part 2 | RNN, LSTM, Transformer, positional encoding | Week 11 | 10 |
| Assignment 5, Part 3 | Five-architecture comparison and reflection | Week 12 | 3 |
| Assignment 6, Part 1 | Beta-Binomial, prior predictive, structural TS | Week 13 | 10 |
| Assignment 6, Part 2 | Exchangeability, pooling, shrinkage, divergences | Week 14 | 9 |
| Assignment 7 | DAGs, Bayesian regression, ROPE, scenarios | Week 15 | 16 |
Every assignment carries a prompt budget and an initial context prompt that does not count
against it. Any AI assistant is fine — ChatGPT, Claude, Gemini, Copilot — in an editor or a
browser tab. UNO's ChatGPT Edu workspace does not include Codex, so nothing here requires it. You submit a PROMPT_LOG.md alongside your rendered
work, listing every prompt you sent in order.
The budget is a target, not a limit. It exists to make you decide what is worth asking, and you may go over it — log the extra prompts and say where you got stuck. What does cost you is a log that does not match the work you submit.
Every lecture, in one continuous document you can read, search and quote from — the slides and what was said about them, assembled into fifteen numbered chapters. Useful for revision, for reading ahead, and for finding the lecture where a method was introduced without opening five decks.
The companion volume: all fourteen labs and eleven assignments in one searchable document. Code is shown rather than run, so it opens instantly — each lab links to its executable version for when you are actually working. Every step carries a collapsible walkthrough of what was said about it in class, and every lab ends with the output your own run should produce.
The book is assembled from the decks themselves, so a table, figure or number in it cannot disagree with the lecture it came from. If a deck is corrected, the book carries the correction the next time it is built.