A lender can group loans by origination month, then compare each group’s performance at the same age. This is vintage analysis: instead of comparing calendar dates, it aligns cohorts by months on book to reveal when delinquency or default accumulates. section 4.2.2
Spotting a change early
Suppose 3% of January 2023 loans are 30+ days late by month 3, versus 5% of February 2023 loans at month 3. The newer cohort is deteriorating faster. That warrants investigation into underwriting or economic conditions; the comparison alone does not establish the cause. section 4.2.2
To make the comparison useful:
- Define the event consistently. A 30-days-late measure is not interchangeable with a default rule, and default windows vary by product and policy. section 4.2.2
- Plot each vintage’s cumulative rate against months on book. A steeper curve signals faster accumulation; a flattening curve suggests most observed defaults have materialized. section 4.2.2
- Investigate worsening cohorts, then consider changes to score cutoffs or checks. Keep the charts available to support portfolio monitoring and provisioning scrutiny. section 4.2.2
Listing 4.1 Vintage analysis
import pandas as pd
import matplotlib.pyplot as plt
# Step 1: Load the CSV, using "Vintage" as the index
df_loaded = pd.read_csv("vintage_data.csv", index_col="Vintage")
# Step 2: Plot each vintage as a line
plt.figure(figsize=(9,6))
months = range(1, 17) # for 16 months on book
for vintage in df_loaded.index:
# Convert each row to numeric in case of missing cells
row_values = pd.to_numeric(df_loaded.loc[vintage], errors='coerce')
plt.plot(months, row_values, marker='o', label=vintage)
plt.title("Vintage Analysis: Cumulative Default Rates")
plt.xlabel("Months on Book")
plt.ylabel("Cumulative Default Rate (%)")
plt.xticks(months)
plt.grid(True)
plt.legend(loc='upper left')
plt.show()
The Python listing reads a CSV indexed by vintage, converts row values to numeric, and plots one cumulative-default-rate line per cohort over 16 months. It assumes the stored columns correspond to those months. section 4.2.2
Vintage analysis summarizes cohorts in aggregate. Survival analysis instead tracks each loan’s time to default, providing a more granular time-aware view. section 4.2.2 section 4.6
