Kumu / Finance & Securities / Stage 2

Stage 2 — Model Specification

Weight: 21% of project Deliverable: 2–3 page spec → docs/specs/YYYY-MM-DD-{lastname}-{scenario-slug}-spec.md

Design the workbook before any Excel exists: every input, name, formula, and check — written down precisely enough that an AI, or a colleague who has never seen your memo, could build the complete workbook from this document alone. In Stage 3, that is literally what happens.

What you'll learn

Rehearse in the FX Lab first

The FX Hedging Lab computes everything your spec must describe, live, with the same named ranges. Twenty minutes there and you'll know what every output should look like — which is exactly what your validation rules (§7) need to say.

Why the spec comes before the build

The CFO said "yes, build it." Before you (or your AI) open Excel, Treasury wants a design document it can review — because a model built without a spec is a model nobody else can audit. Your Stage 3 build will follow this document to the letter: every weakness in the spec becomes a defect in the build, which you will then have to find and fix in the audit. The better the spec, the shorter the audit.

And here's the AI-era reason this matters even more than the audit story: in Stage 3 you don't describe the workbook to an AI and hope — the spec is the prompt. A precise spec tells the model exactly what to build and exactly what each result must equal, so the first build comes back close and the audit becomes verification, not archaeology. A vague spec produces the opposite: the AI confidently builds the wrong thing, and you discover your real requirements one frustrating tweak at a time. Every minute you spend making this document unambiguous is a round of corrective back-and-forth you don't pay for in Stage 3.

Write for an AI reader

If an instruction is ambiguous, the AI will guess — and probably guess wrong. "A reasonable interest rate" is not a spec; R_USD = 5.30% annual, ACT/360 (placeholder — replaced with live Fed H.15 data at Stage 4) is.

The eight required sections

#SectionThe standard
1Problem statementCurrency, amount, settlement date, and the business consequence of an adverse move — precise professional language
2Inputs — the named-range contractEvery input with name, placeholder value, unit, and Stage-4 data source, using the standard names exactly (table below)
3Tab architectureEvery tab named with its purpose. Minimum: Cover, Legend/Key, Inputs, one calculation area per hedge, Sensitivity, Notes & Assumptions
4Assumptions & constraintsRate basis (ACT/360), transaction-cost treatment, parity expectation, premium treatment — every simplification, explicitly
5Calculation flowFormula logic per hedge in named-range notation — never cell addresses
6Sensitivity planS_T from 0.95×S0_in to 1.05×S0_in in 1% steps; proceeds per strategy; one comparison chart, and what it should let the CFO see
7Validation rules (check figures)The self-checks the finished workbook must pass — these become your Stage 3 audit checklist
8OutputsEach summary result and table (gray cells) named exactly

The named-range contract

These ten names are the shared vocabulary of your spec, the workbook, the grading script, and every LLM prompt in this project. Use them exactly:

Named rangeDescriptionUnit
FC_AMTForeign-currency receivableEUR
S0_inSpot rate at inceptionUSD per EUR
F0_inForward rateUSD per EUR
R_USDUSD interest rateAnnual %
R_FCForeign-currency interest rateAnnual %
K_PUTPut option strikeUSD per EUR
K_CALLCall option strikeUSD per EUR
PREM_PUTPut premium per unit of FCUSD
PREM_CALLCall premium per unit of FCUSD
T_DAYSDays to settlementDays

Placeholders, flagged as placeholders

Use your assigned scenario's parameters as inputs, clearly marked "indicative — replaced with live market data at Stage 4." Where the scenario says you set the value (strikes at/near spot, interest rates), state the placeholder you chose and how Stage 4 will source the real one.

The calculation flow you're specifying

1 · Forward hedge — one line

USD proceeds = FC_AMT × F0_in

Locked. Done. The rest of the model exists to tell you whether locking was the right call.

2 · Money-market hedge — three explicit steps

Step 1  Borrow FC today:      Borrow = FC_AMT / (1 + R_FC × T_DAYS/360)
        (sized so the receivable exactly repays the loan at settlement)
Step 2  Convert at spot:      USD_now = Borrow × S0_in
Step 3  Invest in USD:        Proceeds = USD_now × (1 + R_USD × T_DAYS/360)

Specify each step as its own cell — the audit (and any auditor) wants the pipeline visible, not a single nested formula.

3 · The parity check — your free error detector

Covered interest rate parity says a forward contract and the borrow-convert-invest pipeline are the same trade built two ways, so:

F_implied = S0_in × (1 + R_USD × T/360) / (1 + R_FC × T/360)   ≈   F0_in

Write this into §7 as a validation rule: if MM proceeds and forward proceeds differ by more than rounding, the build has a formula error. This single check will catch half the defects an AI build can produce.

4 · Option hedge (put floor)

Net proceeds at settlement spot S_T:
  = FC_AMT × max(S_T, K_PUT)  −  FC_AMT × PREM_PUT

Below the strike, the put pays the difference (floor holds). Above it, the option expires worthless and you sell at the better market rate — minus the premium you already paid either way. Specify the call's participation payoff the same way.

Conceptual formulas, not cell equations

✗ "C7 = C4/(1+C5*C6/360)"                        ← dies with the workbook
✓ "Compute the FC borrowing amount by dividing
   FC_AMT by (1 + R_FC × T_DAYS/360); this sizes
   the loan so the receivable repays it exactly
   at settlement."                                ← buildable in any tool

The named-range layer is what makes your logic portable between a document, Excel, and an AI prompt. Cell addresses are an implementation detail; the names are the model.

LLM as drafter, you as editor — with evidence

Have an AI draft the spec from your memo + scenario, then correct it. Log prompts in prompt-log.md and show at least one specific iteration: a gap you identified in the draft and how you fixed it (a before/after note or annotated diff). "The AI's first draft omitted the rate basis; I added ACT/360 to §4 and to every rate row in §2" is exactly the evidence the rubric wants.

Submission checklist

Rubric

CriterionWeightStrong work looks like
Named-range contract & tab architecture30%Complete inputs table with units/placeholders/Stage-4 sources; every tab named with purpose
Calculation flow30%Correct, correctly ordered logic for all three hedge families in named-range notation
Validation & sensitivity plan20%Concrete check figures; sensitivity design fully specified
Reproducibility & prompt log20%Buildable by a context-free reader; HIL iteration evidenced in the log

Check yourself