返回 AICAP-180
B13 · Day 122FATF typologies + BSA grader + 用户研究

BSA 报告机制与阈值

昨天(Day 121)把 FATF 五大类型学落成了带真值标签的数据,回答了「洗钱长什么样」。今天进一步——洗钱被「看见」之后,金融机构有法定义务报告它,而报告机制(BSA 四件套)恰好决定了「哪些判定能写成纯阈值规则、哪些必须留给人工/LLM」。

阶段: B13 · FATF typologies + BSA grader + 用户研究(Day 121-130) 标签: #aml #bsa-fincen #ctr-sar #rule-classifier

今日导引(由浅入深)

昨天(Day 121)把 FATF 五大类型学落成了带真值标签的数据,回答了「洗钱长什么样」。今天进一步——洗钱被「看见」之后,金融机构有法定义务报告它,而报告机制(BSA 四件套)恰好决定了「哪些判定能写成纯阈值规则、哪些必须留给人工/LLM」。

在 B1→B18 曲线上,这是把「合规知识」嵌进「分类器设计」的一步:先吃透 CTR/SAR/OFAC/PEP 的触发逻辑,再用确定性规则把可硬编码的那部分写成 5 条分类器,对昨天的 typed.csv 跑一遍。

今天的最小可判定产出是:在 src/aml/typology.ts 上写/确认 5 条确定性规则分类器,产出规则版 per-typology 命中计数表 + 1 个 passing test。

1. 机理精读

BSA 报告四件套。 美国《银行保密法》(Bank Secrecy Act) 下,金融机构主要有四类报告/拦截义务:

  • CTR(Currency Transaction Report):单日单客户现金交易累计 >$10,000强制申报(FinCEN Form 112)。这是确定性硬阈值——金额过线就报,无主观判断空间。
  • SAR(Suspicious Activity Report):对「已知或有理由怀疑(known or suspected)」的可疑活动申报。触发是主观+客观混合——既有客观阈值线索(如结构化拆分),也有「有理由怀疑」的软判断。
  • OFAC 制裁拦截:对制裁名单(SDN list)实时筛查拦截。本质是名单匹配,确定性但依赖外部名单数据。
  • PEP(Politically Exposed Persons):对政治公众人物做增强尽职调查(EDD)。依赖外部 PEP 名单 + 风险评级,非纯交易流水可判。

一个常被忽略的 CTR 细节:阈值是「单日累计」而非「单笔」。同一客户当日多笔现金合计过 $10k 也要报——这正是 structuring(把一笔拆成多笔压在线下)想规避的对象。所以 CTR 规则与 structuring 检测是一体两面:CTR 抓「合计过线」,structuring 抓「合计本应过线却被拆到线下」。本仓 CTR_THRESHOLD_CENTS 同时服务这两条逻辑。

为什么这套报告机制决定了「哪条规则能硬编码」。 关键洞察:CTR 是确定性硬阈值,SAR 是软触发。这条分界直接映射到分类器架构。

CTR 类(金额/笔数/窗口可量化)能写成纯阈值规则,确定性、可单测、零幻觉;而 SAR 的「有理由怀疑」里那部分模糊语义(这笔贸易价格是否异常、这个商户的现金存款是否合理)必须留给人工复核或 LLM 判定

规则引擎负责把确定性信号抓全、抓准;模糊地带交给 HITL/LLM。这就是「规则 + LLM」混合架构的合规依据,而非工程偏好——架构分层直接来自报告义务的触发性质分层。

把四件套按「触发性质 / 可硬编码性 / 数据依赖」拍成一张表,直接读出分类器的层级分工:

报告项触发性质阈值可硬编码数据依赖
CTR确定性硬阈值单日现金 >$10,000✅ 纯规则仅交易流水
SAR主观+客观混合「已知或有理由怀疑」⚠️ 部分(客观线索可,软判断留 HITL/LLM)流水 + 上下文
OFAC名单匹配SDN 命中即拦截✅ 规则(依赖外部名单)制裁名单
PEP增强尽调风险评级❌ 需名单 + 评级PEP 名单 + EDD

