












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