Skip to content

Credit loss measurement

View as MarkdownOpen in Claude(opens in a new tab)Open in ChatGPT(opens in a new tab)

Vintage measures credit loss as a vintage loss rate: at each loan age, how many cents of every original dollar lent were lost to net charge-offs. Adding those per-age rates together gives the cumulative loss curve, and reading that curve at the end of the loans’ contractual life gives the expected lifetime loss, the headline figure on the Modeling screen’s credit-loss section.

Every rule behind those two numbers is here: what goes in the numerator, which loans make up the denominator at each age, how the curve is projected past the edge of your data, how the interval around it is built, and what happens when a cohort (the loans your segment selects) is too thin for a curve at all. The foundations (cohorts, loan age, the as-of date, balance weighting) are on Vintage analysis. How charge-offs and recoveries become the loss dollars in the numerator is on Charge-offs and recoveries.

The curve answers one question: how much of every dollar originated in this cohort had been lost by each age. At age 24 a reading of 1.40% means the loans in this Segment had lost, net of recoveries, 1.4 cents of every dollar originally lent by the time they were two years old.

The expected lifetime loss is the curve’s value at the cohort’s balance-weighted term, so for a cohort of 60-month auto loans, it is the cumulative loss at age 60. Both figures are percentages of original balance, not of the balance outstanding today.

On the Modeling screen, the credit-loss section draws the cumulative curve by age: solid where your data measures it, dashed where it is projected to term. Behind the curve, faint bars labeled “loans with data at this age” show how many loans back each age. The headline expected lifetime loss sits above the chart, and a Download menu exports the curve as CSV or XLSX. See Reading the credit-loss section for every element on screen.

Pricing on the same screen uses the cohort’s measured loss rates too, but it projects one new loan of the size and term you enter, so its “projected lifetime loss for this loan” is a different figure from the cohort’s headline. See Loan pricing.

The curve needs a charge-off amount somewhere in your accepted uploads: a Net Charge-Off Amount or Charge-Off Amount column on a snapshot or transaction file, or a transaction ledger whose Transaction Type codes you classified as charge-offs. Beyond that, it needs the modeled loans themselves (each one aged, with a term) and, for the per-original-dollar denominator, an original amount Vintage can trust.

A charge-off recorded only as a flag or a status value, with no amount anywhere, tells Vintage that a loss happened but not how large it was. Those loans are left out of the loss curve rather than counted as $0 losses. The full list of fields and methods is on Modeling methods.

At each age a, the marginal loss rate is:

m(a)=NCO(a)OB(a)m(a) = \frac{\mathrm{NCO}(a)}{\mathrm{OB}(a)}
  • NCO(a) is the net charge-off dollars booked at age a: charge-offs less recoveries, for loans in the denominator. How a loan’s loss is booked, and at which age, is on Charge-offs and recoveries and How a loan’s ending is decided.
  • OB(a) is the original balance of every loan old enough to have reached age a by the as-of date (your portfolio’s latest snapshot month), including loans that have since paid off or charged off.

In words: the share of the original dollars that could have been lost at age a that actually were.

Counting ended loans in the denominator is what makes the rate right-censoring-correct (right-censoring is the fact that your data ends before many loans do, so their later ages are unobserved rather than loss-free). A loan that charged off at age 10 still counts in the denominator at age 30, because it was originated early enough to have reached age 30. If ended loans dropped out of the denominator, the remaining loans would carry every later age, and a young cohort’s lifetime figure would read too low.

A small example. A cohort of auto loans has $16,000,000 of original balance on loans old enough to have reached age 12. Net charge-offs booked at age 12 total $24,000. The marginal rate at age 12 is 24,000 ÷ 16,000,000 = 0.15%.

The denominator is set by the calendar, from the as-of date (your portfolio’s latest snapshot month), with these rules:

The loanCounts in OB(a) at
Still openevery age from origination to its age at the as-of date
Paid off or charged offevery age it is old enough for, through the as-of date
Matured, or ran past its termevery age through the as-of date (eligibility is calendar, not contractual)
Exited (sold, participated out, transferred)every age up to and including the age it left, then no later age
Entered your data already seasonedages from its first observed age onward; earlier ages are unobserved, not zero

When every loan in the cohort entered your data part-way through its life, the curve begins at the earliest age any of them was observed. The ages before it are not drawn as measured: nothing was observed there, and a 0% at those ages would be a guess.

