Project Finance & Financial ModellingCash-flow waterfalls, debt sizing and coverage ratios · Lesson 12 of 20

DSCR, debt sizing and sculpting

Article · 16 min · 9 min lecture

Video lecture

DSCR, debt sizing and sculpting

9 chapters · about 9 min · full transcript

Coming soon

Chapter 1 of 9

How much can this project borrow?

  • DSCR in one formula
  • Sizing: the lower of the DSCR test and the gearing cap
  • Sculpting, tenor, tail and grace

The narrated lecture is in production

Every chapter is scripted and ready. Browse the chapters and read the full transcript now — the video will appear here when it’s published.

Chapters

The debt service coverage ratio

The DSCR measures how comfortably each period's cash flow covers debt service:

DSCR_t = CFADS_t / (Senior interest_t + Senior principal_t)

A DSCR of 1.30x means CFADS is 30% more than required debt service. Lenders set a target (sizing) DSCR for debt sizing, and lower lock-up and default levels for ongoing covenants. Target DSCRs reflect risk: projects with highly contracted, creditworthy revenue can often be sized at lower DSCRs than projects with volume or merchant risk (exact levels depend on market, sector and lender).

How debt is sized

Lenders typically size senior debt as the lower of two tests:

  1. DSCR test: the maximum debt that the CFADS can support at the target DSCR.
  2. Gearing test: a maximum percentage of total project cost.

