Skip to main content
Bridge Town
Position · Why financial models belong in code

Code was always the better way to build financial models. The learning curve made it impossible. Until now.

LLMs translate fluently between English and Python in both directions. The builder's learning curve is gone. The reviewer's learning curve is gone. The substrate underneath your model can finally be code.

Reading time: 6 min Topic: substrate Long argument: why this shift matters →
/ 01 · the unspoken truth

Every senior modeler has had the same 2am thought.

Forty tabs. A sign error you missed before the board meeting. A formula in one cell silently depending on a hardcode four sheets away. We've all thought there must be a better way. That just changed.

Error rate
88%

of large spreadsheets contain material errors.

Panko · 2008 review
Case · 2012
$6.2B

JPMorgan London Whale, traced to a copy-paste in a VaR model.

Senate PSI report
Case · 2003
$24M

TransAlta — a bad sort, no version control, real-money trades.

10-K disclosure
Case · 2010
R&R

Reinhart-Rogoff. An Excel range error shaped global austerity policy.

Herndon et al.
/ 02 · why we never crossed over

Two learning curves. Both load-bearing. Neither resolved.

Code was always better on the dimensions that matter for serious modeling. But getting there required both sides of the workflow to be fluent in code. Builders weren't. Reviewers weren't. Stalemate.

What code gives you

The substrate properties spreadsheets can't fake.

  • Tests that run on every change.
  • Version control with diffs that mean something.
  • Modularity — last quarter's DCF is a function you import.
  • Reproducibility — same inputs, same outputs, forever.
  • Real Monte Carlo. 10,000 paths in a second.
  • Composability — models that call other models.
Why we couldn't get there

Both sides had to be fluent. Neither was.

  • Builders don't write Python. A year of part-time learning, minimum.
  • Reviewers — CFOs, partners, IC members — can't audit code.
  • A model nobody senior can audit is a model nobody senior approves.
  • So the workflow stayed in the substrate the reviewer could read: the grid.
/ 03 · the compromise wave

Anaplan, Pigment, Causal — the best response possible before LLMs.

The third-generation FP&A platforms tried to solve the same problem. They invented proprietary modeling languages because they couldn't expose actual code. The compromise inherited spreadsheet weaknesses and added a new learning curve — to a smaller language.

Dimension
Excel
Proprietary DSL
Code + LLM bridge
Testing
None.
Limited primitives.
First-class. CI runs on every change.
Version control
Filename suffixes.
Snapshot only.
Real diff. Full history.
Monte Carlo
Slow or impossible.
Bounded by platform.
Native. 10k paths in seconds.
Reviewer access
Familiar grid.
New grid to learn.
Plain-English on hover.
Builder access
Familiar.
New DSL to learn.
English in, code out.
Implementation
Days.
Months.
Days.
Lock-in
Format lock-in.
Heavy.
Open. Plain text. Portable.
/ 04 · what changed

The LLM is the bridge. Both learning curves are gone at once.

The builder describes the model in English. The system generates clean, tested, idiomatic Python. The reviewer hovers any cell. The system explains the formula, its provenance, its assumptions, and the test that validates it. Both sides work in their native language.

Builder Analyst English
Bridge LLM translate
Substrate model.py tested · versioned
Bridge LLM explain
Reviewer CFO English
The same shift Cursor brought to engineers dbt brought to analysts Replit brought to everyone now hitting financial modeling.
/ 05 · the objection

"But Excel has Claude too." Why move?

Microsoft and Anthropic are putting LLMs inside Excel. That makes Excel a better Excel — not a better discipline. The things code gives you are properties of the artifact, not the editing experience.

Substrate property · 01

Git-diffable

A .py file shows you what changed, line by line, across every revision. A .xlsx file does not. Diffs are the foundation of any real review workflow.

Substrate property · 02

Composable

Last year's LBO function is one import line into this year's deal model. Excel models can't import each other meaningfully.

Substrate property · 03

Testable in CI

Real continuous integration runs your tests on every change. The Excel test ecosystem is thin, and gets thinner the more macros you add.

Substrate property · 04

Agent-ready

Autonomous finance agents work better with code than with cell references. The substrate that supports agents wins as agents become real.

Substrate property · 05

Transparent

Code is plain text. Excel hides logic behind values. When a regulator or auditor asks what the model does, "show them the source" actually means something.

Substrate property · 06

Open and portable

Your model lives in plain text, in version control you own, in a language used by millions of engineers. No vendor sits between you and the artifact.

/ 06 · what this unlocks

Things that have been impossible in Excel for thirty years.

Six capabilities, free the moment the substrate is code. Each one is the kind of thing a senior modeler has wanted for a decade and worked around for a decade.

Hero capability · the reviewer's side

Hover any cell. Plain English.

The reviewer never sees code unless they want to. The LLM explains the formula, its inputs, its assumptions, and links to the test that validates it.

Capability · 01

Diff two versions

See exactly what changed between the model that went to the board and the one that came back.

Capability · 02

Unit-test the WACC

Assert that the cost of capital is between 4% and 15%. Catch the error before the model lands.

Capability · 03

10,000 Monte Carlo runs

Real probabilistic analysis on a laptop, in seconds. No add-in. No slowness.

Capability · 04

Code-review the budget

Pull-request workflow. Approvals. Comments on assumptions. The audit trail is automatic.

Capability · 05

Reproduce last year

Check out the v2024-Q4 tag. Run it. Get exactly the same numbers. Forever.

/ 07 · getting started

The migration is a non-event.

You don't have to learn Python. Your reviewers don't have to learn Python. Your counterparties never see the code at all.

1Describe it in English

Type what the model should do.

Bridge Town writes the code, runs the tests, and renders the grid view. You see what you've always seen — a model.

▸ "Build a 3-statement model. Q3 churn 4%."
→ model.py · 240 lines · 18 tests pass
2Import an Excel model

Upload your existing spreadsheet.

Bridge Town translates it into a clean, tested, versioned code model — line by line, with provenance you can audit.

▸ upload q3-deal-model.xlsx
→ 412 cells migrated · 22 tests inferred
3Export back to Excel

Counterparties get a .xlsx.

The seller, the lender, the auditor, the lawyer — they receive a spreadsheet that looks exactly like what they expect.

▸ bt export --to xlsx
→ deal-model-2025-q3.xlsx · ready
/ 08 · build on the right substrate

The substrate of financial modeling is changing.

Bridge Town is a development environment for financial models that are code, with an LLM bridge for everyone who shouldn't have to read it.