Loans that are not in the loss curve at all are covered in Loans left out of the loss curve below.

The cumulative curve accumulates; it never restates

Section titled “The cumulative curve accumulates; it never restates”

The cumulative loss at age k is the running sum of the marginal rates:

C(k)=∑a=0km(a)C(k) = \sum_{a=0}^{k} m(a)

Each marginal is measured against its own age’s denominator, and the sum is never recomputed as one ratio whenever the population changes. This matters when your data deepens. Suppose you later upload older history, and a loan that used to enter your data at age 18 now enters at age 6. That loan’s original balance joins the denominators at ages 6 through 17, each of those ages is measured against its own denominator, and the curve adds them up. Nothing already measured is re-divided by a new, larger pooled base, so deeper coverage cannot make the curve fall merely because more data arrived. A curve that fell for that reason would be an artifact, not a measurement.

Because the curve is a sum of shares of a fixed original balance, it is not a product of survival factors.

The expected lifetime loss is C(T), where T is the cohort’s balance-weighted term rounded to a whole month.

The marginal series is smoothed; the cumulative is not

Section titled “The marginal series is smoothed; the cumulative is not”

Vintage also computes the per-age marginal series alongside the curve, smoothed for readability with a 3-month exposure-weighted trailing moving average:

m~(a)=∑j=a−2an(j) m(j)∑j=a−2an(j)\tilde{m}(a) = \frac{\sum_{j=a-2}^{a} n(j)\, m(j)}{\sum_{j=a-2}^{a} n(j)}

Here n(j) is the number of loans in age j’s denominator, the same count the bars on the chart show: every loan old enough for that age, including loans that had already paid off or charged off. The window looks back only, and is shorter for the first two ages. The smoothed series is not drawn on the chart or included in downloads; it is what the interval around the curve is built from (below).

The cumulative curve is built from the raw marginals, not the smoothed ones, so it conserves their sum exactly. Smoothing a series whose exposure changes sharply does not preserve its total, which is why the curve itself is never built from the smoothed series.

If an age inside your history has no loans with data at all, and the gap is three months or shorter with ages on both sides that clear the reliability floor described next, Vintage bridges it with a straight line between the neighboring rates and draws that stretch dashed. A longer or thinly backed gap is left as a gap.

Where measurement ends and projection begins

Section titled “Where measurement ends and projection begins”

The solid part of the curve runs through the last reliable age: the oldest age backed by at least one-tenth as many loans as the cohort’s best-backed age, with that tenth rounded down to a whole loan and never set below one. A cohort with 2,000 loans at its peak needs 200 loans at an age for that age to count as measured; a cohort of 25 needs 2.

Past that age the curve is projected, even where a few loans did report. A handful of loans at a deep age would otherwise set the whole tail of the curve.

The projected tail is a walk, not a guess at a loss rate

Section titled “The projected tail is a walk, not a guess at a loss rate”

Past the last reliable age, Vintage does not invent a loss rate and does not fit a trend line. It walks the cohort’s remaining balance forward, month by month, to the contractual term, and books the cohort’s own measured loss rate on whatever balance is still outstanding. Losses fade out in the tail because the balance fades out, not because a curve was bent toward zero.

The walk uses two conditional monthly rates, measured on outstanding balance rather than original balance:

h(a)=max⁡(0, NCO(a))BB(a)d(a)=DP(a)BB(a)h(a) = \frac{\max\big(0,\ \mathrm{NCO}(a)\big)}{\mathrm{BB}(a)} \qquad d(a) = \frac{\mathrm{DP}(a)}{\mathrm{BB}(a)}
  • BB(a) is the beginning-of-month balance outstanding at age a on the loans whose loss can be measured.
  • h(a) is the net loss rate: net charge-off dollars per dollar outstanding. It sets the loss booked.
  • d(a) is the default rate: principal removed by charge-off per dollar outstanding. It sets how fast defaults run the balance off.

Both are measured at every observed age, smoothed with the same 3-month average, and carried past the edge of your data at their long-run levels. Each rate glides from its last reliably measured value toward its long-run level (the exposure-weighted average of the last third of the observed ages), closing a tenth of the remaining gap each month.

