10. Saltar a contenido

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 variable profile 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.