基于J2EE的风险保证金清算系统
2017-06-27饶玲玲
饶玲玲
(上海交通大学 计算机科学及工程系, 上海 200240)
基于J2EE的风险保证金清算系统
饶玲玲
(上海交通大学 计算机科学及工程系, 上海 200240)
基于J2EE的风险保证金清算系统克服了业内同类系统存在的缺陷,使得用户能实时了解投资风险,进行正确的市场决策。介绍了的风险保证金清算系统利用JQuery(一种JavaScript框架)、Ajax(Asynchronous JavaScript And XML)、Gemfire(一种分布式数据库管理平台)等核心技术,结合Sybase(一种商业关系型数据库)、AutoSys(自动化系统)来收集和处理前一个交易日的交易及市场数据,根据客户个性化的风险配置计算最终的风险并将风险报告通过客户端及邮件进行展示。
风险; 保证金; J2EE(Java 2 Platform,Enterprise Edition)
0 引言
金融市场交易中存在较大的杠杆,尤其是近年来日益繁荣的国际金融衍生品市场,在给投资者和金融机构带来巨大利润的同时也带来了巨大的风险,如何对风险进行有效地管理,以获取最大利润是银行和各种金融机构追逐的目标。风险保证金[1]制度是交易市场中交易双方最基础的保障,也是最根本的风险管控手段[2]。
风险保证金包括初始保证金和追加保证金。初始保证金其实就是金融产品交易合约履行前买方预付的一种押金,其目的是涵盖市场交易的风险。基于市场的变动,当买方结算账户不能满足最低的初始保证金时,卖方有权向买方追加保证金以覆盖市场风险,这就是追加保证金。
较当前市场上其他的风险保证金系统,本文论述的风险保证金系统具有如下特点:
(1) 可视化的配置页面:配置风险量化计算参数,如客户信息、同一客户的不同账号信息、风险量化计算模型及不同模型的不同过滤规则等。由于风险保证金系统的输入数据是来自其它交易系统或者第三方机构,数据种类多,数量大,根据配置的风险量化计算参数筛选需要的输入数据,给操作员带来了极大的便利。
(2) 动态过滤机制:当输入数据结构出现变化或者引入新的金融产品/规则时,本系统也可以根据已经配置好的过滤规则进行动态过滤,相比其它系统只针对特定产品/规则的静态过滤,本系统的优势就显现出来了。
(3) 良好的可扩展性:采用B/S架构,使用常用的浏览器进行操作通过HTTP/SOAP等协议与服务端进行数据交互,只需要在服务器端进行开发及部署,而不需要升级每个客户端,具有良好的可扩展性。
(4) 数据读写迅速:前台采用Ajax异步无刷新机制和JQuery技术,后台采用Gemfire分布式内存数据库,让用户能快速获取想要的数据,大大地提升了用户体验度。在风险计算方面,分布式缓存技术也带来了性能方面的提高。
1 风险保证金系统的关键技术简介
1.1 Ajax 技术
Ajax即Asynchronous JavaScript and XML(异步JavaScript和XML),是一种用于创建更快更好以及交互式更强的网页应用开发技术,与传统的web应用不同,Ajax可实现无刷新状态更新页面和异步提交。Ajax被大众接受要追溯到1997年,正是Google公司Google earth、Google suggest及Gmail等产品的广泛使用,才让Ajax走入了大众的视野。使用Ajax,Web应用程序可以发送数据且通过服务器端的检索异步操作在不干扰现有页面的前提下实现显示与一系列动作。类似于DHTML或LAMP,Ajax不是一种单一技术,而是一系列原有技术的结合体,包括XHTML、XML、XSLT等。
Ajax技术的4层体系结构,如图1所示[3-4]。
图1 采用Ajax技术的四层体系结构
1.2 JQuery技术
JQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。JQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情[5]。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
JQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的CSS选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。JQuery兼容各种主流浏览器,如IE 、FF等。
JQuery以其简洁、架构清楚、扩展性好等优点深受欢迎,但新版本没有保留对旧版本选择器的支持等缺点也引起开发者和企业的注意。
1.3 Gemfire技术
Gemfire是一个基于内存操作的高性能分布式缓存系统,与传统关系型数据库相比,它提供了更好的并发访问能力,也称为内存数据库。具有如下优点:数据集的分布式处理、高可用性和容错性、客户端缓存机制等。
Gemfire作为企业级分布式缓存解决方案,Gemfire有以下三种部署架构:
(1) 点对点模式(Peer-to-Peer):在这种模式中,Gemfire缓存嵌入在应用程序中,与应用程序共享堆空间。同一个Gemfire集群环境的不同节点不同应用之间可以互相共享数据。
(2) C/S(客户端/服务器端)模式:这种模式中,所有的服务器端缓存在相同的分布式系统中,客户端缓存有可能属于同一个分布式系统,也有可能属于不同的分布式系统。服务器之间以点对点模式进行数据交互,客户端连接到服务器组中的一个或者多个服务器,与服务器进行交互。
(3) WAN模式:该模式是通过配置网关部件与其他系统进行通信,每个分布式系统内部的各个节点之间以点对点模式工作,每个分布式系统还可以充当客户端/服务器端模式中的服务器系统。
2 风险保证金系统的构建及工作流程
2.1 系统的构建
Web前端采用JQuery库进行开发,通过XSL和Ajax技术与服务器端进行交互。Ajax是基于XMLHttpRequest对象的异步JavaScript请求处理方式进行工作的,考虑到XMLHttpRequest对象在大部分浏览器上已经实现且数据格式没有限制,通过一个简单的接口就能将数据从客户端传递到服务器端且不影响用户当前操作。Ajax请求返回的XML数据通过XSL技术转化成最终的HTML。
系统后端是基于Spring MVC + Hibernate的框架,采用J2EE进行开发。 Spring MVC架构实现了系统的层级分离,能更直观地控制业务跳转,通过Hibernate及spring自身对事物的支持,实现数据持久化与数据库交互。系统选择Gemfire 服务器-客户端模式,支持大量节点连接到本服务器。系统这样的构建,各个功能模块独立,降低了代码的复杂性,逻辑更清楚,性能得到了改善。
系统报表管理模块在设计时,采用了水晶报表(crystal)/ itext/poi等报表产品,利用java开源工具类库产生PDF/EXCEL格式的相应文件,文件产生后,用Spring Email实现文件以邮件附件的形式发送给客户。文件在Linux服务器上的ftp传输是用KSH脚本实现的。页面打开报表文件是用RESTful Web Services的方式实现的。
客户端使用浏览器IE、Chrome、Firefox访问系统。前后端服务器的硬件配置,表1所示。
表1 硬件的配置
2.2 系统工作流程
风险保证金系统的输入数据是来自上游系统的每个交易日的交易数据和市场数据,这些外部数据通过FTP的形式传输到本系统,在获取到文件传输结束标示符后,通过AutoSys启动对不同数据不同文件分析的指令,将通过固有属性验证的数据进行处理并导入Sybase数据库。系统核心模块采用Java语言和Spring框架,构建一个Spring batch流,将从数据库中获取到的数据放入Spring batch框架,根据过滤规则进行逐层逻辑运算确认。最后,将不同的数据根据不同的风险计算模型(VaR或者Stress)进行风险值的计算并将计算结果在前端进行展示(包括系统主页面信息的展示和各种市场数据报表/风险量化分析报表的展示)。系统工作流程图,如图2所示。
图2 风险保证金系统工作流程图
3 系统业务逻辑架构实现
系统从逻辑上可以划分为展现层,数据采集层,数据处理层和风险计算层。逻辑设计图(箭头指向代表数据的流向)如图3所示。
图3 系统逻辑设计图
展现层:为用户提供可视化的数据展现和配置平台。用户在该层配置账户基本信息和数据过滤规则,并将最后的风险计算结果在该层显示,用户的体验度最高也对系统提出了更高的要求。本系统采用的开发技术和框架让其比同类产品更有优势。
数据处理层:根据展示层配置的过滤规则,进行交易数据或者市场数据的过滤验证,将满足过滤条件的数据发往风险计算层进行风险值的计算,验证不通过的数据则发送到报表展现模块,生成各种相应的错误报表以便用户查看。
数据采集层:该层主要工作就是从外部系统收集各种市场和交易数据,从内部系统收集账户信息,风险计算模型信息及数据过滤规则,获取到这些信息后再进行数据整合(包括格式类型转换及汇总等操作),以满足数据处理层对不同数据的输入要求。
风险计算层:根据不同的交易数据类型,该层一方面可利用外部清算中心的计算模型进行风险值的计算,另一方面也可利用系统自身的计算模型进行风险值的计算,并将最后的风险计算值发送到展示层进行展示。
4 风险保证金系统的实现效果
本系统的核心页面包括资产组合参数配置页面、交易数据过滤规则配置页面、报表页面,下面对这三个页面进行介绍。
资产组合参数配置页面包括客户的名称、编号、状态、所属区域、是否是真实客户等静态信息。该页面会对输入数据进行实时的动态验证,当输入值不符合该参数事先定义好的数据规则时,页面上会有红色高亮的信息提示用户重新输入。当资产组合基本信息配置不完整时,系统不会保存并提示用户将基本信息填写完整。每个子页面都有收缩/展开按钮,这样的设计使得页面布局更简洁、美观。
交易数据过滤规则是用来过滤出那些真正需要进行风险计算的数据,提高风险计算模型的计算效率。本页面根据不同账户下不同产品的不同风险计算模型会有不同的过滤规则,已经配置过过滤规则的产品会以黑色粗体的形式显示。如图4所示。
图4 数据过滤规则
为便于用户动态配置过滤规则,每个过滤规则的显示效果及数据范围都可以在可视化编辑页面进行编辑。
报表页面是从各种纬度(单条交易/整个资产组合角度、不同风险计算模型角度、不同交易类型角度)生成不同的报表。通过点击页面上的按钮就能直接查看或者下载查看。该页面不仅可以查看当前交易日的报表还提供对历史报表查看的服务,使得用户可以结合历史数据更准确地定位资产组合当前的风险。
5 总结
本文介绍了已经在某银行使用风险保证金系统,从当前金融市场中存在的各种风险引入了保证金和风险计算的概念。针对业内现有风险保证金系统的不足,本系统作了相应的改进,如系统架构逻辑更清晰,账户信息和数据过滤规则可以动态配置,以及Gemfire的使用带来的性能方面的提高,通过本系统计算出的市场风险值,使得操作员能更准确的作出反应,以获取最大的收益。
风险保证金系统为银行和金融机构准确地定位市场风险,从而作出正确的决策有重要的意义。现代金融市场的发展给本系统带来机遇的同时也带来了新的挑战,如过多依赖外部系统,系统自身风险计算模型单一复杂和风险计算性能瓶颈等。这些都是我们今后可以努力提升的方向。
[1] 李传峰.SPAN保证金系统及其国内应用价值分析[J]. 海南金融,2012,286(9):62-64.
[2] 黄荣兵.风险值VaR框架下SPAN风险控制理论与应用研究[D].武汉:华中科技大学,2010:41-43.
[3] 胡玲霞,李宾.基于Ajax技术及三层架构的Web应用[J].现代计算机(专业版),2009,(8):152-155.
[4] 尹婷,赵思佳.基于JQuery框架的Ajax网站设计模式的研究[J].湖南环境生物职业技术学院学报,2010,(3):1.
[5] 朱育发.JQuery与JQuery Mobile开发完全技术宝典[M].北京:中国铁道出版社,2014.
A Risk Margin Liquidation System Based on J2EE
Rao Lingling
(Department of Computer Technology, Shanghai JiaoTong University, 200240, China)
The J2EE-based risk margin liquidation system overcomes the shortcomings of similar systems in the industry. It enables users to understand the investment risks in real time, and makes the right market decisions. This article describes the risk margin clearing system using JQuery (a JavaScript framework), Ajax (Asynchronous JavaScript And XML), Gemfire (a distributed database management platform) and other core technologies, combined with Sybase (a business relational database), AutoSys (Automated systems) to collect and process transactions and market data for the previous trading day, and then calculate the final risk based on the customer's personalized risk profile and present the risk report through the clients and mail.
Risk; Deposit; J2EE
饶玲玲(1986-),女,江西新干人,软件工程师。研究方向:金融领域数据库分布系统。
1007-757X(2017)06-0074-03
TP311
A
2017.01.20)