Week 6 · Saturday — build and investigate
Forecasting studio 6: freeze the design, evaluate the held-out period once, decide under uncertainty
Project thread forecasting · linked lessons day 26, day 27, day 28, day 29, day 30
Milestone W6-a: a frozen forecast design chosen by pre-registered criteria, and one clean evaluation on the protected 2024-H2 departures against both baselines. Added to that: an interval with checked coverage, the close-or-keep-L decision implications under labelled hypothetical costs, and a report skeleton with computed tables.
- 90 minsession length
- 3timed blocks
- 5tasks
- —status
Session plan90 min
Before you start
Prepared before the session (under 3 minutes):
configs/backtest_w05.yaml,outputs/backtest_w05.csv, the repaired backtest (if any), and the freeze criteria indecision-log.md;- the backtest residuals per origin and market, saved by the Week 5 code. If they were not saved, re-run the backtest before the session; it is development data only;
- the hypothetical costs
c_overandc_underfrom brief v1, or the ones revised in Week 4; - the seed-42 database, unchanged since Week 1.
This is the only studio in which the guard is lifted, and only for the single held-out run. Day 28's project lesson already discussed the forecast design. Today produces its final evidence.
Blocks3
Block 1: Recap and freeze
15 minRe-read the pre-registered freeze criteria from Week 5. Apply them to
outputs/backtest_w05.csv, or to the repaired backtest if it superseded yours, and choose the design.Write
configs/frozen_w06.yamlwith:- features;
- model and hyperparameters;
- target;
- training window and gap;
- refit policy for the test half-year: a single fit at 2024-06-16, or monthly refits at each origin minus 14 days;
- interval method;
- decision rule;
- seed, data version and code version.
Commit the file. From this point, nothing in it changes because of test results (task
freeze-design).Block 2: Build - held-out evaluation, uncertainty, decision
60 min- Minutes 0-25 - held-out evaluation (task
heldout-eval). Lift the guard for the first time, run the frozen design exactly once on departures 2024-07-01 to 2024-12-31, and score the pickup baseline and the seasonal naive on the same rows. - Minutes 25-40 - uncertainty (task
uncertainty). Build intervals from backtest residuals, then check coverage and width on the test. - Minutes 40-60 - decision implications (task
decision-implications).
If something breaks, fix only the bug, not the design. Log the fix with its reason. Any design change after seeing test numbers is recorded as such, and the test result is then labelled "no longer clean".
- Minutes 0-25 - held-out evaluation (task
Block 3: Error analysis and record
15 minDo task
limitations-and-skeleton: test-period slices, a limitations list, and the report skeleton with the tables filled. Then record indecision-log.md:- the single test run's timestamp and code version;
- the headline numbers as computed;
- the next unresolved question.
Tasks5
Task 1
writingApply the Week 5 freeze criteria and write
configs/frozen_w06.yaml.In
decision-log.md, state:- which criterion selected the design;
- the runner-up;
- what the result would have been under the fallback rule;
- why no modern forecasting family (Day 27) was added. Either the evidence did not justify the cost of testing one, or it did, in which case say how it would be tested later against the same baselines.
Task 2
codeTrain exactly as frozen. Training departures end on 2024-06-16 for a single fit, or follow the frozen refit policy. Evaluate once on departures 2024-07-01 to 2024-12-31.
Report MAE, bias, WAPE and the Week 4 business metric for:
- the frozen design;
- the pickup baseline;
- the seasonal naive.
Report them overall, by month and by market. Save
outputs/test_w06.csvwith predictions andoutputs/test_run_w06.jsonwith the run record.Task 3
analysisBuild an 80% interval for each test forecast from the empirical 10% and 90% quantiles of backtest residuals, per market if each market has enough residuals. This is a split-conformal-style approach. Then:
- report the empirical coverage and the mean width on the test, overall and by market;
- state the exchangeability assumption behind the method, and two reasons it may fail here (seasonality, and the 2024-03-01 break);
- pick one example departure and explain its interval to an RM analyst in two sentences.
Task 4
analysisTranslate the forecasts into the close-or-keep-L decision on the test departures:
- Compute the critical ratio q* = c_under / (c_under + c_over) from your hypothetical costs.
- Use the q* quantile of each forecast distribution as the planning number. Close L when it reaches capacity.
- Compare the decision cost with:
- the same rule driven by the pickup baseline;
- the cost of the decisions that the actual
bookings_finalwould have implied.
- State how censoring (bookings capped by capacity plus overbooking) biases this comparison on near-capacity departures.
Task 5
writingSlice the test errors by market and month, with the near-capacity flag, and compare them with the Week 4 and Week 5 slices.
Write the limitations list. Include:
- synthetic data from one simulator;
- one dataset version;
- hypothetical costs;
- censored demand;
- the structural break;
- a single test half-year;
- the forecast's inability to answer price, capacity or competitor what-ifs.
Create
notes/report-w06.mdwith headings and the tables filled. Leave the prose for Sunday.
Rubric4 criteria
| Criterion | Meets | Exceeds |
|---|---|---|
| Evaluation integrity | The design is frozen and committed before the single test run. Both baselines are scored on the same rows. The run record matches the configuration. | Test results are interpreted against the spread across backtest origins. Any post-test bug fix is logged transparently, with its effect. |
| Uncertainty | The interval is built from backtest residuals, with coverage and width reported on the test and the exchangeability caveat stated. | Coverage is analysed by market or by month. Undercoverage is linked to a mechanism, with a proposed remedy such as recalibrating the residual quantiles on post-break data. |
| Decision analysis | The critical-ratio rule is applied with labelled hypothetical costs, and decision costs are compared with the baseline. Censoring is acknowledged. | Shows how sensitive the conclusion is to the cost ratio, and explains how censored demand biases the comparison and what data would remove that bias. |
| Honest limitations | The limitations list covers the data, costs, censoring, the break and causal what-ifs. | Each limitation is tied to a concrete consequence for the recommendation, and to evidence that would remove it. |
Required output
Saved in forecasting-project/:
configs/frozen_w06.yaml, committed before the test run;outputs/test_w06.csvandoutputs/test_run_w06.json, the single run;- held-out results against both baselines, overall and by slice;
- the interval coverage and width table;
- the decision-cost table with its labelled hypothetical costs and the censoring note;
- the limitations list;
notes/report-w06.md, a skeleton with computed tables;- a decision-log entry.
This is the Week 6 Saturday part of Appendix C: frozen design, held-out evaluation, an uncertainty example and the decision implications.
Studios are tracked separately from the 60 core lessons; completing one never completes a lesson.