Strategia de creditare și pierderea minimă așteptată

Modelarea Riscului de Credit în Python

Michael Crabtree

Data Scientist, Ford Motor Company

Selectarea ratelor de acceptare

  • Prima rată de acceptare a fost setată la 85%, dar pot fi selectate și alte rate
  • Două opțiuni pentru testarea diferitelor rate:
    • Calcularea manuală a pragului, ratei de risc și pierderilor
    • Crearea automată a unui tabel cu aceste valori și selectarea unei rate de acceptare
  • Tabelul cu toate valorile posibile se numește tabel de strategie
Modelarea Riscului de Credit în Python

Configurarea tabelului de strategie

  • Configurarea matricelor sau listelor pentru stocarea valorilor
# 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 = []
Modelarea Riscului de Credit în Python

Calcularea valorilor din tabel

  • Calcularea pragului și a ratei de risc pentru toate ratele de acceptare
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))
Modelarea Riscului de Credit în Python

Interpretarea tabelului de strategie

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

Exemplu de tabel de strategie și bară a ratei de risc

Modelarea Riscului de Credit în Python

Adăugarea împrumuturilor acceptate

  • Numărul de împrumuturi acceptate pentru fiecare rată de acceptare
    • Se poate utiliza len() sau .count()

Tabel de strategie cu împrumuturi acceptate

Modelarea Riscului de Credit în Python

Adăugarea sumei medii a împrumutului

  • loan_amnt mediu din datele setului de testare

Tabel de strategie cu suma medie a împrumutului

Modelarea Riscului de Credit în Python

Estimarea valorii portofoliului

  • Valoarea medie a împrumuturilor acceptate fără nerambursare minus valoarea medie a nerambursărilor acceptate
  • Se presupune că fiecare nerambursare reprezintă o pierdere egală cu loan_amnt

Tabel de strategie cu valoarea estimată

Modelarea Riscului de Credit în Python

Pierderea totală așteptată

  • Suma pe care ne așteptăm să o pierdem din nerambursările din portofoliu

Formulă pentru pierderea totală așteptată

# 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']
Modelarea Riscului de Credit în Python

Să exersăm!

Modelarea Riscului de Credit în Python

Preparing Video For Download...