# Vintage analysis

Vintage analysis asks one question of your loan history: what happened to loans like these when they reached a given age. Vintage lines up a group of loans by **loan age**, the number of months since each loan was originated, measures what happened at every age, and adds those measurements up into a curve. Every credit-loss figure, prepayment speed, and price on the Modeling screen is built this way.

The foundation the other method pages rest on is here: what a cohort is, how ages are counted, which loans count toward each age, the single date every measurement shares, and why every rate is weighted by balance. The specific measures have their own pages: [credit loss](/concepts/credit-loss-measurement/), [prepayment speeds](/concepts/prepayment-speeds/), and [loan pricing](/concepts/loan-pricing/).

## Cohorts and loan age

A **cohort** is the group of loans being analyzed together. In Vintage, the cohort is the set of loans your **Segment** selects. A Segment is the set of filters you build in the Segment Builder, such as auto loans originated 2019 to 2022 with a FICO score of 680 or above. The same Segment drives the Portfolio and Modeling screens, so both always describe the same loans. See [Segments](/portfolio/segments/).

**Loan age** is counted in whole months from origination. The origination month is age 0, the next month is age 1, and so on. A loan originated in March 2021 and reported in March 2024 is at age 36 in that report. Ages count calendar months, so the day of the month plays no part: loans originated on March 2 and on March 28 of 2021 are both at age 36 in March 2024.

Lining loans up by age, rather than by calendar date, is what makes loans from different years comparable. A loan made in 2019 and a loan made in 2023 both pass through age 12; at age 12 they are at the same point in their lives, even though the calendar months differ.

Vintage models the cohort only after you have narrowed the portfolio to loans that behave alike. A curve that averages auto loans with mortgages describes neither, so the Modeling screen asks for a Segment first. See [The Modeling screen](/modeling/the-modeling-screen/).

### Which loans in the cohort are modeled

A loan is **modeled** when it can be aged and it has a term. Aging needs an origination date, either the one you provide or, for a loan that first appears after your earliest snapshot month, one Vintage estimates from that first appearance. A loan already present in your earliest snapshot month with no origination date cannot be aged, because nothing distinguishes a new loan from a seasoned one. A term is the Term (Months) you provide or one derived from a Maturity Date. Loans that cannot be aged, have no term, or have no snapshot at all are left out of the curves and counted. The rules live on [Origination and term](/concepts/origination-and-term/). Everything on this page is computed over the modeled loans.

## How you work with it in Vintage

You do three things, and Vintage does the rest:

1. Upload loan history: monthly (or quarterly) snapshot files, and optionally origination and transaction files. The longer your history, the deeper the ages Vintage can measure.
2. Build a Segment on the Portfolio or Modeling screen.
3. Read the curves on the Modeling screen. Each one is drawn **solid** where your data measures it and **dashed** where it is projected to the end of the loans' term, with faint bars showing how many loans back each age (on the loss curve, every loan in that age's denominator, including loans that had already paid off or charged off; on the speed chart, the loans whose speed could be measured at that age).

There is nothing to configure in the method itself. The rates, weights, and projection rules described here are the same for every customer and every Segment.

## The life-table idea: a rate at each age, then accumulated

The method is a **life table**, the same construction actuaries use for mortality. At each age, Vintage divides what happened at that age by what was exposed to it:

$$
\text{rate}(a) = \frac{\text{amount that happened at age } a}{\text{amount exposed to it at age } a}
$$

Here `a` is a loan age in months. The numerator and the denominator differ by measure, and each measure's page states them exactly:

- **Credit loss** divides net charge-off dollars at age `a` by the **original balance** of every loan old enough to have reached age `a`. Those per-age rates add up into the cumulative loss curve. See [Credit loss measurement](/concepts/credit-loss-measurement/).
- **Prepayment** divides unscheduled principal returned at age `a` by the **balance outstanding** at the start of that month, less that month's scheduled principal. That rate is the single monthly mortality (SMM), which is annualized into the conditional prepayment rate (CPR). See [Prepayment speeds](/concepts/prepayment-speeds/).

A rate is measured only where something was exposed. An age with nothing exposed produces no measurement, not a measured zero.

## Why a young cohort does not bias the long run

Each age is measured only on the loans that have actually reached it. A cohort that mixes loans made five years ago with loans made last year still produces a fair rate at age 48: only the five-year-old loans contribute to age 48, and they contribute to its denominator as well as its numerator. The one-year-old loans shape the early ages and are silent about later ones.

This is what **exposure weighting** means: each age's rate is computed over exactly the loans exposed at that age, so a cohort full of young loans does not drag its long-run figures toward zero merely because those loans have not had time to default or prepay. Deep ages backed by too few loans are not drawn as measured at all; the curve is projected past them instead (the [credit loss page](/concepts/credit-loss-measurement/) gives the rule).

The faint bars behind each curve on the Modeling screen show that backing. Where the bars thin out, the curve is resting on fewer loans.

## Right-censoring and the as-of date

A loan's history is **right-censored** when the data ends before the loan does. Its future is not yet observed. Vintage handles this by counting a loan only at the ages it has actually lived through.

Those ages are measured against one **as-of date**: the **latest snapshot month observed across your whole portfolio**, not the latest snapshot month within the current Segment. Every Segment is therefore on the same clock. A Segment whose own most recent snapshot happens to be older than the portfolio's cannot look more or less mature than it is, and two Segments, or a Segment and the whole book, are always comparable.

For example, if your portfolio's latest snapshot is June 2025, a loan originated in June 2022 is eligible for ages 0 through 36, whether or not the Segment you are looking at contains any loan reported in June 2025.

