Scenarios & Run Configs
A compiled model (IR) is evaluated under a run config — so the same model answers base case, stress case, and sensitivity questions without editing the model file.
Base + stress in one run
run.json:
{
"deterministic": {
"annual_discount_rate": 0.10,
"parameters": { "stream.cre.lease.base_rent:amount": 1000.0 }
},
"scenarios": {
"stress": {
"annual_discount_rate": 0.12,
"parameters": { "stream.cre.lease.base_rent:amount": 800.0 }
}
}
}cfdl run my-deal/ir.json --config run.json --out results.jsonResults carry the deterministic block plus one block per scenario — same metrics, directly comparable.
Override keys
stream.<dotted_stream_name>:amount— replace a stream's amount.cfg.<path>— set values expressions read viacfg.<path>; this is the idiomatic knob for parameters the model deliberately externalizes.
Sensitivity sweeps
Generate configs programmatically (they're plain JSON) or drive sweeps from
the Python SDK, where results.scenarios() lands each
scenario as a DataFrame row.
Monte Carlo
The monte_carlo section (trials, seed, optional distribution overrides)
turns the same IR into a distribution — see
Stochastic Modeling and the
run-config reference.