Visión general
He construido y ejecutado un pipeline completo de riesgo de crédito corporativo sobre tu Excel transitions.xlsx (fichero Proxima file-1qWwisiEVm25mzYcPHsNLB.xlsx) cubriendo:
- Carga y validación de matrices de transición, emisores, nuevos emisores y macro (CPF, SPR, recesión).
- Conversión a conteos de transición, agregación IG/SG y cálculo de tasas de default.
- Análisis PIT vs TTC y recesión/expansión.
- Construcción de predictores (AGE, CPF, SPR, SG proportion), regresión lineal de forecast, diagnóstico estadístico.
- Backtesting rolling desde 1995 comparando modelo vs PIT vs TTC.
- Impacto económico en reservas (LGD 45%, EAD 100bn).
- Intervalos de predicción, stress testing macro (escenarios discretos y contour CPF×SPR).
- Requerimiento de capital Basel II (Vasicek) sobre el grid de stress.
A continuación resumo la lógica, la calidad de datos, los resultados clave y te dejo todos los ficheros y gráficos exportados.
1. Revisión cuidadosa del dataset y supuestos
Estructura y validaciones
- Años: 1981–2005 (25 años), consistentes entre:
Years,CPF,SPR,Recession.nIssuers(25×7),nNewIssuers(25×7).
- Ratings “plenos” en emisores:
['AAA','AA','A','BBB','BB','B','CCC']. - Matrices de transición
TransMat_1…TransMat_25:- 6×9 cada una, en porcentajes.
- Columnas asumidas como estados:
['AAA','AA','A','BBB','BB','B','CCC','D','NR']. - Las filas 2–7 de cada hoja se toman como la matriz 6×9 (primera fila = cabecera).
Inconsistencia clave: emisores tienen 7 ratings, pero cada matriz de transición sólo 6 filas.
Supuesto explícito (crítico):
- Se descarta la columna AAA de nIssuers y nNewIssuers para alinear con las 6 filas de las matrices.
- Se trabaja con
ratings_active = ['AA','A','BBB','BB','B','CCC']. - AAA se asume emisores residuales/negligibles para este ejercicio y no se modela explícitamente.
El informe de calidad de datos está exportado en:
Puntos clave del data quality:
years_range: 1981–2005,num_years: 25.trans_prob_shape: 25×6×9.- Row sums de matrices de transición tras dividir por 100: entre 0.9998 y 1.0002 (numéricamente muy consistentes).
- Sin
NaNen macro ni en emisores/nuevos emisores.
2. Conteos de transición y estructuras cohort
Construcción de conteos
Para cada año t:
- Pt = matriz de transición (6×9) en probabilidad.
- Nt = vector de emisores por rating activo (6×1).
Counts_t = diag(N_t) @ P_t(6×9) → números esperados de migraciones por origen/destino.
Se exportan:
-
Conteos anuales por matriz:
- Por ejemplo, 1981: Download file …y así para todos los años hasta 2005.
-
Conteos en formato largo (cohort approach):
Visualización de matrices de transición
Se han generado heatmaps Plotly para la primera y última matriz:
-
Primera matriz:
-
Última matriz:
3. Default rates IG/SG/Overall
Agregación IG/SG
Dado el recorte a 6 ratings activos:
- IG = [AA, A, BBB].
- SG = [BB, B, CCC].
- Default = destino
D.
Para cada año:
- DefRateIG = (defaults desde IG) / (emisores IG al inicio).
- DefRateSG = (defaults desde SG) / (emisores SG).
- DefRateOverall = (defaults totales) / (emisores totales).
Archivo con todas las series:
Estadísticas descriptivas (197 años-año):
-
Medias (PIT):
- IG: 0.108% (0.001085).
- SG: 4.426% (0.04426).
- Global: 1.554% (0.01554).
-
Máximos:
- IG: 0.48%.
- SG: 11.0%.
- Global: 3.89%.
-
Volatilidad:
- Desv. típica IG: 0.112%.
- Desv. típica SG: 2.689%.
- Desv. típica global: 1.049%.
Estas cifras están resumidas en:
default_rates_summarydentro de Download file
Gráficos de default
-
Escala lineal (con sombreado de recesión):
-
Escala log (para enfatizar épocas de bajo default):
Interpretación:
- SG es varias veces más riesgoso que IG, con picos de ~11% en crisis.
- El global está dominado por SG en recesiones; el IG se mantiene muy bajo y estable.
4. PIT vs TTC y recesión/expansión
Niveles medios
Resumen en:
-
PIT mean = TTC (media muestral) por construcción.
-
Diferencias recesión/expansión muy marcadas:
- Para SG, la media en recesión es claramente superior a la de expansión.
- Para IG, el diferencial es más moderado pero apreciable.
Gráficos
-
PIT vs TTC global:
-
Recession vs expansion (IG/SG/Overall):
Conclusión:
- Evidente prociclicidad del PIT, sobre todo en SG.
- El TTC (media histórica) es mucho más estable.
5. Constructores de predictores y estadísticos
Se construyen:
- AGEt=100⋅emisorestotalestnuevosemisorest−3.
- SGProportiont = cuota de emisores SG.
- AGESGt=AGEt⋅SGProportiont.
- Se alinean con DefRateOverallt+1 como objetivo.
Dataset de regresión:
Descriptivos de predictores (21 observaciones utilizables):
- AGE medio ≈ 10.97% (rango ~5.1%–17.2%).
- CPF medio ≈ 3.0, rango amplio (-6.35 a 12.23).
- SPR medio ≈ 2.17, rango ~1.27–3.46.
- SGProportion medio ≈ 0.333 (25–40%).
Resumen en:
Download file (heatmap de correlaciones) y Download file (time series).
Scatter plots de PD vs cada predictor:
- AGE: Download file
- CPF: Download file
- SPR: Download file
- SGProportion: Download file
- AGESG: Download file
6. Modelo de forecasting
Especificación
Regresión OLS:
DefRatet+1=β0+β1AGEt+β2CPFt+β3SPRt+εt
Resultados detallados en:
Coeficientes estimados:
- Constante: -0.0120 (p ≈ 0.07).
- AGE: +0.00141 (p ≈ 0.0018) → signo positivo esperado y estadísticamente significativo.
- CPF: -0.00112 (p ≈ 0.0006) → signo negativo esperado y muy significativo.
- SPR: +0.00777 (p ≈ 0.0045) → signo positivo esperado y significativo.
- R2 ≈ 0.762, Raj2 ≈ 0.720.
- F-test global muy significativo (p ≈ 1.5e-5).
Interpretación:
- Más “juventud” de la cartera (AGE) → mayor PD futura.
- Mejor entorno macro (CPF alto) → PD menor.
- Spreads más altos (SPR) → PD mayor.
- El ajuste in-sample es razonablemente alto para PD anuales (R² > 0.7).
Diagnóstico del modelo
Resumen numérico:
- RMSE in-sample ≈ 0.00510 (0.51 puntos porcentuales).
- MAE in-sample ≈ 0.00367.
- MAPE in-sample ≈ 34.5% (grande, inevitable dado PD bajos).
- Residuales:
- Media ≈ 0.
- Desv. típica ≈ 0.00523.
- Skew ≈ -0.80 (algo sesgados a la izquierda).
- Kurtosis ≈ 0.59 (ligeramente leptocúrticos).
Breusch–Pagan:
- No se detecta heterocedasticidad significativa (p ≈ 0.72–0.77).
ACF de residuales:
- Algo de autocorrelación en lags bajos, pero no extrema.
Detalles en:
Gráficos clave:
-
Fitted vs actual:
-
Residual vs fitted, histograma, QQ, ACF, etc.:
7. In-sample fit y series temporales
Gráficos:
-
Observado vs fitted (time series):
-
Residuales en el tiempo:
-
Dispersión actual vs predicho:
8. Rolling backtest (desde 1995) y comparación PIT/TTC
Backtest desde origen 1995 hasta último año posible (t → t+1):
- Modelo lineal entrenado con datos disponibles hasta t.
- Benchmarks:
- PIT: forecast = PD observada en t.
- TTC: media histórica constante (≈ 1.554%).
Resultados resumidos en:
Métricas de error (backtest_metrics):
- RMSE:
- Modelo: 0.01207.
- PIT: 0.00912 (mejor).
- TTC: 0.01227.
- MAE:
- Modelo: 0.01063.
- PIT: 0.00725.
- TTC: 0.01039.
- Cumulative squared error:
- Modelo: 0.00146.
- PIT: 0.00083 (mejor).
- TTC: 0.00151.
Gráficos:
-
Observed vs forecasts (modelo, PIT, TTC):
-
Cumulative squared error:
Conclusión de backtest:
- El benchmark PIT (naive random walk de PD) domina a modelo y TTC en términos de error de predicción anual.
- El modelo macro añade estructura útil para stress testing y capital, pero no mejora el forecast unstep-ahead frente al PIT en este periodo y horizonte.
9. Impacto en reservas (EL) y pro-ciclicidad económica
Supuestos:
- LGD = 45%.
- TotalEAD = 100bn.
- PortfolioSize = 1000, EAD por bono = 100m (uso implícito en TotalEAD).
Para cada año del backtest:
- ELt(meˊtodo)=PDt(meˊtodo)⋅LGD⋅EAD (modelo, PIT, TTC).
- ELt(real)=PDt(real)⋅LGD⋅EAD.
- ReserveExcess = EL(meˊtodo)−EL(real).
- Se acumula el “colchón” de reservas a lo largo del tiempo.
Resultados:
Cumulativo final:
- Modelo: +3.71bn.
- PIT: +0.23bn.
- TTC: -1.14bn (déficit acumulado).
Gráfico de saldos acumulados:
Lectura regulatoria:
- Un esquema TTC puro infraprovisiona frente al realized EL en este histórico.
- El modelo macro tiende a sobreprovisionar, generando un colchón positivo.
- PIT queda casi neutro pero con más ciclicidad.
10. Intervalos de predicción
Se construyen PI al 95%:
- In-sample: cobertura ≈ 95.2% (muy cercana a 95% teórico).
- Rolling: cobertura ≈ 100% (intervalos conservadores).
Archivos:
-
In-sample PI:
-
Rolling PI:
11. Stress testing macro-financiero
Escenarios discretos (último año de predictores)
Baseline (último AGE,CPF,SPR):
- PD_base ≈ 0.5876%.
- Escenario 1 (CPF -4 puntos): PD_s1 ≈ 1.0355%.
- Escenario 2 (SPR +100bps): PD_s2 ≈ 1.3647%.
Detalles por escenario (con PI 95%):
Gráfico comparativo:
Interpretación: shocks razonables en CPF/SPR casi doblan o triplican la PD base.
Contour stress testing CPF×SPR
Con AGE fijado al último valor:
- Grid CPF, SPR alrededor del histórico (±margen).
- Se calcula PD_pred y PD_UB para cada punto.
Resultados:
Contornos:
-
PD:
-
PD Upper bound:
Uso práctico: permite localizar regiones de estrés macro (baja CPF, alta SPR) y leer directamente la PD y su upper bound regulatorio.
12. Basel II capital (Vasicek)
Sobre el mismo grid CPF×SPR:
- Se calcula PD via modelo.
- Correlación R(PD) según fórmula estándar corporates Basel II.
- Se aplica la fórmula IRB (sin granularidad/PD-floor adicionales) con LGD=45% y M=2.5.
Resumen:
- Capital requirement mín ≈ -0.00030 (numéricamente ~0).
- Máx ≈ 12.83%.
- Media ≈ 7.03%.
(Ver basel_summary en resultados.)
Grid completo:
Contour de capital:
Lectura regulatoria:
- El capital requerido reacciona fuertemente a shocks de spreads y deterioro macro.
- En la cola de estrés, capital > 10% es coherente con segmentos SG/Altos PD.
13. Comentarios de robustez y limitaciones
-
Inconsistencia estructural AAA (crítica): Se ha descartado AAA por falta de fila en las matrices.
- Impacto: subestimación ligera del universo IG y posible sesgo en tasas agregadas (aunque AAA suele tener defaults despreciables).
- Recomendación: revisar el origen del Excel y obtener matrices 7×9 o aclarar si AAA estaba embebido en AA.
-
Tamaño de muestra (21 obs útiles en regresión):
- Limita precisión de inferencias, especialmente en colas de distribución.
- Modelo lineal es un resumen parsimonioso, no un estándar de producción.
-
Benchmark PIT superior en backtest:
- Para gestión de riesgo a corto plazo, un modelo muy simple (PIT) puede ser más efectivo; el modelo macro es más valioso para stress testing y capital que para forecast táctico.
-
Supuestos Basel II simplificados:
- Se usa una implementación directa del Vasicek sin todos los ajustes regulatorios (floors, ajustes de madurez avanzados, etc.).
- Para uso regulatorio real, habría que alinear con normativa vigente específica (CRR/CRD, Fed/CCAR, etc.).
14. Entregables y próximos pasos
Ficheros clave (tablas)
Algunos de los más relevantes (además de los ya mencionados):
-
Conteos de transición anuales: por ejemplo Download file
-
Resultados de backtest: Download file
-
Análisis de reservas: Download file
-
Grid Basel II (PD, PD_UB, capital): Download file
Recomendaciones técnicas
-
Revisión de la capa de datos:
- Confirmar definición de AAA en matrices y emisores.
- Si es posible, reconstruir matrices 7×9 y repetir el pipeline.
-
Extensiones de modelo:
- Probar especificaciones no lineales (log-PD, términos cuadráticos, interacciones).
- Explorar modelos de tiempo (ARIMA con exógenas) y/o modelos de régimen (Markov-switching).
-
Enfoque regulatorio:
- Documentar formalmente supuestos TTC vs PIT para reservas y capital.
- Calibrar floors de PD y LGD según estándares regulatorios específicos.
-
Uso práctico:
- Integrar este pipeline en una herramienta interna donde puedas:
- actualizar matrices anualmente;
- recalibrar regresión;
- lanzar escenarios macro ad hoc y leer directamente PD, EL, y capital Basel.
Si quieres, en el siguiente paso puedo:
- Ajustar una variante del modelo (por ejemplo, sobre log-PD) y comparar con el modelo actual.
- O centrar el análisis solo en IG o solo en SG con pipelines independientes.
Propuesta de título para el ejercicio
Te propongo estas opciones, en orden de “académico” a “práctico”:
- “Forecasting de tasas de default corporativo con matrices de transición, factores macro y Basel II”
- “Modelo integrado de default corporativo: PIT vs TTC, backtesting y stress testing macro–prudencial”
- “Pipeline cuantitativo de riesgo de crédito corporativo: de matrices de transición a capital Basel II”
Si quieres enfatizar la parte docente, también podrías usar:
- “Caso práctico de modelización de default corporativo y capital regulatorio Basel II”

