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 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. -
alerts
: Al evaluar la regla se pone en el contexto de ejecución la variablealerts
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 variabledocuments
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.