Finance & Accounting use cases
Finance & Accounting

Financial scenario and model building

Build and re-run driver-based financial scenarios — base, upside, downside, stress — in code your team owns, so a forecast refresh takes hours instead of days and every number traces back to a documented assumption.

7 min read2026-06-17Human in the loopSensitive data
Ease
3/5
Impact
4/5
Risk
3/5

Tools you'll use

Claude CodeCodexClaude Cowork

Financial scenario and model building means projecting the business under several plausible futures — a base case, an upside, a downside, and sometimes a board-level stress case — and flowing each through the income statement, balance sheet, and cash flow. The good version is driver-based: a small set of operational inputs (bookings, churn, hiring pace, price, two or three key costs) drives everything downstream, so you can explain why a number moved, not just that it did. The point of a downside case is almost always the cash and runway answer, which only appears when the balance sheet and cash flow move with the P&L.

Most finance teams still do this in one large spreadsheet. That works until it doesn't. A 2024 study published in Frontiers of Computer Science (reported by Phys.org) found that 94% of spreadsheets used in business decision-making contain errors — and on a model with thousands of cells, one wrong bottom-line figure is close to guaranteed. The classic example: a single missing minus sign turned a $1.3 billion loss into a gain and produced a $2.6 billion error in Fidelity's Magellan dividend estimate. The work is also slow: re-running a full set of scenarios by hand can eat days every month, and the logic lives in one analyst's head.

The opportunity is to move the repetitive, error-prone mechanics into code your team owns — assumptions in one auditable place, the statement linkages written once and tested, scenarios re-run with a single command. You keep judgment where it belongs (which drivers, which assumptions, which scenarios are credible) and hand the grinding to a tool. A monthly refresh that took three days drops to an afternoon, and the model stops being a black box.

Moriva's take

This clears Gate 1 cleanly: scenario refresh is real work a finance team runs every month, often every week near board cycles. It clears Gate 3 too — you can point to days of analyst time saved per cycle and to faster, better-supported decisions. The catch is Gate 2 and risk: these numbers feed boards, lenders, and sometimes regulators, so the model must be owned, version-controlled, and reconciled by your own people, with a human signing off every figure before it leaves the building. Start it, but build it with a human in the loop and a reconciliation check from day one — that is why this is CAREFUL, not GO.

How do you financial scenario and model building?

  1. 1

    Put your assumptions and historicals in one clean place

    Before any automation, separate inputs from logic. Pull two to three years of clean actuals (P&L, balance sheet, cash flow) and list every driver — growth rates, churn, headcount plan, vendor rates, DSO/DPO, capex, financing terms — in one assumptions file with an owner and a source note for each line. This is the single most important step: a driver-based model is only as good as its baseline, and keeping inputs in one auditable panel is what lets you trust every downstream number.

  2. 2

    Have Claude Code or Codex rebuild the model as code from your spreadsheet

    Point Claude Code or Codex at your existing model and historicals and describe the structure in plain English: which drivers feed revenue, how opex and COGS are built, how the three statements link, where cash and the balance sheet must reconcile. The tool writes a Python model (typically pandas plus openpyxl so it still reads and writes Excel) that reproduces your current numbers first. Insisting it ties out to your existing model before you trust it is the verification step that catches translation errors.

  3. 3

    Make scenarios a switch, not a rebuild

    Ask the tool to drive the model from a scenario table — Base, Upside, Downside, Stress — where each scenario is just a column of driver values. Now generating a new case is editing a few cells and re-running, not duplicating tabs. Have it stress the things that actually move cash and margin: demand downshifts, input-cost spikes, price pressure, FX or rate swings, a hiring-plan slip. The team owns this table and can add a scenario in minutes without calling anyone.

  4. 4

    Build in the checks that catch the errors humans miss

    Have the tool write automated tests into the model: the balance sheet must balance every period, cash flow must reconcile to the cash line, and a flagged warning if any output drifts beyond a sensible band. These run on every refresh. This is the direct answer to the spreadsheet-error problem — instead of hoping a 5,000-cell file is clean, the model refuses to produce numbers that don't tie out.

  5. 5

    Wire in the actuals so the refresh is one command

    Have Claude Code or Codex connect the model to wherever your actuals live — an ERP export, a CSV from the close, a data warehouse — so the monthly refresh becomes: drop in the new actuals, run, review. Keep it as a script your team triggers, not a black-box that runs on its own, so a person always sees the output before it moves. This is what turns a multi-day re-forecast into an afternoon.

  6. 6

    Generate the board and sensitivity outputs automatically

    Once the engine is solid, have it produce the deliverables: a scenario comparison, a one-or-two-variable sensitivity table (e.g. growth vs. margin), a revenue bridge, and a runway/covenant view for the downside. The numbers are generated; the analyst writes the narrative. For the narrative and deck synthesis itself, a non-coding operator can use Claude Cowork to draft the commentary and board notes from the model's output, while Code or Codex owns the calculation.

  7. 7

    Version-control it and write down how it works

    Keep the model in a Git repository so every change is tracked, reversible, and attributable — no more 'final_v7_REALfinal.xlsx'. Have the tool write a plain-English README and inline comments explaining the driver logic and how to run a refresh. This is what makes it genuinely owned: a second analyst can run, fix, and extend it, and you are not dependent on one person or on an outside consultant.

