CFDL

Metrics

A run reports a set of scalars beside its cash flows. Model metrics are computed for every model; domain metrics come from the active pack and are absent without one.

Model metrics

model.npv discounts the model's net cash flow at the run's rate. model.irr is the rate at which that NPV is zero, and is undefined for a series that never changes sign. model.moic is the multiple of invested capital, model.payback_years when cumulative cash first turns positive, and model.wal_years the weighted average life — when principal actually comes back, which a maturity date does not tell you.

model.total is the undiscounted sum, and model.net_cash_flow the per-period series everything else is derived from.

Metrics and subtotals are not the same thing

A metric is one number for the whole model. A subtotal is a series — one value per period — published under domain.<pack>.<name> in deterministic.series.

Where both exist under the same name, the metric is the reduction of the subtotal: domain.cre.noi in the metrics block is the sum over periods of domain.cre.noi in the series block. That is deliberate — one definition, reduced, rather than two definitions that drift.

A lifetime figure hides the path. A coverage ratio of 1.4 over a hold can contain a year at 0.9, which is why coverage is published per period and read from a statement.

Every domain metric

Generated from each pack's declarations.

energy

MetricKindDefinition
domain.energy.revenuemoneysum(numerator_streams)
domain.energy.opexmoney-sum(numerator_streams)
domain.energy.ebitdamoneysum(numerator_streams) + sum(denominator_streams)
domain.energy.debt_servicemoney-sum(numerator_streams)
domain.energy.dscrnumberdomain.energy.ebitda / domain.energy.debt_service
domain.energy.tax_benefitsmoneysum(numerator_streams)

cre

MetricKindDefinition
domain.cre.noimoneysum over periods of domain.cre.noi
domain.cre.debt_servicemoneysum over periods of domain.cre.debt_service
domain.cre.dscrnumberdomain.cre.noi / domain.cre.debt_service
domain.cre.leasing_costsmoneysum over periods of domain.cre.leasing_costs

credit

MetricKindDefinition
domain.credit.interestmoneysum(numerator_streams)
domain.credit.principalmoneysum(numerator_streams)
domain.credit.recoveriesmoneysum(numerator_streams)
domain.credit.penaltiesmoneysum(numerator_streams)
domain.credit.servicingmoney-sum(numerator_streams)
domain.credit.wal_yearsnumberwal_years(numerator_streams)
domain.credit.collectionsmoneysum(numerator_streams)
domain.credit.purchasemoney-sum(numerator_streams)
domain.credit.collections_multiplenumberdomain.credit.collections / domain.credit.purchase

opco

MetricKindDefinition
domain.opco.revenuemoneysum(numerator_streams)
domain.opco.ebitdamoneysum(numerator_streams) + sum(denominator_streams)
domain.opco.ebitda_marginnumberdomain.opco.ebitda / domain.opco.revenue
domain.opco.capexmoney-sum(numerator_streams)
domain.opco.working_capitalmoney-sum(numerator_streams)
domain.opco.taxesmoney-sum(numerator_streams)
domain.opco.debt_servicemoney-sum(numerator_streams)
domain.opco.fcfmoneysum(numerator_streams) + sum(denominator_streams)
domain.opco.fcf_to_debt_servicenumberdomain.opco.fcf / domain.opco.debt_service