IMIX

IMIX（Inter-bank Market Information eXchange），狹義上指IMIX協議，全稱是銀行間市場業務數據交換協議，是一種用於在銀行間市場交易活動（包括人民幣、外匯和衍生品等各類產品的交易、發行、確認和清結算等）中實現金融資訊實時傳輸的電子通信協議。IMIX協議是金融行業標準，起草單位為中國外匯交易中心。經全國金融標準化委員會審核通過，該標準於2011年6月2日由中國人民銀行發布實施，標準號JR/T 0066-2011。

廣義上，IMIX指銀行間市場統一業務數據交換體系。該體系結合標準制修訂、標準宣貫和系統實施，編制了IMIX協議、《銀行間市場基礎數據元》和《銀行間市場數據接口》三項基礎行業技術標準，完成了數據引擎、接口開發工具和開發包、開發規範、開發社區等配套應用基礎設施。

2016年2月25日，基於IMIX協議標準開發的ISO20022（金融服務：金融業通用報文方案）外匯交易後確認和交易獲取的報文正式註冊發布。這兩組報文是國際標準化組織（ISO）首次發布中國金融領域的相關報文。

## 主要歷史

- 2004年9月：項目調研。
- 2004年10月-12月：《銀行間市場業務數據交換協議》標準立項。同時立項的還有《銀行間市場基礎數據元》和《銀行間市場數據接口》這兩項關聯的標準。
- 2005年1月至2005年12月：翻譯FIX4.4，形成《銀行間市場業務數據交換協議》初稿；完成《銀行間市場基礎數據元》初稿。
- 2006年1月至2009年12月：形成《銀行間市場業務數據交換協議》、《銀行間市場基礎數據元》意見徵求稿，並報金標委；完成《銀行間市場數據接口》初稿；應用這三項標準的外匯直通式處理、本幣交易、本幣直通式處理、市場行情發布等系統先後上線，市場成員系統接入開發同步進行。
- 2010年1月至2011年3月：形成《銀行間市場業務數據交換協議》、《銀行間市場基礎數據元》報批稿並報金標委。
- 2011年6月：《銀行間市場業務數據交換協議》（標準號JR/T 0066-2011）、《銀行間市場基礎數據元》（標準號JR/T 0065-2011）發布實施。
- 2011年4月至2013年1月：完成《銀行間市場數據接口》徵求意見稿，並報金標委；根據各委員單位的反饋意見修改《銀行間市場數據接口》，並形成報批稿。
- 2013年5月：銀行間市場技術標準工作組成立。
- 2013年9月至2013年11月：在中國人民銀行金融市場司協調下，中央國債登記結算有限責任公司、上海清算所兩家機構對《銀行間市場數據接口》標準報批稿反饋了意見。經溝通，與起草單位達成一致。
- 2014年1月：《銀行間市場數據接口》（標準號JR/T 0078-2014）發布實施；開始開發和申報ISO 20022報文。
- 2014年5月：銀行間市場標準工作組會議在上海召開，會上討論了行業技術標準修訂計劃。
- 2014年6月：開始《銀行間市場業務數據交換協議》和《銀行間市場基礎數據元》標準的修訂工作。
- 2015年8月：銀行間市場標準工作組會議在上海召開，會上匯報了標準修訂工作進展。
- 2016年2月：基於IMIX協議開發的ISO 20022報文獲得通過。

## 協議主要內容

<image>

IMIX協議，全稱為銀行間市場業務數據交換協議（Inter-bank Market Information eXchange Protocol），是一種用於在銀行間市場交易活動中實現實時傳輸金融資訊的電子通信協議。

IMIX協議基於FIX協議制定，其數據模型兼容了FIX協議，制定過程遵循穩定性和開放性的原則，並結合中國銀行間市場的實際業務進行了擴展。協議標準規定了應用環境、會話機制、報文格式、報文定義、擴展方式、安全加密、數據完整性、數據字典等。

