vW5 CP3405 · Design Thinking III
TR3 2026
Starts Monday 5 Oct — dashboard and catalyst calendar Tuesday 6 Oct 23:59 — prediction locks Wednesday 7 Oct 23:59 SGT — everything else due Saturday 10 Oct 23:59 SGT — presented Monday 12 Oct

Sprint 5 — vW5 — Four Markets, Catalysts First

Same rhythm as Sprint 4, with two additions: a fourth market, the US 10-year Treasury yield, and a catalyst calendar so the week's big economic releases are part of your thinking, not an afterthought. Every other change on this page comes straight from what happened in Sprint 4.

The Sprint Goal

Before Wednesday night, list the week's market-moving releases, lock a four-market prediction that takes them into account, and confirm it. By Saturday night, measure how far off your Sprint 4 call was and decide one change. Keep every file in its required place on main, so your dashboard shows the whole week.

What Changed From Sprint 4, and Why

ChangeWhy (what happened in Sprint 4)
A fourth market: the 10-year Treasury yield, owned by R6Yields drive all three other markets. Now you call them directly.
A catalyst calendar (catalysts/vW5.json), owned by R2, due TuesdayThe US jobs report came out on Friday 2 October, the very day you were predicting. Most teams gave it one sentence or nothing.
Every required file sits exactly where the folder diagram shows. Files anywhere else don't count.Several teams did the work but filed it inside evidence/ folders, so their dashboards couldn't find it.
Only main counts. Work on a branch isn't done until it's merged.Work was left on branches that were never merged.
The dashboard shows "X / 9 files loaded". Hand-typed values count as missing.Some panels had numbers typed into the page that didn't match the committed files.
No prediction without "r1_confirms": true.Calls were filed that R1 never confirmed.
The Wednesday check-in must have real content. An empty file is a missing file.A check-in file existed at noon but was empty.
Cut the vW5 tag once, before Saturday 23:59, and never move it.A release tag was moved after the deadline.
Every FigJam Done card links to its file on main, not just a Discord message.Done cards claimed files were on main when they weren't.
Blockers are raised by Wednesday noon.Access problems were still unsolved on Sunday night.
One deadline per item, stated once, in the timeline.Last sprint's page gave some items two different deadlines.

Prediction Challenge — Four Markets

Deadline: Wednesday 7 Oct, 23:59 Singapore time. Judged by when GitHub received your push to main. Anything committed after that is not a prediction: if you file it late, label it late. Never present a late file as your locked call.
MarketYou predictWhere to read itOwner
S&P 500 (^GSPC)The closing level on Friday 9 OctYahoo Finance · ^GSPC historyR2
Nasdaq-100 (^NDX)The closing level on Friday 9 OctYahoo Finance · ^NDX historyR3
Gold futures, December 2026 (GCZ26.CMX)Direction only: UP or DOWN. Will Friday 9 Oct's close be above or below Friday 2 Oct's close?Yahoo Finance · GCZ26.CMX (then Historical Data)R4
New: US 10-year Treasury yield (^TNX)The closing yield on Friday 9 Oct, in percent to two decimals, e.g. 4.27Yahoo Finance · ^TNX historyR6

How to read the close

The close is the close of Friday's New York session, which lands early Saturday morning in Singapore. Check Saturday morning or later.

  1. Open the market's Historical Data page on Yahoo Finance, set to Daily.
  2. Find the row for the date.
  3. Read the Close column, not Adj Close.

Gold: use GCZ26.CMX for both Fridays. An identical close counts as no result.

How to read the 10-year yield (^TNX)

What it is: ^TNX is Cboe's index of the yield on the US 10-year Treasury note, the interest rate the US government pays to borrow for ten years. You are predicting that yield, a percentage, not the price of a bond and not a futures contract. Yields and bond prices move in opposite directions: when bonds sell off, the yield goes up.

  1. Open Yahoo Finance · ^TNX history. The page title must read CBOE Interest Rate 10 Year T No (^TNX).
  2. Set it to Daily and find the row for Friday 9 Oct.
  3. Read the Close column. Yahoo shows four decimals, for example 4.6640. Round to two decimals (4.66), which means 4.66%.
  4. Do the same for Friday 2 Oct, so you know the starting point your call moves from.

When the close lands: Yahoo stamps the ^TNX close at about 2:00 pm Chicago time, which is about 03:00 Saturday in Singapore. Check Saturday morning or later. Don't use the live number you see during Friday's session.

Five traps that will give you the wrong number:

How it's scored: the miss in basis points. One basis point is 0.01 percentage points, so 4.27 versus 4.31 is a 4 basis-point miss.

