Sprint 9A: How wrong were we?
Sprint 9 comes in two parts: Sprint 9A and Sprint 9B. Sprint 9A (this brief) runs from Mon 2 Nov to Sat 7 Nov. Sprint 9B will be released over the weekend of 7–8 Nov, based on where each team stands after Sprint 9A. Mon 9 Nov is a public holiday, so there is no presentation between the two parts. Instead, your progress is shown on the new Scrum Scoreboard, linked from the course home page from Wed 4 Nov.
Sprint 9A goal: by Saturday, every team can show, with real numbers, how accurate its past predictions were, and has written down what it will change. In Sprint 9B you will put that change to the test.
The idea in one minute
Every week since Sprint 4 your team has locked a prediction for where SPX, NDX, gold and the 10-year yield (TNX) would close on Friday. Those predictions are sitting in your repo, and nobody has checked them yet.
Think of a weather forecaster. Making forecasts is only half the job. The other half is looking back: "I said 30 degrees, it was 26. I keep forecasting too hot. Why? What do I change?" A forecaster who never looks back never improves.
| Step | Plain meaning | Example |
|---|---|---|
| Check the error (Sprint 9A, Deep Dive Stage 6) | How far was our prediction from what actually happened? | We said SPX would close at 7,750. It closed at 7,580. We were 2.2% too high. |
| Fix the method (decide in Sprint 9A, test in Sprint 9B, Deep Dive Stage 7) | Given that error, what do we change? | We were too high three weeks in a row, so next time we start from Thursday's close instead of last week's level. |
Where Sprint 9 fits: the Architecture Deep Dive
The Architecture Deep Dive shown in class walks through the whole system in nine stages. Sprint 9 is where your team moves from the first half of that system into the second.
| Deep Dive stages | What it means | Where you are |
|---|---|---|
| Phase 1, Stages 1–5: Data Sources → Agent Analysis → LLM Synthesis → Human Score → Locked Prediction | Gather data, analyse it, make a call, and lock it before the week plays out. | What you have been doing since Sprint 4: data scripts, the gold technical engine and a locked weekly prediction. |
| Phase 2, Stage 6: Delta Measurement | Compare each locked prediction with what actually happened. In Scrum terms, this is the Sprint Review. | Sprint 9A, milestones 3–5: your error table and charts. |
| Phase 2, Stage 7: Prescriptions | Decide what to change because of the error. In Scrum terms, this is the Retrospective action item. | Sprint 9A, milestone 6: what went wrong and what you will change. |
| Back to Stage 2 | The change goes back into how the next prediction is made. This closes the loop. | Sprint 9B: test your change on the next locked prediction. |
To see it: open the Deep Dive and click Next ▶ until Stage 6 (Delta Measurement) and Stage 7 (Prescriptions). That is what your team builds this week, using your own predictions.
Sprint 9A: your six milestones
Each milestone is one item in a fixed place by a fixed time. The Scrum Scoreboard shows every team's result publicly, and that includes your actual work, not just a tick.
| Deadline (SGT) | Milestone | Where | Owner |
|---|---|---|---|
| Tue 3 Nov, 23:59 | 1. Sprint 9 backlog | Your team's section of the shared FigJam board | R1 |
| Wed 4 Nov, 23:59 | 2. vW9 prediction | predictions/vW9.json | R2, R3, R4, R6 (one instrument each); R1 locks |
| Wed 4 Nov, 23:59 | 3. Old predictions in one table | data/old_predictions.csv | R4 |
| Sat 7 Nov, 23:59 | 4. Error table, made by a script | engine/check_error.py and data/errors.csv | R4 (script), R6 (download) |
| Sat 7 Nov, 23:59 | 5. Error charts | ui/index.html | R5 |
| Sat 7 Nov, 23:59 | 6. What went wrong | docs/what_went_wrong.md | R2, R3, R4, R6 (one instrument each) |
1. Sprint 9 backlog (FigJam)
In your team's section of the shared board, add one card for each of milestones 2 to 6. Each card names its owner and gives one line saying what "done" means. Move the cards as the work progresses. Use the shared board only; copies of the board don't count.
2. vW9 prediction
From now on, every team writes its prediction in exactly this format: numbers only, no % signs, and no actual closes in the file.
predictions/vW9.json
{
"week": "vW9",
"target_date": "2026-11-06",
"SPX": 7600,
"NDX": 28500,
"GOLD": 3920,
"TNX": 4.95
}
GOLD means the December 2026 gold future. TNX is the yield in percent (4.95 means 4.95%).
3. Old predictions in one table
Copy your vW4 to vW8 numbers from your old prediction files into one table. Don't edit the old files themselves.
data/old_predictions.csv week,target_date,SPX,NDX,GOLD,TNX,source_file vW8,2026-10-30,7750,29800,4150,4.99,predictions/vW8.json
If a week had no number for an instrument, leave that cell blank. For example, gold was a direction call before vW6, and TNX started in vW5.
4. Error table, made by a script
Write engine/check_error.py. It reads old_predictions.csv and vW9.json, downloads each actual Friday close from Yahoo Finance, and writes data/errors.csv:
week,target_date,instrument,predicted,actual,error,unit vW8,2026-10-30,SPX,7750,7580.07,2.24,pct vW8,2026-10-30,TNX,4.99,4.929,6.1,bp
- Yahoo symbols:
^GSPC(SPX),^NDX,GCZ26.CMX(gold),^TNX. Yahoo is the only source, so every team gets the same actual closes. - Error = (predicted − actual) ÷ actual × 100 for SPX, NDX and gold. For TNX, error = (predicted − actual) × 100, in basis points. A plus sign means you predicted too high.
- Your vW9 row fills in once Friday 6 Nov's close is available, so run the script again on Saturday.
5. Error charts
On your team page, show one chart per instrument: the error each week, with a line at zero and the Friday dates along the bottom. Above the line means too high; below means too low. One look should show whether your team keeps making the same mistake.
6. What went wrong
In docs/what_went_wrong.md, each instrument's owner writes one short paragraph covering three points:
- What we see: quote the weeks from your error table (for example, "too high in vW6, vW7 and vW8").
- Why we think it happened: which part of our reasoning misled us.
- What we will change: one specific change, not "be more careful".
How results are shown
- Only
maincounts. Work on another branch, on a laptop, in a chat or on a hosting site doesn't count. Every team'smainis checked every hour, so the time each file arrived is recorded automatically. - Each milestone shows one result: ✅ On time, ⚠️ Late (with the time it arrived), or ❌ No submission. A result is fixed at its deadline and is not changed afterwards.
- Your work appears on the scoreboard: your numbers, your table, a picture of your charts and your paragraphs. Predictions appear only after their lock time has passed.
- When the scoreboard updates: shortly after each deadline passes: early Wed 4 Nov (milestone 1), early Thu 5 Nov (milestones 2–3) and early Sun 8 Nov (milestones 4–6). Sprint 9B is shaped by these results.
- The scoreboard also shows whether your Daily Scrum is happening in your Discord team channel.
Who does what
| Role | Sprint 9A |
|---|---|
| R1 Product Owner & Scrum Master | Sprint 9 backlog on FigJam (milestone 1). Locks the vW9 prediction. Keeps the cards moving. |
| R2 Almanac & Macro | SPX: vW9 number and its paragraph in milestone 6. |
| R3 Technical & Economic | NDX: vW9 number and its paragraph in milestone 6. |
| R4 Data & Calibration | Old predictions table (3) and check_error.py (4). Gold: vW9 number and its paragraph. |
| R5 Human Score & UI | Error charts on the team page (5). |
| R6 LLM & GitHub | Yahoo download inside the script (4). Merges every branch into main on time. TNX: vW9 number and its paragraph. |
Your dashboard is not hosted anywhere. It runs on your laptop with the local server, as in the Sprint 7 brief.