摘 要: 针对银行机构反洗钱大额交易中存在的问题设计了一个检错系统。介绍了系统的主要功能和相关设计,详细分析了系统的数据处理技术。本系统已用于对银行机构的反洗钱检查中。
关键词: 反洗钱;大额交易;数据处理
随着2006年新反洗钱法规的出台,各家金融机构纷纷或自行设计反洗钱监测分析报告系统或购买第三方机构的相应软件,以辅助其履行反洗钱大额交易和可疑交易报告义务。在随后几年对多家银行金融机构的现场检查中发现各机构均不同程度地存在大额交易错报和漏报情况。究其原因发现各家机构的大额交易均由系统自动采集和报告,少有人工分析或干预,且各家机构都自认为其反洗钱监测分析报告系统能够精确地采集大额交易并及时上报,不会主动采取措施检查大额交易错报和漏报问题,因此大额交易报告中存在的问题也难以被发现。而银行业的大额交易报告数量占所有大额交易报告量的99%以上,为提高大额交易的整体报告质量,需要加强对银行大额交易问题的监督和检查。为提高相关检查的质量和效率,本设计开发了银行反洗钱大额交易检错系统,能够快速地发现各银行机构大额交易存在的错报和漏报问题。
1 系统功能
银行反洗钱大额交易检错系统能一次性发现大额交易监测报告系统存在的所有关键问题。系统使用人员可根据反馈结果剖析产生问题的根源,从而帮助银行改正其大额交易监测报告系统中存在的问题,减少错报漏报的可能。
银行反洗钱大额交易检错系统分为两个部分:大额交易错报检测部分和大额交易漏报检测部分。
1.1 大额交易错报检测
大额交易错报检测部分对已经上报的大额交易报告按条款进行分析,根据《金融机构大额交易和可疑交易报告管理办法》中对大额交易条款的规定,查找不符合条款规定而已上报的大额交易,标记出错报大额交易记录和错误原因。
1.2 大额交易漏报检测
大额交易漏报检测部分对银行一段时间内的部分交易数据进行筛选,分析生成符合各规定条款的大额交易,再与银行同时间已报送的大额交易进行比对,反馈未能报送(即漏报)的大额交易记录。
2 系统设计
2.1 总体架构
银行反洗钱大额交易检错系统存在以下特点:
(1)处理的数据量大。根据银行大小的不同,采集的银行一段时间内的交易数据一般为几百万至上千万条不等,大多数时候需要系统处理的数据量巨大。
(2)需要一定的响应时速。
(3)保障数据的安全。无论是银行已报的大额交易报告,还是银行的业务交易数据,都极其敏感且决不能向外泄露,因此要从数据、系统以及使用人员上都要保证数据的安全。
(4)数据基本不需要维护。除必要的用户与日志数据需要管理外,被处理的银行数据基本是一次性被使用的。
(5)系统使用范围小。该系统主要用于对银行的反洗钱检查工作中,使用者仅限于内部工作人员。
系统存在的以上特点适合采用传统的C/S两层结构。系统的两层结构说明如下:
(1)应用层:为系统应用程序,包含用户功能命令、数据入库前处理、数据库访问服务等。系统应用界面设计采用Visual C# 2005完成。
(2)数据层:为数据库服务程序,负责数据存取和数据处理。系统数据库使用SQL Server 2005,数据处理采用存储过程完成。
2.2功能模块设计
银行反洗钱大额交易检错系统的主要功能菜单如表1所示。
为保证对数据的安全与适当使用,特别增加了日志管理,将系统使用人员的每次操作都进行了记录,以便追溯与监督。
2.3 数据库设计
鉴于银行自动集中采集核心交易数据可能会导致大额错报和漏报问题,大额交易检错系统采集了银行易出错业务的原始交易数据,并直接在原始交易数据上筛选符合规定条款的大额交易。涉及的原始业务交易包括人民币汇款交易、人民币现金交易、跨境汇款、外币兑换等。
银行反洗钱大额交易检错系统涉及的主要数据表以及核心属性如表2所示。
为便于数据处理,数据库表中涉及金额的属性的数据类型均设置为数字,涉及日期的属性的数据类型均设置为8位字符,其他属性的数据类型均设置为可变字符。
3 数据处理
3.1 存储过程
银行反洗钱大额交易检错系统涉及处理的数据量大,并需要对数据进行大量的查询和更新,且查询和更新都有较为复杂的判断条件,为提高SQL语句的执行速度和保证数据的安全,该系统的数据处理基本采用编写存储过程的方式来执行完成。
下面简单例举系统中查询错报大额交易的存储过程和C#语言实现的相关执行代码。
(1)存储过程
CREATE PROCEDURE proc_ERSelect
AS
select*from tb_Report
where ErrorTag<>′0′
//ErrorTag为0标示大额交易正确报送
order by RDate,CIDNumber
(2)相关执行代码
……
sqlConn=new System.Data.SqlClient.SqlConnection();
sqlCommand=sqlConn.CreateCommand();
connectString conStr=new connectString();
sqlConn.ConnectionString=conStr.getConnstr();
//获取数据库连接字符串
QueryValue=new DataSet();//查询结果数据集
string sqlQuery="Exec proc_ERSelect";
//执行存储过程语句
sqlConn.Open();
sqlCommand.CommandText=sqlQuery;
sqlAdapter=new System.Data.SqlClient.SqlDataAdapter();
sqlAdapter.SelectCommand=sqlCommand;
QueryValue.Clear();
sqlAdapter.Fill(QueryValue);
sqlConn.Close();
……
3.2 数据预处理
银行反洗钱大额交易检错系统需要对银行提交过来的原始数据进行预处理,主要包括两个关键部分:涉及外币交易的交易金额转换为美元金额和汇总客户当天单向(资金进或者资金出)交易金额。前部分在应用程序中处理并作为数据记录的一个属性值导入到数据库中,后部分通过编写存储过程来执行完成。
3.3 数据分类处理
人民银行规定的大额交易特征明确给出了相关的属性和属性值,且属性之间相互依赖,如交易方式(现金或转账)的不同、账户属性(单位或个人)的不同、币种(人民币或外币)的不同都会导致大额交易的交易金额阈值不一样[2],因此可根据这些属性以及属性间的关系来进行分类。而大额交易特征涉及的属性少,并且属性值已量化,所以其数据分类规则非常适合采用决策树进行描述。
下面以人民币汇款交易筛选大额交易为例,制作一棵如图1所示的决策树,决策树的每条分支是一个分类规则,规则之间并列,是逻辑或的关系。
在系统数据分类规则中对交易对手采用的是按其名称长度来判断,所以分类的准确率不能达到100%,极少数结果需要人工判断。
本系统所有的分类规则均采用编写存储过程来实现。
本系统已应用于对多家银行机构的反洗钱检查中,系统发现大额交易的错报和漏报速度快且准确率高,大大提高了反洗钱检查的速度和质量,从而也能很快地帮助银行机构改正其大额交易监测报告系统存在的问题。
参考文献
[1] 银行业大额交易和可疑交易报告数据报送接口规范[Z].2008(修订版).
[2] 金融机构大额交易和可疑交易报告管理办法[Z].中国人民银行令(2006)第2号.