Cash-flow models that give you the number and the distribution around it.
CFDL is a deterministic language for modeling cash flows across energy, real estate, credit, and operating businesses. Declare the deal in text; the engine derives the schedule, the metrics, and the uncertainty.
No signup. The compiler and engine run in your browser.
version 0.1
model "solar-ppa"
time calendar monthly from 2026-01 for 120
entity project solar
assume degradation ~ Normal(mean=0.005, stdev=0.002, clip=[0.0, 0.012])
stream project.ppa_revenue on entity project.solar inflow currency USD {
schedule every monthly from 2026-01 to 2035-12
amount = 4200 * 85 / 12 * pow(1 - inputs.degradation, time.t / 12.0)
}
stream project.om on entity project.solar outflow currency USD {
schedule every monthly from 2026-01 to 2035-12
amount = 70000 / 12
}- P5
- $1,921,963
- Median
- $1,956,580
- P95
- $1,989,638
2,000 seeded trials (seed 42) — same model file, reproducible byte-for-byte.
Built like a compiler, not a spreadsheet
Underwriting models decide real money. They deserve the tooling software engineering has had for decades.
One model, two answers
Swap a constant for a distribution and the same file returns the point estimate and percentile bands around every metric — seeded and reproducible.
Parity you can check
Every domain pack is gated by benchmark suites diffed against independent reference models, held decimal-exact on schedule math.
Domain packs
Energy, real estate, credit, and operating businesses ship as contract templates with validated terms and industry metrics.
Diffable and deterministic
Models compile to canonical IR. The same inputs always produce the same output, so results belong in code review and CI.
Diagnostics, not #REF!
A real compiler with spans, error codes, and hover docs. Mistakes fail at compile time, naming the term that caused them.
Runs everywhere
The same engine in your terminal, your notebook, your browser, and your service — byte-identical results across all of them.
Use it where you already work
One engine, four front doors. A model written in the browser runs unchanged in CI.
Parity is proven, not claimed
Every pack ships with a benchmark suite: the CFDL model is diffed period-by-period against an independent reference implementation, inside a tolerance each case declares. Schedule math is held decimal-exact; only IRR-class iteratives get a bps tolerance.
How benchmarks work- 4
- domain packs
- 8
- benchmark cases
- 59
- golden fixtures
- 3
- operating systems in CI
Write your first model in ten minutes
Start in the browser, then install the CLI when you want the model in version control.