IMIX協議定義了銀行間市場各類金融產品交易的交易前、中、後各環節中的數據交互，IMIX報文已覆蓋了所有銀行間市場產品的報價、訂單、交易執行、行情數據發布和成交回報等環節。

## 基本語法和結構

### 數據類型

數據類型用於定義協議傳輸內容的取值類型，協議中規定的數據類型包括基本數據類型(整數int、浮點數float、單字符char、字串string、二進位數據塊data）和在此基礎上擴展的數據類型組成。在文本表示格式中，除「data」數據類型外，其他數據類型均以UTF-8編碼形式的字串存儲和傳輸。

### 域（Field）

域是基本的數據元素，由「域號」、「域名」和「域值」組成。每個域都有唯一的域號和域名作為標識，域號是自然數，域名則是由英文字母組成的字串。域具有特定的數據類型屬性和取值範圍屬性，限定了域值的類型和有效值範圍。通常一個域表達了一個基本的業務要素，比如「價格」要素由組成為「域號 44、域名Price、基本數據類型是浮點數、取值範圍是所有實數」的域來表達。

在傳輸和存儲過程中，IMIX協議允許有多種的表示格式，常見的有文本格式、XML格式、二進位格式等等。不同的表示格式下，域的表示方式也有不同。在最常見的文本表示格式中，域表示為「域號=域值」，並在域值尾以固定的域界定符分隔。這種表示格式中，域名不直接出現，域名和域號的對應定義在域字典中。同時域字典還詳細定義了所有域的數據類型和取值範圍。

在報文中，域的使用有三種方式：必需的，可選的，條件限制選擇（即根據其他相關域的存在與否或取值來決定）。在已定義的域法滿足使用需求時，協議允許使用者擴展定義新的域，即自定義域。與普通域一樣，自定義域同樣需遵循協議規範，如使用同樣的分隔符、同樣的編碼等。為了保證域的唯一性，自定義域的域號不能與協議中定義的域號重複，且應大於10000。

### 域界定

在文本表示格式中，報文中所有的域（包含data類型數據域）都有一個分隔符來界定分隔，該分隔符就是ASCII碼中的「SOH」字符(#001，hex：0x01，本文中以表示)。除data數據類型域外，其他數據域內容都不應包含域界定符。任何報文都嚴格由多個「域號=值」的基本結構組成，「域號=值」基本結構用域界定符分隔，形成的報文組成見圖。

<image>

### 重複組（Repeating Group）

重複組是由重複次數和若干組同類數據組成的域集合。指明重複的次數的域只能出現一次，並位於重複組的開始處。重複組可以嵌套，且使用子重複組時不能省略父重複組。

重複組內，同類數據域集合的第一個域是必需的，並用作判定重複內容的「分隔」用途，表明新的重複域集合的開始。示例如下。

域號｜域名｜必需｜說明

454｜NoSecurityAltID｜Y｜備選債券代碼個數

-->｜455｜SecurityAltID｜Y｜備選債券代碼

-->｜456｜SecurityAltIDSource｜備選債券代碼源

示例中如果備選債券數量為2，則數據內容為：

454=2455=600600456=101455=000001456=102

### 報文（Message）

報文由報文頭、報文正文和報文尾組成。各組成部分都由一系列「域」組成。在遵循以下規則前提下，「域」可以是任意的次序：

- 開始部分應是報文頭，隨後是報文正文，最後是報文尾。
- 報文頭的前3個域的次序不能改變：起始串（Tag#8）、報文體長度（Tag#9）、報文類型（Tag#35）。
- 報文尾的最後一個域應是校驗和域（Tag#10）。
- 重複組中，域出現的順序應遵循該重複組在報文或組件中定義時的次序。
- 除重複組域外，任一域號在一條報文內只能出現一次，否則視為錯誤。

以下是一個報文格式的例子：

8=IMIX1.09=xxx35=849=CFETS56=29000881100000000000057=MHBJ.DEALER@MHBJ34=13 52=20070913-10:20:5911=MHBJ_ORDER_00215=AUD17=5.1.329331=0.77132=5000054=160=20061122-10:21:34 63=064=2006112475=20061122120=AUD150=F194=0.7711056=3855010176=1210038=2210042=MT 10317=510315=210296=200611241028438547.522=548=AUDUSD=CFHA55=AUD.USD453=2 448=119000043010000000000452=I14802=3523=CCCB.DEALER@CCCB803=101523=CCCB803=102 523=ChangshaCityCommercialBank803=5448=290008811000000000000452=I13802=3523=MHBJ.DEALER@MHBJ 803=101523=MHBJ803=102523=MizuhoCorporateBankBeijing803=510=XXX

對於每一條IMIX報文，它的報文結構可以分解如圖所示。

<image>

### 報文頭（Header）

報文頭指明協議版本、報文類型、報文體長度、發送目的地、報文序號、發送起始點和發送時間等基礎資訊。

### 報文尾（Trailer）

每個報文都有一個報文尾，包含3位數的校驗和值並以此終止一條報文。報文頭和報文尾通常用於數據傳輸，不直接描述業務內容。

### 報文正文（Body）

由一系列域組成，用於描述特定業務內容。

## JR/T 0066系列標準

IMIX體系中，除了《銀行間市場業務數據交換協議》（IMIX協議）外，還包含另外兩項行業技術標準，分別是《銀行間市場基礎數據元》和《銀行間市場數據接口》。三項標準形成了一個基礎數據標準系列。《銀行間市場業務數據交換協議》、《銀行間市場基礎數據元》規定了業務要素定義和數據格式規範，解決了數據怎麼組織的問題；《銀行間市場數據接口》則規定了系統間的接口，解決了數據怎麼交互的問題，是在前兩項標準發布實施的基礎上，調研金融機構需求及應用情況後編寫而成的。這三項標準中，以IMIX協議為核心，基礎數據元和數據接口標準分別提供基礎定義和傳輸輔助定義。因此稱這一系列標準為JR/T 0066系列標準。

### JR/T 0065-2011標準

《銀行間市場基礎數據元》定義了銀行間市場業務術語的唯一表達，對銀行間市場數據的描述、存儲、傳輸等方面提供了統一的定義，為銀行間市場系統建設提供了數據字典。具體包含以下幾方面內容：

- 市場類別：包括本幣市場、外匯市場等。
- 市場及系統術語：對銀行間市場所涉及到的所有相關術語定義一個統一無歧義的說明。
- 各系統交易要素：對系統中需要用到的交易要素進行明確的描述。
- 存貯格式及計算規則：根據系統術語及交易要素的描述，定義電腦中的存儲格式，並規定計算公式與計算演算法，確保所有要素計算表示方式及計算方式的一致性。

### JR/T 0078-2014標準

《銀行間市場數據接口》標準規定了銀行間市場業務（外匯交易、信用拆借、債券回購、現券買賣、票據等）數據交換和共享所使用的應用接口規範、使用方式和所使用的銀行間市場數據交換報文的內容、格式及其使用方法。標準內容覆蓋應用編程接口描述、數據傳輸壓縮接口規範、數據落地接口規範、日誌接口規範、配置接口規範、業務報文內容快速訪問接口規範、訂閱發布模式接口規範、業務數據精度標準。該標準適用於銀行間市場業務活動中涉及到的業務系統數據接口及所有使用銀行間市場數據交換協議的系統。具體包含以下幾方面內容：

- 應用編程接口：基於IMIX協議構建業務系統所必需的應用編程接口定義和說明。
- 報文接口：應用IMIX協議報文所必需的接口定義和說明，包括封裝、解析、校驗等。
- 數據傳輸壓縮接口：規定了基於IMIX協議傳輸的壓縮演算法、模板和接口調用方法。
- 數據落地接口：規定了維持傳輸會話和異步通信可靠性所必需的本地存儲訪問接口定義和緩解服務端負載壓力的本地緩存訪問接口。
- 日誌接口：規定了業務系統記錄日誌所必需的接口定義。
- 配置文件接口：規定了業務系統所使用的配置文件格式、配置項命名、用途和取值範圍。
- 報文快速訪問接口：規定了快速訪問IMIX報文內深層嵌套數據的接口定義和使用方法。
- 訂閱發布模式接口：規定了訂閱發布主題模型、主題命名規範和相關報文類型。
- 業務精度標準：規定了銀行間市場關鍵業務要素在IMIX協議報文中的精度定義。

## 技術標準工作組

銀行間市場技術標準工作組（以下簡稱工作組）是金標委在金融領域設立的首個專項技術標準工作組，是我國金融行業內從事銀行間市場標準研究、制定及推動實施的技術組織。其職責是負責有關銀行間市場的標準研究、體系規劃、國際合作、標準宣貫工作。

工作組於2013年5月31日正式成立，由銀行間市場中介機構和市場成員共同參與，首批成員包括中國外匯交易中心、中央國債登記結算公司、上海黃金交易所、上海清算所、工商銀行、交通銀行、浦發銀行、上海銀行、滙豐銀行、道富銀行、中信證券、平安保險、中國金融電子化公司等13家單位。除成員單位外，工作組邀請做市商單位參與到銀行間市場標準化的具體工作中，已有中國農業銀行、興業銀行、蒙特婁銀行等單位參與。工作組成立後，IMIX協議等銀行間市場行業技術標準的制修訂等相關工作在工作組管理框架下開展。2013年9月24日，工作組組長當選為ISO20022 FX SEG副召集人。

## IMIX體系

IMIX體系（或稱「銀行間市場統一業務數據交換體系」）通過結合標準制訂和系統實施，旨在形成銀行間市場統一的資訊交換體系，以規範行業發展、促進產品創新、提高市場運營質量和監管效率。該體系建立了業務領域模型、制定了一系列基礎技術標準、構建了數據交換引擎、接口開發類庫和開發包等應用基礎設施，最終達到了銀行間市場各資訊系統之間的互聯互通和資訊共享。

### 接口開發類庫

對於IMIX體系的使用者來說，接口開發類庫是主要的介質之一。接口開發類庫封裝了IMIX協議標準和數據接口標準定義的內容，旨在幫助開發人員理解和應用行業技術標準。具體類別細分如下：

- 協議標準類庫

協議標準類庫是一組對象/接口定義的集合，是對IMIX協議定義的報文（Message）、重複組（Group）、域（Field）等數據結構的具體實現。通過使用協議標準類庫，開發人員可以以對象和接口調用的方式，封裝和解析IMIX數據，替代了傳統的按照數據字典編寫冗長的數據接口代碼的做法，便於提高開發效率、提升開發質量。通常稱協議標準類庫為「IMIX協議包」。

協議標準類庫的設計原則如下：

- 業務針對性: 為適應市場各項業務相對獨立、並行開發、快速多變的特點，對每項業務需求帶來的協議標準變更均實現特定版本的協議包。
- 集中管理: 由專門的管理組織對所有類庫版本進行統一管理。
- 輔助功能: 除了基本的數據封裝解析功能外，類庫同時提供了多項輔助功能。如不同強度的數據校驗功能、序列化及反序列化功能、格式轉換功能、對象工廠、適配框架等。
- 接口類庫

是為簡化系統接入程序開發而制定的一組應用編程接口（API）。接口類庫常被稱為「IMIX基礎組件」或「IMIX應用開發包」。針對不同類型的系統接入程序，接口類庫可分為以下3類：

- 核心API（Core API）: 會話層基於IMIXT 1.0實現，同時兼容了FIX標準。Core API提供最基礎、最通用的接口函數，主要包括應用初始化、啟動、停止、發送報文、接收報文、會話管理及安全驗證等。
- 客戶端API（Client API）: 基於Core API實現，並根據客戶端應用的行為特徵進行了封裝，以便於客戶端應用的開發人員使用。封裝內容包括簡化會話管理、增加自動重連、增加本地文件緩存、限制單進程多應用、限制接受連接請求行為等。
- 伺服器端API（Server API）: 基於Core API實現，一般用於構建伺服器端應用。與Core API相比主要變化包括簡化會話管理、增加使用者管理功能、限制單一進程多應用、限制發起連接請求行為等。

### API開發包

接口開發類庫，加上輔助開發使用的規範文檔、示例程序和工具等，形成了API開發包。其實質上是一種軟體開發工具集（SDK, Software Development Kit）。IMIX體系中的API開發包一般由中國外匯交易中心負責維護，並通過中國貨幣網發布。

### 層次劃分

根據國際標準化組織（ISO）提出的開放式系統互聯通信參考模型（Open System Interconnection Reference Model，定義於ISO/IEC 7498-1），電腦系統互連互通的標準框架可劃分為7層，即OSI模型。IMIX體系本質上是針對OSI模型中上面三層（應用層、表示層和會話層）的一套解決方案。其中，JR/T 0066標準定義了三層中的語法和協議部分；JR/T 0065標準和JR/T 0078標準定義了三層中包含語義基礎的元數據和開發者使用的應用編程接口（API）規範；應用基礎設施則完成了三層的一種具體實現。

#### 會話層（Session Layer）

會話層的主要功能是對話管理，數據流同步和重新同步等。IMIX協議中對於此部分內容的定義稱為IMIX會話層（或傳輸層）協議，即IMIXT（IMIX Transport）協議。應用基礎設施中的數據交換引擎和接口類庫則實現這部分定義，使用者可以通過引擎或調用類庫實現基於IMIXT的通信。IMIX體系未強制要求必需使用IMIXT協議，是否使用IMIXT由互聯雙方商議而定。對於終端系統而言，可以使用其他實現（如商用的消息中間件等）完成會話層功能。

#### 表示層（Presentation Layer）

表示層用於數據傳輸過程的格式化和轉換，供應用層做進一步的處理或展示。表示層的典型服務包括數據轉換、編碼轉換、壓縮和加解密等。IMIX體系中，表示層包含了IMIXTV（IMIX Tag=Value,基於UTF-8編碼文本）、IMIXML（基於XML）、IMAST（基於模板壓縮）和加解密（基於國密演算法和CA證書）等適用於不同場景的語法和數據格式定義，並在協議類庫等應用基礎設施予以實現。

- IMIXTV是最早出現也是用途最廣泛的語法和數據格式，本詞條中基本語法和結構主要描述的就是IMIXTV語法。
- IMIXML是按工業標準XML對IMIX進行編碼的語法。IMIX報文結構和XML是類同的，均為樹形結構，因此可以方便地進行編碼和轉換。基本規則是：
- XML元素和屬性名稱使用有意義的縮寫。
- 對於常用要素使用標準縮寫，例如Price使用Px表示。
- 報文、組件應表達為XML元素。
- 報文和組件中的域均應表達為屬性。
- 重複組表達為XML元素。
- 重複組中的域表達為屬性。
- 不同報文中包含的相同的重複組應統一定義。
- IMIX數據類型應對應至XML Schema數據類型。
- 根元素下允許報文重複，支持批量數據。
- IMAST是對基於IMIX協議交互數據進行適流壓縮的協議。IMAST依賴報文所指向的模板進行編碼和解碼，形成IMAST流進行網路傳輸，壓縮傳輸內容並提高傳輸效率。

<image>

#### 應用層（Application Layer）

應用層定位於面向終端用戶（可以是自然人，也可以是應用系統）的使用者界面展示。IMIX體系應用層的核心內容有二：

- 具體業務場景交互流程的定義。
- 具體業務場景交互內容的定義。

除此之外，IMIX樣式表語言（IMIX Stylesheet Language，簡稱ISL）等基於路徑表達語法為簡化解析和封裝IMIX報文設計的領域語言及配套的應用基礎設施也屬於這一層次。

## 國際化進程

2014年1月8日，基於IMIX協議標準開始開發外匯交易後確認和交易獲取兩組ISO 20022報文，並向註冊機構提交。2016年2月25日，兩組報文正式註冊並發布。這兩組報文在ISO 20022報文庫中的劃分為外匯交易業務領域。