读法:CTR/OFAC 是规则引擎的确定性骨架,SAR 的软判断与 PEP 的尽调留给 HITL/LLM。本批 Day 122-123 先把可硬编码的 CTR/structuring/layering/mule 写成规则,软判断部分由 Day 124 的 LLM grader 补。

关键权衡:硬阈值的可解释性 vs 召回的完整性。 纯阈值规则(CTR $10k 线)100% 可解释、可审计,但只能抓住「金额型」签名;layering/mule 的图结构、TBML 的单据错配,阈值抓不全。

所以规则分类器追求的是高精度的确定性骨架——把规则抓不到的语义/图信号留给后续 LLM grader(Day 124)补召回。这正是 B14 要「杀死循环 baseline、引入外部 grader」的前置铺垫:规则负责「确定性高精度」,LLM 负责「语义高召回」,两者分工而非互替。

5 条确定性规则分类器的最小集。 本批要落的规则分类器,对每个案件给一个 typology 标签:

  1. CTR 规则:单日现金累计 >$10,000(CTR_THRESHOLD_CENTS)→ 触发 CTR 申报标记。
  2. structuring 规则:≤10 天内 ≥3 笔 $8,000–$9,999 现金存款 → structuring(checkStruct01,主规则 0.6)。
  3. layering 规则:外部流入后链式过账 ≥3 账户、每跳 ≤2 天、转出 ≥80% → layering(checkLayer01,图追踪)。
  4. mule 规则:≤14 天内 ≥5 不同对手扇入 + 转出 ≥60% 流入 → mule_network(checkMule01)。
  5. 降级规则:以上聚合分均 <0.5 阈值(ASSESS_THRESHOLD)→ normal。

这 5 条全是确定性、可单测、零幻觉——对应 BSA 里能硬编码的那半。SAR 的软判断部分不在这里,留给 Day 124 的 LLM grader。

与合规体系的边界——不要混淆 BSA 与 EU AI Act。 AML 报告义务走的是美国 BSA/FinCEN 体系,与欧盟 EU AI Act(AI 系统监管)是两套完全独立的法律体系

尤其要避免用「AI Act 高风险 2026-08 生效」这种旧叙事来框 AML 合规——该时间线本身已过时(高风险条款推迟至 2027-12-02),且 AML 报告义务跟它无关。CTR/SAR 是金融监管,AI Act 是 AI 治理,写笔记/memo 时不能混为一谈。

2. 代码走读:typology.ts 的确定性规则与 CTR 常量

Read 了 src/aml/typology.ts,确认本仓规则引擎的确定性骨架真实存在:

  • CTR_THRESHOLD_CENTS = 1_000_000(即 $10,000,FinCEN Form 112)——CTR 硬阈值的常量化落点,注释直接写明依据。所有 structuring 规则都以它为基准(「贴线规避 CTR」)。
  • assessCase(c: AmlCase): TypologyAssessment — 跑 6 条规则检查 [checkStruct01, checkStruct02, checkLayer01, checkLayer02, checkMule01, checkMule02],各类型学规则得分求和后 cap 到 1,取 ≥ASSESS_THRESHOLD(0.5) 的最高分类型学为 topTypology这就是规则版分类器的主入口
  • checkStruct01 — ≤10 天窗口内 ≥3 笔 $8,000–$9,999 现金存款(>= STRUCT_BAND_MIN_CENTS && < CTR_THRESHOLD_CENTS),主规则得分 0.6。这是 CTR 阈值规避的确定性检测。
  • checkLayer01 — 用 internalDebitsByAccount 建账户转账图,递归 follow() 沿内部链追踪:每跳停留 ≤2 天、转出 ≥80%(LAYER_FORWARD_RATIO)、链上账户 ≥3。这是图级特征,不是单笔阈值——印证 Day 121「layering 必须保留图特征」。
  • checkMule01 — ≤14 天窗口内 ≥5 个不同外部对手 fan-in,随后对外转出 ≥60% 流入额;muleGraphMetrics(c) 另给全窗口 fan-in/fan-out 拓扑度量(扇入/扇出/直通比 passThroughRatio)。
  • assessCaseV2(c) — 在 assessCase 基础上叠加 explanations(每条命中的结构化 RuleTrigger:label/value/threshold/op/unit)、muleGrapharbitrateTypologies(多类型学并存时按确定性优先级 layering>mule>structuring 仲裁主类型学)。