Example (invented numbers): Friday 2 Oct close 4.27. R6 calls 4.31 because a stronger-than-expected inflation release is the week's main catalyst. Friday 9 Oct close 4.35. The miss is 4 basis points, and the direction (up) was right.

New: The Catalyst Calendar (catalysts/vW5.json)

Owner: R2. Due Tuesday 6 Oct, 23:59. List every major US economic release between Wednesday's lock and Friday's close: for example jobs, inflation, Fed meetings, Fed minutes and major speeches. For each one, record what the market expects and what a surprise would do to each of your four calls.
{
  "sprint": "vW5",
  "updated_at": "2026-10-06T21:00:00+08:00",
  "events": [
    {
      "event": "Name of the release",
      "when_sgt": "2026-10-08T20:30:00+08:00",
      "consensus": "What the market expects, with the number",
      "source": "https://link-to-where-you-found-the-consensus",
      "affects": ["spx", "ndx", "gold", "tnx"],
      "if_stronger": "One line: what it does to each affected call",
      "if_weaker": "One line: what it does to each affected call"
    }
  ]
}

Your Entry: predictions/vW5.json

{
  "sprint": "vW5",
  "team": "team-N",
  "updated_at": "2026-10-07T22:00:00+08:00",
  "team_call": { "spx_close": 0.00, "ndx_close": 0.00, "gold_direction": "UP", "tnx_close": 0.00 },
  "why": {
    "spx": "One sentence, naming a catalyst.",
    "ndx": "One sentence, naming a catalyst.",
    "gold": "One sentence, naming a catalyst.",
    "tnx": "One sentence, naming a catalyst."
  },
  "leads": { "spx": "github-username (R2)", "ndx": "github-username (R3)", "gold": "github-username (R4)", "tnx": "github-username (R6)" },
  "r1_confirms": true
}

Delta and Prescription: Your Sprint 4 Call

This sprint's delta measures your Sprint 4 call against the Friday 2 Oct close. You already have the closes in your actuals/vW4.json. Do the delta for all three Sprint 4 markets: how far off you were on the S&P 500 and Nasdaq-100, and whether your gold direction was right. There's no yield delta this sprint, because there was no Sprint 4 yield call. If your team had no locked Sprint 4 call, say that in delta/vW5.json and write the prescription about how you'll lock on time. Don't invent a call after the fact.

Delta and prescription work as in Sprint 4: the delta is how far off you were, whether the direction was right, and which agent pulled you furthest off. The prescription is one specific change for next sprint.

Where Every File Goes

Every required file sits at exactly this path, starting from the top level of your repo. Not inside evidence/, not inside a sprint or role folder. evidence/ is only for supporting material; your dashboard never reads it. A file anywhere else counts as missing.
your-team-repo/
├── catalysts/vW5.json          R2 · Tue 23:59
├── checkin/wednesday.md        R1 · Wed 12:00
├── data/
│   ├── roles.json              R1 · Tue 23:59
│   ├── github_activity.json    R6 · Tue 23:59, then daily
│   └── figjam_status.json      R1 · Tue 23:59, then daily
├── predictions/vW5.json        R1 · Wed 23:59
├── llm-synthesis/vW5.json      R6 · Wed 23:59
├── human-score/vW5.json        R5 · Wed 23:59
├── actuals/vW5.json            R4 · Sat 23:59
├── delta/vW5.json              R4 · Sat 23:59
├── prescriptions/vW5.json      R4 + R1 · Sat 23:59
├── instruments.json            R3 + R6 · Sat 23:59 (add ^TNX)
├── ui/index.html               R5 · Tue 23:59, then daily
└── evidence/                   supporting material only

Tuesday housekeeping: if any Sprint 4 file is in the wrong place, move it to its required path by Tuesday night, so your dashboard starts the week complete.

The Backlog — All Six Roles

R1Product Owner & Scrum Master: confirm the entry, surface blockers early

File predictions/vW5.json, check all four sentences are there, and set r1_confirms to true. Commit checkin/wednesday.md by Wednesday 12:00 using the check-in template: each role's real progress and blockers, in their own words. If anyone can't edit GitHub or FigJam, or isn't responding, post it in Discord and tell Prof Tan by Wednesday noon. Add this sprint's row to data/roles.json and update data/figjam_status.json daily. Every Done card links to its file on main. With R4, write the prescription.

DONE MEANS — a confirmed entry by Wednesday 23:59, a check-in with real content by Wednesday 12:00, blockers raised by Wednesday noon, and every Done card linked to its file on main.
R2Almanac & Macro: build the catalyst calendar, own the S&P 500 call

