El riesgo de crédito constituye la forma más antigua y fundamental de riesgo financiero que enfrentan las instituciones bancarias. Cuando un banco otorga un préstamo con principal \(P\) a tasa de interés \(r\) por un período \(T\), el flujo de efectivo esperado al vencimiento es:
Sin embargo, el flujo de efectivo real es una variable aleatoria gobernada por la capacidad y voluntad del prestatario de pagar. El flujo de efectivo realizado se convierte en:
La diferencia entre el flujo esperado y el real representa la pérdida crediticia. El riesgo genera estocasticidad en los flujos de efectivo — un concepto central en toda la gestión cuantitativa de riesgos. El objetivo de todo el ejercicio de gestión de riesgos es minimizar esta incertidumbre y estabilizar los flujos de efectivo de la organización.
Un banco presta $100,000 a una tasa de interés anual del 12% a un año. Sin incumplimiento, el banco recibe $112,000. Si el prestatario incumple con recuperación cero, el banco pierde los $100,000 completos.
Si la probabilidad de incumplimiento es del 2%, la pérdida esperada es:
$$E[P\acute{e}rdida] = PD \times LGD \times EAD = 0.02 \times 1.0 \times \$100{,}000 = \$2{,}000$$La utilidad esperada neta de pérdidas esperadas es $12,000 − $2,000 = $10,000. El banco debe asegurar que la prima de riesgo incorporada en la tasa de interés compense adecuadamente esta pérdida esperada y la incertidumbre asociada.
El riesgo de crédito domina el perfil de riesgo de los bancos comerciales, representando típicamente entre el 60% y 80% de la asignación total de capital económico. La Crisis Financiera Global de 2008 demostró cómo una gestión deficiente del riesgo crediticio puede propagarse a través de todo el sistema financiero.
Importancia Sistémica. Los bancos canalizan fondos desde unidades superavitarias (depositantes) hacia unidades deficitarias (prestatarios). Cuando las pérdidas crediticias superan las expectativas, el capital bancario se erosiona, la capacidad de préstamo se contrae y el crecimiento económico se estanca.
Capital Regulatorio. Bajo el marco de Basilea, los bancos deben mantener capital regulatorio proporcional a sus exposiciones crediticias. El requerimiento mínimo de capital bajo el enfoque IRB utiliza el modelo ASRF (Factor Único de Riesgo Asintótico):
donde \(\Phi\) es la FDA normal estándar, \(\Phi^{-1}\) su inversa, y \(\rho_i\) el parámetro de correlación de activos.
Valor para el Accionista. El Retorno Ajustado por Riesgo sobre Capital (RAROC) permite comparar líneas de negocio con diferentes perfiles de riesgo:
| Línea | Función | Responsabilidad | Actividades Clave |
|---|---|---|---|
| 1era | Unidades de Negocio | Propiedad del Riesgo | Originación, suscripción, decisiones crediticias diarias |
| 2da | Gestión de Riesgos | Supervisión del Riesgo | Desarrollo de modelos, validación, establecimiento de políticas |
| 3era | Auditoría Interna | Aseguramiento Independiente | Pruebas de efectividad, verificación de cumplimiento |
| Era | Período | Desarrollos Clave | Limitaciones |
|---|---|---|---|
| Juicio Experto | Pre-1960 | Decisiones basadas en experiencia | Subjetivo, inconsistente |
| Estadística | 1960–1980 | Z-Score de Altman (1968), scoring FICO | Datos limitados, modelos estáticos |
| Portafolio | 1990s | CreditMetrics (1997), modelo KMV | Correlaciones supuestas |
| Regulatoria | 2000s | Basilea II (2004), enfoque IRB | Prociclicidad, fallas expuestas por la CFG |
| Moderna | 2010–Hoy | Basilea III, NIIF 9, ML, CCAR/DFAST | Complejidad, explicabilidad |
Los productos de banca minorista forman la columna vertebral del crédito al consumo, sirviendo a hogares individuales y generando una porción significativa de los ingresos bancarios. Cada tipo de producto exhibe características de riesgo distintas que impulsan enfoques de modelización especializados.
Una hipoteca a tasa fija estándar con principal \(P\), tasa anual \(r\) y plazo \(n\) meses produce pagos mensuales de:
Relación Préstamo-Valor (LTV): \(\displaystyle LTV = \frac{\text{Monto del Préstamo}}{\text{Valor del Inmueble}} \times 100\%\)
Relación Deuda-Ingreso (DTI): \(\displaystyle DTI = \frac{\text{Pagos Mensuales Totales de Deuda}}{\text{Ingreso Mensual Bruto}} \times 100\%\)
Razón de Cobertura del Servicio de Deuda (DSCR): \(\displaystyle DSCR = \frac{\text{Ingreso Operativo Neto}}{\text{Servicio Total de Deuda}}\)
Un prestatario solicita una hipoteca de $400,000 sobre una propiedad avaluada en $500,000. Ingreso mensual bruto = $10,000, deuda mensual existente = $1,500.
LTV: \(400{,}000 / 500{,}000 = 80\%\)
Pago Mensual al 6.5%, 30 años: \(PMT = \$2{,}528\)
DTI: \((1{,}500 + 2{,}528) / 10{,}000 = 40.3\%\) — en el límite superior del umbral de hipoteca calificada (43%).
La evolución de precios inmobiliarios se modela comúnmente con Movimiento Browniano Geométrico (MBG):
donde \(S\) es el precio del inmueble, \(\mu\) es la tendencia (drift), \(\sigma\) la volatilidad, y \(dW_t\) es un incremento del proceso de Wiener.
El Factor de Conversión de Crédito (CCF) es crítico para la estimación de EAD:
Límite de crédito = $20,000, saldo actual = $8,000, CCF = 65%.
$$EAD = \$8{,}000 + 0.65 \times (\$20{,}000 - \$8{,}000) = \$15{,}800$$Los prestatarios en dificultades incrementan su utilización antes del incumplimiento, haciendo que la EAD sea significativamente mayor que el saldo actual.
Los préstamos personales son productos a plazos no garantizados con cuotas fijas. Tasas más altas (8–25%) compensan la ausencia de colateral. Saldo vigente en el momento \(t\):
Los créditos automotrices están garantizados por el vehículo financiado, con el riesgo de depreciación como desafío principal — los vehículos pierden valor rápidamente, generando frecuentemente posiciones de patrimonio negativo.
El patrimonio negativo (\(LTV > 100\%\)) alcanza su máximo típicamente entre los meses 12–24.
| Categoría | Razón | Fórmula | Referencia |
|---|---|---|---|
| Apalancamiento | Deuda/Capital | \(\text{Deuda Total}/\text{Capital}\) | < 2.0x |
| Apalancamiento | Deuda/EBITDA | \(\text{Deuda Total}/\text{EBITDA}\) | < 4.0x |
| Cobertura | Cobertura de Intereses | \(\text{EBIT}/\text{Gasto de Intereses}\) | > 3.0x |
| Cobertura | DSCR | \((\text{EBITDA}-\text{CapEx})/\text{Servicio de Deuda}\) | > 1.25x |
| Liquidez | Razón Corriente | \(\text{Activos Corrientes}/\text{Pasivos Corrientes}\) | > 1.5x |
Las líneas revolventes corporativas funcionan como respaldo de liquidez ($50M–$5,000M para corporativos grado de inversión).
Las cartas de crédito son pasivos contingentes con CCFs desde 20% (comerciales) hasta 100% (garantías financieras). Los productos de financiamiento comercial exhiben menores tasas de incumplimiento por su naturaleza autoliquidable.
| Producto | Rango PD | LGD | Estabilidad EAD | Colateral | Ponderación Basilea (SA) |
|---|---|---|---|---|---|
| Hipoteca Residencial | 0.5%–3% | 15–30% | Alta | Inmueble | 35–100% |
| Tarjeta de Crédito | 2–8% | 70–90% | Baja | Ninguno | 75% |
| Préstamo Personal | 3–10% | 80–100% | Media | Ninguno | 75% |
| Crédito Automotriz | 1–5% | 40–60% | Media | Vehículo | 75% |
| Corporativo GI | 0.03–0.5% | 30–50% | Alta | Diversos | 20–100% |
| Revolvente Corporativo | 0.03–2% | 30–50% | Baja | Diversos | 20–100% |
Carácter: Reputación y voluntad de pago. Capacidad: Habilidad de pago con flujos de efectivo. Capital: Patrimonio neto y aportación propia. Colateral: Activos en garantía. Condiciones: Contexto macroeconómico e industrial.
El monitoreo post-originación utiliza scorecards de comportamiento actualizados mensualmente, seguimiento de covenants financieros y sistemas de alerta temprana.
| Etapa | DPD | Acción | Tasa de Recuperación |
|---|---|---|---|
| Temprana | 1–30 | Recordatorios automáticos | 85–95% |
| Media | 31–60 | Llamadas, reestructuración | 60–80% |
| Tardía | 61–90 | Cobranza intensiva, legal | 40–60% |
| Incumplimiento | 90+ | Acción legal, liquidación | 10–40% |
La fórmula de pérdida de portafolio de Vasicek proporciona la base analítica para la modelización de la distribución de pérdidas:
PD TTC (A Través del Ciclo): Promedio de largo plazo que suaviza las fluctuaciones cíclicas. Utilizada para capital regulatorio.
$$PD_{TTC} = \frac{1}{T}\sum_{t=1}^{T} PD_t$$PD PIT (Punto en el Tiempo): Estimación actual que refleja condiciones económicas vigentes. Requerida bajo NIIF 9.
$$PD_{PIT,t} = f(X_{prestatario}, Z_{macro,t})$$Usando el marco Merton-Vasicek con variable latente \(Y_i = \sqrt{\rho}\,Z + \sqrt{1-\rho}\,\epsilon_i\), la PD PIT condicional es:
Portafolio hipotecario: PD TTC = 2.0%, correlación de activos = 15%, factor sistémico en recesión \(z = -2.0\).
$$PD_{PIT} = \Phi\!\left(\frac{-2.054 + 0.7746}{0.9220}\right) = \Phi(-1.388) = 8.26\%$$La PD PIT es 4 veces la PD TTC bajo estrés severo.
Función de log-verosimilitud (MLE):
# ============================================================= # MODELO PD: Regresión Logística para Riesgo de Crédito # Autor: Victor Miranda | CFA Nivel II | FRM Nivel II # Entorno: Google Colab # ============================================================= import numpy as np import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import roc_auc_score from scipy import stats np.random.seed(42) n_obs = 10000 data = pd.DataFrame({ 'score_crediticio': np.random.normal(700, 80, n_obs).clip(300, 850), 'razon_dti': np.random.beta(2, 5, n_obs), 'num_moras': np.random.poisson(0.5, n_obs), 'anios_empleo': np.random.exponential(8, n_obs).clip(0, 40), 'ingreso': np.random.lognormal(10.5, 0.6, n_obs), 'monto_prestamo': np.random.lognormal(11, 0.8, n_obs), }) # Modelo logístico realista para generación de incumplimiento log_odds = (-5.0 - 0.02*data['score_crediticio']/100 + 3.0*data['razon_dti'] + 0.5*data['num_moras'] - 0.01*data['anios_empleo'] - 0.3*np.log(data['ingreso'])/10) prob = 1 / (1 + np.exp(-log_odds)) data['incumplimiento'] = (np.random.uniform(size=n_obs) < prob).astype(int) variables = ['score_crediticio', 'razon_dti', 'num_moras', 'anios_empleo', 'ingreso', 'monto_prestamo'] X_train, X_test, y_train, y_test = train_test_split( data[variables], data['incumplimiento'], test_size=0.3, random_state=42, stratify=data['incumplimiento']) modelo = LogisticRegression(max_iter=1000, random_state=42) modelo.fit(X_train, y_train) y_pred = modelo.predict_proba(X_test)[:, 1] auc = roc_auc_score(y_test, y_pred) gini = 2*auc - 1 print(f"AUC: {auc:.4f} | Gini: {gini:.4f}") for v, c in zip(variables, modelo.coef_[0]): print(f" {v:<25s}: {c:+.6f}")
Los modelos de ML para PD regulatoria permanecen bajo escrutinio supervisor. SR 11-7 exige interpretabilidad. Los bancos deben demostrar poder explicativo mediante valores SHAP, gráficos de dependencia parcial y métodos de interpretación model-agnósticos.
LGD de Recuperación utiliza datos internos de recuperaciones. LGD de Mercado se deriva de precios de bonos en incumplimiento: \(LGD_{mercado} = 1 - P_d/F\).
| Producto | LGD Media | LGD Downturn | Factores Clave |
|---|---|---|---|
| Hipoteca Residencial | 15–25% | 25–40% | LTV, ubicación |
| Corporativo Garantizado Senior | 25–35% | 40–50% | Calidad del colateral |
| Corporativo No Garantizado Senior | 40–50% | 55–70% | Industria, tamaño |
| Deuda Subordinada | 60–75% | 75–90% | Estructura de capital |
| Tarjeta de Crédito | 75–90% | 85–95% | Eficiencia de cobranza |
| Crédito Automotriz | 40–55% | 55–70% | Antigüedad del vehículo |
| Tipo de Facilidad | CCF |
|---|---|
| Incondicionalmente cancelable | 0% |
| Revolvente comprometida (otra) | 75% |
| Sustitutos directos de crédito | 100% |
| Comercio exterior de corto plazo | 20% |
| Exposición | EAD ($M) | PD | LGD | PE ($M) |
|---|---|---|---|---|
| Empresa A (GI) | 50 | 0.15% | 35% | 0.026 |
| Empresa B (Alto Rend.) | 30 | 3.00% | 45% | 0.405 |
| Empresa C (Sub-GI) | 20 | 8.00% | 60% | 0.960 |
PE Total = $1.391M. La Empresa C contribuye el 69% a pesar de ser la menor exposición.
El scoring crediticio se origina en el trabajo de David Durand (1941) con análisis discriminante. Bill Fair y Earl Isaac fundaron FICO en 1956; el score FICO (1989, rango 300–850) revolucionó el crédito al consumo. En Latinoamérica, los burós de crédito como Buró de Crédito (México), DataCrédito (Colombia), Equifax (varios países) y la Central de Riesgos (Perú) proporcionan información crediticia fundamental.
Scorecards de Solicitud (A-score): Usados en la originación; utilizan datos de buró y solicitud. Objetivo: 90+ DPD en 12 meses. Gini típico: 30–50%.
Scorecards de Comportamiento (B-score): Aprovechan datos de desempeño de cuentas existentes. Gini típico: 50–70%.
Scorecards de Cobranza (C-score): Priorizan cuentas morosas para gestión de cobranza basados en probabilidad de cura.
Pipeline: criterios de exclusión, definición de ventana de desempeño, construcción de variable objetivo, tratamiento de atípicos, imputación de valores faltantes y transformación WoE.
| Rango IV | Poder Predictivo | Acción |
|---|---|---|
| < 0.02 | Inútil | Excluir |
| 0.02–0.10 | Débil | Considerar con precaución |
| 0.10–0.30 | Medio | Buen predictor |
| 0.30–0.50 | Fuerte | Excelente (verificar sobreajuste) |
| > 0.50 | Sospechoso | Investigar fuga de datos |
# Calculadora de WoE & IV # Autor: Victor Miranda | CFA Nivel II | FRM Nivel II def calcular_woe_iv(df, variable, objetivo, bins=10): """Calcula WoE e IV para una variable continua.""" temp = df[[variable, objetivo]].copy() temp['bin'] = pd.qcut(temp[variable], bins, duplicates='drop') g = temp.groupby('bin')[objetivo].agg([('total','count'),('malos','sum')]) g['buenos'] = g['total'] - g['malos'] g['d_buenos'] = (g['buenos']/g['buenos'].sum()).clip(lower=0.0001) g['d_malos'] = (g['malos']/g['malos'].sum()).clip(lower=0.0001) g['woe'] = np.log(g['d_buenos']/g['d_malos']) g['iv'] = (g['d_buenos']-g['d_malos'])*g['woe'] return g, g['iv'].sum() for col in ['score_crediticio','razon_dti','num_moras']: tbl, iv = calcular_woe_iv(data, col, 'incumplimiento') print(f"{col}: IV = {iv:.4f}")
Objetivo: Puntaje 600 a odds 50:1, PDO = 20. Factor = 20/ln(2) = 28.854. Offset = 600 − 28.854×ln(50) = 487.12.
Odds 25:1 ⇒ Puntaje = 487.12 + 28.854×ln(25) = 580
Odds 100:1 ⇒ Puntaje = 487.12 + 28.854×ln(100) = 620
Aborda el sesgo de selección muestral al observar solo datos de solicitantes aprobados. Enfoques: parcelamiento, aumentación, corte duro.
donde CT=Capital de Trabajo, AT=Activos Totales, UR=Utilidades Retenidas, UAII=Utilidad Antes de Intereses e Impuestos, VMC=Valor de Mercado del Capital, PT=Pasivos Totales.
Z > 2.99: Zona Segura • 1.81 < Z < 2.99: Zona Gris • Z < 1.81: Zona de Peligro
CT=$150M, AT=$800M, UR=$200M, UAII=$120M, VMC=$500M, PT=$350M, Ventas=$900M
$$Z = 1.2(0.188)+1.4(0.25)+3.3(0.15)+0.6(1.429)+1.0(1.125) = \mathbf{3.052}$$Zona Segura — incumplimiento altamente improbable.
# Modelo Estructural de Merton | Victor Miranda import numpy as np from scipy.stats import norm from scipy.optimize import fsolve def modelo_merton(E, sigma_E, D, r, T): """Resuelve el modelo de Merton para valor y volatilidad de activos.""" def ecuaciones(v): V, sV = v d1 = (np.log(V/D)+(r+0.5*sV**2)*T)/(sV*np.sqrt(T)) d2 = d1 - sV*np.sqrt(T) eq1 = V*norm.cdf(d1)-D*np.exp(-r*T)*norm.cdf(d2)-E eq2 = sV*V*norm.cdf(d1)/E - sigma_E return [eq1, eq2] V0, s0 = E+D, sigma_E*E/(E+D) V_s, sV_s = fsolve(ecuaciones, [V0, s0]) d1 = (np.log(V_s/D)+(r+0.5*sV_s**2)*T)/(sV_s*np.sqrt(T)) d2 = d1 - sV_s*np.sqrt(T) return {'Valor_Activos':V_s, 'Vol_Activos':sV_s, 'Distancia_Default':d2, 'PD':norm.cdf(-d2)} res = modelo_merton(E=500e6, sigma_E=0.40, D=350e6, r=0.05, T=1.0) for k,v in res.items(): print(f" {k}: {v:.4f}" if 'PD' not in k and 'Vol' not in k else f" {k}: {v:.4%}")
| Moody's | S&P | PD 1 Año | PD 5 Años |
|---|---|---|---|
| Aaa | AAA | 0.00% | 0.04% |
| Aa | AA | 0.02% | 0.18% |
| A | A | 0.06% | 0.50% |
| Baa | BBB | 0.18% | 1.50% |
| Ba | BB | 0.82% | 7.50% |
| B | B | 3.50% | 20.00% |
| Caa–C | CCC–C | 15.00% | 50.00% |
| Gini | Calidad | Aplicación |
|---|---|---|
| < 0.25 | Deficiente | Inaceptable para uso regulatorio |
| 0.25–0.40 | Aceptable | Scorecards con expediente delgado |
| 0.40–0.55 | Bueno | Scorecards de solicitud estándar |
| 0.55–0.70 | Muy Bueno | Scorecards de comportamiento |
| > 0.70 | Excelente | Verificar sobreajuste |
PSI < 0.10: Sin cambio • 0.10–0.25: Investigar • > 0.25: Reconstruir modelo
# Validación: ROC, Gini, KS, PSI | Victor Miranda from sklearn.metrics import roc_curve, roc_auc_score def calcular_ks(y_real, y_proba): """Calcula el estadístico KS.""" fpr, tpr, _ = roc_curve(y_real, y_proba) return np.max(tpr - fpr) def calcular_psi(esperado, actual, bins=10): """Calcula el Índice de Estabilidad Poblacional.""" bp = np.percentile(esperado, np.linspace(0,100,bins+1)) bp[0], bp[-1] = -np.inf, np.inf e = np.histogram(esperado, bp)[0]/len(esperado) a = np.histogram(actual, bp)[0]/len(actual) e, a = np.clip(e,0.0001,None), np.clip(a,0.0001,None) return np.sum((a-e)*np.log(a/e)) auc = roc_auc_score(y_test, y_pred) print(f"AUC: {auc:.4f} | Gini: {2*auc-1:.4f} | KS: {calcular_ks(y_test, y_pred):.4f}")
Seguimiento trimestral de: discriminación (tendencias de AUC), calibración (PD predicha vs. observada), estabilidad (PSI/CSI) y tasas de sobreescritura (overrides).
El modelo en producción (“campeón”) se prueba contra retadores en paralelo. Prueba de DeLong para comparación de AUC.
Documentación: propósito, fuentes de datos, metodología, validación, limitaciones y procedimientos de monitoreo. Los modelos se clasifican por niveles de riesgo según materialidad.
| Calificación | AAA a AA- | A+ a A- | BBB+ a BB- | Menor a BB- | Sin Calificación |
|---|---|---|---|---|---|
| Ponderación | 20% | 50% | 100% | 150% | 100% |
Ajuste por vencimiento: \(b = [0.11852-0.05478\ln(PD)]^2\)
Correlación de activos corporativos:
EAD=$10M, PD=1.5%, LGD=45%, M=3 años.
ρ=0.187 • PD Condicional=17.91% • b=0.0602 • K=8.13% • APR=$10.16M • Capital Mín.=$813K
| Componente | Mínimo | Tipo |
|---|---|---|
| CET1 | 4.5% | Capital ordinario |
| Tier 1 Adicional | 1.5% | Preferentes perpetuas |
| Tier 2 | 2.0% | Deuda subordinada |
| Total | 8.0% | |
| Colchón de Conservación | 2.5% | CET1 |
| Colchón Anticíclico | 0–2.5% | CET1 |
| Recargo G-SIB | 1.0–3.5% | CET1 |
| Etapa | Calidad Crediticia | PCE | Intereses |
|---|---|---|---|
| 1 | Normal (sin ISRC) | 12 meses | Sobre monto bruto |
| 2 | Incremento significativo en riesgo (ISRC) | Vida completa | Sobre monto bruto |
| 3 | Deterioro crediticio (incumplimiento) | Vida completa | Sobre monto neto |
Configuración típica: escenario base (50%), optimista (20%) y adverso (30%).
Los bancos estadounidenses con activos >$100,000M deben demostrar suficiencia de capital bajo escenarios severamente adversos. En Latinoamérica, reguladores como la CNBV (México), la SFC (Colombia), la SBS (Perú) y el BCRA (Argentina) exigen pruebas de estrés adaptadas a las condiciones locales.
Trabajan hacia atrás desde un punto de falla para identificar los escenarios causantes — revelan vulnerabilidades ocultas y riesgos de cola.
| De \ A | A | B | C | Incumplimiento |
|---|---|---|---|---|
| A | 90% | 8% | 1.5% | 0.5% |
| B | 5% | 82% | 10% | 3% |
| C | 1% | 6% | 78% | 15% |
| D | 0% | 0% | 0% | 100% |
Compara tasas de incumplimiento acumuladas por cohorte de originación para identificar deterioro del portafolio.
# ============================================================= # PIPELINE COMPLETO DE MODELIZACIÓN DE RIESGO DE CRÉDITO # Autor: Victor Miranda | CFA Nivel II | FRM Nivel II # ============================================================= # !pip install scikit-learn pandas numpy matplotlib seaborn scipy import numpy as np, pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import roc_auc_score, roc_curve from scipy import stats import warnings; warnings.filterwarnings('ignore') # PASO 1: GENERACIÓN DE DATOS (50K prestatarios sintéticos) np.random.seed(42); n = 50000 df = pd.DataFrame({ 'score_crediticio': np.random.normal(690,75,n).clip(300,850), 'razon_dti': np.random.beta(2.5,6,n), 'moras_2a': np.random.poisson(0.3,n), 'utilizacion': np.random.beta(2,4,n), 'ingreso': np.random.lognormal(10.8,0.5,n), 'anios_empleo': np.random.exponential(7,n).clip(0,35), }) logit_v = (-6.5 - 0.008*df.score_crediticio + 4.0*df.razon_dti + 0.8*df.moras_2a + 2.0*df.utilizacion - 0.02*df.anios_empleo - 0.2*np.log(df.ingreso)) df['incumplimiento'] = (np.random.uniform(size=n)<1/(1+np.exp(-logit_v))).astype(int) print(f"Dimensión: {df.shape} | Tasa de Incumplimiento: {df['incumplimiento'].mean():.2%}") # PASO 2: DIVISIÓN ENTRENAMIENTO/PRUEBA vars = ['score_crediticio','razon_dti','moras_2a','utilizacion','ingreso','anios_empleo'] X_tr, X_te, y_tr, y_te = train_test_split( df[vars], df['incumplimiento'], test_size=0.3, random_state=42, stratify=df['incumplimiento']) # PASO 3: ENTRENAMIENTO DE MODELOS lr = LogisticRegression(max_iter=1000).fit(X_tr, y_tr) rf = RandomForestClassifier(n_estimators=200, max_depth=6).fit(X_tr, y_tr) # PASO 4: EVALUACIÓN for nombre, m in [('Reg. Logística',lr),('Bosque Aleatorio',rf)]: p = m.predict_proba(X_te)[:,1] a = roc_auc_score(y_te, p) print(f"{nombre}: AUC={a:.4f} Gini={2*a-1:.4f}") # PASO 5: SCORECARD pdo, s0, o0 = 20, 600, 50 factor = pdo/np.log(2) offset = s0 - factor*np.log(o0) puntajes = offset + factor*lr.decision_function(X_te) print(f"Puntaje: media={puntajes.mean():.0f} std={puntajes.std():.0f}") # PASO 6: REPORTE DE VALIDACIÓN def reporte_validacion(y, p, nombre): auc = roc_auc_score(y, p) fpr,tpr,_ = roc_curve(y, p) ks = np.max(tpr-fpr) print(f"{nombre}: AUC={auc:.4f} Gini={2*auc-1:.4f} KS={ks:.4f}") reporte_validacion(y_te, lr.predict_proba(X_te)[:,1], "Regresión Logística") reporte_validacion(y_te, rf.predict_proba(X_te)[:,1], "Bosque Aleatorio")
| Nivel | Título | Experiencia | Salario Base (USD) | Comp. Total |
|---|---|---|---|---|
| Entrada | Analista | 0–2 años | $75–100K | $85–120K |
| Medio | Analista Senior | 3–5 años | $100–140K | $120–170K |
| Senior | VP/Gerente | 6–10 años | $140–190K | $170–250K |
| Director | Director/SVP | 10–15 años | $190–280K | $250–400K |
| Ejecutivo | MD/CRO | 15+ años | $280–500K+ | $400K–1M+ |
Los salarios en la región varían significativamente. En México, Brasil y Chile, los salarios para analistas de riesgo de crédito oscilan entre $20,000–$40,000 USD anuales para posiciones de entrada, $40,000–$80,000 USD para niveles medios, y $80,000–$150,000+ USD para posiciones directivas en bancos globales operando en la región. Certificaciones como FRM, CFA, y PRM mejoran significativamente las perspectivas de carrera y compensación.
Desde \(Y_i = \sqrt{\rho}\,Z + \sqrt{1-\rho}\,\epsilon_i\), condicionando en \(Z=z\):
Para portafolios infinitamente granulares, la fracción de pérdida converge a \(p(z)\times LGD\). Estableciendo confianza del 99.9% se obtiene la fórmula IRB de Basilea.
Resuelto iterativamente vía Newton-Raphson (IRLS): \(\boldsymbol{\beta}^{(t+1)} = \boldsymbol{\beta}^{(t)} + (\mathbf{X}^\top\mathbf{W}\mathbf{X})^{-1}\mathbf{X}^\top(\mathbf{y}-\hat{\mathbf{p}})\) donde \(\mathbf{W} = \text{diag}(\hat{p}_i(1-\hat{p}_i))\).
| Confianza | \(z_\alpha\) | Aplicación |
|---|---|---|
| 90% | 1.282 | Filtrado preliminar |
| 95% | 1.645 | Pruebas de hipótesis estándar |
| 97.5% | 1.960 | Pruebas bilaterales al 5% |
| 99% | 2.326 | Semáforo de Basilea |
| 99.9% | 3.090 | Capital IRB de Basilea |
| Término | Definición |
|---|---|
| APR | Activos Ponderados por Riesgo |
| ASRF | Modelo de Factor Único de Riesgo Asintótico (base del IRB de Basilea) |
| CCF | Factor de Conversión de Crédito para partidas fuera de balance |
| CE | Capital Económico |
| CET1 | Capital Ordinario de Nivel 1 |
| DD | Distancia al Incumplimiento (modelo de Merton) |
| DTI | Relación Deuda-Ingreso |
| EAD | Exposición al Momento del Incumplimiento |
| EVA | Valor Económico Agregado |
| HHI | Índice Herfindahl-Hirschman (concentración) |
| IRB | Enfoque Basado en Calificaciones Internas (Basilea) |
| ISRC | Incremento Significativo en Riesgo de Crédito (NIIF 9) |
| IV | Valor de Información (poder predictivo de variable) |
| KS | Estadístico de Kolmogorov-Smirnov |
| LGD | Pérdida en Caso de Incumplimiento |
| LTV | Relación Préstamo-Valor |
| MBG | Movimiento Browniano Geométrico |
| MLE | Estimación de Máxima Verosimilitud |
| NIIF 9 | Norma Internacional de Información Financiera 9 |
| PCE | Pérdida Crediticia Esperada |
| PD | Probabilidad de Incumplimiento |
| PE | Pérdida Esperada |
| PI | Pérdida Inesperada |
| PIT | Punto en el Tiempo (PD) |
| PSI | Índice de Estabilidad Poblacional |
| RAROC | Retorno Ajustado por Riesgo sobre Capital |
| TTC | A Través del Ciclo (PD) |
| WoE | Peso de la Evidencia |
| Referencia | Emisor | Tema |
|---|---|---|
| Basilea II (Jun 2006) | BCBS | Convergencia Internacional de Medición de Capital |
| Basilea III (Dic 2010) | BCBS | Marco Regulatorio Global para Bancos |
| Basilea III Final (Dic 2017) | BCBS | Enfoques Estandarizado e IRB revisados |
| SR 11-7 | Reserva Federal | Guía Supervisora sobre Gestión de Riesgo de Modelo |
| EBA GL/2017/16 | EBA | Estimación de PD, LGD, Tratamiento de Incumplimiento |
| NIIF 9 (Jul 2014) | IASB | Instrumentos Financieros — Pérdidas Crediticias Esperadas |
| CECL (ASU 2016-13) | FASB | Pérdidas Crediticias Esperadas Actuales |
| CRR/CRD IV | UE | Regulación/Directiva de Requerimientos de Capital |
| Ley Dodd-Frank (2010) | Congreso EE.UU. | Estabilidad Financiera y Pruebas de Estrés |
México: CNBV, Banco de México • Colombia: Superfinanciera (SFC), Banco de la República • Brasil: Banco Central do Brasil (BCB) • Chile: CMF, Banco Central de Chile • Perú: SBS, BCRP • Argentina: BCRA. Todos han adoptado progresivamente los marcos de Basilea II/III y NIIF 9 con adaptaciones locales.
— Fin del Documento —
© 2025 Victor Miranda. Todos los derechos reservados.
Especialista en Riesgo Cuantitativo & Experto en Validación | CFA Nivel II | FRM Nivel II