← Voltar ao portfólio
Projeto de Compliance · PLD/AML

Rastreamento e Prevenção à Lavagem de Dinheiro

Uma jornada técnica e analítica que descreve como dados, processos ELT, regras de negócio e análises em Python formam um sistema integrado de combate a crimes financeiros.

95
Alertas gerados
5
Produtos monitorados
4
Etapas do pipeline
D-1
Ciclo de atualização
01

O problema que o projeto resolve

A lavagem de dinheiro é um crime financeiro que disfarça a origem ilícita de fundos, tornando-os aparentemente legítimos. Ela afeta a estabilidade econômica e a integridade dos sistemas financeiros globalmente.

Contexto fictício: os dados, clientes e transações utilizados neste projeto são completamente fictícios e têm finalidade exclusivamente demonstrativa. Nenhuma informação real foi utilizada.

🔴

Colocação

Inserção dos recursos ilícitos no sistema econômico via depósitos, compra de instrumentos ou bens, frequentemente em países com menor regulação.

🟠

Ocultação

Quebra da trilha contábil por meio de transferências eletrônicas para contas anônimas, dificultando rastreamento por autoridades.

🟢

Integração

Os recursos retornam ao sistema econômico formal, aparentemente "limpos", prontos para uso pelas organizações criminosas.

A análise de dados oferece uma abordagem baseada em evidências para identificar e mitigar essas atividades suspeitas, tornando-se um aliado essencial do Compliance.

02

Pipeline ETL e ELT

O coração operacional do projeto: a extração, transformação e carga dos dados de movimentações financeiras que alimentam toda a análise. A técnica de ingestão varia conforme o cenário e a infraestrutura de cada cliente.

📥

O que é ETL?

Processo de Extração, Transformação e Carga. Os dados são transformados numa camada intermediária antes de chegar ao destino final — abordagem tradicional quando o destino tem pouca capacidade de processamento.

O que é ELT?

Processo de Extração, Carga e Transformação. Coleta dados de diversas fontes, os carrega primeiro em formato bruto no destino e só então aplica as transformações — abordagem comum quando o próprio banco de destino tem poder de processamento para transformar (como aqui, via procedure SQL).

Formas de implementação

SSIS

Pacotes de Integration Services para orquestração de fluxos em ambiente SQL Server — a técnica usada neste projeto.

Ver repositório →
🐍

Python

Scripts customizados para ingestões flexíveis, com controle total sobre validação e transformação dos dados.

Ver repositório →
⚡

Bulk Insert

Cargas de alto volume direto no banco, priorizando performance em cenários de arquivos grandes.

Ver repositório →
🗂️

Leitura de Views

Extração direta de views disponibilizadas na base do cliente, sem necessidade de arquivo intermediário.

☁️

Cloud (AWS · Azure · BigQuery)

Leitura direta de volumes em nuvem, para cenários em que a origem dos dados já está hospedada em provedores como AWS, Azure ou BigQuery.

Ver repositório →

Airflow

DAGs para orquestração e agendamento de pipelines mais complexos, com múltiplas dependências entre etapas.

Ver repositório →
🧾

Arquivo JSON

Leitura e parsing de arquivos .json, comuns em integrações com sistemas que exportam dados semiestruturados.

Ver repositório →
🌐

API

Consumo direto de API do cliente ou de terceiros, sem etapa intermediária de arquivo, para ingestões em tempo real ou sob demanda.

Fonte dos dados neste projeto: informações de clientes e operações realizadas em D-1 (dia anterior ao processamento), extraídas diretamente da base de origem do cliente. Esse ciclo de atualização pode ser adaptado conforme a necessidade de cada cliente — aqui, D-1 garante que as análises reflitam sempre as movimentações mais recentes disponíveis.

Fluxo das etapas — implementação aplicada neste projeto

Geralmente ocorre na sequência abaixo, mas pode haver alterações no fluxo dependendo do cliente ou produto.

1

Limpeza da tabela temporária

Antes de iniciar a carga, a tabela de staging é limpa para garantir que não haja duplicidade ou dados residuais de execuções anteriores.

2

Leitura da origem

