饒玲玲
(上海交通大學(xué) 計算機(jī)科學(xué)及工程系, 上海 200240)
基于J2EE的風(fēng)險保證金清算系統(tǒng)
饒玲玲
(上海交通大學(xué) 計算機(jī)科學(xué)及工程系, 上海 200240)
基于J2EE的風(fēng)險保證金清算系統(tǒng)克服了業(yè)內(nèi)同類系統(tǒng)存在的缺陷,使得用戶能實(shí)時了解投資風(fēng)險,進(jìn)行正確的市場決策。介紹了的風(fēng)險保證金清算系統(tǒng)利用JQuery(一種JavaScript框架)、Ajax(Asynchronous JavaScript And XML)、Gemfire(一種分布式數(shù)據(jù)庫管理平臺)等核心技術(shù),結(jié)合Sybase(一種商業(yè)關(guān)系型數(shù)據(jù)庫)、AutoSys(自動化系統(tǒng))來收集和處理前一個交易日的交易及市場數(shù)據(jù),根據(jù)客戶個性化的風(fēng)險配置計算最終的風(fēng)險并將風(fēng)險報告通過客戶端及郵件進(jìn)行展示。
風(fēng)險; 保證金; J2EE(Java 2 Platform,Enterprise Edition)
金融市場交易中存在較大的杠桿,尤其是近年來日益繁榮的國際金融衍生品市場,在給投資者和金融機(jī)構(gòu)帶來巨大利潤的同時也帶來了巨大的風(fēng)險,如何對風(fēng)險進(jìn)行有效地管理,以獲取最大利潤是銀行和各種金融機(jī)構(gòu)追逐的目標(biāo)。風(fēng)險保證金[1]制度是交易市場中交易雙方最基礎(chǔ)的保障,也是最根本的風(fēng)險管控手段[2]。
風(fēng)險保證金包括初始保證金和追加保證金。初始保證金其實(shí)就是金融產(chǎn)品交易合約履行前買方預(yù)付的一種押金,其目的是涵蓋市場交易的風(fēng)險。基于市場的變動,當(dāng)買方結(jié)算賬戶不能滿足最低的初始保證金時,賣方有權(quán)向買方追加保證金以覆蓋市場風(fēng)險,這就是追加保證金。
較當(dāng)前市場上其他的風(fēng)險保證金系統(tǒng),本文論述的風(fēng)險保證金系統(tǒng)具有如下特點(diǎn):
(1) 可視化的配置頁面:配置風(fēng)險量化計算參數(shù),如客戶信息、同一客戶的不同賬號信息、風(fēng)險量化計算模型及不同模型的不同過濾規(guī)則等。由于風(fēng)險保證金系統(tǒng)的輸入數(shù)據(jù)是來自其它交易系統(tǒng)或者第三方機(jī)構(gòu),數(shù)據(jù)種類多,數(shù)量大,根據(jù)配置的風(fēng)險量化計算參數(shù)篩選需要的輸入數(shù)據(jù),給操作員帶來了極大的便利。
(2) 動態(tài)過濾機(jī)制:當(dāng)輸入數(shù)據(jù)結(jié)構(gòu)出現(xiàn)變化或者引入新的金融產(chǎn)品/規(guī)則時,本系統(tǒng)也可以根據(jù)已經(jīng)配置好的過濾規(guī)則進(jìn)行動態(tài)過濾,相比其它系統(tǒng)只針對特定產(chǎn)品/規(guī)則的靜態(tài)過濾,本系統(tǒng)的優(yōu)勢就顯現(xiàn)出來了。
(3) 良好的可擴(kuò)展性:采用B/S架構(gòu),使用常用的瀏覽器進(jìn)行操作通過HTTP/SOAP等協(xié)議與服務(wù)端進(jìn)行數(shù)據(jù)交互,只需要在服務(wù)器端進(jìn)行開發(fā)及部署,而不需要升級每個客戶端,具有良好的可擴(kuò)展性。
(4) 數(shù)據(jù)讀寫迅速:前臺采用Ajax異步無刷新機(jī)制和JQuery技術(shù),后臺采用Gemfire分布式內(nèi)存數(shù)據(jù)庫,讓用戶能快速獲取想要的數(shù)據(jù),大大地提升了用戶體驗(yàn)度。在風(fēng)險計算方面,分布式緩存技術(shù)也帶來了性能方面的提高。
1.1 Ajax 技術(shù)
Ajax即Asynchronous JavaScript and XML(異步JavaScript和XML),是一種用于創(chuàng)建更快更好以及交互式更強(qiáng)的網(wǎng)頁應(yīng)用開發(fā)技術(shù),與傳統(tǒng)的web應(yīng)用不同,Ajax可實(shí)現(xiàn)無刷新狀態(tài)更新頁面和異步提交。Ajax被大眾接受要追溯到1997年,正是Google公司Google earth、Google suggest及Gmail等產(chǎn)品的廣泛使用,才讓Ajax走入了大眾的視野。使用Ajax,Web應(yīng)用程序可以發(fā)送數(shù)據(jù)且通過服務(wù)器端的檢索異步操作在不干擾現(xiàn)有頁面的前提下實(shí)現(xiàn)顯示與一系列動作。類似于DHTML或LAMP,Ajax不是一種單一技術(shù),而是一系列原有技術(shù)的結(jié)合體,包括XHTML、XML、XSLT等。
Ajax技術(shù)的4層體系結(jié)構(gòu),如圖1所示[3-4]。