The walk starts at the measured remaining balance at the last reliable age K: the balance the cohort still had outstanding there, as a share of its original balance, B(K). (When that age is itself a bridged gap with no reported balance, the nearest earlier age that reports one supplies the anchor.) Month K itself books no loss (its loss is already in the measured curve); it only carries the balance forward to K + 1 at that age’s rates. Then, for each month from K + 1 to the term T:

loss(a)=B(a)⋅h(a)D(a)=B(a)⋅d(a)S(a)=(B(a)−D(a))⋅s(a)P(a)=(B(a)−D(a)−S(a))⋅SMM(a)B(a+1)=B(a)−D(a)−S(a)−P(a)\begin{aligned} \text{loss}(a) &= B(a)\cdot h(a) \\ D(a) &= B(a)\cdot d(a) \\ S(a) &= \big(B(a) - D(a)\big)\cdot s(a) \\ P(a) &= \big(B(a) - D(a) - S(a)\big)\cdot \mathrm{SMM}(a) \\ B(a+1) &= B(a) - D(a) - S(a) - P(a) \end{aligned}
  • D(a) is principal removed by default, taken first.
  • S(a) is scheduled principal. s(a) is the share of its balance a level-payment loan retires when T − a payments remain: r / ((1 + r)^(T − a) − 1) at the cohort’s balance-weighted monthly note rate r, or 1 / (T − a) at a zero rate. It depends only on the rate and the months left, not on the balance, which is what lets the surviving loans keep amortizing at their own speed after part of the pool defaults or prepays. This is the one assumption the walk makes, and the screen states it under the chart.
  • P(a) is prepaid principal, at the cohort’s own measured prepayment speed SMM(a), projected to term the same way the prepayment chart’s dashed line is. See Prepayment speeds.

The loss booked in a month never exceeds the principal that defaulted in it. The projected cumulative curve is then:

C(T)=C(K)+∑a=K+1Tloss(a)C(T) = C(K) + \sum_{a=K+1}^{T} \text{loss}(a)

A small example, continuing the auto cohort. At its last reliable age, 30, it still has 45% of its original balance outstanding. Age 30 books nothing new; its defaults, scheduled principal, and prepayments carry the balance down to, say, 44% entering age 31. With a net loss rate of 0.10% a month, age 31 books 0.44 × 0.10% = 0.044% of original balance, and the balance shrinks again before age 32 is booked.

The curve ends at the contractual term. A cohort observed past its own term contributes nothing beyond it, and the headline is read at the term.

Under the chart, the credit-loss section says what the dashed line is and that it assumes level-payment repayment, so an interest-only or balloon book would keep its balances outstanding longer than shown. Two more situations are stated there when they apply:

  • Prepayment could not be measured for this cohort, either because no loan in it reports scheduled principal or because it does not yet have two consecutive months of data. The walk then assumes no prepayment. More balance stays exposed, so the projected loss is likely on the high side, and the note says which reason applies.
  • No balance to carry forward. If the cohort reports no outstanding balance at the edge of its data, nothing can be walked. The note says so, and the lifetime figure is the measured loss through that age only, not a full-life projection.

Over the measured part of the curve, the shaded band is a statistical ~95% interval. Each marginal rate is treated as a proportion measured on a limited number of independent loans, and the variances are added up the curve:

half-width(k)=1.96 ϕ∑a≤km~(a) (1−m~(a))neff(a)neff(a)=(∑iOi)2∑iOi2\text{half-width}(k) = 1.96\,\sqrt{\phi \sum_{a \le k} \frac{\tilde{m}(a)\,\big(1 - \tilde{m}(a)\big)}{n_{\mathrm{eff}}(a)}} \qquad n_{\mathrm{eff}}(a) = \frac{\big(\sum_i O_i\big)^2}{\sum_i O_i^2}
  • O_i is the original balance of each loan old enough for age a. n_eff(a) is the effective number of loans: equal to the loan count when every loan is the same size, and smaller when a few large loans carry most of the dollars. A concentrated book therefore gets an honestly wider band than a granular book of the same total.
  • m̃(a) is the smoothed marginal rate from the previous section.
  • φ compares how far the raw per-age rates scatter around the smoothed series with the scatter n_eff loans would produce by chance. It is at least 1, so it widens the band when the rates jump around more than chance alone would explain, and it never narrows it.

