Metrics
Metrics are computed by the engine — models declare inputs and behavior, not metric formulas.
Core metrics (every run)
model.npv— atrun.annual_discount_ratemodel.irr— when the cash flow pattern supports it (solver + tolerance documented in the spec)model.moic,model.payback_periods/model.payback_years,model.wal_years,model.total- Per-entity and per-stream totals:
entity.<name>.total,stream.<name>.total - Run facts:
run.annual_discount_rate,run.periods_per_year
Domain metrics (per pack)
Packs declare metric sets computed when you run with --pack <name>
(CLI), pack= (Python), or pack (API): e.g.
domain.energy.tax_benefits, domain.credit.wal_years,
domain.credit.collections_multiple, CRE NOI/exit metrics, OpCo
EBITDA/exit proceeds. Each pack guide lists its set.
cfdl run ir.json --packs packs --pack credit --out results.jsonUnder Monte Carlo
Every metric gets a distribution summary — mean, stdev, min/max, and
percentiles (p01–p99) — in the results' monte_carlo.metrics block.
In the Python SDK
results.metrics() returns a flat Series; results.metrics_frame() adds
currency and source lineage (core vs domain:<pack>).