圖1 采用Ajax技術(shù)的四層體系結(jié)構(gòu)
1.2 JQuery技術(shù)
JQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之后又一個優(yōu)秀的JavaScript代碼庫(或JavaScript框架)。JQuery設(shè)計的宗旨是“write Less,Do More”,即倡導(dǎo)寫更少的代碼,做更多的事情[5]。它封裝JavaScript常用的功能代碼,提供一種簡便的JavaScript設(shè)計模式,優(yōu)化HTML文檔操作、事件處理、動畫設(shè)計和Ajax交互。
JQuery的核心特性可以總結(jié)為:具有獨(dú)特的鏈?zhǔn)秸Z法和短小清晰的多功能接口;具有高效靈活的CSS選擇器,并且可對CSS選擇器進(jìn)行擴(kuò)展;擁有便捷的插件擴(kuò)展機(jī)制和豐富的插件。JQuery兼容各種主流瀏覽器,如IE 、FF等。
JQuery以其簡潔、架構(gòu)清楚、擴(kuò)展性好等優(yōu)點(diǎn)深受歡迎,但新版本沒有保留對舊版本選擇器的支持等缺點(diǎn)也引起開發(fā)者和企業(yè)的注意。
1.3 Gemfire技術(shù)
Gemfire是一個基于內(nèi)存操作的高性能分布式緩存系統(tǒng),與傳統(tǒng)關(guān)系型數(shù)據(jù)庫相比,它提供了更好的并發(fā)訪問能力,也稱為內(nèi)存數(shù)據(jù)庫。具有如下優(yōu)點(diǎn):數(shù)據(jù)集的分布式處理、高可用性和容錯性、客戶端緩存機(jī)制等。
Gemfire作為企業(yè)級分布式緩存解決方案,Gemfire有以下三種部署架構(gòu):
(1) 點(diǎn)對點(diǎn)模式(Peer-to-Peer):在這種模式中,Gemfire緩存嵌入在應(yīng)用程序中,與應(yīng)用程序共享堆空間。同一個Gemfire集群環(huán)境的不同節(jié)點(diǎn)不同應(yīng)用之間可以互相共享數(shù)據(jù)。
(2) C/S(客戶端/服務(wù)器端)模式:這種模式中,所有的服務(wù)器端緩存在相同的分布式系統(tǒng)中,客戶端緩存有可能屬于同一個分布式系統(tǒng),也有可能屬于不同的分布式系統(tǒng)。服務(wù)器之間以點(diǎn)對點(diǎn)模式進(jìn)行數(shù)據(jù)交互,客戶端連接到服務(wù)器組中的一個或者多個服務(wù)器,與服務(wù)器進(jìn)行交互。
(3) WAN模式:該模式是通過配置網(wǎng)關(guān)部件與其他系統(tǒng)進(jìn)行通信,每個分布式系統(tǒng)內(nèi)部的各個節(jié)點(diǎn)之間以點(diǎn)對點(diǎn)模式工作,每個分布式系統(tǒng)還可以充當(dāng)客戶端/服務(wù)器端模式中的服務(wù)器系統(tǒng)。
2.1 系統(tǒng)的構(gòu)建
Web前端采用JQuery庫進(jìn)行開發(fā),通過XSL和Ajax技術(shù)與服務(wù)器端進(jìn)行交互。Ajax是基于XMLHttpRequest對象的異步JavaScript請求處理方式進(jìn)行工作的,考慮到XMLHttpRequest對象在大部分瀏覽器上已經(jīng)實(shí)現(xiàn)且數(shù)據(jù)格式?jīng)]有限制,通過一個簡單的接口就能將數(shù)據(jù)從客戶端傳遞到服務(wù)器端且不影響用戶當(dāng)前操作。Ajax請求返回的XML數(shù)據(jù)通過XSL技術(shù)轉(zhuǎn)化成最終的HTML。
系統(tǒng)后端是基于Spring MVC + Hibernate的框架,采用J2EE進(jìn)行開發(fā)。 Spring MVC架構(gòu)實(shí)現(xiàn)了系統(tǒng)的層級分離,能更直觀地控制業(yè)務(wù)跳轉(zhuǎn),通過Hibernate及spring自身對事物的支持,實(shí)現(xiàn)數(shù)據(jù)持久化與數(shù)據(jù)庫交互。系統(tǒng)選擇Gemfire 服務(wù)器-客戶端模式,支持大量節(jié)點(diǎn)連接到本服務(wù)器。系統(tǒng)這樣的構(gòu)建,各個功能模塊獨(dú)立,降低了代碼的復(fù)雜性,邏輯更清楚,性能得到了改善。
系統(tǒng)報表管理模塊在設(shè)計時,采用了水晶報表(crystal)/ itext/poi等報表產(chǎn)品,利用java開源工具類庫產(chǎn)生PDF/EXCEL格式的相應(yīng)文件,文件產(chǎn)生后,用Spring Email實(shí)現(xiàn)文件以郵件附件的形式發(fā)送給客戶。文件在Linux服務(wù)器上的ftp傳輸是用KSH腳本實(shí)現(xiàn)的。頁面打開報表文件是用RESTful Web Services的方式實(shí)現(xiàn)的。
客戶端使用瀏覽器IE、Chrome、Firefox訪問系統(tǒng)。前后端服務(wù)器的硬件配置,表1所示。

