¿Qué usan los bancos para dar préstamos? Modelos de crédito con python una alternativa muy plausible
- fjroar
- 5 jun 2021
- 3 Min. de lectura

Antes de comenzar esta entrada, a diferencia de las otras, veis que hay curvas y números raros en la entrada Don't panic!!!! Para los que no estáis muy seguros de vuestro dominio matemático, no os preocupéis no voy a "entrar en tripas" como diría el amigo Jack.
Resulta que haciendo un barrido sobre este tema (cosa que de vez en cuando hago), me he encontrado con una biblioteca de funciones en python, que permite una construcción muy sencilla de esos modelos con los que los bancos nos conceden o rechazan hipotecas, o préstamos para comprar un coche, etc.
Pues bien, resulta que los modelos más utilizados por el momento, no son aquellos super complejos y para mucho no entendibles con nombres sugerentes y en inglés como xgbosst, random forest, etc; son precisamente modelos bastante más sencillos y comprensibles donde a partir de un cuestionario, se nos pregunta por la edad, el nivel de ingresos, la antigüedad laboral, el tipo de trabajo, etc. Cada vez que damos respuesta a esas cuestiones o aportamos documentos para contrastarlas, el banco nos concede unos puntos por respuesta y la suma de todos esos puntos se denomina scoring y si se supera determinado nivel se nos da la hipoteca y si no, pues se deniega y "es lo que hay"
Además, para crear esos modelos aparentemente sencillos, los bancos tradicionalmente han gastado y gastan pastizales en software y en consultoría de desarrollo, sin saber (o más bien si querer saber, porque la gente técnica me consta que está bastante bien preparada pero siempre hay otros intereses, ...) que hace unos 3 años (27 de Mayo del 2018), apareció en python, una librería denominada: scorecard que permite la generación de un modo muy sencillo de gran parte del proceso. Por tanto cabe rebajar el gasto en software y trabajar más la parte de puro desarrollo open-source, más customizable y económica. Yo hasta hace poco conocía bien la parte de R, pero desde que uso python, ahora que me ha tocado repasar, reconozco que está muy bien.
La librería la he probado siguiendo el ejemplo de su web que está en https://pypi.org/project/scorecardpy y posteriormente añadiendo un conjunto de datos por fuera que leí usando pandas veo que funciona y permite todo el recorrido de este tipo de modelos, incluidas las manipulaciones manuales, hasta llegar a crear esas modelos de scoring o tarjetas de puntuación con modelos de regresión logística subyacentes como mandan los cánones (la gente más relacionada con el mundo DS entenderá este párrafo mejor).
Así pues cogiendo un conjunto de datos libre como es el archiconocido fichero "GermanData.csv" se genera, variable a variable los tramos óptimos para asignar puntuaciones, como en el ejemplo de la imagen de abajo, donde se expresa como a mayor duración del crédito, mayor tasa de impago y por tanto menos puntos se nos otorgaría, significando esto que, en este caso, un crédito a 40 años por ejemplo, tiene más dificultad de ser concedido que uno de 30:

Aunque de gráficos mejorables porque están con la estética matplotly de python, genera todos los conjuntos de datos necesarios para que se pueda mejorar tanto estos gráficos como para poder hacer lo que sea preciso.
Y finalmente indicar, que a partir de ahora me reviso, por culpa de esto, el cómo estaba impartiendo en los cursos la parte de Credit Scoring y considero seriamente la potencia de python a la vez que recomiendo, a los que necesitéis este tipo de modelos y no conozcáis la librería, que la instaléis con el típico "pip install", es fácil, funciona estupendamente y parece que ya es bastante estable. Lo único que me falta es para ver en grandes conjuntos de datos como respira, eso os lo dejo a vosotros, pero es prometedora.
Una alternativa a scorecardpy con una API al estilo scikit-learn es la librería optbinning (autor): https://github.com/guillermo-navas-palencia/optbinning.