Estrategia de crédito y pérdida esperada mínima

Modelado del riesgo crediticio en Python

Michael Crabtree

Data Scientist, Ford Motor Company

Selección de tasas de aceptación

  • La primera tasa de aceptación se fijó en 85%, pero se pueden elegir otras
  • Dos opciones para probar tasas distintas:
    • Calcular umbral, tasa de morosidad y pérdidas manualmente
    • Crear automáticamente una tabla con estos valores y elegir una tasa
  • La tabla con todos los valores posibles se llama tabla de estrategia
Modelado del riesgo crediticio en Python

Preparar la tabla de estrategia

  • Configura arrays o listas para guardar cada valor
# Set all the acceptance rates to test
accept_rates = [1.0, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55,
                0.5, 0.45, 0.4, 0.35, 0.3, 0.25, 0.2, 0.15, 0.1, 0.05]
# Create lists to store thresholds and bad rates 
thresholds = []
bad_rates = []
Modelado del riesgo crediticio en Python

Cálculo de los valores de la tabla

  • Calcula el umbral y la tasa de morosidad para todas las tasas de aceptación
for rate in accept_rates:
    # Calculate threshold
    threshold = np.quantile(preds_df['prob_default'], rate).round(3)
    # Store threshold value in a list
    thresholds.append(np.quantile(preds_gbt['prob_default'], rate).round(3))
    # Apply the threshold to reassign loan_status
    test_pred_df['pred_loan_status'] = \ 
        test_pred_df['prob_default'].apply(lambda x: 1 if x > thresh else 0)
    # Create accepted loans set of predicted non-defaults
    accepted_loans = test_pred_df[test_pred_df['pred_loan_status'] == 0]
    # Calculate and store bad rate
    bad_rates.append(np.sum((accepted_loans['true_loan_status']) 
             / accepted_loans['true_loan_status'].count()).round(3))
Modelado del riesgo crediticio en Python

Interpretación de la tabla de estrategia

strat_df = pd.DataFrame(zip(accept_rates, thresholds, bad_rates),
                        columns = ['Acceptance Rate','Threshold','Bad Rate'])

Ejemplo de tabla de estrategia y barra de tasa de morosidad

Modelado del riesgo crediticio en Python

Añadir préstamos aceptados

  • Número de préstamos aceptados para cada tasa de aceptación
    • Puedes usar len() o .count()

Tabla de estrategia con préstamos aceptados

Modelado del riesgo crediticio en Python

Añadir importe medio del préstamo

  • Media de loan_amnt del conjunto de prueba

Tabla de estrategia con importe medio del préstamo

Modelado del riesgo crediticio en Python

Estimación del valor de la cartera

  • Valor medio de no impagos aceptados menos valor medio de impagos aceptados
  • Supone que cada impago pierde el loan_amnt

Tabla de estrategia con valor estimado

Modelado del riesgo crediticio en Python

Pérdida total esperada

  • Cuánto esperamos perder por los impagos de la cartera

Fórmula de la pérdida total esperada

# Probability of default (PD)
test_pred_df['prob_default']
# Exposure at default = loan amount (EAD)
test_pred_df['loan_amnt']
# Loss given default = 1.0 for total loss (LGD)
test_pred_df['loss_given_default']
Modelado del riesgo crediticio en Python

¡Vamos a practicar!

Modelado del riesgo crediticio en Python

Preparing Video For Download...