Skip to main content
CFDL

Pack contracts

A contract is how a model states business terms instead of building streams by hand. Declare a lease and the pack expands it into the streams that lease implies — rent, escalations, recoveries, the abatement — each already classified so it lands in the right line of a statement.

use pack "cre" version "0.1.0"

contract cre.lease on entity asset.tower {
  term 2026-07..2031-12
  terms {
    rent = 25000
  }
}

What you get back

Each contract lowers to one or more streams with fixed names, so a model can refer to them, a benchmark can assert them, and a statement can group them. The names are stable: they are part of the pack's interface, not an implementation detail.

A term you do not supply is either defaulted by the pack or reported as a missing-term error at compile time. It is never silently zero.

Choosing a pack

PackFor
creCommercial real estate — leases, rollover, operating expenses, permanent debt, exit
creditLoan pools and structured credit — amortization, prepayment, defaults, recoveries
energyGeneration projects — PPAs, merchant revenue, O&M, tax credits, project debt
opcoOperating companies — revenue and cost lines, working capital, leverage, exit

Every contract

Generated from each pack's lowering rules, so a contract cannot be listed here without existing, or exist without being listed. Terms shown are those a model supplies; a pack also reads the contract's own term range.

[.suffix] in a stream name means the contract can be declared more than once. Give it a suffix — contract cre.lease.suite_200 — and the streams it emits carry that suffix, so two leases stay separable in the results and on a statement.

energy

ContractTerms it readsStreams it emits
energy.ppaavailability, degradation, escalation, price, quantityenergy.ppa.revenue[.suffix]
energy.merchantavailability, degradation, escalation, price, quantityenergy.merchant.revenue[.suffix]
energy.storage_arbitragedegradation, price, quantityenergy.storage.margin[.suffix]
energy.capacitypriceenergy.capacity.revenue[.suffix]
energy.omescalation, fee_yearenergy.om.expense[.suffix]
energy.itcamountenergy.itc.credit[.suffix]
energy.capexamountenergy.capex.outlay[.suffix]
energy.debt_servicefunded_at_close, interest_rate, principalenergy.debt.proceeds[.suffix], energy.debt.interest[.suffix], energy.debt.principal[.suffix]
energy.ptcamount, availability, degradation, escalation, quantity, round_stepenergy.ptc.credit[.suffix]
energy.macrs_shieldbasis, funded_at_close, life, months_of_debt_service, target, tax_rateenergy.macrs.shield[.suffix]
energy.reservefunded_at_close, interest_rate, months_of_debt_service, subject, targetenergy.reserve.deposit[.suffix], energy.reserve.release[.suffix], energy.reserve.interest[.suffix]

cre

