fcmpact addRoutines

Análisis de Riesgo Crediticio con Persistencia de Funciones

Scénario de test & Cas d'usage

Contexto empresarial

Una entidad financiera necesita evaluar el riesgo de miles de solicitudes de préstamos diariamente. El modelo de scoring es una función compleja y propietaria. Para optimizar el rendimiento y asegurar la consistencia, la función debe ser compilada una vez y guardada permanentemente en la caslib para que otras sesiones y aplicaciones puedan utilizarla sin necesidad de recompilarla.
Sobre el conjunto : fcmpact

Ejecución de funciones SAS FCMP en el entorno CAS.

Descubrir todas las acciones de fcmpact
Preparación de datos

Creación de una tabla con 10,000 solicitudes de préstamo simuladas, conteniendo el ratio de deuda/ingresos y la puntuación crediticia del solicitante.

¡Copiado!
1DATA mycas.solicitudes_prestamo;
2 DO i = 1 to 10000;
3 ratio_deuda_ingresos = rand('UNIFORM') * 0.8;
4 puntuacion_crediticia = 300 + rand('INTEGER', 550);
5 OUTPUT;
6 END;
7 drop i;
8RUN;

Étapes de réalisation

1
Definir una función de scoring de riesgo y guardarla en una tabla CAS persistente utilizando 'saveTable=TRUE'.
¡Copiado!
1PROC CAS;
2 fcmpact.addRoutines
3 routineCode='function calcular_score_riesgo(puntuacion, ratio);
4 score = 0;
5 if puntuacion < 580 then score = score + 50;
6 else if puntuacion < 670 then score = score + 20;
7 if ratio > 0.45 then score = score + 40;
8 else if ratio > 0.30 then score = score + 15;
9 return(score);
10 endsub;'
11 package='modelo_riesgo'
12 funcTable={name='motor_riesgo', caslib='mycas', replace=true}
13 saveTable=TRUE;
14RUN;
15QUIT;
2
Verificar que la tabla de funciones ha sido guardada como un fichero físico en la caslib.
¡Copiado!
1PROC CAS;
2 TABLE.fileInfo / caslib='mycas';
3RUN;
4QUIT;
3
Aplicar la función de scoring a la tabla de solicitudes para calcular el score de riesgo para cada una.
¡Copiado!
1PROC CAS;
2 datastep.runCode /
3 code='data mycas.riesgo_calculado;
4 set mycas.solicitudes_prestamo;
5 score_riesgo = calcular_score_riesgo(puntuacion_crediticia, ratio_deuda_ingresos);
6 run;';
7RUN;
8QUIT;
4
Mostrar una muestra de los resultados para confirmar que el cálculo se ha realizado.
¡Copiado!
1PROC CAS;
2 TABLE.fetch / TABLE='riesgo_calculado' to=10;
3RUN;
4QUIT;

Resultado esperado


La acción 'fileInfo' debe mostrar un fichero llamado 'motor_riesgo.sashdat' en la caslib 'mycas', confirmando la persistencia. La tabla 'riesgo_calculado' contendrá las columnas originales más una nueva columna, 'score_riesgo', con un valor numérico calculado para cada una de las 10,000 solicitudes, demostrando que la función persistida fue utilizada con éxito.