Os dados são lidos, validados e seus registros carregados na tabela destino do banco de dados, incluindo dados de clientes e operações do dia anterior.

3

Execução da Procedure de atualização

Uma procedure SQL é disparada para consolidar e atualizar as tabelas relacionadas a clientes e operações com os dados recém-carregados.

4

Tabelas disponíveis para análise

As tabelas de clientes e operações estão atualizadas e prontas para alimentar as regras de detecção e os relatórios analíticos.

03

Execução de Regras de Detecção

Com os dados carregados, o motor de regras entra em ação. A primeira regra avalia movimentações de valores acima de um limiar definido pelo Compliance.

🚨

Regra: Movimentações de Altos Valores

Identifica transações com valor igual ou superior ao Parâmetro01 — definido pela área de Compliance. Todas as movimentações no período analisado são verificadas automaticamente.

📂

Segregação dos resultados

Após a análise, as movimentações que acionam a regra são separadas em tabelas dedicadas, criando uma fila de trabalho para verificação pelas áreas responsáveis.

Resultado desta etapa: as operações suspeitas ficam isoladas em tabelas independentes, prontas para revisão pelo time de Compliance — sem misturar dados limpos com alertas.

04

Consultas e Análises com SQL + Python

A análise aprofundada combina a precisão do SQL com a expressividade do Python para transformar dados brutos em insights acionáveis.

Conexão com SQL Server via Python

Usando a biblioteca pymssql, Python se conecta diretamente ao banco para executar queries e retornar DataFrames prontos para análise.

Python · SQL Server Connection
# Importando bibliotecas essenciais
import pandas as pd
import pymssql as sql

# Criando conexão com o banco
conexao = sql.connect('servidor', 'usuario', 'senha', 'banco_de_dados')

# Consultando alertas gerados
df = pd.read_sql_query("""
    SELECT COUNT(*) AS quantidade 
    FROM dbo.tgr_alertas
    WHERE cd_enquadramento = 1 
      AND dt_movimentacao = '2020-07-31'
""", conexao)

conexao.close()

Quantidade de alertas gerados

Em 31/07/2020, a execução da regra de alto valor gerou 95 alertas para revisão pelo Compliance.

Resultado da Query · tgr_alertas
MétricaValorData referênciaStatus
Total de alertas 95 2020-07-31 Para revisão

Clientes com maior incidência de alertas

Os 15 clientes com mais alertas foram identificados e ranqueados para priorização no processo de verificação.

Top 15 Clientes · Alertas em 31/07/2020
#Cód. ClienteAlertasPrioridade
11965929Alta
22077039Alta
31821517Alta
41435775Média
5223394Média
68460174Média
78653964Média
8–15Demais clientes1–3Normal

Insight: a maior concentração de alertas por cliente está entre 3 e 4 ocorrências. Clientes com 7 ou mais alertas devem ser investigados prioritariamente pelo time de Compliance.

05

Alertas e movimentações por produto

A análise de correlação entre o volume de movimentações e a quantidade de alertas revela quais produtos financeiros concentram maior risco.

Alertas por produto · Junho/2020
Corretora
4.470
Conta Corrente
2.228
Empréstimos
477
Fundos
277
CDB
19
Volume de movimentações por produto · Junho/2020
Conta Corrente
71.103
Corretora
4.129
Empréstimos
1.096
Fundos
941
CDB
11

Correlação importante: embora Conta Corrente seja o produto com maior volume de movimentações (71 mil), a Corretora concentra proporcionalmente mais alertas. Isso sugere que operações de corretagem merecem atenção especial nas regras de detecção.

Visão integrada do projeto

Este projeto demonstra como a integração de ETL/ELT (implementada via SSIS e Bulk Insert), Stored Procedures para consolidação dos dados, regras de negócio baseadas em Compliance e análises em SQL + Python cria um pipeline robusto de prevenção à lavagem de dinheiro — do dado bruto à decisão fundamentada.

D-1
Ciclo de dados
SSIS
Motor ETL/ELT usado aqui
Bulk Insert
Carga de alto volume
SQL
Stored Procedures
Python
Análise & Viz
PLD/AML
Objetivo final