Seasoning model document
Model build 2026-09-30, data snapshot 2026-06-30. Written in the order SR 11-7 reviewers read it, from the same model file as the charts above; section 8 carries the selection currently in the lab.
1Purpose and intended use
Seasoning is a discrete-time competing-risks hazard model of small business loan payoff and charge-off. For a loan described by its term, size, program, sector, business age and three flags, or for a book of such loans, it returns the share paid off, the share charged off and the share still outstanding at every quarter over a 20-quarter horizon under a macroeconomic path, and it prices the expected charge-off dollars with the loss given charge-off the file shows for loans of that age and term.
I built it to show the modeling and documentation practice behind vintage credit-loss forecasting on the one public loan-level file that carries an outcome and a date for every loan. It is estimated on the SBA's 7(a) guarantee portfolio and calibrated to no lender. Its intended use is comparing scenarios and reading sensitivities. It should carry no capital, reserving, pricing or underwriting decision.
2Data
The loan file is the SBA's 7(a) loan-level FOIA release, four files covering approvals from fiscal 1991 to the present, snapshot as of 2026-06-30. I read 1,961,455 rows. Each row carries the approval and first disbursement dates, the term in months, the gross approval, the SBA guaranteed share, the processing method, the NAICS code, the business age, the revolver and collateral indicators, the franchise code, the project state, the loan status, and the paid-in-full or charge-off date and gross charge-off amount where they apply.
Three statuses are usable. Rows with any other status (263,913) were dropped. Rows with a missing disbursement or outcome date, a negative duration, a zero term or a zero approval (2,059) were dropped. An open loan still on the books more than 24 months past its term is treated as stale and censored at term plus 24 months rather than at the snapshot; 5,251 loans were capped this way. Loans are followed for at most 120 quarters.
That leaves 1,695,483 loans. Each is expanded into one row per quarter from first disbursement to its exit or to the snapshot, 25,008,121 loan-quarters in the estimation sample, with 885,963 payoffs and 183,055 charge-offs. The file records 61 distinct project state and territory codes.
Macro series come from FRED: UNRATE and the state unemployment series (the state series where FRED publishes one, the national series otherwise) and MPRIME, the bank prime loan rate, each monthly and averaged to calendar quarters. The projection scenarios are Fed baseline (Federal Reserve, 2026 Supervisory Baseline Scenario (domestic)), Fed severely adverse (Federal Reserve, 2026 Supervisory Severely Adverse Scenario (domestic)) and 2008 replay (Realized FRED history from 2007 Q4, replayed from the jump-off). The jump-off is 2026 Q2, with unemployment at 4.3% and prime at 6.75%; 12 trailing quarters of both series are stored so the four-quarter change stays continuous across the jump-off.
| Loan status | Rows | Treatment |
|---|---|---|
| P I F | 1,179,360 | paid in full, an exit |
| EXEMPT | 297,494 | open, censored at the snapshot |
| CANCLD | 242,790 | excluded |
| CHGOFF | 220,688 | charged off, an exit |
| COMMIT | 21,123 | excluded |
3Method
In every quarter a loan is outstanding it does one of three things: it continues, it pays off, or it is charged off. The model is a discrete-time competing-risks hazard model in the sense of Allison (1982): a multinomial logit over those three outcomes, estimated jointly on the loan-quarters, with continuing as the base category. It has two equations, one per exit, each a linear predictor in the log odds of that exit against continuing: log [P(paid off in quarter t) / P(continue)] = α₁(age) + β₁ · loan + γ₁ · economy, and log [P(charged off in quarter t) / P(continue)] = α₂(age) + β₂ · loan + γ₂ · economy. The quarterly hazards are the two multinomial probabilities, and the cumulative incidence of each exit is the sum over quarters of the survival-to-date times that quarter's hazard, which is the Aalen-Johansen estimator when the hazards are empirical.
Time on the books enters as 19 age bins (quarters 1, 2, 3, 4, 5, 6, 7, 8, 9-10, 11-12, 13-14, 15-16, 17-20, 21-24, 25-28, 29-32, 33-40, 41-60, 61+), with quarter 1 as the reference, so the age curve is unconstrained in shape. The loan enters through five factors and three indicators: revolving line of credit, collateral reported and franchise. Each factor's reference level carries no column; the table below lists them.
The economy enters through 3 terms: Unemployment rate: the level, in the borrower's state, in the current quarter, in the charge-off and payoff equations; Rise in unemployment over the year before last: the four-quarter change, in the borrower's state, lagged 4 quarters, in the charge-off equation; Change in prime rate over four quarters: the four-quarter change, nationally, in the current quarter, in the payoff equation. I tested levels and four-quarter changes of both series at lags from zero to two years. For the charge-off equation the current level of state unemployment together with its four-quarter rise lagged four quarters fit best, which is consistent with what the charge-off date measures: SBA records the quarter in which it booked the loss, after the guarantee was purchased and the collateral liquidated, so a business that failed while unemployment was climbing appears as a charge-off about a year later. For the payoff equation the current level of unemployment and the four-quarter change in the prime rate fit best; the level of prime added nothing once unemployment was in.
Estimation is by Newton-Raphson on the full sample with step halving, warm-started from the empirical log odds of each exit. The fit converged in 11 iterations on 118 parameters (log likelihood −4533004.0, AIC 9066240.1). Standard errors are clustered by loan, because a loan contributes one row for every quarter it survives and those rows are not independent; the model-based errors from the inverse Hessian are carried alongside. The full clustered covariance is stored with the model and drives the uncertainty bands in the lab.
| Factor | Levels | Reference level |
|---|---|---|
| Term | 5: 3 years or less, 4 to 7 years, 8 to 10 years, 11 to 20 years, Over 20 years | 4 to 7 years |
| Loan size | 6: $25k or less, $25k to $50k, $50k to $150k, $150k to $350k, $350k to $1M, Over $1M | $50k to $150k |
| Program | 5: SBA Express, Preferred Lenders, General or Certified, LowDoc, Other | Preferred Lenders |
| Sector | 17: Retail, Accommodation and food, Construction, Other services, Professional and technical, Health care, Manufacturing, Wholesale, Transportation, Arts and recreation, Finance and real estate, Agriculture, Information, Administrative and waste, Education, Mining, Not recorded | Retail |
| Business age | 6: Existing, over 5 years, Two to five years, Under two years, Startup, Change of ownership, Not recorded | Existing, over 5 years |
4Estimates
The table reports the odds ratios that matter most for projection, with the z statistic on the loan-clustered standard error. An odds ratio above one raises that exit's odds against continuing relative to the reference level. The complete coefficient table for both equations, every level of every factor with its confidence interval, is in the lab's Estimates section and in the model file.
The age curve is the point of the model. For the reference loan (every factor at its reference level, no indicators, the economy at the 2026 Q2 jump-off), over the 28 quarters its term band allows, the fitted charge-off hazard peaks in quarters 15-16 at 1.59% of what is still outstanding per quarter and eases after that. The empirical charge-off hazard on the whole population peaks in quarter 31 at 1.20%.
The economy: each point of unemployment in the borrower's state multiplies the charge-off odds by 1.065 in the current quarter, and each point it rose over the year before last multiplies them by 1.083. In the payoff equation each point of unemployment multiplies the payoff odds by 0.929, because a business is harder to sell or refinance in a weak economy, and a one-point rise in the prime rate over the past year multiplies them by 1.049, since most of these loans float over prime and a reset up is when a borrower who can refinance does.
| Term | Payoff odds ratio | z | Charge-off odds ratio | z |
|---|---|---|---|---|
| Term, 3 years or less (vs 4 to 7 years) | 0.45 | −134.6 | 2.54 | 166.9 |
| Term, 8 to 10 years (vs 4 to 7 years) | 0.58 | −178.9 | 0.35 | −131.0 |
| Term, 11 to 20 years (vs 4 to 7 years) | 0.37 | −214.0 | 0.21 | −141.9 |
| Term, over 20 years (vs 4 to 7 years) | 0.41 | −157.7 | 0.08 | −142.8 |
| Business age, two to five years (vs existing, over 5 years) | 1.06 | 19.2 | 1.17 | 24.0 |
| Business age, under two years (vs existing, over 5 years) | 1.03 | 9.8 | 1.26 | 30.3 |
| Business age, startup (vs existing, over 5 years) | 1.04 | 8.6 | 1.15 | 13.6 |
| Business age, change of ownership (vs existing, over 5 years) | 0.91 | −9.8 | 0.53 | −17.5 |
| Business age, not recorded (vs existing, over 5 years) | 1.11 | 21.7 | 1.17 | 14.5 |
| Unemployment rate, per point | 0.929 | −139.8 | 1.065 | 75.7 |
| Rise in unemployment over the year before last, per point | not in equation | 1.083 | 84.0 | |
| Change in prime rate over four quarters, per point | 1.049 | 57.4 | not in equation |
5Validation
Blind vintage run. I re-estimated both equations on loan-quarters from 2005 Q4 through 2007 Q4, the quarters before the crisis, and ran the fiscal 2005, 2006, 2007 and 2008 cohorts forward 24 quarters on the state unemployment and prime rate path that actually followed. Then I ran the same cohorts with the full model, on the realized path and again with the economy frozen at the quarter each loan was booked. The table shows the cumulative share charged off at 16 quarters. The difference between the full model's realized and frozen runs is what the recession explains; the difference between the realized run and what happened is what the file cannot see about how those loans were underwritten.
The pre-crisis model puts the fiscal 2007 cohort, the worst of them, at 10.8% charged off by 16 quarters against 24.0% in fact, and freezing its economy moves that by only 0.1 points: in 2005 Q4 to 2007 Q4 unemployment never moved, so its odds ratio per point came out at 0.984 against 1.065 in the full model. A model estimated before a recession does not know what a recession does. With the full model, whose unemployment sensitivity was learned across the crisis, the same cohort reads 13.7% on the realized economy and 8.5% with it frozen, so the recession accounts for 5.2 of the 15.5 points between a calm economy and the outcome. The rest is what the file cannot see about how those loans were underwritten. I left the gap in rather than tune it away.
Holdout scoring. A second fit uses loan-quarters through 2015 Q4 and scores every loan-quarter from 2016 Q1 to 2019 Q4, 4,679,233 of them with 19,027 charge-offs and 180,820 payoffs. Charge-off: AUC 0.765, Brier score 0.00404, predicted rate 0.634% per quarter against 0.407% observed. Payoff: AUC 0.691, Brier score 0.03634, predicted 4.028% against 3.864% observed.
Calibration by decile of predicted charge-off probability is not perfectly monotone. The bottom decile predicts 0.007% and observes 0.002%; the top decile predicts 2.367% and observes 1.730%, on 467,924 loan-quarters. Over the window the model predicted 29,672 charge-offs against 19,027 that happened, a ratio of 1.56, so it runs high in a benign stretch while ranking loans well. The full decile ledger and the year-by-year counts are in the lab's Checks section.
| Cohort | Loans | Actual | Pre-crisis model | Full model | Economy frozen | Explained by the economy | Unexplained |
|---|---|---|---|---|---|---|---|
| Fiscal 2005 | 84,302 | 9.5% | 8.7% | 10.3% | 9.6% | +0.7 pp | −0.8 pp |
| Fiscal 2006 | 86,028 | 16.2% | 10.1% | 12.2% | 9.0% | +3.3 pp | +4.0 pp |
| Fiscal 2007 | 88,028 | 24.0% | 10.8% | 13.7% | 8.5% | +5.2 pp | +10.3 pp |
| Fiscal 2008 | 61,470 | 19.1% | 11.2% | 12.6% | 8.7% | +4.0 pp | +6.4 pp |
6Loss given charge-off
When a loan is charged off, the loss is taken as the gross charge-off amount SBA recorded divided by the original gross approval, averaged over the 219,457 charge-offs with a positive recorded amount and capped at 150% of approval. Overall that is 73.2% of the approval. The engine uses the cell for the loan's age bin and term band where at least fifty charge-offs support it, the age row otherwise, and the overall figure as a last resort; the table gives the term bands.
Gross means before recoveries and before the split between the lender and the guarantee. It is the balance SBA wrote off, on the whole loan, at the time it was written off. It is not the lender's realized loss, which depends on the guaranteed share purchased, the collateral recovered afterwards and the lender's own servicing, none of which the file reports at the loan level.
| Term band | Gross loss given charge-off |
|---|---|
| 3 years or less | 65.0% |
| 4 to 7 years | 79.7% |
| 8 to 10 years | 79.4% |
| 11 to 20 years | 54.6% |
| Over 20 years | 53.4% |
7Limitations
The charge-off date is administrative. SBA books the loss after the guarantee is purchased and the collateral is liquidated, often a year or more after the business closed, so the charge-off hazard here is the hazard of a loss being recognized, and the age curve carries that delay.
The file has no delinquency history and no payment history. An interest rate is present for roughly half the loans, so it is not in the model. The collateral indicator carries a positive sign on charge-off because lenders ask for collateral from the borrowers they worry about; the model reports that selection and says nothing causal about collateral.
BankName in the file is the current assignee of the loan, not the originating lender, so lender identity is not usable as a factor and is not in the model.
The 2020 to 2021 loan-quarters are distorted by pandemic policy. Under the CARES Act SBA paid six months of principal and interest on 7(a) loans, which held both exits down through a labor shock the unemployment term would otherwise have read as severe. The coefficients are full-sample averages that include those quarters.
The model describes the whole loan. It does not model the guarantee mechanics: which share SBA purchased, when, or what the lender's own exposure was, so the expected loss it reports is a gross figure on the approval. A lender's own loss would be smaller by the guaranteed share purchased and by any recoveries.
Unemployment is the borrower's state rate in estimation but the national path in projection, because the supervisory scenarios are national. A book concentrated in one state will move more or less than the projection says.
The uncertainty bands cover the coefficients only, drawn from the clustered covariance. They do not cover the scenario path, the loss given charge-off, or the choice of specification.
Every loan is treated as booked at the 2026 Q2 jump-off, so a projected book is a book of new originations run forward. A seasoned portfolio with loans at different ages would need each loan started at its own age, which the engine does not do.
The backtests here are the developer's own. Independent validation is the situation model risk management exists to create, and this document does not substitute for it.
8Current projection
The selection in the lab at the time this document was generated: A book like fiscal 2025 originations, $100.0M of approvals in the book's mix, projected from a stratified sample of its loans and weighted by approval dollars. Every loan is treated as booked at 2026 Q2 and run 20 quarters (5 years) forward under each scenario. Shares are of the book's approved dollars at the horizon; expected loss is the sum over quarters of the charge-off hazard times what is still outstanding times loss given charge-off, as a percent of approval and in dollars on the exposure.
On the Fed baseline path 3.0% is charged off within 5 years with the charge-off hazard peaking at 0.28% per quarter in quarter 15; on the Fed severely adverse path it is 4.4%, +1.5 points, with the peak at 0.39% in quarter 9.
| Scenario | Charged off at 20 quarters | Paid off | Still open | Expected loss, % of approval | Expected loss on $100.0M |
|---|---|---|---|---|---|
| Fed baseline | 2.97% | 33.01% | 64.02% | 2.28% | $2.3M |
| Fed severely adverse | 4.43% | 25.33% | 70.24% | 3.43% | $3.4M |
| 2008 replay | 4.67% | 24.89% | 70.44% | 3.59% | $3.6M |
| Custom scenario | 3.43% | 30.57% | 66.00% | 2.66% | $2.7M |
9Sources and references
Sources: U.S. Small Business Administration, 7(a) loan-level FOIA files, snapshot as of 2026-06-30; FRED: UNRATE and state unemployment rates (monthly, averaged to quarters); FRED: MPRIME (bank prime loan rate, monthly, averaged to quarters); Federal Reserve Board: 2026 Supervisory Scenarios (final), domestic variables.
References: Allison (1982), Discrete-time methods for the analysis of event histories; Aalen & Johansen (1978), An empirical transition matrix for non-homogeneous Markov chains; Putter, Fiocco & Geskus (2007), Tutorial in biostatistics: competing risks and multi-state models; Board of Governors, SR 11-7: Supervisory Guidance on Model Risk Management (2011).
Model build 2026-09-30, data snapshot 2026-06-30, method: Multinomial logit (continue / paid in full / charged off), Newton-Raphson, loan-clustered standard errors. Rebuild with node scripts/build-seasoning-model.mjs; the script fetches every input again, re-estimates the model, reruns both backtests and rewrites the model file this page reads. There is no manual step between the data and the display.