13. Saltar a contenido

13. Monitoreo de legajo

Conforme a los estándares internacionales para la debida diligencia del cliente, trak.e permite a las entidades financieras definir reglas para realizar un monitoreo del legajo. Se permite agregar cualquier cantidad de reglas de monitoreo de legajo, pero a lo sumo 50 pueden estar activas al mismo tiempo.

13.1 Eventos

Las reglas genéricas se configuran para ser ejecutadas ante distintos eventos de trak.e. Cada regla puede configurarse ante uno o mas eventos. Los posibles eventos que disparan una regla son:

  • Nuevo legajo.
  • Actualización de legajo.
  • Nueva alerta.
  • Actualización de alerta.
  • Nuevo documento.
  • Actualización de documento.
  • Borrado de documento.

Cuando se trate de un evento de actualización, debe ademas especificarse que el cambio de que atributo es el que dispara la regla. Puede utilizarse cualquier atributo en el top-level de la entidad correspondiente.

Por ejemplo, si pretendemos que la regla se ejecute cuando un legajo cambia de riesgo, podemos configurar el siguiente trigger:

...
"triggers": [
  {
  "event": "dprofile",
  "operation": "update",
  "field": "risk"
  }
]
...

13.2 Tipo de alerta

Trak.e permite definir cual es el tipo de las alertas que se generarán debido a una regla, asi como su severidad y su prioridad.

13.3 Implementación

Las reglas siguen el esquema visto para la matriz de riesgo y el calculo del perfil transaccional: reglas escritas en lenguaje Python.

13.3.1 Parámetros

Las variables disponibles son:

  • 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.

  • alerts: Al evaluar la regla se pone en el contexto de ejecución la variable alerts que contiene el historial de alertas abiertas y cerradas del legajo que se esta procesando actualmente. La variable es una lista donde cada objeto representa una alerta. Todos los atributos detallados en la sección Alertas se encuentra disponible en este objeto.

  • documents: Al evaluar la regla se pone en el contexto de ejecución la variable documents que contiene los documentos asociados al legajo que se esta procesando actualmente. La variable es una lista donde cada objeto representa un documento. Todos los atributos detallados en la sección Documentación 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.

  • changes: Si la regla se refiere a un evento de actualización, los cambios generados entre ambas versiones se encuentran en esta variable. El formato de los cambios es el descripto en Historia.

13.3.2 Resultado de la regla

La regla debe definir una variable de nombre SHOULD_RAISE cuyo valor debe ser un valor de verdad que indica si debería generar una nueva alerta. Los valores posibles y su interpretacion son:

  • True: Se evaluó la regla y se determinó un comportamiento inusual, por lo que se levantará una alerta en trak.e para que un analista de la entidad gestione y resuelva sobre la anomalía.
  • False: Se evaluó la regla y se determinó que no había comportamientos inusuales.
  • None: No se evaluó la regla. O bien no aplica, o falta algún valor critico para hacerlo.

Nota

Contexto: Además de los valores True, False y None utilizados para interpretar la evaluación de la regla, 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.

13.4 Ejemplos

13.4.1 Zona de riesgo

Esta regla analiza los nuevos legajos y sus actualizaciones y levanta una alerta en caso de que alguna dirección tenga una provincia considerada zona de riesgo. Si no hay direcciones agregadas al legajo o las mismas no incluyen la provincia, también se levanta la alerta.

SHOULD_RAISE = False
if not profile.addresses:
    SHOULD_RAISE = True
for address in profile.addresses:
    state = address.state
    if state in ['Santa Fe', 'Jujuy'] or not state:
        SHOULD_RAISE = True

La regla se configura con los siguientes triggers:

...
"triggers": [
    {"event": "dprofile", "op": "add"},
    {"event": "dprofile", "op": "update"}
],

El tipo se configura a "Otro":

...
"alert_type": "other",
...

13.4.2 Documentación Faltante: Estatuto

La siguiente regla se configura para actualizaciones de legajos. Su objetivo es asegurar que las personas jurídicas entreguen la documentación faltante para adjuntar al legajo (en este caso, estatuto de la entidad), en un lapso de dos meses desde su alta.

SHOULD_RAISE = False
ONE_MONTH = 2592000000
profile_seniority = profile.modified_at - profile.created_at
if profile_seniority > ONE_MONTH and profile_seniority < 2 * ONE_MONTH:
    SHOULD_RAISE = True
    if profile.person_type == 'natural_person':
        SHOULD_RAISE = False
        if profile.person_type == 'legal_person':
            for doc in documents:
                if doc.doc_type == 'statute':
                    SHOULD_RAISE = False

La regla se configura con los siguientes triggers:

...
"triggers": [
    {"event": "dprofile", "op": "update"}
]

El tipo se configura a "Documentación faltante":

...
"alert_type": "doc_missing",
...

13.4.3 Incremento de riesgo

La siguiente regla se configura para actualizaciones de legajo y tiene como objetivo levantar una alerta en caso de que el legajo pase de riesgo bajo a medio, de riesgo bajo a alto, o de riesgo medio a alto. Es decir, se genera una alerta siempre que haya un incremento en la categorización del riesgo del legajo.

risk = profile.get("risk", None)

changes = changes["changes"]
for change in changes:
    if change[0] == "change" and change[1] == "risk":
        previous_risk= change[2][0]

if (risk == "high" and previous_risk in ["low", "medium"]) or (
    risk == "medium" and previous_risk == "low"
):
    SHOULD_RAISE = True
else:
    SHOULD_RAISE = False

La regla se configura con los siguientes triggers:

...
"triggers": [
    {"event": "dprofile", "op": "update"}
]

El tipo se configura a "Incremento de riesgo":

...
"alert_type": "high_risk",
...

13.5 Testing de la regla

Trak.e permite testear la regla 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.

13.6 Nombre y descripción

La regla se guarda con un nombre, el cual debe ser único.

La regla permite adjuntar ademas una descripción en formato de texto enriquecido.