vinisha231/aml-detection

GitHub: vinisha231/aml-detection

一套完整的反洗钱检测系统,结合规则引擎与图谱分析识别六种典型洗钱模式,并为分析师提供可视化风险看板与可追溯的证据评分。

Stars: 0 | Forks: 0

# AML 检测系统 ## 项目功能简介(通俗解释) 银行有法律义务监控洗钱活动——即犯罪分子将非法资金伪装成合法交易的行为。本系统具备以下功能: 1. **生成虚假但逼真的银行数据** —— 包含 5,000 个账户、100,000 笔交易,其中混入了已知的“黑钱”模式(洗钱类型学)以及日常交易(如购买日用品、交租金、发工资)。 2. **运行两种类型的检测:** - *规则引擎* —— 通过 Python 函数标记特定的危险信号(例如,大量略低于 10,000 美元的存款 = 拆分交易)。 - *图谱信号* —— 将账户视为网络中的节点,利用 NetworkX 库查找集群、环路和高中心度账户。 3. **为每个账户进行 0–100 分的评分**,并附带说明其得分原因的证据字符串。 4. **在仪表盘中展示结果** —— 分析师可以查看风险队列,点击进入具体账户,并能选择“升级上报为 SAR”(可疑活动报告)或忽略误报。 ## 项目结构 ``` AMLDetector/ ├── read/ ← READING MATERIALS (start here before coding) ├── backend/ │ ├── generator/ ← Synthetic data generator │ ├── detection/ ← Rules + graph signals + scoring │ ├── api/ ← FastAPI REST API │ ├── database/ ← SQLite schema + queries │ └── pipeline.py ← Master script: generate → detect → score ├── frontend/ ← React dashboard ├── scripts/ ← CLI tools (generate data, run detection, evaluate) └── data/ ← SQLite database lives here (git-ignored) ``` ## 快速开始 ``` # 安装 Python dependencies cd backend pip install -r requirements.txt # 生成 100k synthetic transactions python ../scripts/generate_data.py # 运行 detection pipeline python ../scripts/run_detection.py # 查看 top-20 risky accounts python pipeline.py --top 20 # 启动 API uvicorn api.main:app --reload # 启动 React dashboard(单独的终端) cd ../frontend npm install && npm run dev ``` ## 可检测的类型学 | # | 名称 | 描述 | 检测方法 | |---|------|-------------|-----------------| | 1 | 拆分交易 (Structuring) | 存款金额略低于 1 万美元以规避报告要求 | 规则:次阈值聚类 | | 2 | 层层转账 (Layering) | 资金快速流经 3 个以上账户 | 图谱:链路检测 | | 3 | 漏斗账户 (Funnel accounts) | 多对少的交易模式 | 规则:扇入/扇出比率 | | 4 | 往返交易 (Round-tripping) | 资金离开后又回到同一账户 | 图谱:环路检测 | | 5 | 空壳集群 (Shell clusters) | 仅在彼此之间进行交易的小群体 | 图谱:社区发现 | | 6 | 速度异常 (Velocity anomalies) | 休眠账户突然变得非常活跃 | 规则:相对基线的 z-score | ## 阅读材料 请查看 `read/` 文件夹以了解: - FinCEN SAR 指导说明 - FATF 类型学摘要 - AML 基础知识 - 图论基础 - NetworkX 教程 ## 方法论 检测系统结合了两种得分范围均在 0–100 之间的信号类型,然后对其进行加权计算: ``` Final Risk Score = Σ (signal_score × signal_weight) / Σ weights ``` 证据字符串解释了每一个分数。输出示例如下: ``` Account #A1042 | Risk: 91/100 ✗ STRUCTURING: 12 deposits avg $9,640 across 9 days (conf: 87%) ✗ VELOCITY: Tx count 47× above 30-day baseline (conf: 95%) ✓ GRAPH-PR: PageRank 0.0089 — top 2% of all accounts ``` ## 评估 数据生成器已知真实标签(即哪些账户存在“黑钱”)。运行检测后: ``` python scripts/evaluate.py ``` 输出指标包括:Precision@20、Recall@100 以及每条规则的误报率。 *所有数据均为合成数据。未使用任何真实金融数据。*
标签:AML, API开发, AV绕过, FastAPI, NetworkX, Python, React, RegTech, RESTful API, SAR, SQLite, Syscalls, 中心性分析, 云计算, 代码示例, 反洗钱, 可疑交易报告, 可视化大屏, 合规科技, 图神经网络, 图算法, 提示词优化, 数据分析, 数据合成, 无后门, 特权检测, 犯罪网络分析, 突变策略, 系统分析, 结网分析, 网络分析, 聚类分析, 虚假数据生成, 规则引擎, 逆向工具, 金融安全, 金融风控, 风控系统, 风险评分