表1 硬件的配置
2.2 系統(tǒng)工作流程
風(fēng)險保證金系統(tǒng)的輸入數(shù)據(jù)是來自上游系統(tǒng)的每個交易日的交易數(shù)據(jù)和市場數(shù)據(jù),這些外部數(shù)據(jù)通過FTP的形式傳輸?shù)奖鞠到y(tǒng),在獲取到文件傳輸結(jié)束標(biāo)示符后,通過AutoSys啟動對不同數(shù)據(jù)不同文件分析的指令,將通過固有屬性驗(yàn)證的數(shù)據(jù)進(jìn)行處理并導(dǎo)入Sybase數(shù)據(jù)庫。系統(tǒng)核心模塊采用Java語言和Spring框架,構(gòu)建一個Spring batch流,將從數(shù)據(jù)庫中獲取到的數(shù)據(jù)放入Spring batch框架,根據(jù)過濾規(guī)則進(jìn)行逐層邏輯運(yùn)算確認(rèn)。最后,將不同的數(shù)據(jù)根據(jù)不同的風(fēng)險計算模型(VaR或者Stress)進(jìn)行風(fēng)險值的計算并將計算結(jié)果在前端進(jìn)行展示(包括系統(tǒng)主頁面信息的展示和各種市場數(shù)據(jù)報表/風(fēng)險量化分析報表的展示)。系統(tǒng)工作流程圖,如圖2所示。

圖2 風(fēng)險保證金系統(tǒng)工作流程圖
系統(tǒng)從邏輯上可以劃分為展現(xiàn)層,數(shù)據(jù)采集層,數(shù)據(jù)處理層和風(fēng)險計算層。邏輯設(shè)計圖(箭頭指向代表數(shù)據(jù)的流向)如圖3所示。

圖3 系統(tǒng)邏輯設(shè)計圖
展現(xiàn)層:為用戶提供可視化的數(shù)據(jù)展現(xiàn)和配置平臺。用戶在該層配置賬戶基本信息和數(shù)據(jù)過濾規(guī)則,并將最后的風(fēng)險計算結(jié)果在該層顯示,用戶的體驗(yàn)度最高也對系統(tǒng)提出了更高的要求。本系統(tǒng)采用的開發(fā)技術(shù)和框架讓其比同類產(chǎn)品更有優(yōu)勢。
數(shù)據(jù)處理層:根據(jù)展示層配置的過濾規(guī)則,進(jìn)行交易數(shù)據(jù)或者市場數(shù)據(jù)的過濾驗(yàn)證,將滿足過濾條件的數(shù)據(jù)發(fā)往風(fēng)險計算層進(jìn)行風(fēng)險值的計算,驗(yàn)證不通過的數(shù)據(jù)則發(fā)送到報表展現(xiàn)模塊,生成各種相應(yīng)的錯誤報表以便用戶查看。
數(shù)據(jù)采集層:該層主要工作就是從外部系統(tǒng)收集各種市場和交易數(shù)據(jù),從內(nèi)部系統(tǒng)收集賬戶信息,風(fēng)險計算模型信息及數(shù)據(jù)過濾規(guī)則,獲取到這些信息后再進(jìn)行數(shù)據(jù)整合(包括格式類型轉(zhuǎn)換及匯總等操作),以滿足數(shù)據(jù)處理層對不同數(shù)據(jù)的輸入要求。
風(fēng)險計算層:根據(jù)不同的交易數(shù)據(jù)類型,該層一方面可利用外部清算中心的計算模型進(jìn)行風(fēng)險值的計算,另一方面也可利用系統(tǒng)自身的計算模型進(jìn)行風(fēng)險值的計算,并將最后的風(fēng)險計算值發(fā)送到展示層進(jìn)行展示。
本系統(tǒng)的核心頁面包括資產(chǎn)組合參數(shù)配置頁面、交易數(shù)據(jù)過濾規(guī)則配置頁面、報表頁面,下面對這三個頁面進(jìn)行介紹。
資產(chǎn)組合參數(shù)配置頁面包括客戶的名稱、編號、狀態(tài)、所屬區(qū)域、是否是真實(shí)客戶等靜態(tài)信息。該頁面會對輸入數(shù)據(jù)進(jìn)行實(shí)時的動態(tài)驗(yàn)證,當(dāng)輸入值不符合該參數(shù)事先定義好的數(shù)據(jù)規(guī)則時,頁面上會有紅色高亮的信息提示用戶重新輸入。當(dāng)資產(chǎn)組合基本信息配置不完整時,系統(tǒng)不會保存并提示用戶將基本信息填寫完整。每個子頁面都有收縮/展開按鈕,這樣的設(shè)計使得頁面布局更簡潔、美觀。
交易數(shù)據(jù)過濾規(guī)則是用來過濾出那些真正需要進(jìn)行風(fēng)險計算的數(shù)據(jù),提高風(fēng)險計算模型的計算效率。本頁面根據(jù)不同賬戶下不同產(chǎn)品的不同風(fēng)險計算模型會有不同的過濾規(guī)則,已經(jīng)配置過過濾規(guī)則的產(chǎn)品會以黑色粗體的形式顯示。如圖4所示。

