Kreditacceptansgrader

Kreditriskmodellering i Python

Michael Crabtree

Data Scientist, Ford Motor Company

Tröskelvärden och lånestatus

  • Tidigare satte vi ett tröskelvärde för ett intervall av prob_default-värden
    • Detta användes för att ändra det förutsagda loan_status för lånet
preds_df['loan_status'] = preds_df['prob_default'].apply(lambda x: 1 if x > 0.4 else 0)
Lån prob_default tröskelvärde loan_status
1 0.25 0.4 0
2 0.42 0.4 1
3 0.75 0.4 1
Kreditriskmodellering i Python

Tröskelvärden och acceptansgrad

  • Använd modellförutsägelser för att sätta bättre tröskelvärden
    • Kan även användas för att godkänna eller avslå nya lån
  • För alla nya lån vill vi neka sannolika fallissemang
    • Använd testdata som exempel på nya lån
  • Acceptansgrad: hur stor andel av nya lån som godkänns för att hålla antalet fallissemang i portföljen lågt
    • Godkända lån som ändå fallerar har en liknande påverkan som falska negativa
Kreditriskmodellering i Python

Förstå acceptansgraden

  • Exempel: Godkänn 85 % av lånen med lägst prob_default

Histogram över fördelning av förutsagda sannolikheter

Kreditriskmodellering i Python

Beräkna tröskelvärdet

  • Beräkna tröskelvärdet för 85 % acceptansgrad
import numpy as np
# Compute the threshold for 85% acceptance rate
threshold = np.quantile(prob_default, 0.85)
0.804
Lån prob_default Tröskelvärde Förutsagt loan_status Godkänn eller avslå
1 0.65 0.804 0 Godkänn
2 0.85 0.804 1 Avslå
Kreditriskmodellering i Python

Implementera det beräknade tröskelvärdet

  • Tilldela om loan_status-värden med det nya tröskelvärdet
# Compute the quantile on the probabilities of default
preds_df['loan_status'] = preds_df['prob_default'].apply(lambda x: 1 if x > 0.804 else 0)
Kreditriskmodellering i Python

Felaktig andel

  • Även med ett beräknat tröskelvärde kommer en del godkända lån att fallera
  • Det gäller lån med prob_default-värden i intervall där modellen inte är väl kalibrerad

Stapeldiagram över godkända lån med andelen dåliga markerad

Kreditriskmodellering i Python

Beräkning av felaktig andel

Formel för felaktig andel

#Calculate the bad rate
np.sum(accepted_loans['true_loan_status']) / accepted_loans['true_loan_status'].count()
  • Om icke-fallissemang är 0 och fallissemang är 1, ger sum() antalet fallissemang
  • .count() för en enskild kolumn är detsamma som antalet rader i dataramen
Kreditriskmodellering i Python

Nu kör vi en övning!

Kreditriskmodellering i Python

Preparing Video For Download...