42
Red alerts
Immediate attention required
11
Amber alerts
Monitor closely
347
Green — performing
86.75% of portfolio
0.968
Holdout AUC-ROC
Unseen data
12.5%
Default rate
50 bad / 400 total
0.032
Gen. gap (AUC)
Well below 0.10 threshold
Alert distribution400 borrowers
AUC by split
Ensemble weights
Top 5 at-risk borrowers
| Borrower | Score | Alert | Miss % |
|---|---|---|---|
| BAD-0044 | RED | 38.5% | |
| BAD-0017 | RED | 30.8% | |
| BAD-0000 | RED | 30.8% | |
| BAD-0020 | AMBER | 30.8% | |
| BAD-0029 | RED | 30.8% |
Score distributionEnsemble risk score
1.000
Train AUC
F1=1.000 · Acc=1.000
1.000
Val AUC
F1=0.800 · Acc=0.983
1.000
Test AUC
F1=0.941 · Acc=0.983
0.968
Holdout AUC
F1=0.833 · Acc=0.950
ROC curves — all splits
Metrics by split
Confusion matrix — holdout
100
True Negative
Good predicted Good
Good predicted Good
4
False Positive
Good predicted Bad
Good predicted Bad
2
False Negative
Bad predicted Good
Bad predicted Good
14
True Positive
Bad predicted Bad
Bad predicted Bad
Generalization gap analysis
✓ No overfitting detected
Train-holdout gap 0.032 — well below 0.10 threshold
Feature importance (permutation, IF)
Feature categories
Feature descriptions
| Feature | Category | Importance | Description |
|---|---|---|---|
| min_payment_ratio | Coverage | 0.01139 | Minimum ratio of paid vs. scheduled amount over period |
| sofr_exposure | Macro | 0.00910 | SOFR rate × avg days late — macro-weighted delinquency |
| payment_ratio_std | Coverage | 0.00908 | Standard deviation of monthly payment ratios |
| avg_payment_ratio | Coverage | 0.00886 | Mean ratio of paid vs. scheduled amount |
| avg_days_late | Delinquency | 0.00841 | Average days between due and paid date |
| max_days_late | Delinquency | 0.00827 | Worst single-month delinquency event |
| cumulative_coverage | Coverage | 0.00754 | Total paid / total scheduled over observation window |
| velocity_ratio | Velocity | 0.00651 | Older payment ratio minus recent — deterioration velocity |
Data pipeline
Data download
SOFR · Lending Club · FRED
→
Synthetic fallback
400 borrowers · 24 months
→
Feature engineering
22 features · 12-lag sequences
→
4-way split
40/15/15/30
Model ensemble
Isolation Forest
Unsupervised · weight 30%
+
LSTM Autoencoder
Temporal anomaly · weight 25%
+
XGB + LGB + RF
Supervised ensemble · weight 45%
→
Ensemble score
GREEN / AMBER / RED
Alert thresholds
GREEN (performing)
< 0.35
AMBER (watch)
0.35–0.60
RED (immediate)
> 0.60
Data split details
Train (160 borrowers)
40%
Validation (60)
15%
Test (60)
15%
Holdout (120)
30%
Context provided to AI
Portfolio: 400 borrowers · Default rate 12.5%
Alert levels: RED=42 · AMBER=11 · GREEN=347
Top 5 at-risk: BAD-0044, BAD-0017, BAD-0000, BAD-0020, BAD-0029
Holdout AUC: 0.9678 · Gen gap: 0.032
Top drivers: min_payment_ratio, sofr_exposure, payment_ratio_std, avg_payment_ratio, avg_days_late
Pipeline status
Data downloadComplete
Feature engineering22 features
Isolation ForestFitted · n=300
LSTM Autoencoder60 epochs · AE
Supervised ensembleVal AUC 1.000
Optuna tuning15 trials
Watchlist generated400 scored