圖4 數(shù)據(jù)過濾規(guī)則
為便于用戶動態(tài)配置過濾規(guī)則,每個過濾規(guī)則的顯示效果及數(shù)據(jù)范圍都可以在可視化編輯頁面進(jìn)行編輯。
報表頁面是從各種緯度(單條交易/整個資產(chǎn)組合角度、不同風(fēng)險計算模型角度、不同交易類型角度)生成不同的報表。通過點(diǎn)擊頁面上的按鈕就能直接查看或者下載查看。該頁面不僅可以查看當(dāng)前交易日的報表還提供對歷史報表查看的服務(wù),使得用戶可以結(jié)合歷史數(shù)據(jù)更準(zhǔn)確地定位資產(chǎn)組合當(dāng)前的風(fēng)險。
本文介紹了已經(jīng)在某銀行使用風(fēng)險保證金系統(tǒng),從當(dāng)前金融市場中存在的各種風(fēng)險引入了保證金和風(fēng)險計算的概念。針對業(yè)內(nèi)現(xiàn)有風(fēng)險保證金系統(tǒng)的不足,本系統(tǒng)作了相應(yīng)的改進(jìn),如系統(tǒng)架構(gòu)邏輯更清晰,賬戶信息和數(shù)據(jù)過濾規(guī)則可以動態(tài)配置,以及Gemfire的使用帶來的性能方面的提高,通過本系統(tǒng)計算出的市場風(fēng)險值,使得操作員能更準(zhǔn)確的作出反應(yīng),以獲取最大的收益。
風(fēng)險保證金系統(tǒng)為銀行和金融機(jī)構(gòu)準(zhǔn)確地定位市場風(fēng)險,從而作出正確的決策有重要的意義。現(xiàn)代金融市場的發(fā)展給本系統(tǒng)帶來機(jī)遇的同時也帶來了新的挑戰(zhàn),如過多依賴外部系統(tǒng),系統(tǒng)自身風(fēng)險計算模型單一復(fù)雜和風(fēng)險計算性能瓶頸等。這些都是我們今后可以努力提升的方向。
[1] 李傳峰.SPAN保證金系統(tǒng)及其國內(nèi)應(yīng)用價值分析[J]. 海南金融,2012,286(9):62-64.
[2] 黃榮兵.風(fēng)險值VaR框架下SPAN風(fēng)險控制理論與應(yīng)用研究[D].武漢:華中科技大學(xué),2010:41-43.
[3] 胡玲霞,李賓.基于Ajax技術(shù)及三層架構(gòu)的Web應(yīng)用[J].現(xiàn)代計算機(jī)(專業(yè)版),2009,(8):152-155.
[4] 尹婷,趙思佳.基于JQuery框架的Ajax網(wǎng)站設(shè)計模式的研究[J].湖南環(huán)境生物職業(yè)技術(shù)學(xué)院學(xué)報,2010,(3):1.
[5] 朱育發(fā).JQuery與JQuery Mobile開發(fā)完全技術(shù)寶典[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-),女,江西新干人,軟件工程師。研究方向:金融領(lǐng)域數(shù)據(jù)庫分布系統(tǒng)。
1007-757X(2017)06-0074-03
TP311
A
2017.01.20)