ContractTerms it readsStreams it emits
cre.budget_lineamount, amount_year, contingency_pct, profile, retainage_pct, subject, totalcre.budget.[…].spend[.suffix], cre.budget_retained.[…].held[.suffix], cre.budget.[…].retainage_release[.suffix]
cre.reserve_fundingcap, pct_of_revenue, per_sf_year, per_unit_year, subjectcre.reserve.deposit[.suffix]
cre.capex_programamount, amount_year, profile, totalcre.capex_program.spend[.suffix], cre.reserve.release[.suffix]
cre.equity_commitmentcapital_account, commitment, funding, funding_share, funds_after, hurdle_1, hurdle_2, hurdle_3, preferred_from, preferred_return, share, shortfall_account, subjectcre.equity.[…].contribution[.suffix], cre.equity.[…].shortfall[.suffix].call
cre.leaseabsorption_shape, area, escalation, escalation_cap, escalation_every_months, escalation_floor, escalation_index, lease_up_months, occupancy, rent, rent_per_unit_month, rent_psf, rent_year, stabilized_occupancy, subject, unitscre.lease.base_rent[.suffix], cre.lease.abatement[.suffix]
cre.lease_unitarea, base_year, cam_cap_pct, count, downtime_months, escalation, escalation_cap, escalation_every_months, escalation_floor, escalation_index, expense_stop_psf, expense_stop_year, gross_up_factor, gross_up_occupancy, lc_pct, lc_total, market_escalation, market_rent_psf, occupancy, opex_escalation, opex_year, outcome, pro_rata_share, recovery_pool, renewal_draw, renewal_probability, rent, rent_per_unit_month, rent_psf, rent_year, security_deposit_months, subject, subject_parent, ti_psf, ti_total, variable_sharecre.unit.base_rent.[suffix], cre.unit.abatement.[suffix], cre.unit.ti_lc.[suffix], cre.unit.deposit_held.[suffix], cre.unit.recoveries.[suffix], cre.unit.deposit_returned.[suffix], cre.unit.rollover_rent.[…], cre.unit.rollover_abatement.[…], cre.unit.rollover_ti_lc.[…]
cre.revenue_lineamount, amount_year, growth_ratecre.revenue.line[.suffix]
cre.spec_leasearea, downtime_months, market_escalation, market_rent_psf, outcome, renewal_draw, renewal_probability, subjectcre.unit.rollover_rent.[…], cre.unit.rollover_abatement.[…], cre.unit.rollover_ti_lc.[…], cre.spec_lease.rent.[suffix], cre.spec_lease.abatement.[suffix], cre.spec_lease.ti_lc.[suffix]
cre.rolloverarea, downtime_months, market_escalation, market_rent_psf, market_rent_year, new_ti_lc, renewal_probability, renewal_rent_year, renewal_ti_lccre.rollover.rent.[suffix], cre.rollover.ti_lc.[suffix], cre.rollover.abatement.[suffix]
cre.vacancy_losspotential_gross_year, ratecre.vacancy.loss[.suffix]
cre.opex_lineamount, amount_year, growth_rate, occupancy, pct_fixedcre.opex.line[.suffix]
cre.percentage_rent_expectedbreakpoint_year, overage_pct, sales_growth, sales_yearcre.pct_rent.overage[.suffix]
cre.percentage_rentbreakpoint_year, overage_pct, sales_growth, sales_yearcre.pct_rent.overage[.suffix]
cre.purchaseclosing_costs_pct, pricecre.purchase.price[.suffix], cre.purchase.closing_costs[.suffix]
cre.unit_salesdeposit_pct, gross_proceeds, pace, price_growth, price_per_unit, release_pct, selling_costs, subject, unitscre.unit_sales.closings[.suffix], cre.unit_sales.selling_costs[.suffix], cre.unit_sales.release[.suffix], cre.unit_sales.deposits_held[.suffix], cre.unit_sales.deposits_released[.suffix]
cre.ground_leaseescalation, funded_at_close, land_value, leasehold, participation_pct, principal, rent, rent_year, reset_every_months, reset_pct, subjectcre.ground_lease.rent[.suffix], cre.ground_lease.participation[.suffix]
cre.permanent_debtamortization_rate, balloon_at_maturity, dsra_months, funded_at_close, index, interest_rate, make_whole_floor, make_whole_rate, margin, name, payment_frequency, principal, rate_cap, rate_floor, step_down_pct, subjectcre.debt.proceeds[.suffix], cre.debt.interest[.suffix], cre.debt.principal[.suffix], cre.debt.reserve[.suffix], cre.debt.reserve_release[.suffix], cre.debt.sweep_applied[.suffix], cre.debt.sweep_cleared[.suffix], cre.debt.trap_release[.suffix], cre.debt.acceleration[.suffix], cre.debt.prepayment_premium[.suffix], cre.debt.takeout.{{contract.pays_off.term.name}}[.suffix]
cre.mezzanineballoon_at_maturity, funded_at_close, index, interest_rate, make_whole_floor, make_whole_rate, margin, name, payment_frequency, principal, rate_cap, rate_floor, step_down_pct, subjectcre.debt.proceeds[.suffix], cre.debt.interest[.suffix], cre.debt.principal[.suffix], cre.debt.payoff.[…], cre.debt.prepayment_premium[.suffix]
cre.interest_rate_capnotional, premium, reference, strikecre.rate_cap.premium[.suffix], cre.rate_cap.settlement[.suffix]
cre.mortgage_insurancecoverage, premium, premium_ratecre.mortgage_insurance.premium[.suffix]
cre.construction_loancommitment, fee_pct, interest, interest_rate, prepay_from, subjectcre.construction.loan_draw[.suffix], cre.construction.interest[.suffix], cre.construction.interest_draw[.suffix], cre.construction.interest_accrued[.suffix], cre.construction.fee[.suffix], cre.construction.principal[.suffix], cre.construction.prepayment[.suffix]
cre.exitamortization_months, amortization_rate, cap_rate, capital_account, catch_up, covenant_debt_yield_min, covenant_dscr_min, covenant_ltv_max, covenant_test_every_months, cure_periods, debt_yield_min, dscr_min, extension_months, fee, fee_pct, hurdle_1, hurdle_2, hurdle_3, hurdle_basis, income, interest_rate, ltv_max, name, noi, notice_months, on_breach, promote_1, promote_2, promote_3, promote_account, promote_residual, selling_costs, share, subject, ti_total, unit, valuecre.exit.proceeds[.suffix], cre.exit.selling_costs[.suffix], cre.debt.payoff.{{contract.pays_off.term.name}}[.suffix]
cre.sponsor_feebase, fee_account, rate, subjectcre.fee.acquisition[.suffix], cre.budget.[…].fee[.suffix], cre.fee.asset_management[.suffix], cre.fee.disposition[.suffix], cre.fee.fund_management[.suffix]
cre.property_taxabatement_pct, abatement_phase_out_years, abatement_years, amount, assessed_pct_of_value, assessment_cap_rate, assessment_growth, assessment_growth_cap, base_value, basis, cap, in_arrears_months, installments_per_year, pilot_growth, pilot_year, reassess_every_months, subject, tax_ratecre.property_tax.accrued[.suffix], cre.property_tax.abated[.suffix], cre.opex.line.property_tax[.suffix], cre.opex.line.property_tax.abatement[.suffix], cre.opex.line.property_tax.pilot[.suffix], cre.property_tax.increment[.suffix]
cre.incentiveamount, amount_year, basis, share, targetcre.incentive.support[.suffix]
cre.affordable_covenantami_growth, ami_year, fee, fee_year, market_rent_per_unit_month, rent_burden, rent_limit_pct_of_ami, restricted_units, subject, utility_allowancecre.affordable.monitoring_fee[.suffix]

