SuperAPI AI Directory

fm-model-conventions

Coding & development

View repository

Updated 10-16 00:01

About this skill

Financial model conventions

Every model built with these skills follows the same conventions, so any model can be read, checked, and extended the same way. Domain skills assume these and only describe what differs.

Layout

  • Sheet order follows the flow of calculation: Cover → Inputs → Timing → calculation sheets → Outputs → Checks.
  • Inputs live only on input sheets. Calculation sheets hold no hardcoded numbers except structural constants (1, 12, 0).
  • Time runs left to right in columns; one row = one line item; every time-series row uses the same formula across all columns.
  • Columns reserved at the left of every calc sheet: label, units, total/constant, a blank spacer, then the first period. The spacer lets opening = prior closing use the same formula in the first period as in every other.
  • Totals cover the model window only (e.g. SUMPRODUCT with an in-model flag) when the timeline runs past it for forward-looking values.

Inputs

  • Every rate, fee, percentage and term gets its own named input cell, never a literal inside a formula (=Price*0.75, =Rate+4%).
  • One source per number: a detailed budget or backup table must feed the total the model uses.
  • Derive each event from one chain of inputs, so two inputs can never describe the same date.
  • A switch accepts only the values it implements, and a check flags anything else.
  • Defined names are case-insensitive: Rev_0 and REV_0 are one name, and the later definition silently wins.
  • Solved values (goal seek, targets) are never pasted over inputs.

Formatting

Cell type Font color
Hardcoded input blue
Formula black
Link to another sheet green

Units are stated on every row. Totals and subtotals are visually distinct (bold, top border).

Signs

Cash inflows positive, outflows negative, applied consistently; label the convention on the Cover sheet.

Timing

See fm-time-series for the grid, flags, window totals and roll-ups. Drive periods from flags (1/0 rows such as construction, operations, debt outstanding) computed from start dates and durations on Timing, and multiply by flags rather than writing IF on dates inside every formula.

Returns

See fm-returns-metrics. Report one IRR definition everywhere and label it. From monthly flows, the annual rate is (1 + IRR)^12 − 1, which is not IRR × 12.

Checks

A Checks sheet sums every check into one master flag shown on the Cover. Wrap each flag in IFERROR(…, 1) so an error value counts as a failure instead of breaking the master flag. Keep warnings (inputs worth a second look) separate from errors, which mean the model is wrong. At minimum: balance sheet balances, cash never negative unless allowed, sources = uses, and debt fully repaid by maturity.

Balances (debt, draws, capital, accruals) follow fm-corkscrew-balances. To review someone else's model, use fm-model-review.

Avoid

  • Circular references (break interest-on-average-balance circularity with a copy-paste macro or prior-period balance, and say which).
  • Merged cells, hidden rows holding logic, and formulas that mix inputs with logic (=B5*1.03).