2. 反洗钱基础
在进入 SQL 窗口函数的实战之前,必须先建立反洗钱(AML)业务语义。窗口函数只是工具,真正决定监测质量的是对洗钱行为模式、客户身份背景和预警处置逻辑的理解。本节围绕四个核心问题展开:钱是怎么被“洗白”的、哪些交易值得怀疑、我们如何认识客户、以及发现可疑后如何处置。
一、核心原理:洗钱三阶段
洗钱通常被拆解为三个阶段,理解它们有助于设计分层监测规则,而不是把所有异常都塞进同一条 SQL。
- 处置(Placement):将非法资金注入金融体系。典型动作是拆分现金存入、多账户小额入账、利用他人账户过渡。此阶段特征是“现金密集、金额分散、账户新开”。
- 离析(Layering):通过复杂交易掩盖资金来源。典型动作是频繁转账、跨行跨地区划转、买卖理财或虚拟资产、构造贸易背景。此阶段特征是“链路长、对手多、快进快出”。
- 融合(Integration):资金以看似合法的形式回到经济体系。典型动作是投资房产、股权、经营收入回流。此阶段特征是“金额归集、与真实经营混同”。
监测规则应覆盖三阶段:处置阶段关注现金与拆分,离析阶段关注链路与速度,融合阶段关注资金与资产、经营行为的匹配度。
二、常见可疑交易类型
可疑交易并非“违法交易”的同义词,而是与客户身份、职业、经营规模明显不符,或呈现规避监测特征的行为。常见类型包括:
| 类型 | 典型表现 | 监测切入点 |
|---|---|---|
| 拆分交易 | 多笔金额略低于报告阈值,时间集中 | 按客户、按日累计与笔数 |
| 快进快出 | 资金到账后短时间内转出,留存低 | 入账与出账时间差、留存比例 |
| 多头开户 | 同一人控制多个账户互转 | 设备、IP、手机号、对手重合度 |
| 休眠突活跃 | 长期不动账户突然高频大额交易 | 历史基线对比、突增倍数 |
| 跨境异常 | 与高风险地区频繁往来,用途模糊 | 地区风险标签、对手国别 |
| 现金异常 | 频繁大额现金存取,与职业不符 | 现金占比、频次、金额分布 |
这些类型在 SQL 中往往对应“分组聚合 + 窗口排序 + 阈值判断”。例如拆分交易可用窗口函数计算同一客户同一日的累计金额与笔数,再筛选接近阈值的组合。
-- 示例:识别同一客户单日多笔接近阈值的交易
SELECT customer_id, txn_date, COUNT(*) AS txn_cnt, SUM(amount) AS day_amt
FROM transactions
WHERE amount BETWEEN 45000 AND 49999
GROUP BY customer_id, txn_date
HAVING COUNT(*) >= 3;
三、客户尽职调查(CDD)与风险等级
没有客户背景,任何交易金额都只是数字。客户尽职调查要求机构了解客户身份、职业、资金来源、经营范围和实际控制人。根据风险高低,通常分为简化尽职调查、标准尽职调查和强化尽职调查。
- 识别:核对身份证件、营业执照、受益所有人信息。
- 核实:验证资料真实性,必要时实地或远程访谈。
- 评估:结合地区、行业、职业、交易行为给出风险等级。
- 持续更新:客户信息变化、交易模式变化时重新评估。
常见误区:只做开户时的一次性调查,后续不再更新。洗钱监测中,客户风险等级是动态的,窗口函数常用来计算“近期行为相对历史基线的偏离”。
四、交易监测规则与预警处置流程
监测规则是把业务假设翻译成可执行条件。规则设计要避免两个极端:过宽导致大量误报,过窄导致漏报。典型流程如下:
- 数据采集:交易流水、客户信息、账户信息、对手信息、设备日志。
- 规则计算:按客户、账户、对手、时间窗口聚合与排序。
- 预警生成:命中规则后生成预警工单,附带命中原因和证据链。
- 人工复核:分析交易背景、客户解释、历史行为,判断是否可疑。
- 处置:排除、持续观察、提交可疑交易报告、限制账户或终止关系。
- 反馈优化:统计误报漏报,调整阈值和规则组合。
窗口函数在“规则计算”和“证据链生成”中价值最大:它能在不改变明细行的情况下,计算同一客户近 7 天累计、近 30 天排名、与上一笔交易的时间差等,为预警提供可解释的上下文。
五、案例场景:拆分交易预警复盘
某客户在 3 天内于同一网点办理 5 笔现金存款,金额分别为 48000、49000、47000、49500、48500 元,均低于 5 万元报告阈值。若只看单笔,全部正常;若按客户按日累计,则明显异常。
-- 按客户、按日累计,并标记接近阈值的笔数
SELECT customer_id,
txn_date,
COUNT(*) AS cnt,
SUM(amount) AS total_amt,
SUM(CASE WHEN amount >= 45000 THEN 1 ELSE 0 END) AS near_threshold_cnt
FROM transactions
WHERE txn_type = 'CASH_DEPOSIT'
GROUP BY customer_id, txn_date
HAVING SUM(CASE WHEN amount >= 45000 THEN 1 ELSE 0 END) >= 3;
复盘要点:该客户职业为普通职员,历史月均现金存款不足 1 万元,本次行为与身份严重不符,且刻意规避阈值,应提交可疑交易报告。若仅依赖单笔阈值规则,则会漏报。
六、误区与复盘清单
- 误区一:阈值越低越好。过低阈值会产生海量误报,消耗复核资源,反而掩盖真正可疑交易。
- 误区二:只看金额不看频率。拆分交易的核心是频率与金额组合,单看金额会漏掉“蚂蚁搬家”。
- 误区三:忽略时间窗口。同一客户 1 天内 5 笔与 1 年内 5 笔,风险含义完全不同。
- 误区四:预警无证据链。只给“命中规则”而不给上下文,复核人员无法判断。
- 误区五:规则上线后不评估。缺少误报率、漏报案例复盘,规则会逐渐失效。
建议每季度做一次规则复盘:统计命中量、排除率、上报率,结合窗口函数输出“客户近 30 天行为基线”,持续校准阈值。