10. Perfil Transaccional¶
Para conocer los perfiles transaccionales de los clientes, lo usual es segmentarlos por ejemplo, según su profesión, antigüedad laboral e ingresos. Con la información consolidada en trak.e sobre el cliente y su historial de transacciones es posible monitorear que el comportamiento se mantenga dentro de parámetros normales, es decir, acorde a su capacidad económica.
La expectativa es que los perfiles transaccionales de los clientes, sean confeccionados de manera prospectiva, pudiendo ajustarse posteriormente de acuerdo al desarrollo y características de la relación comercial y con la periodicidad requerida en función de los riesgos evaluados y evolución de la actividad transaccional.
Se espera que la confección de los perfiles transaccionales brinde herramientas a las entidades para la detección oportuna y temprana de operaciones inusuales y eventualmente, sospechosas, realizadas por el cliente.
Trak.e permite permite gestionar una regla configurable que asigne a cada legajo su perfil transaccional dentro de la aplicación. Se permite agregar cualquier cantidad de reglas de perfil transaccional, pero a lo sumo una puede estar activa.
10.1 Implementación¶
La regla se implementa utilizando el lenguaje de programación Python. A nivel general, la regla es evaluada en base a la información consolidada en el legajo y en el historial de la transaccionalidad del cliente y decide su perfil transaccional, consolidado en un número que representa la esperanza prospectiva de la transaccionalidad del cliente.
10.1.1 Parámetros¶
-
profile
: Al evaluar la regla se pone en el contexto de ejecución la variableprofile
que contiene el legajo que se esta procesando actualmente. Todos los atributos detallados en la sección Legajos se encuentra disponible en este objeto. -
hist_trxs
: Si la regla incluye información sobre la transaccionalidad del legajo, se puede acceder al histórico de la transaccionalidad del legajo con este nombre. La variable es puesta en contexto de ejecución en formato de pandas.DataFrame, donde cada fila del DataFrame representa una transacción y las columnas del DataFrame son los atributos de las transacciones (utilizando guion bajo como separador en caso de ser atributos anidados). Es posible que el historial este vacío (sin filas ni columnas) si el cliente no registra transacciones.
10.1.2 Resultado de la regla¶
La regla debe definir una variable de nombre TRANSACTIONAL_PROFILE
de tipo
float
, representando el valor numérico del perfil transaccional calculado por
la regla.
Nota
Contexto: Además del valor numérico que sera utilizado como perfil transaccional, se devuelve el contexto de la evaluación particularmente aquellas variables públicas definidas. Esto permite guardar valores calculados durante la ejecución de la regla y que los mismos estén disponibles al momento de ver los resultados.
10.2 Ejemplo¶
A continuación, se define la implementación de una regla de ejemplo trivial para el cómputo del perfil transaccional de un perfil.
if profile.person_type == "natural_person":
TRANSACTIONAL_PROFILE = 24000
else:
TRANSACTIONAL_PROFILE = 48000
Dado un legajo, la anterior regla, simplemente, le asigna un valor por defecto de $24000 como su perfil transaccional en el caso de que sea una persona física; o $48000 en caso de una persona jurídica.
10.3 Ejemplo mas complejo¶
Es posible complejizar la regla tanto como una quiera utilizando las construcciones del lenguaje Python.
Por ejemplo, es posible definir el perfil transaccional en base al total de depósitos que tuvo en cuenta el cliente durante el año próximo pasado. Si el cliente no registra transacciones, se asigna su declaración de ingresos. Si el cliente no realizo declaración de ingreso se asigna el default.
if hist_trxs.empty:
# If we have no historical data, assign a default depending on person type
if profile.person_type == "natural_person":
if profile.declared_income:
TRANSACTIONAL_PROFILE = profile.natural_person.declared_income
else:
TRANSACTIONAL_PROFILE = 24000
else:
TRANSACTIONAL_PROFILE = 48000
else:
# If we have transaction history, use last year total deposits as profile amount
now = datetime.now()
from_ = int(datetime(year=now.year-1, month=1, day=1).timestamp() * 1000)
to_ = int(datetime(year=now.year, month=1, day=1).timestamp() * 1000)
last_year_deposits = hist_trxs[(from_ <= hist_trxs["timestamp"]) & (hist_trxs["timestamp"] < to_) & (
hist_trxs["side"] == "deposit")]
TRANSACTIONAL_PROFILE = sum(last_year_deposits["amount"])/3
reason = "trx_history"
10.4 Testing de la regla de perfil transaccional¶
Trak.e permite testear la regla de perfil transaccional antes de guardarla con cualquier legajo de la base o con un legajo armado a necesidad para testear casos bordes y asegurarse de que la regla es correcta tanto sintáctica como semanticamente.
10.5 Nombre y descripción de la regla¶
La regla de perfil transaccional se guarda con un nombre, el cual debe ser único dentro de todas las variantes de perfil transaccional que tenga cargada la entidad.
Se puede adjuntar ademas una descripción en formato de texto enriquecido, con lo cual se puede guardar la documentación del comportamiento de la matriz de riesgo junto al código que la implementa.
10.6 API¶
Para más información técnica sobre cómo crear, buscar y modificar reglas de cómputo de perfil transaccional, se encuentra disponible la documentación de la API.