Kumu / Corporate Finance / Stage 1
Stage 1 — Provided Ratios Template
models/templates/ + the performance-ratios skill in .claude/skills/
Your instructor provides the Excel model everyone builds on. Stage 1 isn't about modifying it — it's about understanding its architecture, because Stages 3 to 8 all speak this template's language.
What you'll learn
- How a professional financial model separates inputs, assumptions, formulas, and outputs
- What named ranges are and why they make a model portable and specifiable
- Why this project provides the template rather than asking you to build one (hint: it protects time for the specification and AI work)
The architecture
| Tab | What it holds |
|---|---|
| Cover & Instructions | Project overview, how to use the template, the named-range key — and where you'll document source URL, reporting standard, currency, and fiscal year end at Stage 3 |
| Legend | Color code: yellow = inputs, blue = assumptions, green = formulas, gray = outputs |
| Income Statement | Skeleton with INC_* named-range placeholders |
| Balance Sheet | Current + prior year columns — BAL_* and startYear_* |
| Cash Flow | Operating / investing / financing — CASH_*, including CASH_capex and CASH_working_capital_change |
| Ratios | All six categories, fully formulaic in named-range notation (RATIO_*) — zero hardcoded numbers. It auto-populates the moment Stage 3 data lands |
Named ranges — the big idea
A named range assigns a label to a cell, so formulas read like finance instead of like coordinates:
❌ cell-address style: = B12 / D14
✓ named-range style: = INC_net_income_2025 / BAL_assets_total_2025
Three consequences, and they carry the whole project:
- Readable — anyone (including an AI) can audit the formula without opening the workbook.
- Portable — formulas survive when the workbook is copied, rows shift, or a new company's data is loaded.
- Specifiable — at Stage 4 you'll write a technical spec that defines every ratio in named-range notation. An LLM that has never seen your Excel file can then compute or verify everything. That's only possible because names, not addresses, are the interface.
The startYear_* convention
Ratios with a balance-sheet denominator (ROA, asset turnover, inventory turnover) use the
average of the start-of-year and end-of-year values. The prior-year column populates the
startYear_* named ranges. Miss it at Stage 3 and these ratios fail silently — it's
the single most common mistake in the project.
Want to feel how the formulas behave? The Ratio Lab mirrors this template's named ranges and averaging conventions — try the sample company.
Two names the valuation stages need
Most CASH_* names are subtotals the ratios use. Two more exist for the DCF in
Stages 6 to 8, which needs a base-year free cash flow:
| Name | Points at | Sign convention |
|---|---|---|
CASH_capex | Cash Flow tab, Capital expenditures line | Recorded negative (cash out) |
CASH_working_capital_change | Cash Flow tab, Total change in working capital line | Positive = cash released; a build in working capital is negative |
Check that they are there: open your copy → Formulas → Name Manager → both names listed. If they are missing, your copy predates them — download the template again and replace your copy (it is still blank at this stage, so nothing is lost).
The statement tabs show figures in the currency and scale you enter on the Notes tab (Units row) — "VND billion", "EUR million", "USD thousand". Nothing in the template assumes U.S. dollars.
Install the performance-ratios skill
A skill is a folder of instructions an AI agent (Claude Code, Codex, and others) loads on demand. This one is the workbook's named-range contract: what each name means, which valuation inputs can be derived from the names, and the identity checks any model built on the workbook must pass. You run its checks at Stage 3, and the DCF agent in Stages 6 to 8 reads the workbook through it. Install it unmodified at:
[your-repo]/.claude/skills/performance-ratios/SKILL.md
The source is the sample portfolio repo in the course templates folder.
On github.com (no install needed)
- Open the source link above → click Raw → select all and copy.
- In your portfolio repo on github.com → Add file → Create new file.
- In the name box type
.claude/skills/performance-ratios/SKILL.md— each/creates a folder. - Paste, then Commit changes with the message
Add performance-ratios skill.
Or ask Claude Code / Codex
Open it in your repo folder and prompt:
Copy the file at
https://github.com/adamwstauffer/shidler/blob/main/templates/portfolio/firstname-lastname/.claude/skills/performance-ratios/SKILL.md
into .claude/skills/performance-ratios/SKILL.md in this repo, unchanged,
and commit it alone with the message "Add performance-ratios skill".
Show me the commit when you are done.
Read the skill once after installing it. You will not change it at this stage.
What to do
- Download
performance-ratios-template.xlsxfrom the course templates folder. - Open it and click through every tab. Read the Cover tab. Skim the Ratios tab and notice every formula is a sentence in named ranges.
- Commit an unmodified copy to
models/templates/in your repo. - Install the
performance-ratiosskill, unmodified, at.claude/skills/performance-ratios/SKILL.md. - Complete the directory skeleton (if Stage 0 left gaps) — README in every folder.
Do not modify the template yet
If you spot something you'd change — write it down. That observation becomes raw material for your Stage 4 spec, where improvements belong.
Set up this project's folders
Stage 0 stood up your portfolio repo. This project adds three folders to that skeleton, and
every stage from here commits into one of them. Build them now, each with a one-line
README.md inside — Git does not track an empty folder, so the README is what makes
the folder exist — and no later stage stalls on housekeeping.
firstname-lastname/
.claude/
skills/
performance-ratios/ SKILL.md, installed unmodified (Stage 1)
docs/
decisions/ the selection, spec-iteration and feedback-response memos
capabilities/
performance-ratios/ add this: spec.md, the model specification (Stage 4)
models/add this whole branch
templates/ the instructor's template, unmodified
builds/ your populated workbook
data/ the filings you worked from, with provenance
analysis/ the final analysis, the verification, the raw LLM run, the retrospective
prompt-log.md your running AI record, at the repo root
| Stage | Deliverable | Where it goes |
|---|---|---|
| 1 | Unmodified template + skill | models/templates/performance-ratios-template.xlsx · .claude/skills/performance-ratios/SKILL.md |
| 2 | Company-selection memo | docs/decisions/YYYY-MM-DD-{company-slug}-selection-memo.md |
| 3 | Populated workbook + identity-check log | models/builds/YYYY-MM-DD-{company-slug}-financials.xlsx · analysis/validation/YYYY-MM-DD-{company-slug}-identity-checks-log.md |
| 4 | Model spec + revision evidence | capabilities/performance-ratios/spec.md · docs/decisions/YYYY-MM-DD-{company-slug}-spec-iteration-memo.md |
| 5 | Verification + final analysis | analysis/YYYY-MM-DD-{company-slug}-verification-analysis.md · analysis/YYYY-MM-DD-{company-slug}-analysis.md |
| 6 | Modified DCF skill + run brief + annotated diff | .claude/skills/dcf-model/ · capabilities/valuation/spec.md · analysis/YYYY-MM-DD-{company-slug}-dcf-skill-diff-analysis.md |
| 7 | DCF model + audit + verification | capabilities/valuation/model.xlsx · analysis/YYYY-MM-DD-{company-slug}-dcf-audit-analysis.md · analysis/YYYY-MM-DD-{company-slug}-dcf-verification-analysis.md |
| 8 | Valuation memo | docs/decisions/YYYY-MM-DD-{company-slug}-valuation-memo.md |
Every graded file carries the same prefix — YYYY-MM-DD-{company-slug},
a real date and your company slug, then what the document is (-selection-memo, -spec, -analysis), all lowercase. The repo is named for
you; individual files carry the date and company, so a folder full of them stays
legible. Your running AI record lives at prompt-log.md at the repo root and is appended
to, not replaced. Each stage page restates its own path, so you never have to come back here —
this is the whole map in one place.
Submission checklist
models/templates/performance-ratios-template.xlsx— unmodified, right directory, right filename- Opened every tab and read the Cover & Instructions tab
- Directory skeleton complete with a meaningful
README.mdin each directory - At least 2 new commits since Stage 0 with descriptive messages
- Project folders created with a stub
README.mdin each CASH_capexandCASH_working_capital_changeboth listed in Name Manager.claude/skills/performance-ratios/SKILL.md— unmodified, right directory, right filename
Rubric
The headings below are what the work is read for. Weights and due dates are in your course schedule.
| Criterion | Strong work looks like |
|---|---|
| Template and skill installed correctly | Template unmodified, correct directory and filename; performance-ratios skill in place and unmodified |
| Directory structure | All required directories; README in each; logical organization |
| README quality | Explain purpose and conventions — not placeholders |
| Commit hygiene | Meaningful messages; clean history |