于少聰, 鄭山紅
(長春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 吉林 長春 130102)
長久以來,在我國利率管控的大環(huán)境下,商業(yè)銀行在貸款中實(shí)行無差異化的統(tǒng)一定價(jià)模式,然而,隨著近年來利率市場(chǎng)化進(jìn)程的不斷推進(jìn),傳統(tǒng)的貸款定價(jià)方法已無法適應(yīng)環(huán)境變化,急需做出改變。與此同時(shí),更為復(fù)雜的業(yè)務(wù)邏輯也對(duì)系統(tǒng)提出了更高要求,傳統(tǒng)單體架構(gòu)下的老舊系統(tǒng)在響應(yīng)速度、擴(kuò)展性以及靈活性等方面遇到了諸多挑戰(zhàn)。
針對(duì)上述行業(yè)痛點(diǎn),以及遵循利率市場(chǎng)化的根本要求,提出一種基于成本加成定價(jià)法,并與客戶關(guān)系理論相結(jié)合的貸款定價(jià)模型,根據(jù)客戶在銀行的歷史業(yè)務(wù)來往情況給予按比例的利率優(yōu)惠,通過二者的結(jié)合,最終得出差異化的定價(jià)結(jié)果。
在系統(tǒng)架構(gòu)方面,以領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)思想指導(dǎo)微服務(wù)邊界的劃分是如今軟件開發(fā)最高效的設(shè)計(jì)模式。系統(tǒng)采用Spring Cloud框架完成微服務(wù)的搭建,在服務(wù)內(nèi)使用領(lǐng)域驅(qū)動(dòng)四層架構(gòu)模式,并將改進(jìn)的定價(jià)模型應(yīng)用到利率計(jì)算中。通過這樣的設(shè)計(jì)模式,系統(tǒng)達(dá)成了高擴(kuò)展性、敏捷開發(fā)以及部署靈活的開發(fā)目標(biāo)。
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)[1](Domain-Driven Design, DDD)是針對(duì)復(fù)雜性業(yè)務(wù)邏輯的最佳解決方案,其依靠敏捷開發(fā)[2]的手段及模型驅(qū)動(dòng)開發(fā)的策略,是一種面向?qū)ο骩3]的分析與設(shè)計(jì)思想,由Eric Evans[4]于2003提出。通過將業(yè)務(wù)邏輯融合進(jìn)業(yè)務(wù)實(shí)體的形式,使業(yè)務(wù)發(fā)生變化時(shí)能以最低成本和最快速度做出響應(yīng)。其中,DDD通過戰(zhàn)術(shù)設(shè)計(jì)對(duì)領(lǐng)域模型進(jìn)行定義。
1.1.1 實(shí)體、值對(duì)象
以充血模型的形式,包含唯一識(shí)別ID來區(qū)分不同實(shí)例,實(shí)體即可被持久化,同時(shí)也包含業(yè)務(wù)邏輯。值對(duì)象中不包含特定標(biāo)識(shí),生命周期內(nèi)不可被更改。
1.1.2 聚合、聚合根
聚合作為不同業(yè)務(wù)邏輯的實(shí)體邊界,可由多個(gè)實(shí)體或單一聚合根構(gòu)成。作為數(shù)據(jù)修改的單元需要遵循“聚合內(nèi)強(qiáng)一致性,聚合外最終一致性”。當(dāng)外界對(duì)聚合進(jìn)行訪問時(shí)需先通過聚合根,繼而實(shí)現(xiàn)對(duì)聚合內(nèi)實(shí)體的訪問。
1.1.3 領(lǐng)域服務(wù)
當(dāng)單一聚合無法完成業(yè)務(wù)需求時(shí),可被定義為領(lǐng)域服務(wù),在操作時(shí)需要調(diào)用并修改多個(gè)聚合實(shí)例的狀態(tài)。
1.1.4 限界上下文
將邊界進(jìn)行定義,需最大限度保留業(yè)務(wù)完整性,以及遵循高內(nèi)聚低耦合的設(shè)計(jì)原則。限界上下文劃定的業(yè)務(wù)邊界與微服務(wù)的物理邊界相對(duì)性。
隨著分布式架構(gòu)的興起,人們提出了微服務(wù)[5](Micro-services, MS)的架構(gòu)方案,通過以物理邊界將業(yè)務(wù)進(jìn)行分割的方式,將大而雜的系統(tǒng)拆分為小而精的自治微服務(wù)。這樣的架構(gòu)模式使得系統(tǒng)在搭建時(shí)更為靈活,擴(kuò)展上更為簡(jiǎn)單。每個(gè)服務(wù)都可以獨(dú)立進(jìn)行開發(fā)以及部署,并通過組件進(jìn)行交互,真正實(shí)現(xiàn)了敏捷開發(fā)與靈活部署的目的。同時(shí)微服務(wù)架構(gòu)擁有以下幾大優(yōu)勢(shì):
1)可由更小的團(tuán)隊(duì)進(jìn)行開發(fā),僅需少量人員即可完成對(duì)其服務(wù)模塊的開發(fā);
2)技術(shù)異構(gòu),不同服務(wù)可通過不同的技術(shù)來實(shí)現(xiàn),可以按照業(yè)務(wù)的需求自主選取技術(shù)棧對(duì)服務(wù)進(jìn)行開發(fā);
3)任意服務(wù)發(fā)生宕機(jī)故障,不會(huì)對(duì)其余服務(wù)產(chǎn)生影響,僅需對(duì)故障服務(wù)進(jìn)行定位維護(hù),不影響系統(tǒng)的正常運(yùn)轉(zhuǎn);
4)每個(gè)服務(wù)可被獨(dú)立部署于不同服務(wù)器,且配備單獨(dú)的數(shù)據(jù)庫,增強(qiáng)系統(tǒng)的可管理性。
傳統(tǒng)的成本加成定價(jià)模型中,通過由定價(jià)成本因素組成的保本利率與目標(biāo)利率共同得出該筆貸款的最終利率,這種做法所帶來的弊端是顯而易見的。即在同一筆業(yè)務(wù)中,不同類型的人群所得到的利率是相同的,“一刀切”的定價(jià)策略導(dǎo)致了商業(yè)銀行缺乏市場(chǎng)競(jìng)爭(zhēng)力,長此以往會(huì)導(dǎo)致客戶流失。
因此,基于上述考慮,模型在成本加成定價(jià)模型的基礎(chǔ)上,將客戶與銀行的關(guān)系引入定價(jià)計(jì)算模型中,由可被計(jì)算的定量優(yōu)惠以及無法計(jì)算的定性優(yōu)惠兩部分進(jìn)行綜合考量,得出符合利率市場(chǎng)化要求的差異化利率模型,從而將傳統(tǒng)的做業(yè)務(wù)模式向“做客戶”進(jìn)行轉(zhuǎn)變。
首先在模型中引入經(jīng)濟(jì)附加值[6](Economic Value Added, EVA)的概念,即稅后凈營業(yè)利潤中減去股權(quán)資本成本和債務(wù)資本成本的剩余收益,將客戶的預(yù)先存款額所產(chǎn)生的經(jīng)濟(jì)附加值進(jìn)行計(jì)算,作為模型中定量優(yōu)惠部分。EVA的計(jì)算公式為:
EVA存款=(FTP價(jià)格-存款利率-運(yùn)營成本率)*(1-所得稅)*存款金額,
(1)
EVA貸款=(目標(biāo)利率-FTP價(jià)格-運(yùn)營成本率-風(fēng)險(xiǎn)成本率-資本成本率)*
(1-所得稅)*貸款金額。
(2)
其次,將客戶使用銀行產(chǎn)品的情況以及在CRM客戶關(guān)系管理系統(tǒng)中得出的信用等級(jí)作為定性優(yōu)惠部分,對(duì)高端客戶給予5BP的利率優(yōu)惠減免,見表1。
表1 定性優(yōu)惠表
綜上所述,得出一種基于客戶關(guān)系[7]的定價(jià)模型,如圖1所示。
圖1 定價(jià)模型
其中,運(yùn)營成本率由銀行內(nèi)部成本分?jǐn)傁到y(tǒng)計(jì)算得出,針對(duì)未建成分?jǐn)傁到y(tǒng)的將由手工進(jìn)行分?jǐn)偛浫?,公式為?/p>
(3)
風(fēng)險(xiǎn)成本率=違約概率(PD)*違約損失率(LGD)。
(4)
貸款定價(jià)模塊是系統(tǒng)的核心模塊,在服務(wù)內(nèi)部采用領(lǐng)域驅(qū)動(dòng)思想指導(dǎo)設(shè)計(jì)。其中對(duì)領(lǐng)域模型的設(shè)計(jì)尤為關(guān)鍵,實(shí)施步驟為:
1)根據(jù)具體的業(yè)務(wù)邏輯展開需求分析;
2)對(duì)領(lǐng)域模型中的實(shí)體、值對(duì)象、領(lǐng)域服務(wù)等概念進(jìn)行識(shí)別定位;
3)將識(shí)別出來的實(shí)體和值對(duì)象進(jìn)行關(guān)聯(lián)匹配;
4)劃分出聚合的具體范圍,以及確定聚合中的聚合根。
本節(jié)將以定價(jià)服務(wù)為例,通過四步走的方式對(duì)領(lǐng)域模型[9]進(jìn)行設(shè)計(jì)。
聚合的劃分遵循Vaugh Vernon的聚合劃分原則如下:
1)將真正不變的條件封裝進(jìn)聚合;
2)設(shè)計(jì)小的聚合;
3)聚合間通過唯一識(shí)別ID進(jìn)行關(guān)聯(lián)、引用;
4)根據(jù)業(yè)務(wù)邏輯,將聚合進(jìn)行組裝,繼而劃定限界上下文范圍,構(gòu)成微服務(wù)的物理邊界。
3.1.1 需求分析
定價(jià)模塊負(fù)責(zé)貸款利率的計(jì)算。主要包括客戶經(jīng)理對(duì)貸款基本信息以及抵押品的錄入,對(duì)貸款實(shí)施定價(jià),計(jì)算優(yōu)惠利率及RAROC值等,輸入執(zhí)行利率反算NI、EVA、RAROC等,如圖2所示。
圖2 定價(jià)模塊用例圖
3.1.2 領(lǐng)域模型設(shè)計(jì)
通過需求分析,可以得到貸款信息、抵押品、定價(jià)結(jié)果、定價(jià)單四個(gè)實(shí)體。根據(jù)Vaugh Vernon的聚合劃分原則,貸款信息與抵押品實(shí)體分別負(fù)責(zé)貸款信息以及抵押品的錄入,且具有唯一識(shí)別ID,因此分別作為聚合根獨(dú)立構(gòu)成聚合。由于定價(jià)單需要在定價(jià)結(jié)果實(shí)體中獲取部分?jǐn)?shù)據(jù),沒有定價(jià)結(jié)果也就無法生成定價(jià)單,且定價(jià)結(jié)果中含有定價(jià)單號(hào)作為唯一識(shí)別ID,因此定價(jià)結(jié)果作為聚合根與定價(jià)單實(shí)體屬于同一聚合。領(lǐng)域模型如圖3所示。
將聚合定義完成后,通過限界上下文的劃分規(guī)則與業(yè)務(wù)獨(dú)立性的根本要求,貸款信息聚合、抵押品聚合與定價(jià)聚合共同完成了貸款定價(jià)功能,構(gòu)成了貸款定價(jià)子域,同屬一個(gè)限界上下文。
3.2.1 整體架構(gòu)
微服務(wù)下的客戶關(guān)系定價(jià)系統(tǒng)中,整體架構(gòu)[8]如圖4所示。
圖4 系統(tǒng)架構(gòu)
系統(tǒng)選用Alibaba開源組件Nacos作為服務(wù)的注冊(cè)與配置中心,負(fù)責(zé)系統(tǒng)的環(huán)境配置,以及服務(wù)的發(fā)現(xiàn)與注冊(cè)。選用Zuul組件作為API網(wǎng)關(guān),負(fù)責(zé)接受用戶請(qǐng)求,并聯(lián)合負(fù)載均衡向服務(wù)端發(fā)送用戶請(qǐng)求。使用Spring Cloud框架中集成的Ribbon組件,實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)的負(fù)載均衡。使用Apache的slf4j+log4j組件對(duì)微服務(wù)日志進(jìn)行管理,使用Spring Boot Admin組件實(shí)現(xiàn)服務(wù)的實(shí)時(shí)監(jiān)控。
微服務(wù)集群中由管理員方的授權(quán)服務(wù)以及機(jī)構(gòu)管理服務(wù)構(gòu)成,用戶方由客戶管理服務(wù)、定價(jià)服務(wù)、參數(shù)管理服務(wù)、審批服務(wù)組成。使用Feign組件完成服務(wù)的遠(yuǎn)程調(diào)用。選用MySQL數(shù)據(jù)庫,通過Mybatis-plus框架對(duì)數(shù)據(jù)進(jìn)行持久化。
3.2.2 技術(shù)架構(gòu)
為了達(dá)到隔離業(yè)務(wù)邏輯的目的,以及遵循高內(nèi)聚低耦合的設(shè)計(jì)原則,系統(tǒng)選用領(lǐng)域驅(qū)動(dòng)的四層架構(gòu)模型作為客戶關(guān)系定價(jià)系統(tǒng)的技術(shù)架構(gòu),如圖5所示。
圖5 技術(shù)架構(gòu)
3.2.2.1 接口層
接口層是架構(gòu)設(shè)計(jì)中最頂端的一層,作為用戶與系統(tǒng)間溝通的門戶,負(fù)責(zé)對(duì)外展示后端處理的數(shù)據(jù),以及接受用戶請(qǐng)求進(jìn)行對(duì)內(nèi)的轉(zhuǎn)發(fā)。使用Vue框架負(fù)責(zé)前端界面的編寫以及界面邏輯處理工作。
3.2.2.2 應(yīng)用層
應(yīng)用層在四層中是最簡(jiǎn)單且直接的一層,體量最薄,起到協(xié)調(diào)接口層與領(lǐng)域?qū)拥淖饔谩F渲邪瑧?yīng)用服務(wù),領(lǐng)域?qū)又械臉I(yè)務(wù)邏輯通過應(yīng)用服務(wù)向外暴露,負(fù)責(zé)對(duì)不同業(yè)務(wù)用例之間執(zhí)行順序的編排與組裝。
3.2.2.3 領(lǐng)域?qū)?/p>
領(lǐng)域?qū)犹幱诩軜?gòu)的最核心位置,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)要求設(shè)計(jì)富領(lǐng)域模型,定義了聚合,包括聚合根、實(shí)體以及值對(duì)象,并對(duì)領(lǐng)域服務(wù)進(jìn)行封裝,通過對(duì)聚合的調(diào)用完成具體業(yè)務(wù)邏輯的實(shí)現(xiàn)。該層還對(duì)倉儲(chǔ)接口進(jìn)行了定義,用來對(duì)基礎(chǔ)設(shè)置層的倉儲(chǔ)進(jìn)行調(diào)用。
3.2.2.4 基礎(chǔ)設(shè)施層
在基礎(chǔ)實(shí)施層中包含Zuul網(wǎng)關(guān)以及Ribbon負(fù)載均衡組件,通過二者可以實(shí)現(xiàn)消息傳遞、動(dòng)態(tài)路由轉(zhuǎn)發(fā)以及負(fù)載均衡。同時(shí)倉儲(chǔ)服務(wù)的實(shí)現(xiàn)類與領(lǐng)域?qū)觽}儲(chǔ)接口對(duì)應(yīng),負(fù)責(zé)對(duì)持久化對(duì)象增刪改查功能的實(shí)現(xiàn)。另外,該層還含有MySQL數(shù)據(jù)庫用于數(shù)據(jù)的存儲(chǔ)工作。
3.2.3 業(yè)務(wù)架構(gòu)
通過領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)與微服務(wù)結(jié)合的相關(guān)理論,以及對(duì)系統(tǒng)服務(wù)職責(zé)單一性的設(shè)計(jì)原則兩方面的共同考慮,對(duì)微服務(wù)進(jìn)行了業(yè)務(wù)劃分,系統(tǒng)的業(yè)務(wù)架構(gòu)如圖6所示。
圖6 業(yè)務(wù)架構(gòu)
隨著技術(shù)更新以及定價(jià)業(yè)務(wù)模型的迭代改進(jìn),傳統(tǒng)老舊系統(tǒng)的開發(fā)環(huán)境已經(jīng)無法適應(yīng)新一代系統(tǒng)對(duì)于性能與架構(gòu)方面的需求,以及滿足貸款業(yè)務(wù)的支撐,因此,針對(duì)原有的開發(fā)環(huán)境做出一定的改變,具體環(huán)境配置見表2。
表2 系統(tǒng)開發(fā)環(huán)境
在定價(jià)服務(wù)中實(shí)現(xiàn)了貸款信息以及抵押品的錄入、客戶目標(biāo)利率、利率優(yōu)惠等的計(jì)算、輸入執(zhí)行利率進(jìn)行反算NI、EVA、RAROC等功能。在基礎(chǔ)結(jié)構(gòu)層中使用倉儲(chǔ)服務(wù),將數(shù)據(jù)進(jìn)行持久化操作。領(lǐng)域?qū)又型ㄟ^領(lǐng)域服務(wù)將業(yè)務(wù)邏輯進(jìn)行封裝,通過應(yīng)用層的應(yīng)用服務(wù)將領(lǐng)域?qū)犹峁┑慕涌谶M(jìn)行編排組合,實(shí)現(xiàn)系統(tǒng)功能。最終在接口層為前端界面提供相關(guān)接口。
用戶進(jìn)行貸款定價(jià)操作,進(jìn)入定價(jià)流程后。第一步,調(diào)用addLnInfoAppService完成該名客戶貸款信息的填寫;第二步,調(diào)用addMortgageAppService完成對(duì)該筆貸款所需要的質(zhì)押品信息進(jìn)行輸入;第三步,通過調(diào)用參數(shù)管理服務(wù)數(shù)據(jù)庫表中的參數(shù)數(shù)據(jù),完成保本利率、目標(biāo)利率、目標(biāo)EVA與RAROC的計(jì)算。公式為:
目標(biāo)利率=資金成本率+運(yùn)營成本率+違約概率×違約損失率+資本成本率+
增值稅+附加稅+所得稅+目標(biāo)收益率,
(5)
目標(biāo)EVA=(目標(biāo)利率-貸款FTP價(jià)格-運(yùn)營成本率-風(fēng)險(xiǎn)成本率-資本成本率)×
(1-所得稅)×規(guī)模,
(6)
(7)
利率優(yōu)惠=[(存款FTP價(jià)格-存款利率-運(yùn)營成本率)×(1-所得稅)×存款金額+
(目標(biāo)利率-FTP價(jià)格-運(yùn)營成本率-風(fēng)險(xiǎn)成本率-資本成本率)×
(1-所得稅)×貸款金額]×α-定性優(yōu)惠減免。
(8)
當(dāng)貸款利率計(jì)算完畢后,輸入LPR基準(zhǔn)利率與執(zhí)行利率,分別計(jì)算該利率下的NI、EVA、RAROC[6]值以及利率浮動(dòng)比例,如圖7所示。
圖7 定價(jià)計(jì)算
計(jì)算公式為:
(9)
執(zhí)行NI=(執(zhí)行利率-貸款FTP價(jià)格)×
金額×期限。
(10)
以利率市場(chǎng)化作為研究背景,抓住商業(yè)銀行貸款定價(jià)業(yè)務(wù)的痛點(diǎn),提出一種基于客戶關(guān)系的貸款利率計(jì)算模型,在一定程度上實(shí)現(xiàn)了貸款利率差異化區(qū)分的目標(biāo)。
在系統(tǒng)的搭建上,以業(yè)務(wù)需求為核心,以領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)思想為方法論,對(duì)業(yè)務(wù)進(jìn)行領(lǐng)域模型設(shè)計(jì)。架構(gòu)上通過引入微服務(wù)框架,渾然天成的將領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)出的邏輯邊界與微服務(wù)的物理邊界相對(duì)應(yīng),此外通過服務(wù)注冊(cè)、服務(wù)網(wǎng)關(guān)、負(fù)載均衡等組件,對(duì)系統(tǒng)的運(yùn)行提供支持。綜上所述,通過對(duì)定價(jià)模型的再設(shè)計(jì),以及系統(tǒng)架構(gòu)重構(gòu),緩解了單體架構(gòu)下系統(tǒng)擴(kuò)張難、維護(hù)難的實(shí)際問題,基本上做到了可用性及合理性。