Step by step: DSCR-based sizing

  1. Forecast CFADS for each repayment period over the loan tenor (lender's base case).
  2. Divide by the target DSCR to get the maximum debt service per period.
  3. Discount the maximum debt service at the all-in interest rate to get the maximum debt.
  4. Compare with the gearing cap; the lower figure is the debt size.

Worked example: flat CFADS

Illustrative. CFADS = USD 10M per year for 5 years of repayment; target DSCR 1.30x; all-in interest rate 7%; total project cost USD 45M; gearing cap 75%.

Max debt service = 10 / 1.30 = 7.69M per year
Annuity factor (7%, 5 years) = 4.1002
DSCR-sized debt = 7.69 × 4.1002 ≈ 31.54M
Gearing-capped debt = 75% × 45 = 33.75M
Debt = min(31.54, 33.75) = 31.54M  → DSCR is the binding constraint
Equity = 45 − 31.54 = 13.46M (actual gearing ≈ 70%)

Sculpting

Real CFADS varies year to year. If debt were repaid in equal instalments (an annuity), DSCRs would vary, and the lowest-DSCR year would limit debt. Sculpting sets each period's debt service equal to CFADS ÷ target DSCR, so DSCR is constant at the target and debt capacity is maximised.

Illustrative. CFADS: 10, 11, 12, 12, 13 (USD M) in years 1–5; target DSCR 1.30x; rate 7%.

YearCFADSDebt service (CFADS/1.30)Discount factor 7%PV
110.07.690.93467.19
211.08.460.87347.39
312.09.230.81637.53
412.09.230.76297.04
513.010.000.71307.13
Debt capacity≈ 36.3

Each year's DSCR is exactly 1.30x. The debt service is split into interest (rate × opening balance) and principal (the remainder), and the balance reaches zero at the end.

Tenor, tail and grace periods

  • Tenor: longer tenors increase debt capacity but raise risk; lenders keep the final maturity inside the offtake contract with a tail (a buffer period of contracted revenue after the last repayment).
  • Grace period: repayments usually start some months after commercial operation to allow for ramp-up.
  • Balloon/bullet repayments leave a large amount due at maturity, creating refinancing risk.

Minimum vs average DSCR

Lenders look at minimum DSCR (the worst period, which drives risk) and average DSCR (overall comfort). In a sculpted structure, base-case DSCRs are flat; under sensitivities they diverge, and the minimum becomes crucial.

Sensitivity to interest rate and CFADS

Debt capacity is highly sensitive to the interest rate and CFADS assumptions. A higher rate lowers the present value of the same debt service. Lenders therefore size on a conservative CFADS case (e.g., P90 yield) and hedged or fixed rates.

Common mistakes

  • Sizing on P50 CFADS when lenders require a downside case.
  • Forgetting that fees and DSRA funding increase total uses as debt increases (circularity).
  • Confusing DSCR (period test) with LLCR (NPV test).
  • Sculpting on CFADS that includes items the loan agreement excludes.

Quick self-check

After sizing, confirm four things in the model: each period's DSCR equals the target in the lenders' base case (for a sculpted loan), the debt balance reaches zero exactly at final maturity, the gearing cap is respected, and the final maturity leaves the agreed tail before the offtake contract ends. If any of these fail, the sizing logic or the inputs need attention before the numbers go to lenders.

Hands-on: sizing and sculpting in Excel

Inputs: Target_DSCR (1.30), Rate (7%), Capex (45), Gearing_cap (75%)
Row CFADS                10, 11, 12, 12, 13
Row Repay_flag           1, 1, 1, 1, 1
Row Target_DS            =CFADS/Target_DSCR*Repay_flag
Debt_DSCR                =NPV(Rate, Target_DS_row)          (first repayment one period after sizing date)
Debt                     =MIN(Debt_DSCR, Gearing_cap*Capex)
Scale                    =Debt/Debt_DSCR                     (1 if the DSCR test binds)
Opening (yr1)            =Debt ; later =previous Closing
Interest                 =Opening*Rate
Debt_service             =Target_DS*Scale
Principal                =Debt_service-Interest
Closing                  =Opening-Principal
DSCR                     =IFERROR(CFADS/Debt_service, "")
Checks                   =ABS(INDEX(Closing_row, Final_col))<0.001   and   MIN(DSCR_row)>=Target_DSCR-0.0001

For the flat case: =NPV(7%, {7.6923,7.6923,7.6923,7.6923,7.6923}) ≈ 31.54; sculpted case ≈ 36.28.

Hands-on: the same in Python

import numpy as np

def sculpt(cfads, target, rate, cap=np.inf):
    cfads = np.asarray(cfads, dtype=float)
    ds = cfads / target
    t = np.arange(1, len(cfads) + 1)
    capacity = float((ds / (1 + rate) ** t).sum())
    debt = min(capacity, cap)
    ds *= debt / capacity
    bal, out = debt, []
    for c, d in zip(cfads, ds):
        i = bal * rate
        out.append((round(float(bal), 2), round(float(i), 2), round(float(d - i), 2), round(float(c / d), 3)))
        bal -= d - i
    return debt, out, bal

debt, rows, closing = sculpt([10, 11, 12, 12, 13], 1.30, 0.07)
print(f"Debt {debt:.2f}M; closing balance {closing:.6f}")
for r in rows:
    print("opening, interest, principal, DSCR:", r)

How to measure success

  • Debt size reproduced independently (spreadsheet and code agree).
  • DSCR equals the target in every repayment period of the lenders' base case.
  • Closing balance is zero at final maturity and the tail is preserved.

Key takeaways

  • DSCR = CFADS ÷ debt service; lenders set sizing, lock-up and default levels.
  • Debt = lower of DSCR-based capacity and gearing cap.
  • DSCR sizing: max debt service = CFADS ÷ target DSCR, discounted at the interest rate.
  • Sculpting matches debt service to CFADS, keeping DSCR constant and maximising debt capacity.

Check your understanding

Quick questions to lock in the lesson. They don’t count towards your certificate.

  1. CFADS in a year is 18.0 and debt service is 15.0. What is the DSCR?
  2. DSCR-based capacity is 60M; the gearing cap allows 55M. What will the debt size be?
  3. What is the main effect of sculpting debt repayments to CFADS?
  4. Why do lenders want a 'tail' between debt maturity and the end of the offtake contract?

Put it into practice

Using a spreadsheet, sculpt debt for a 7-year CFADS profile of your choice at a 1.35x target DSCR and 8% interest. Then check the debt balance reaches zero.

Enrol for free to save your progress

Reading is always free. Enrol to keep your place, take the final assessment and earn a verifiable certificate.