## Last observed age

A cohort's **last observed age** is the deepest age its loans are old enough to have reached by the as-of date, with a loan that exited the book capped at the age it left. It is set by the calendar, not by what was reported. So a cohort can be "observed" at an age where no loan happened to report anything, because the loans were old enough to be there.

How long a loan keeps counting depends on how it ended:

- A loan that **matured**, or ran past its own term, keeps counting toward later ages up to the as-of date. The bank held it and observed it.
- A loan that **charged off** or **paid off** keeps counting in the credit-loss denominator at every age it is old enough for. That is what keeps the loss curve free of the bias that would come from loans dropping out. See [Credit loss measurement](/concepts/credit-loss-measurement/).
- A loan that **exited** (sold, participated out, or transferred) stops counting at the age it left. The bank no longer holds it, so it cannot be observed to default afterward. See [Payoffs and exits](/concepts/payoffs-and-exits/).

The last observed age is not the same as where the solid part of a curve ends. A curve is drawn as measured only through the last age that enough loans back, and is projected beyond it; the credit-loss page gives that rule.

## Balance-weighted, not count-weighted

Every rate and curve in Vintage is **weighted by balance**: a $400,000 loan counts for twenty times as much as a $20,000 loan. This is the convention used for current expected credit losses (CECL) work and in mortgage-market analytics (the conventions published by SIFMA, the Securities Industry and Financial Markets Association), and it is what makes the figures add up to dollars.

A small example. A cohort holds two loans at age 24: one of $20,000 and one of $380,000. The $20,000 loan charges off in full; the larger loan performs. Counted by loans, half the cohort defaulted. Weighted by original balance, 5% of the dollars lent were lost:

$$
\frac{20{,}000}{20{,}000 + 380{,}000} = 5\%
$$

The 5% is the figure that tells you what the cohort cost, and it is the figure Vintage reports.

## The balance-weighted term

Every curve is projected to the end of the cohort's contractual life, and that life is the cohort's **balance-weighted term**:

$$
\bar{T} = \frac{\sum_i O_i \, T_i}{\sum_i O_i}
$$

Here `O_i` is loan `i`'s original balance (its first observed balance where the original is estimated), `T_i` is its term in months, and the sums run over the modeled loans. Loans that arrived already ended (their ending is on the first row Vintage sees for them) are not included, so a loan the curves never saw open cannot stretch the horizon. The term is rounded to a whole month for the curves, and the expected lifetime loss is read at that age. For example, a cohort of two loans, $100,000 written for 60 months and $300,000 written for 36 months, has a balance-weighted term of (100,000 × 60 + 300,000 × 36) ÷ 400,000 = 42 months.

The measured part of each curve always respects each loan's own term. Only the projected part uses the single balance-weighted term.

### When the terms are too spread out

One representative term is meaningful only when the loans' terms are similar. When a Segment mixes very different terms (short lines of credit alongside long mortgages, say), the projected tail runs to a term that may not represent any actual loan in it, so add a term filter to the Segment for a cleaner projection. The measured part of the curves is still valid in a mixed slice; only the projected tail is affected.

## Measured versus projected

Everything Vintage **measures** from your history uses figures you actually reported. No measured number is computed against a reconstructed amortization schedule: not the credit-loss denominator, and not the prepayment measure. Where a reported figure is missing, the loan or the month is left out of that measure and counted, and Vintage says what would bring it in. It never fills the gap with a modeled substitute. [Missing and unreported data](/concepts/missing-data/) gives the rules.

Projections are the one exception. Anything carried **forward past the edge of your data** amortizes a hypothetical loan on a **level-payment** schedule: equal monthly payments that retire the balance by the end of the term. Exactly four things do this, and all four state the assumption beside the figure and in the downloaded file:

- the projected tail of the credit-loss curve;
- the WARM (weighted-average remaining maturity) projection that stands in for a loss curve on a cohort too thin to support one;
- the required-rate build-up in Pricing;
- the month-by-month cash-flow projection in Pricing.

Vintage has no loan-type field, so an interest-only or balloon book is projected as if it amortized. Its balances would stay outstanding longer than the projection shows.

**One amortization convention everywhere:** All four projections use the same pool convention: each month retires the share of that month's balance a level-payment loan with that many payments left would retire. After part of a pool prepays or defaults, the remaining loans keep amortizing at their own speed. Using one convention is what keeps the cohort's projected curve and the priced loan's projection describing the same loan.

## No machine learning, no hidden parameters

The method is historical averaging by age and nothing else. There is no machine learning, no fitted statistical distribution, and no parameter learned from anything other than your own cohort. There is no economic forecast or qualitative overlay on top of your history; see [What Vintage does not do](/concepts/what-vintage-does-not-do/).

The design goal is that a banker or examiner can re-derive any number on the screen by hand from the numbers beside it. The same Segment over the same data always produces the same numbers. If a figure changes between two viewings, the portfolio itself changed: an upload or a deletion, a change to a field's type, a change to how your values or amount columns are read, or an improvement Vintage made to how it processes every portfolio. While that re-processing runs, the Modeling screen keeps showing the last complete analysis of a Segment it has analyzed before, labeled with the date it reflects.

## Related

- [Credit loss measurement](/concepts/credit-loss-measurement/)
- [Prepayment speeds](/concepts/prepayment-speeds/)
- [Origination and term](/concepts/origination-and-term/)
- [Missing and unreported data](/concepts/missing-data/)
- [Segments](/portfolio/segments/)
- [The Modeling screen](/modeling/the-modeling-screen/)