Framework de análisis de concentración de riesgo — Resultados sobre CreditPortfolioData.xlsx
A continuación presento el workflow completo ya implementado sobre tu fichero y la interpretación de las principales métricas, siguiendo la lógica de los 21 pasos que describes.
1. Revisión del archivo y construcción del portfolio (PASOS 1–2)
Estructura real del Excel (tras revisar el fichero):
- El archivo
file-FtQsAoY47VTZsCjZVt2Wtd.xlsxcontiene las hojas:EAD: una sola columna numérica, sin cabecera → usada comoExposure.PD: una sola columna numérica, sin cabecera → usada comoPD.LGD: una sola columna numérica, sin cabecera → usada comoLGD.Maturity: una sola columna numérica, sin cabecera → usada comoMaturity.FactorCorr2F,Weights2F: matrices de factores no utilizadas en este workflow de concentración.
- No hay columnas de
Sector,Region,Rating,Industry. Según tu instrucción, simplemente se omiten los análisis por segmento que las requieran.
Construcción del DataFrame de portfolio limpio:
- Se creó un
ObligorIDimplícito por fila: 1, 2, …, N. - Se unieron las series por índice:
- Columnas finales:
ObligorID,Exposure,PD,LGD,Maturity.
- Columnas finales:
- Limpieza aplicada:
- Conversión a numérico de todas las columnas.
- Eliminación de duplicados de
ObligorID(no había problemas). - Eliminación de filas con
ExposureNaN. - Filtrado a
Exposure > 0.
- Número final de obligors: 100.
- No se generaron warnings de validación sobre exposiciones.
Archivo exportado principal del workflow:
- Excel con todos los resultados: Download file
CSV clave (por si quieres tratarlos en otro entorno):
- Portfolio limpio (PASO 1–2): Download file
- Escenarios de stress (PASO 10–11): Download file
- Sensibilidades marginales (PASO 12): Download file
- Contribuciones al HHI (PASO 7): Download file
2. Exposición total y estadísticas básicas (PASOS 2–3)
Variables clave:
- TotalExposure (suma de todas las exposiciones): 3143.16 (unidades de exposición, p.ej. millones de dólares).
- Número de obligors: 100.
- ExposureShare_i = Exposure_i / TotalExposure.
Estadísticos de Exposure:
| Métrica | Valor |
|---|---|
| NumObligors | 100.00 |
| TotalExposure | 3143.16 |
| Mean | 31.43 |
| Median | 18.87 |
| StdDev | 37.27 |
| Min | 2.39 |
| Max | 184.64 |
| P5 | 3.69 |
| P10 | 4.14 |
| P25 | 5.99 |
| P50 | 18.87 |
| P75 | 43.91 |
| P90 | 74.43 |
| P95 | 105.54 |
| P99 | 175.95 |
Interpretación:
- La mediana (≈18.9) es muy inferior al máximo (≈184.6), lo que indica cola pesada en exposiciones grandes.
- Las percentiles muestran que a partir de P90–P99 las exposiciones crecen rápido, apoyando la idea de fuerte concentración en la parte alta.
Gráfico 1 — Histograma de exposiciones (PASO 3 / GRÁFICO 1)
- Muestra una masa principal de exposiciones pequeñas/medianas, con pocos outliers grandes.
Gráfico 2 — Top 10 exposures (PASO 3 / GRÁFICO 2)
- Confirma la existencia de unos pocos nombres muy grandes, con el mayor obligor en torno al 5.9 % de la exposición total.
3. Índices de concentración: HHI, ENE, Gini y Lorenz (PASOS 4–6)
Métricas base:
- HHI base: 0.0239
- ENE base = 1/HHI: 41.81
- Gini base: 0.558
Interpretación:
- Con 100 nombres, un portfolio perfectamente uniforme tendría HHI = 0.01 y ENE = 100.
- Tu HHI = 0.0239 y ENE ≈ 42 → el portfolio se comporta como 42 exposiciones iguales, es decir, más de un 50 % de pérdida de diversificación teórica respecto al máximo.
- Gini ≈ 0.56 (en la escala [0,1]) indica un grado de desigualdad alto en la distribución de exposiciones.
Gráfico 3 — Curva de Lorenz (PASO 6 / GRÁFICO 3)
- La curva se separa claramente de la diagonal, reflejando que una minoría de obligors acumula una fracción desproporcionada de la exposición.
4. Contribución al HHI y drivers de concentración (PASOS 7–8)
Contribution_i = ExposureShare_i² / HHI.
Ejemplo de portfolio_head (10 primeros obligors por ID):
- Cada fila contiene:
ObligorID,Exposure,ExposureShare,Contribution_HHI,PD,LGD,Maturity,SizeBucket.
Gráfico 4 — Top 10 contributions to HHI (GRÁFICO 4)
Ranking de drivers de concentración (tabla concentration_drivers):
- Por exposición vs por contribución al HHI; para Top 1, 5, 10, 20:
| TopK | Ranking | CumExposureShare | CumHHIContribution |
|---|---|---|---|
| 1 | ByExposure | 0.0587 | 0.1443 |
| 1 | ByContribution | 0.0587 | 0.1443 |
| 5 | ByExposure | 0.2399 | 0.4953 |
| 5 | ByContribution | 0.2399 | 0.4953 |
| 10 | ByExposure | 0.3894 | 0.6848 |
| 10 | ByContribution | 0.3894 | 0.6848 |
| 20 | ByExposure | 0.5884 | 0.8518 |
| 20 | ByContribution | 0.5884 | 0.8518 |
Interpretación:
- Top 1: 5.9 % de la exposición, pero 14.4 % del HHI.
- Top 5: 24.0 % de exposición → 49.5 % del HHI.
- Top 10: 38.9 % de exposición → 68.5 % del HHI.
- Top 20: 58.8 % de exposición → 85.2 % del HHI.
Es decir, la mitad del HHI la explican solo 5 nombres, y casi todo el HHI (85 %) se concentra en 20 obligors.
5. Pareto y buckets de tamaño (PASO 9 y 16)
Pareto TopK (tabla pareto_topk):
| TopK | % Exposición acumulada |
|---|---|
| 1 | 5.9 % |
| 5 | 24.0 % |
| 10 | 38.9 % |
| 20 | 58.8 % |
Gráfico 12 — Pareto curve (GRÁFICO 12)
Buckets de tamaño (Small / Medium / Large) como sustituto de segmento:
-
Se divide por terciles de
Exposure. -
Tabla
size_buckets:- Cantidad de obligors, exposición total, share, share de contribución HHI por bucket.
Esto da una visión de concentración por “tamaño de nombre” en ausencia de sector/rating.
6. Escenarios de shocks de exposición (PASOS 10–11, 13, 14)
Se definen grupos de 10 obligors cada uno:
Top: 10 mayores exposures.Medium: 10 alrededor de la mediana.Small: 10 más pequeños.
Para cada grupo y shocks +1 %, +5 %, +10 %, +25 %, +50 % se recalculan:
- TotalExposure, HHI, ENE, Gini y TopExposureShare.
Ejemplo (cabecera de scenario_stress_head, grupo Top y Medium):
| Group | Shock | HHI | ENE | Gini | TotalExposure | TopExposureShare |
|---|---|---|---|---|---|---|
| Top | 0.01 | 0.0241 | 41.56 | 0.559 | 3155.40 | 0.0591 |
| Top | 0.05 | 0.0246 | 40.60 | 0.564 | 3204.36 | 0.0605 |
| Top | 0.10 | 0.0253 | 39.45 | 0.571 | 3265.56 | 0.0622 |
| Top | 0.25 | 0.0275 | 36.34 | 0.589 | 3449.16 | 0.0669 |
| Top | 0.50 | 0.0311 | 32.15 | 0.616 | 3755.16 | 0.0738 |
Conclusión no linealidad (PASO 13):
- Al aumentar fuertemente la exposición de los Top, el HHI sube de 0.0239 a 0.0311 (shock +50 %), y la ENE baja de ~41.8 a ~32.2.
- El incremento del HHI por unidad de shock se acelera a medida que el shock crece: se observa convexidad en la concentración.
Gráfico 9 — HHI vs shock para el mayor obligor (GRÁFICO 9)
Top name stress (PASO 14, tabla topname_stress y GRÁFICO 10)
- Se shockea solo el mayor obligor con
+1 %, +5 %, +10 %, +25 %, +50 %, +100 %. - Para cada shock se recalculan: HHI, ENE, TopShare, Gini.
- En resumen: el top obligor es ya suficientemente grande para que shocks individuales tengan un impacto no despreciable en HHI y Gini (vulnerabilidad a concentración extrema).
Gráfico combinado:
7. Sensibilidad marginal por obligor (PASO 12)
Definición implementada:
-
Pequeño bump del 1 % en la exposición individual de cada obligor.
-
Para cada i:
- Sensitivity_HHI_i = ΔHHI / ΔExposure_i.
- Sensitivity_ENE_i = ΔENE / ΔExposure_i.
Se calculan de forma analítica para evitar 100 re-cálculos explícitos.
Resultados clave (tabla sensitivities_head — top 10 por Exposure):
- Los obligors más grandes tienen sensibilidades negativas de ENE más fuertes (mayor empeoramiento de diversificación por unidad de exposición añadida).
- Por ejemplo, el mayor obligor (Exposure ≈ 184.6) tiene la mayor magnitud absoluta de
Sensitivity_ENE.
Gráficos:
-
GRÁFICO 7 — Sensibilidad de HHI (Top exposures):
-
GRÁFICO 8 — Sensibilidad de ENE (Top exposures):
Estos gráficos identifican directamente los drivers marginales de concentración.
8. Escenarios de diversificación (PASO 15)
Se simulan tres escenarios:
- Base: sin cambios.
- Cap: límite máximo de exposición = 3 × mediana.
- Uniform: redistribución uniforme manteniendo TotalExposure.
- Top10_Redistrib: reducción del 20 % de los top 10, re-asignando a la mitad inferior.
Tabla diversification_scenarios:
| Escenario | HHI | ENE | Gini | TotalExposure |
|---|---|---|---|---|
| Base | 0.0239 | 41.81 | 0.558 | 3143.16 |
| Cap | 0.0168 | 59.43 | 0.452 | 2422.88 |
| Uniform | 0.0100 | 100.0 | ~0.0 | 3143.16 |
| Top10_Redistrib | 0.0187 | 53.49 | 0.464 | 3143.16 |
Interpretación:
- El escenario Cap reduce considerablemente HHI y Gini, aunque también reduce TotalExposure (por cómo se define el recorte).
- El escenario Uniform es el benchmark de máxima diversificación (ENE ≈ 100; Gini ≈ 0).
- El escenario Top10_Redistrib logra una mejora significativa de diversificación (ENE ≈ 53.5 vs 41.8) sin cambiar la exposición total.
Gráfico 11 — Escenarios de diversificación (GRÁFICO 11)
9. Relación entre PD / LGD y concentración (PASOS 17–18)
PD:
- Exposure-weighted PD: 0.02184
- Concentration-weighted PD: 0.01554
Interpretación:
- La PD ponderada por HHI (es decir, ponderando más los obligors que más concentran exposición) es menor que la PD ponderada por exposición.
- Esto sugiere que, en promedio, los nombres grandes no son los de mayor PD, lo que mitiga parcialmente el riesgo de concentración de default.
Gráfico 13 — Exposure vs PD (GRÁFICO 13)
LGD (tail risk):
- Se buscó tail de riesgo: exposiciones ≥ P90 de Exposure y LGD ≥ P75 de LGD.
- En esta muestra, la tabla de tail (
LGD_Tail) resultó con:- TailExposureShare_LGD: 0.0
- TailAvgLGD: 0.0
Es decir, no se identificó un subgrupo claro de exposiciones extremadamente grandes y con LGD también extremadamente alta (en este dataset concreto).
Gráfico 14 — Exposure vs LGD (GRÁFICO 14)
10. Validaciones (PASO 19)
Los checks aplicados:
- Exposures positivas: ✔
- Suma de
ExposureShare≈ 1 (tolerancia numérica): ✔ - HHI en (0, 1]: ✔
- ENE > 0: ✔
- Gini ∈ [0,1]: ✔
- Métricas de escenarios sin NaN: ✔
- Sensibilidades sin NaN: ✔
No se generaron advertencias de validación.
11. Conclusiones y recomendaciones (PASOS 20–21)
Conclusiones de concentración:
-
Concentración relevante en top names:
- Top 10 explican ≈ 39 % de la exposición y ≈ 69 % del HHI.
- ENE ≈ 42 (muy por debajo de 100) indica una diversificación moderada, no alta.
-
No linealidad y vulnerabilidad a shocks:
- Shocks moderados/grandes en top obligors generan incrementos acelerados de HHI y caídas de ENE.
- El portfolio es sensible a cambios en los nombres grandes, sobre todo al top 1.
-
Relación con PD y LGD:
- Los grandes nombres no concentran las PD más elevadas (concentration-weighted PD < exposure-weighted PD).
- No se observa una cola clara de exposiciones muy grandes con LGD extremadamente alta.
-
Potencial de mejora vía diversificación:
- Escenarios de caps y redistribución de top 10 muestran que es posible:
- Bajar HHI de 0.0239 a ~0.0187 o incluso 0.0168.
- Aumentar ENE a ~53–59.
- Esto se puede lograr sin reducir necesariamente la exposición total (ver escenario
Top10_Redistrib).
Recomendaciones de gestión de concentración:
- Definir límites de concentración (por nombre) coherentes con:
- Nivel objetivo de ENE (por ejemplo, ENE > 60) o
- Máximo HHI (por ejemplo, HHI < 0.02).
- Priorizar:
- Monitoreo continuo de los obligors que más contribuyen al HHI (top 10–20 de
Contribution_HHI). - Evaluar conjuntamente exposición + PD + LGD para calibrar límites de concentración en términos de capital/economic risk, no solo nominal.
- Monitoreo continuo de los obligors que más contribuyen al HHI (top 10–20 de
- Usar los escenarios tipo:
- “Top10_Redistrib” como plantilla para propuestas de redistribución de líneas (down-sizing de top names y up-sizing de pequeños/medianos) manteniendo el RWA o el target de retorno.
- Integrar estos outputs en un dashboard recurrente:
- HHI, ENE, Gini.
- Curva de Lorenz y Pareto.
- Sensibilidades marginales por obligor.
- Escenarios de stress predefinidos (shocks y caps).
12. Siguientes pasos posibles
Si quieres, puedo:
- Adaptar este mismo framework:
- A otro fichero de portfolio (con sectores, ratings, etc.) para extender los PASOS 9 y siguientes por segmento.
- Traducir el flujo a:
- Pseudocódigo detallado,
- O a una plantilla en Python / R / MATLAB para que lo integréis en vuestro propio sistema.
- Añadir:
- Métricas de concentración de P&L o de capital (si proporcionas
parámetros adicionales, p.ej. correlaciones Basel, EAD/CF, etc.).
- Métricas de concentración de P&L o de capital (si proporcionas
parámetros adicionales, p.ej. correlaciones Basel, EAD/CF, etc.).
Propuesta de nombres para el ejercicio
Algunas opciones que encajan bien con el contenido y la ambición del workflow:
- “Análisis Integral de Concentración de Riesgo de Crédito con HHI y Gini”
- “Framework de Sensibilidad y Stress Testing de Concentración en Carteras de Crédito”
- “Medición de Concentración y Diversificación en un Credit Portfolio (HHI, ENE, Gini)”
- “Top-Name Risk, Pareto y Escenarios de Diversificación en una Cartera de Crédito”
- “Workflow Completo de Análisis de Concentración de Exposición en Carteras de Crédito”
Si quieres algo más corto y “de libro”, mi favorito sería:
- “Análisis de Concentración y Diversificación en Carteras de Crédito (HHI–ENE–Gini)”

