智能合約是寫在分布式賬本中的計算機(jī)程序。本文探索了將現(xiàn)有的證券交易及中央對手方清算業(yè)務(wù)邏輯“移植”到分布式賬本,利用智能合約承載和自動執(zhí)行證券交易、中央對手方擔(dān)保交收、風(fēng)險管理等業(yè)務(wù)功能,從而建立集證券交易、登記、清算、結(jié)算于一體的基于區(qū)塊鏈的新型金融市場基礎(chǔ)設(shè)施。
智能合約是寫在分布式賬本中的計算機(jī)程序,而實(shí)質(zhì)上,支撐目前證券交易訂單匹配及交易后中央對手方(CCP)清算的技術(shù)基礎(chǔ)也是計算機(jī)程序,只不過它們運(yùn)行在中心賬本。我們完全可以將現(xiàn)有的證券交易及中央對手方清算業(yè)務(wù)邏輯“移植”到分布式賬本,利用智能合約承載和自動執(zhí)行證券交易、CCP擔(dān)保交收、風(fēng)險管理等所有業(yè)務(wù)功能,從而建立集證券交易、登記、清算、結(jié)算于一體的基于區(qū)塊鏈的新型金融市場基礎(chǔ)設(shè)施。
本文提出Trade智能合約設(shè)計,開展基于分布式賬本的證券交易,并參考美國全國最佳買賣報價(NBBO)機(jī)制,創(chuàng)建最優(yōu)報價和最優(yōu)執(zhí)行智能合約(Best Bid and Offer,簡稱“BBO智能合約”),以反映最優(yōu)報價信息,幫助投資者以最優(yōu)價格執(zhí)行訂單。進(jìn)而,本文提出將合約替代、軋差清算、券款對付、違約處置等CCP擔(dān)保交收業(yè)務(wù)邏輯以及保證金計算模型、違約清算基金計算模型等CCP風(fēng)險管理模型進(jìn)行編碼,分別創(chuàng)建CCP擔(dān)保交收智能合約和CCP風(fēng)險管理智能合約。最后,本文給出基于分布式賬本的證券交易、清算、結(jié)算指令流以及相關(guān)智能合約的調(diào)用流程。
基于分布式賬本的證券交易
傳統(tǒng)證券交易的基本業(yè)務(wù)邏輯
簡單來說,證券交易是指買賣雙方匹配供需、撮合訂單的過程。場內(nèi)交易可采取集合競價、連續(xù)競價、做市商等集中交易方式。最基本的兩種訂單為限價和市價訂單,除此之外,還有止損價訂單、止損限價訂單、觸價訂單、市價轉(zhuǎn)限價訂單、隱藏訂單、冰山訂單以及即時、非即時、指定時段、指定日期、無限期、計時等各類訂單。
圖1給出了場內(nèi)證券交易的基本業(yè)務(wù)邏輯??蛻魧⒆约旱馁I賣訂單發(fā)送給證券交易所的證券交易系統(tǒng)。訂單元素包括證券標(biāo)的、買賣價格或區(qū)間、買賣證券數(shù)量、執(zhí)行時間、訂單有效期等:
買方訂單d=(證券標(biāo)的、買入價格或價格區(qū)間、買入證券數(shù)量、執(zhí)行時間、訂單有效期)
賣方訂單s=(證券標(biāo)的、賣出價格或價格區(qū)間、賣出證券數(shù)量、執(zhí)行時間、訂單有效期)
證券交易系統(tǒng)收集各方訂單后,使用訂單匹配算法撮合訂單。當(dāng)買方訂單和賣方訂單相互匹配時,d=s,則成交,進(jìn)入交易后清算和結(jié)算流程。當(dāng)訂單不匹配時,訂單繼續(xù)等待。若訂單有效期結(jié)束時仍未成交,則訂單自動取消。
基于分布式賬本的證券交易:Trade智能合約
實(shí)質(zhì)上,證券交易系統(tǒng)運(yùn)行的是一套訂單匹配算法,只是部署在證券交易所的服務(wù)器而已。我們完全可以在證券登記結(jié)算的分布式賬本(以下簡稱“DLT-CSD”賬本)上把它編成代碼,用智能合約自動執(zhí)行?;緲I(yè)務(wù)邏輯與傳統(tǒng)證券交易一致。
步驟1:買賣雙方創(chuàng)建訂單指令,訂單元素包含證券標(biāo)的、買賣價格或區(qū)間、買賣證券數(shù)量、執(zhí)行時間、訂單有效期等。買賣雙方還加入他們在基于分布式賬本的支付系統(tǒng)(以下簡稱“DLT-PS”)和DLT-CSD的錢包地址。雙方用自己私鑰對訂單指令進(jìn)行簽名,簽名后將指令發(fā)送至證券交易智能合約(以下簡稱“Trade智能合約”)。
買方訂單指令Order_Bid=買方簽名{證券標(biāo)的、買入價格或價格區(qū)間、買入證券數(shù)量、執(zhí)行時間、訂單有效期、買方DLT-PS及DLT-CSD錢包地址}
賣方訂單指令Order_Offer=賣方簽名{證券標(biāo)的、賣出價格或價格區(qū)間、賣出證券數(shù)量、執(zhí)行時間、訂單有效期、賣方DLT-PS及DLT-CSD錢包地址}
步驟2:Trade智能合約利用訂單匹配算法撮合訂單,當(dāng)買方訂單和賣方訂單相互匹配時,則生成結(jié)算指令。結(jié)算指令須經(jīng)Trade智能合約簽名后才能生成。也就是說,結(jié)算指令需要買賣雙方以及Trade智能合約簽名后才能生效,這既防止用戶撤銷已完成的交易,保障了交易的不可抵賴性,又防止了Trade智能合約發(fā)起未經(jīng)授權(quán)的交易,保障交易的安全性。
結(jié)算指令Settle=Trade智能合約簽名{買方訂單指令Order_Bid、賣方訂單指令Order_Offer、結(jié)算金額、結(jié)算證券及數(shù)量、執(zhí)行期限}
訂單最優(yōu)報價與執(zhí)行:BBO智能合約
在基于分布式賬本的證券交易體系下,一種證券可通過多種Trade智能合約進(jìn)行交易,優(yōu)點(diǎn)在于其為投資者提供了更多選擇,但缺點(diǎn)在于不同智能合約的證券交易存在差異(比如成交訂單、成交價格等),給投資者帶來了兩方面挑戰(zhàn):一是證券價格信息來源多,投資者從中獲取有效信息存在困難;二是Trade智能合約類型多,投資者下單時需要抉擇參與哪一Trade智能合約對其最優(yōu)。因此,如何為投資者提供更加透明的價格信息,并幫助投資者執(zhí)行最優(yōu)下單,則成為基于分布式賬本的證券交易的應(yīng)有之義。
對此,我們可以參考美國全國最佳報價(NBBO)機(jī)制,建立最優(yōu)報價和最優(yōu)執(zhí)行智能合約(BBO智能合約)。其包含兩類功能:
一是反映最優(yōu)報價信息。收集全網(wǎng)所有Trade智能合約的成交信息,得出最佳賣價(最低的賣價)和最佳買價(最高的買價)及所對應(yīng)的買入量和賣出量,以及標(biāo)的證券的信息和NBBO產(chǎn)生的時間。信息處理流程為:讀取各Trade智能合約的交易訂單;更新全網(wǎng)來自各Trade智能合約的交易價格和交易量的信息;計算出所收到的交易訂單信息中的最佳賣價(BO)和最佳買價(BB);統(tǒng)計所有符合最佳賣價和最佳買價的交易量。應(yīng)該說,最佳買價、買入量、最佳賣價、賣出量是在各Trade智能合約獨(dú)立變動,但在BBO智能合約中匯總顯示。BBO智能合約快速更新,及時反映各Trade智能合約的成交信息。
二是最優(yōu)執(zhí)行投資者訂單。BBO智能合約除了最優(yōu)報價功能之外,還有下單功能。客戶將訂單預(yù)先發(fā)至BBO智能合約,由其作為執(zhí)行主體,以“最優(yōu)價格”為標(biāo)準(zhǔn),選擇Trade智能合約,履行客戶訂單的“最優(yōu)執(zhí)行”,即為買方以最低的價格在某Trade智能合約買入證券,為賣方以最優(yōu)的價格在某Trade智能合約賣出證券。
CCP智能合約
傳統(tǒng)CCP功能
中央對手方(CCP)在傳統(tǒng)證券結(jié)算中承擔(dān)著重要角色:一是凈額結(jié)算功能。通過合約替代,成為“賣方的買方,買方的賣方”,進(jìn)行多邊凈額結(jié)算,提高結(jié)算效率,節(jié)約市場流動性。
二是成為市場交易者的共同對手方,進(jìn)行擔(dān)保交收,承擔(dān)證券結(jié)算的對手方風(fēng)險。
三是證券結(jié)算系統(tǒng)性風(fēng)險的管理者。通過事前的會員準(zhǔn)入制度,事中的保證金(擔(dān)保品)制度和逐日盯市制度,防控清算會員的履約風(fēng)險及其可能帶來的預(yù)期損失。當(dāng)清算會員違約時,中央對手方采取違約會員繳納的保證金、違約會員繳納的違約清算基金、非違約會員繳納的違約清算基金、中央對手方股本、央行最后救助等財務(wù)資源構(gòu)成的瀑布式(Waterfall)資金結(jié)構(gòu),來吸收清算過程中的違約損失,既確保違約的交收能夠完成,又防止違約傳染,避免更多的交收出現(xiàn)違約。
四是結(jié)算的隱私性。中央對手方的介入讓買賣雙方在“賣者不知買者,買者不知賣者”的條件下進(jìn)行證券結(jié)算。在DLT-CSD模式下,這些CCP功能可由智能合約承載并自動執(zhí)行。
CCP擔(dān)保交收智能合約
將合約替代、凈額清算等業(yè)務(wù)邏輯進(jìn)行編碼,在DLT-CSD賬本上創(chuàng)建CCP擔(dān)保交收智能合約。在證券交易過程中,設(shè)定某一周期,自動觸發(fā)CCP智能合約,將已完成匹配的交易訂單,執(zhí)行合約替代,CCP智能合約自動成為“買方的賣方,賣方的買方”,然后執(zhí)行多邊凈額結(jié)算。凈額結(jié)算過程中,CCP智能合約起到集中交收賬戶的功能,分別與買方(應(yīng)付資金、應(yīng)收證券)和賣方(應(yīng)收資金、應(yīng)付證券)進(jìn)行券款對付(DVP)。當(dāng)出現(xiàn)交收失敗時,CCP則進(jìn)行違約處置,比如,如果買方?jīng)]有及時交付資金或資金不足額,那么CCP則賣出其應(yīng)收證券,得到資金,用于與賣方的資金交收;如果賣方?jīng)]有及時交付證券或證券不足額,那么CCP則使用其應(yīng)收資金,在市場買入證券,用于與買方的證券交收。因此,CCP擔(dān)保交收智能合約應(yīng)至少包含合約替代、軋差清算、券款對付、違約處置四類算法。
CCP風(fēng)險管理智能合約
合約替代后,對手方信用風(fēng)險不再由各方相互承擔(dān),而是集中在中央對手方。某種意義上來說,中央對手方是一種風(fēng)險集中管理機(jī)制,即通過合約替代將分散在各結(jié)算參與者的信用風(fēng)險敞口 集中于中央對手方,由中央對手方進(jìn)行集中管理。
總風(fēng)險敞口L帶給中央對手方損失的大小,一方面取決于各結(jié)算參與者的違約可能性,即違約概率DR;另一方面取決于結(jié)算參與人發(fā)生違約時的回收率R。若假定結(jié)算參與者同質(zhì),那么用在險價值(Value at Risk,VaR)描述中央對手方的預(yù)期損失,則可表示為
在險價值VaR(T,X)是指在未來時期內(nèi),在X的置信度下,中央對手方最大的期望損失。它與違約概率DR成正比,與損失回收率R成反比。因此,為了降低預(yù)期損失,中央對手方的主要工作有兩個方面:一是做好事前防控,盡量降低結(jié)算參與人的違約概率;二是通過事前相關(guān)制度安排,盡量提高損失回收率。當(dāng)真正發(fā)生損失時,中央對手方采用預(yù)定的瀑布式資金結(jié)構(gòu)吸收損失。事前防控的主要措施是嚴(yán)格把握會員準(zhǔn)入并做好相關(guān)管理。嚴(yán)格把握會員準(zhǔn)入是中央對手方管理證券結(jié)算風(fēng)險的第一道防線。中央對手方只與結(jié)算會員進(jìn)行結(jié)算,沒有會員資格的非結(jié)算參與人只能委托結(jié)算會員代理清算交收,這樣就保證了中央對手方僅與信用程度較好、履約風(fēng)險較低的主體進(jìn)行清算交收。提高損失回收率則主要依靠保證金(擔(dān)保品)制度、逐日盯市制度、違約清算基金等風(fēng)險管理制度。
保證金是指為了交易、清算和結(jié)算而繳納的擔(dān)保品。初始保證金是指在交易發(fā)生時就需要提交的保證金。一般來說,初始保證金的數(shù)額應(yīng)足以覆蓋5天展望期的99%置信度下的市場變動。初始保證金可以是現(xiàn)金,也可以是中央對手方所規(guī)定的證券。當(dāng)使用證券作為保證金時,一般會以一定比例進(jìn)行折扣。目前,成熟的中央對手方機(jī)制采用了動態(tài)的保證金管理思想,即逐日盯市(Mark to Market)制度,根據(jù)市場行情以及會員風(fēng)險敞口的變化,動態(tài)調(diào)整保證金要求,當(dāng)會員的保證金余額不足時,要求會員補(bǔ)充額外的保證金,這類保證金被稱為變動保證金。變動保證金通常必須是現(xiàn)金。如果某會員未能滿足保證金要求,該會員將被認(rèn)為違約,它的交易會被平倉。平倉發(fā)生的損失首先由該會員的保證金賬戶余額和抵押品承擔(dān)。因此,保證金的目的在于覆蓋結(jié)算會員的對手方風(fēng)險,為此,中央對手方需要有一套科學(xué)的保證金計算模型和估值方法,并定期進(jìn)行壓力測試、回溯檢驗(yàn),以提高模型和方法的適用性。
違約清算基金是以市場分?jǐn)偟臋C(jī)制吸收沒有被保證金覆蓋到的非正常情況下的違約損失。各清算會員事前按照業(yè)務(wù)規(guī)模和風(fēng)險水平等因素,繳納違約清算基金。當(dāng)發(fā)生違約損失時,為減少道德風(fēng)險,首先動用違約會員繳納的違約清算基金,然后再使用其他非違約會員繳納的違約清算基金。
同樣,我們可以將上述保證金計算模型和違約清算基金計算模型進(jìn)行編碼,創(chuàng)建CCP風(fēng)險管理智能合約:保證金智能合約和違約清算基金智能合約,其中保證金智能合約包含初始保證金計算、變動保證金計算、逐日盯市、壓力測試等算法,違約清算基金智能合約包含違約清算基金計算、極端測試等算法。通常來說,保證金和違約清算基金為貨幣資金,因此CCP風(fēng)險管理智能合約可構(gòu)建在DLT-PS賬本上。當(dāng)然,保證金也可能為證券形式,相應(yīng)的保證金智能合約則構(gòu)建在DLT-CSD賬本上。
CCP風(fēng)險管理智能合約與CCP擔(dān)保交收智能合約是一體的,當(dāng)CCP擔(dān)保交收智能合約觸發(fā)違約處置算法時,則會調(diào)用CCP風(fēng)險管理智能合約,以彌補(bǔ)損失;而當(dāng)CCP風(fēng)險管理智能合約中發(fā)生了變動保證金不足等事件時,則會觸發(fā)CCP擔(dān)保交收智能合約的違約處置,比如衍生品強(qiáng)制平倉。
CCP智能合約與Trade智能合約
CCP擔(dān)保交收智能合約與Trade智能合約
Trade智能合約生成結(jié)算指令后可直接進(jìn)行結(jié)算,亦可由CCP進(jìn)行合約替代、凈額軋差后擔(dān)保交收。若是后者,則前述的結(jié)算指令Settle可分解為兩個CCP擔(dān)保交收指令。經(jīng)CCP擔(dān)保交收智能合約簽名后,最終進(jìn)行結(jié)算。
Trade智能合約和CCP擔(dān)保交收合約的執(zhí)行期限可靈活設(shè)定,從而創(chuàng)造出不同的交收期。交易者可在下訂單就將錢和券“到位”(Pre-funding),亦可在交收期內(nèi)將錢和券“備足”。在實(shí)踐中,監(jiān)管部門通常不允許證券“裸賣空”,即不允許賣出不屬于自己的證券。我國還要求經(jīng)紀(jì)客戶在買入股票時繳存全額保證金。若此,可根據(jù)監(jiān)管要求,對CCP風(fēng)險管理智能合約做相應(yīng)的設(shè)定。
買方與CCP結(jié)算指令Settle_Bid_CCP=CCP擔(dān)保交收智能合約簽名{結(jié)算指令Settle,執(zhí)行期限}
賣方與CCP結(jié)算指令Settle_Offer_CCP=CCP擔(dān)保交收智能合約簽名{結(jié)算指令Settle,執(zhí)行期限}
CCP風(fēng)險管理智能合約與Trade智能合約
為了防控結(jié)算風(fēng)險,當(dāng)交易者參與CCP擔(dān)保交收時,須向DLT-PS上的CCP風(fēng)險管理智能合約繳納保證金和違約清算基金。具體操作是:買賣雙方在下單之前,預(yù)先向DLT-PS發(fā)送一個資金轉(zhuǎn)賬指令,將資金轉(zhuǎn)入CCP保證金智能合約和CCP違約清算基金智能合約。當(dāng)然,如果允許證券作為保證金,則向DLT-CSD發(fā)送證券轉(zhuǎn)賬指令。
買方資金轉(zhuǎn)賬指令Fund_Transfer=買方簽名{保證金,清算基金,DLT-PS上的CCP保證金智能合約地址,DLT-PS上的CCP違約清算基金智能合約}
賣方資金轉(zhuǎn)賬指令Fund_Transfer=賣方簽名{保證金,清算基金,DLT-PS上的CCP保證金智能合約地址,DLT-PS上的CCP違約清算基金智能合約}
當(dāng)交易雙方下訂單時,須先將訂單指令發(fā)送給CCP風(fēng)險管理智能合約,由CCP風(fēng)險管理智能合約核驗(yàn)投資者繳納的保證金和違約清算基金是否足額,當(dāng)足額時,CCP風(fēng)險管理智能合約對訂單指令簽名,然后再發(fā)送給Trade智能合約進(jìn)行訂單匹配(或通過BBO智能合約轉(zhuǎn)發(fā)給Trade智能合約),若不足額,則CCP風(fēng)險管理智能合約不簽名,訂單無法被Trade智能合約接受。圖11和圖12給出了訂單指令、結(jié)算指令的具體流程。
經(jīng)CCP核驗(yàn)的買方訂單指令Order_Bid_CCP=CCP風(fēng)險管理智能合約簽名{買方訂單指令Order_Bid}
經(jīng)CCP核驗(yàn)的賣方訂單指令Order_Offer_CCP=CCP風(fēng)險管理智能合約簽名{買方訂單指令Order_Offer}
結(jié)語
本文探索了基于智能合約的證券交易與中央對手方清算。智能合約是這一創(chuàng)新模式的核心。除了性能提升方面,還需要考慮智能合約安全增強(qiáng)、隱私保護(hù)等相關(guān)技術(shù)安排。安全增強(qiáng)是前提,一旦攻擊成功,將造成重大損失。隱私保護(hù)是首要,投資者交易行為和持倉數(shù)據(jù)高度敏感,需要在不損害智能合約透明、可信優(yōu)勢的同時做到強(qiáng)隱私保護(hù)。最后,從法律層面明確智能合約的可執(zhí)行性,亦是這一創(chuàng)新模式真正落地的必要基礎(chǔ)。
(姚前為中國證監(jiān)會科技監(jiān)管局局長。本文僅代表個人學(xué)術(shù)觀點(diǎn),不代表所在機(jī)構(gòu)意見。本文編輯/秦婷)