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)与风险等级

没有客户背景,任何交易金额都只是数字。客户尽职调查要求机构了解客户身份、职业、资金来源、经营范围和实际控制人。根据风险高低,通常分为简化尽职调查、标准尽职调查和强化尽职调查。

  1. 识别:核对身份证件、营业执照、受益所有人信息。
  2. 核实:验证资料真实性,必要时实地或远程访谈。
  3. 评估:结合地区、行业、职业、交易行为给出风险等级。
  4. 持续更新:客户信息变化、交易模式变化时重新评估。
常见误区:只做开户时的一次性调查,后续不再更新。洗钱监测中,客户风险等级是动态的,窗口函数常用来计算“近期行为相对历史基线的偏离”。

四、交易监测规则与预警处置流程

监测规则是把业务假设翻译成可执行条件。规则设计要避免两个极端:过宽导致大量误报,过窄导致漏报。典型流程如下:

  1. 数据采集:交易流水、客户信息、账户信息、对手信息、设备日志。
  2. 规则计算:按客户、账户、对手、时间窗口聚合与排序。
  3. 预警生成:命中规则后生成预警工单,附带命中原因和证据链。
  4. 人工复核:分析交易背景、客户解释、历史行为,判断是否可疑。
  5. 处置:排除、持续观察、提交可疑交易报告、限制账户或终止关系。
  6. 反馈优化:统计误报漏报,调整阈值和规则组合。
窗口函数在“规则计算”和“证据链生成”中价值最大:它能在不改变明细行的情况下,计算同一客户近 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 天行为基线”,持续校准阈值。