Build catalysts/vW5.json by Tuesday 23:59 (see above). Almanac and macro outputs for all four markets, committed before the LLMs are queried. You own the S&P 500 call and its sentence.

DONE MEANS — a catalyst calendar of real releases with consensus and sources, outputs for all four markets, and an S&P 500 sentence that names a catalyst.
R3Technical: back the calls, own the Nasdaq-100 call

Technical outputs for all four markets, committed before the LLMs are queried. You own the Nasdaq-100 call and its sentence. With R6, add ^TNX to instruments.json.

DONE MEANS — technical outputs for all four markets, a Nasdaq-100 sentence that names a catalyst, and instruments.json including ^TNX.
R4Data & Calibration: own the gold call, measure the Sprint 4 miss

You own the gold call and its sentence. Record the Friday 9 Oct closes for all four markets, with source URLs, in actuals/vW5.json. Produce delta/vW5.json for your Sprint 4 call with a committed script (see above), and with R1 write prescriptions/vW5.json.

DONE MEANS — a gold sentence that names a catalyst, four actual closes with sources, a script-produced delta, and one specific prescription.
R5Human Score & UI: judge the calls, keep the dashboard complete

Human Score on all four markets in human-score/vW5.json before the Wednesday lock: confirm, adjust or override each call, with the reason. Keep ui/index.html live all week with all nine panels reading committed files, and the "X / 9 files loaded" line at the top.

DONE MEANS — Human Scores for all four markets before Wednesday 23:59, and a dashboard showing 9 / 9 files loaded by Saturday 23:59, with no hand-typed values.
R6LLM, GitHub & 10-Year Yield: own the yield call, ship the release

You own the 10-year yield call and its sentence. Query ChatGPT, Gemini and DeepSeek with identical prompts on all four markets, and commit llm-synthesis/vW5.json before the Wednesday lock. Refresh data/github_activity.json every day. Cut the vW5 release tag once, before Saturday 23:59, on the commit that contains everything, and never move it. Where two people share R6, one can take the yield call and the other the LLM and GitHub work.

DONE MEANS — a yield sentence that names a catalyst, synthesis for four markets before Wednesday 23:59, a GitHub activity file refreshed daily, and a vW5 tag cut once, on time.

Your Dashboard

Same rules as Sprint 4, plus one line at the top: "X / 9 files loaded". Each panel reads its committed file at the path in the folder diagram. If a panel is empty, move the file. Never type the answer into the page.
PanelAttributeReads
Rolesdata-panel="roles"data/roles.json
GitHub Activitydata-panel="github"data/github_activity.json
FigJam Activitydata-panel="figjam"data/figjam_status.json
New: Catalystsdata-panel="catalysts"catalysts/vW5.json
Predictions (four markets)data-panel="predictions"predictions/vW5.json
LLM Synthesisdata-panel="llm-synthesis"llm-synthesis/vW5.json
Human Scoredata-panel="human-score"human-score/vW5.json
Deltadata-panel="delta"delta/vW5.json
Prescriptiondata-panel="prescription"prescriptions/vW5.json

Timeline — One Deadline Per Item

When (Singapore time)What
Mon 5 OctSprint 5 starts
Tue 6 Oct 23:59Roles, GitHub and FigJam files; dashboard live with the "X / 9" line; catalyst calendar; Sprint 4 files moved to their required paths
Wed 7 Oct 12:00Wednesday check-in, with real content. Blockers raised in Discord and with Prof Tan
Wed 7 Oct 23:59Prediction locked and R1-confirmed; LLM synthesis; Human Score
Fri 9 OctThe target Friday. The US close lands early Saturday morning Singapore time
Sat 10 Oct 23:59Actuals, delta, prescription, instruments.json, vW5 tag. Dashboard at 9 / 9
Sun 11 OctNothing is due. Your work is reviewed ahead of Monday
Mon 12 OctPresentations

Monday 12 October

Practical A: Team 1, then Team 2, then Team 3.
Practical B: Team 4, in the Practical B session.

Each team's presentation runs in this order:

  1. Live progress block, 4 minutes, the real thing on screen, not screenshots:
    • R5, 2 minutes: open ui/index.html, show the "X / 9 files loaded" line, and walk through the panels.
    • R6, 1 minute: GitHub: this week's commits, merges into main, and the vW5 tag.
    • R1, 1 minute: FigJam Done cards, each linked to its file on main.
  2. Slides, R1 to R6, using the Sprint 5 presentation template.
  3. Oral defense of all four calls. Any team member can be asked about any call.

CP3405 Design Thinking III · TR3 2026 · Sprint 5 — Four Markets, Catalysts First