走读结论:assessCase/assessCaseV2/CTR_THRESHOLD_CENTS/muleGraphMetrics 均真实存在且 built+tested。CTR 用现成 CTR_THRESHOLD_CENTS 常量,mule 用 muleGraphMetrics 的扇入扇出——今天的「5 条规则分类器」可直接复用这套已建好的确定性规则,不必新写引擎。

补一个 V2 的细节:arbitrateTypologies 在多类型学并存(叠加/混合洗钱)时按确定性优先级 layering > mule_network > structuring 选 primary,依据是「资金最终去向的可疑程度」。

layering 多跳过账隐匿来源、作案意图最明确,故并存时优先定性为 layering;structuring 仅规避申报、往往是上游入金手法,叠加时退为次要信号。

这与金标难例 mixed_struct_layer(label='layering')的 ground truth 一致,避免了 P1 argmax 平手随机的不可解释性——并存时不靠 Object key 顺序碰运气,而是固定优先级 + 仲裁理由可审计。

3. 今日实战

  1. src/aml/typology.ts(已含 CTR_THRESHOLD_CENTS = 1_000_000assessCaseassessCaseV2)确认/落 5 条确定性规则分类器:CTR 硬阈值、structuring(贴线规避)、layering(链式过账)、mule(扇入扇出)、normal 降级。
  2. 对 Day 121 的 typed.csv 跑一遍 assessCase,把 topTypology(null → 'normal')作为规则版预测。
  3. CTR 用现成的 CTR_THRESHOLD_CENTS 常量;mule 用 muleGraphMetrics 的扇入扇出度量,layering 用 checkLayer01 的图链追踪——不重写引擎,复用已 built+tested 的规则。
  4. 输出规则版 per-typology 命中计数表(5 类各自命中数),并补 1 个 passing test 锁住计数行为。

4. 今日实测 / 产出

  • 已完成src/aml/typology.tsassessCase/assessCaseV2/CTR_THRESHOLD_CENTSBUILT+tested
  • 待跑:规则版 per-typology 计数表 = 待跑(需 typed.csv 落盘),将对 1000 行输出 5 类各自命中计数 + 1 passing test。
  • 状态诚实:typed.csv 未落盘前,per-typology 计数表是规划态——规则引擎本身已绿,但「对 1000 行的实测计数」尚未跑出,不得臆造具体命中数。
  • 可立即验证:规则分类器可先对 Day 121 的 80 案金标集(getGoldenDatasetV11())跑一遍出命中计数,验证管线连通;待 1000 行 typed.csv 落盘后再扩。小集与大集用同一套 assessCase,口径一致。

5. 常见误区 / 陷阱

  • 把 SAR 的软触发硬编码成阈值:SAR 是「已知或有理由怀疑」,强行写死阈值会把模糊地带误判——这部分应留给 HITL/LLM(Day 124)。规则只硬编码 CTR 这类确定性信号。
  • 用 EU AI Act 叙事框 AML 合规:AML 报告义务走 BSA/FinCEN,与 EU AI Act 是两套体系;尤其「AI Act 高风险 2026-08 生效」是过时叙事(已推迟 2027-12-02),不要混淆。
  • CTR 阈值写成浮点金额:本仓金额一律整数分(CTR_THRESHOLD_CENTS = 1_000_000),用 float 比较会引入精度误差,破坏「贴线」判定的确定性。
  • 把 layering 退化成单笔阈值:layering 的链式过账必须用 checkLayer01 的图追踪,单笔金额阈值会漏掉所有多跳过账。
  • 把现金密集型商户的合法存款一律判洗钱:餐厅/便利店的多笔贴线营业款现金存款与 structuring 签名相似,规则会误报(本仓 cashBiz 样本刻意保留这种 FP)。这不是 bug——它逼着 precision 非平凡,提醒「规则的高 recall 必然带来现金密集行业的 FP,须靠 HITL 复核兜底」。