The band widens where loans are few, and widens on a concentrated book even when its losses look smooth. For example, two loans of $100,000 and $300,000 have an effective count of 400,000² ÷ (100,000² + 300,000²) = 1.6 loans, not 2, so their band is wider than two equal loans would give.

Over the projected tail the band is labeled projected range. It is a heuristic fan, not the same statistic: the variance keeps accumulating month by month from the interval at the last reliable age, using each projected month’s walked loss rate and an effective loan count frozen at that age’s level, and the resulting half-width is then stretched by an extra 5% for each month past that age, without compounding (1.5 times at ten months past, twice at twenty). No band runs below 0% or above 100%, because a cumulative loss cannot exceed everything that was lent. When a long projected tail fans out past the top of the chart’s axis, the range is cut off there, the legend says so, and each point’s full range stays available on hover or tap.

When the cohort is too thin: the WARM estimate

Section titled “When the cohort is too thin: the WARM estimate”

When a cohort is too young or too thin to support a vintage curve, Vintage falls back to a weighted-average remaining maturity (WARM) estimate and labels the section “WARM fallback”. It does this when either:

  • the deepest age the cohort has reached is less than half its balance-weighted term, or
  • fewer than five loans back the cohort’s best-backed age.

WARM is the same walk with one constant rate in place of a measured rate curve. The rate is the cohort’s average charge-off rate on outstanding balance over everything it has observed, the basis the regulatory WARM method uses:

w=∑a≤Amax⁡(0, NCO(a))∑a≤ABB(a)w = \frac{\sum_{a \le A} \max\big(0,\ \mathrm{NCO}(a)\big)}{\sum_{a \le A} \mathrm{BB}(a)}

Here A is the deepest observed age. The measured cumulative loss through age A is kept as is, and the walk starts from the measured remaining balance at A, books w on the balance still outstanding each month, and runs that balance off by defaults (at the cohort’s average default rate), level-payment scheduled principal, and measured prepayment, to the term:

lifetime loss=C(A)+∑a=A+1Tw⋅B(a)\text{lifetime loss} = C(A) + \sum_{a=A+1}^{T} w \cdot B(a)

Because the rate is a monthly rate on outstanding balance, a cohort first seen mid-life contributes only the months actually observed; its unobserved early life cannot dilute the rate.

A WARM curve is drawn with no band, over observed ages and projection alike. A band widening around one rate held constant would describe a spread nothing measured. The downloaded curve leaves its range columns blank for the same reason. The note under the chart says that the cohort’s average charge-off rate so far stood in for a measured curve.

When the lifetime loss rests on very little, the headline carries the qualifier “thin history, directional only”. That happens on the WARM fallback, or when five or fewer loans back the deepest age the curve draws as measured (the bar under the end of the solid line). The qualifier applies to a real number exactly as much as to a zero: a 1.20% standing on one loan is as directional as a 0.00% standing on one.

These are opposite cases, and the screen keeps them apart:

  • No charge-off amount anywhere in your uploads. There is nothing to measure loss from. The section says there is no charge-off data and the lifetime figure shows a dash, never a 0%.
  • Charge-off data exists, and this cohort lost nothing. The headline says “No charge-off dollars measured in this cohort”, and a cohort that is zero at every age is drawn on a full 0% to 100% axis so the flat line reads as zero.

The full rules, including when the measured-zero statement is withheld, are on Charge-offs and recoveries.

Each of these exclusions is counted:

  • A charge-off with no amount. A loan whose charge-off is recorded only by a flag or a status value, with no amount for it, is left out of both the numerator and the denominators rather than counted as a $0 loss. The upload Review shows how many loans are held out this way before you finalize. See Reviewing before you finalize.
  • No original amount Vintage can trust. A loan that was already seasoned when your data begins, with no Original Loan Amount supplied, has only a seasoned balance to go on. It is held out of the per-original-dollar curve, numerator and denominator alike. Its losses still count in the outstanding-balance rates h and d that drive the walk. Supplying an Original Loan Amount column brings these loans in.
  • A loan that arrived already ended. A loan originated before your data begins whose ending is on the very first row Vintage sees for it has no age at which it was observed at risk. It books no loss and is held out of the curves. See How a loan’s ending is decided.
  • Loans that are not modeled, because they cannot be aged, have no term, or have no snapshot. See Origination and term.