What could go wrong (and how to handle it)

Garbage-in assumptions. The model can be flawless mechanically and still be wrong if the drivers and baselines are off — automation makes bad assumptions run faster, not better.

Keep judgment human. Every driver has a named owner and a source note; review assumptions in the monthly cadence; back external assumptions with credible data, not gut feel.

Silent calculation errors when translating the spreadsheet to code, or when the model evolves.

Require tie-out to the existing model before trusting it, and bake in automated checks: balance sheet balances, cash reconciles, outputs stay within sane bands. The model should refuse to emit numbers that don't tie out.

Sensitive financial data. Actuals, forecasts, and cap-table detail are material non-public information; mishandling them is a serious problem.

Run on approved infrastructure, keep data in your own environment and repo, restrict access by role, and never paste confidential figures into tools that aren't sanctioned for it. Treat this as high-sensitivity by default.

Over-automation. A scenario that refreshes and circulates with no human looking at it can send a wrong number to a board or lender.

Keep a person in the loop. The refresh is a script your team triggers and reviews; a named owner signs off on every figure before it leaves finance. No fully unattended runs for external numbers.

Compliance and audit exposure. Numbers may feed regulated filings, debt covenants, or audited statements.

Version-control everything for a clean audit trail, document the methodology, and have the model reviewed by whoever owns controls. Loop in audit/compliance early rather than after the fact.

Key-person risk simply moving from a spreadsheet to a script nobody else understands.

Insist on a plain-English README, commented logic, and a second analyst who can run and modify it. Ownership means the team can run, fix, and extend it without the original author or an outside consultant.

Prompts to get started

Rebuild the model as owned code
Here is our current financial model (Excel) and three years of actuals. Rebuild it in Python as a driver-based three-statement model: revenue from our bookings, churn, and price drivers; opex and COGS from headcount and vendor rates; full balance sheet roll-forwards and cash flow. Reproduce our existing numbers exactly first and show me where it ties out and where it doesn't before we go further. Keep all assumptions in one separate file with a comment for each driver.
Add scenarios as a switch
Refactor the model so scenarios are columns in one assumptions table: Base, Upside, Downside, and a Stress case. Let me change driver values per scenario without touching the model logic. For the Downside, show me runway and whether we breach our debt covenant. Generate a side-by-side comparison of all four scenarios on revenue, EBITDA, and ending cash.
Build the safety checks
Add automated checks that run every time the model executes: the balance sheet must balance each period, cash flow must reconcile to the cash line on the balance sheet, and flag any output that moves more than 30% versus last refresh. If any check fails, stop and tell me exactly which period and line broke instead of producing numbers.
One-command monthly refresh plus a sensitivity table
Set up the model so I can drop in this month's actuals CSV and refresh in one command, with a summary of what changed versus last month. Then produce a two-variable sensitivity table of revenue growth against gross margin on ending cash, and write a short plain-English README so another analyst on my team can run and edit this without me.

FAQ

Isn't a tool that writes the model just another black box we can't trust?

The opposite, if you build it right. The output is plain Python in your own Git repository, with comments and a README, that you required to tie out to your existing model before trusting it. You can read it, test it, and change it. That is more transparent than a 5,000-cell spreadsheet where the logic is buried in formulas only one person understands.

Do my analysts need to be programmers?

No. They describe the model in plain English and review the results; the tool writes the code. The skill that matters is still financial judgment — picking drivers, setting credible assumptions, reading whether the cash answer makes sense. For the narrative and board commentary, a non-coding operator can use Claude Cowork against the model's output without touching code at all.

Our numbers are confidential and some feed regulated reporting. Is this safe?

Treat it as high-sensitivity work. Run on approved infrastructure, keep the data and repo in your own environment, restrict access by role, and keep a human signing off every figure before it leaves finance. Loop in audit and compliance early. Used that way it is safer than emailing spreadsheets around, because every change is version-controlled and traceable.

How is this better than the FP&A platform we already pay for?

It is not a replacement for a planning platform — it is for teams who live in Excel and want their model to be faster, owned, and tested without a big platform migration. You keep your existing structure, gain automated checks and one-command refreshes, and own the result outright. Many teams use this to clean up and de-risk the model before deciding whether a platform is even worth it.

What does this realistically save us?

The recurring win is the monthly refresh: a full driver-based re-forecast that took two to three days of analyst time can drop to an afternoon, and adding a new scenario goes from hours to minutes. The bigger, harder-to-quantify win is fewer errors reaching the board and faster answers when leadership asks 'what if.' Measure it: time per refresh before and after, and errors caught by the automated checks.

Sources

Want help shipping this?

We'll build it with your team on your real work — and leave you owning it, not renting it.