credit

ContractTerms it readsStreams it emits
credit.loanabs_speed, age_months, cdr, cpr, index, interest_rate, make_whole_floor, make_whole_rate, margin, name, payment_frequency, prepay_penalty_rate, principal, psa_speed, rate_cap, rate_floor, sda_speed, servicing_fee, severity, subjectcredit.loan.interest[.suffix], credit.loan.defaults[.suffix], credit.loan.sched_principal[.suffix], credit.loan.prepay[.suffix], credit.loan.recoveries[.suffix], credit.loan.servicing[.suffix], credit.loan.penalty[.suffix], credit.loan.bullet[.suffix], credit.loan.zero_balance[.suffix], credit.loan.advance[.suffix]
credit.servicingadvance_rate, fee_account, fee_rate, reimbursement_account, subjectcredit.servicing.advance_interest[.suffix]
credit.guaranteefee, limitcredit.guarantee.fee[.suffix]
credit.purchasepricecredit.purchase.price[.suffix]
credit.participationsharecredit.participation.interest[.suffix], credit.participation.principal[.suffix]
credit.notecoupon, face, index, interest_account, margin, payment_frequency, principal_account, rate_cap, rate_floor, subject

opco

ContractTerms it readsStreams it emits
opco.revenue_lineamount, amount_year, growth_rateopco.revenue.recurring[.suffix]
opco.opex_lineamount, amount_year, growth_rateopco.opex.recurring[.suffix]
opco.working_capitalamountopco.working_capital.adjustment[.suffix]
opco.exit_multiplebase, multiple, selling_costsopco.exit.value[.suffix], opco.exit.selling_costs[.suffix]
opco.working_capital_policyap_days, ar_days, inv_days, release_at_endopco.working_capital.adjustment[.suffix]
opco.capex_lineamount, amount_year, growth_rate, pct_of_revenueopco.capex.line[.suffix]
opco.reinvestmentgrowth_rate, sales_to_capitalopco.capex.reinvestment[.suffix]
opco.term_debtfunded_at_close, interest_rate, principalopco.debt.proceeds[.suffix], opco.debt.interest[.suffix], opco.debt.principal[.suffix]
opco.cash_taxesda_growth, da_monthly, da_year, tax_rateopco.taxes.cash[.suffix]
opco.exit_ebitdamultiple, selling_costsopco.exit.value[.suffix], opco.exit.selling_costs[.suffix]
opco.acquisitionpriceopco.acquisition.price[.suffix]
opco.exit_perpetuitybase, discount_rate, growth_rate, selling_costsopco.exit.value[.suffix], opco.exit.selling_costs[.suffix]