6. 学习资源(每条带 YYYY-MM)

  • FinCEN — BSA reporting requirements / CTR & SAR guidance(FinCEN 官网,执行当周查最新指引发布日期):CTR Form 112、SAR 触发标准、OFAC/PEP 义务的权威定义。
  • FinCEN Form 112(CTR)官方说明(持续有效):单日现金 >$10,000 强制申报的法定依据。
  • FATF — Money Laundering Typologies(FATF 官网,持续更新):structuring 等签名与 BSA 报告义务的对应。
  • Anthropic — Demystifying evals2026-01):确定性 code-check 与 LLM-judge 的分工。
  • 本仓代码:src/aml/typology.tsassessCase/assessCaseV2/CTR_THRESHOLD_CENTS/muleGraphMetrics,已 built+tested)。

SOTA检查 (2026-06 更新)

  • 现役主线:CTR $10k 阈值自 1970 年 BSA 起未变,仍现行有效;CTR/SAR/OFAC/PEP 四件套是 2026 年美国金融机构合规的现役框架。「确定性规则抓硬信号 + LLM/HITL 补软判断」是当前主流 AML 检测架构。
  • 避免/禁用:避免用旧的「AI Act 高风险 2026-08 生效」叙事框合规——AML 走 BSA/FinCEN,EU AI Act(高风险已推迟 2027-12-02)是另一套体系,不要混淆;避免把 SAR 软触发硬编码。
  • 下次复查点:执行当周 WebSearch 「FinCEN CTR SAR 2026 update」确认报告阈值/表单有无修订(CTR $10k 历史稳定但需复查 FinCEN 现行化改革进展);复查 EU AI Act Article 50 时间线(08-02 确认点)。

自测问答(讲得出才算掌握)

  • Q:为什么 CTR 能写成纯规则,SAR 不能? A:CTR 是确定性硬阈值(单日现金 >$10,000 即报,无主观空间),金额可量化、可单测;SAR 是「已知或有理由怀疑」的软触发,里面有「这商户现金存款是否合理」这类模糊语义,必须留给 HITL/LLM,强行写死阈值会误判。
  • Q:现金密集型商户为什么是经典误报来源? A:合法的现金密集型商户(餐厅、便利店)也会有多笔接近 $10k 的营业款现金存款,签名上与 structuring 高度相似。本仓 genNormalCasecashBiz 样本就专门注入这种边界,让规则的 precision 非平凡(会被它误报,是刻意保留的真实感 FP)。
  • Q:AML 合规和 EU AI Act 是一回事吗? A:不是。AML 报告义务走美国 BSA/FinCEN(CTR/SAR/OFAC/PEP),EU AI Act 是 AI 系统治理,两套独立体系。尤其「AI Act 高风险 2026-08 生效」是过时叙事(已推迟 2027-12-02),不能用它框 AML 合规。

衔接

  • 昨天:Day 121 — FATF 五大类型学签名(把洗钱手法落成带真值标签的数据)。
  • 今天:吃透 BSA 报告四件套(CTR/SAR/OFAC/PEP),用确定性规则分类器对 typed.csv 产出 per-typology 命中计数。
  • 明天:Day 123 — 混淆矩阵与 per-typology 召回(把规则分类器输出喂进 5×5 矩阵,出 recall/precision/F1)。