ICS 03.060 A11 Filing No. JR Standard of the Financial Industry of the People's Republic of China JR/T 0087—2012 Data Exchange Protocol for Stock Index Futures between Funds and Futures Promulgated on December 26, 2012 Issued by t he Chi na Secur i t ies Regul at or y Co mmi ssi on Effective on December 26, 2012 JR/T 0087—2012 Table of Contents Forward .......................................................................................................................................................III Introduction ................................................................................................................................................ IV 1. Scope .........................................................................................................................................................1 2. Inclusion by References ............................................................................................................................1 3. Terms and Definitions ...............................................................................................................................1 4. Methods of Communication ......................................................................................................................2 5. Message Format ........................................................................................................................................2 6. Safety and Encryption ...............................................................................................................................6 7. Data Integrity.............................................................................................................................................7 8. Mode of Expansion ...................................................................................................................................7 9. Definition of Message ...............................................................................................................................8 10. Field Definitions ....................................................................................................................................48 11. Format of Settlement Data Files ............................................................................................................98 Schedule A ................................................................................................................................................111 Schedule B.................................................................................................................................................113 B.1 Logon for FIX Session........................................................................................................................113 B.2 Logout .................................................................................................................................................114 B.3 Resend ................................................................................................................................................114 B.4 Resend Request...................................................................................................................................115 B.5 Heartbeat and Test Request ................................................................................................................117 Schedule C.................................................................................................................................................118 C.1 New Order-Single Scenario Graph .....................................................................................................118 C.2 Order Cancel Scenario Graph .............................................................................................................119 Schedule D ................................................................................................................................................120 Schedule E .................................................................................................................................................121 E.1 FIX Session .........................................................................................................................................121 E.2 Connection ..........................................................................................................................................122 E.3 FIX Session Messages ........................................................................................................................126 JR/T 0087—2012 Forward This standard (“Standard”) is drafted in accordance with the rules set out in GB/T1.1-2009. The China Finance Standardization Technical Committee Securities Sub-Committee has proposed the Standard. The China Finance Standardization Technical Committee is responsible for the administration of the Standard. The Standard is drafted by : Asset Management Association of China, Securities Association of China, China Futures Association, China Futures Margin Monitoring Center Co., Ltd. , Shenzhen Securities Communication Co., Ltd., Bosera Asset Management Company Limited, Dacheng Fund Management Co., Ltd., Bank of Communications Schroders Fund Management Co., Ltd ,Wanjia Asset Management Co., Ltd., CITIC-Prudential Fund Management Co., Ltd., ICBC Credit Suisse Asset Management Co., Ltd., Harvest Fund Management Co., Ltd., Guo Tai JunAn Futures Co., Ltd., Shanghai Orient Futures Co., Ltd., Shanghai Futures Information Technology Co., Ltd., Sungard Co., Ltd, and Handsome Electronics Co., Ltd. Main drafters include: Zhong Rongsa, Zheng Fushi, Zhang Zhe, Liu Tiebin, Xie Wenhai, Xie Chen,Wang Shusong, Chen Jiaju, Zhang Shaolian, Lv Bin, Chen Zongyan, Chen Yixin, Wan Xiaoying, Xiao Junwei, Wu Lejian, Fan Jingwu, Mou Jianfeng, Zhang Yi, Gao Qian, Lin Qi, Gao Xiang, Yao Xudong, Sheng Minghao, Deng Tingxun, and Zhou Changshun. III Introduction In the Standard, the part relating to transaction data exchange protocol is drafted with reference to the Financial Information Exchange Protocol (FIX4.2) and the Securities Trading Exchange Protocol (STEP) and the part relating to settlement data exchange protocol is drafted with reference to the Requirements of the Futures Margin Safekeeping System for the Data Submission of Clearing Members and Non-clearing Members (Version 3.1) issued by the China Futures Margin Monitoring Center Co., Ltd. The Standard will be revised in due course to keep pace with the development of the business and technologies. IV JR/T 0087—2012 Data Exchange Protocol for Stock Index Futures between Funds and Futures 1. Scope The Standard provides for the transaction and settlement data exchange protocol between fund management companies, custodian banks and futures companies when fund management companies participate in the stock index futures business. The transaction data exchange protocol consists of application environment, format of message, safety and encryption, data integrity, mode of expansion, definition of message, field definitions and others. The settlement data exchange protocol specifies the formats of 7 files, including the customer fund file, the customer fund change file, the trading data file, the holding data file, the liquid details file, the holding details file and the delivering details file. The Standard is applicable to the exchange of transaction and settlement data between futures companies, fund management companies, custodian banks and other relevant financial institutions when fund management companies participate in the stock index futures business. 2. Inclusion by References The following documents are necessary to the application of the Standard. Where any such document is referred to in this Standard with a specific date, only the dated version thereof shall be applicable to the Standard. In the case of any undated reference, the current version thereof (including a list of all modifications made thereto) shall be applicable to the Standard. GB/T 2659-2000 Codes for Names of Countries and Regions in the World GB/T 12406-2008 Codes for the Representation of Currencies and Funds GB/T 23696-2009 Securities and Related Financial Instruments-Exchange and Market Identifier Codes 3. Terms and Definitions For the purposes of the Standard, the following definitions shall apply: 3.1 New order-single The term “new order-single” refers to any new order from a client. 3.2 Execution Report The term “execution report” refers to any report given to a service provider in response to the request of a client and mainly used to confirm the receipt of an order, confirm any change in the status of an existing order (e.g. confirmation of order cancellation), relay order status information and reject an order. 3.3 Client Orders Identity The term “client orders identity” refers to an identifier of order assigned by a client, the uniqueness of 1 JR/T 0087—2012 which must be guaranteed within a valid trading day. 3.4 Order Identity The term “order identity” refers to an identifier for order assigned by a futures company, the uniqueness of which must be guaranteed within a single trading day. 3.5 Executive Identity The term “executive identity” refers to an identifier of execution message assigned by a futures company, the uniqueness of which must be guaranteed within a valid trading day and which is mainly used to correspond to a specific execution report message. In the response to the request for the status of an order, the value of the executive identity is “0”. 3.6 Declaration Identity The term “declaration identity” refers to an identifier of declaration assigned by an exchange 3.7 Trade Identity The term “trade identity” refers to an identifier of trade assigned by an exchange. 3.8Client Identity The term “client identity” refers to a capital account opened by a client with a futures company. 3.9Account The term “account” refers to a trading code assigned by an exchange for a client. 4. Methods of Communication The two parties involved in a transaction may, at their discretion, choose any method of communication. For FIX session-level messages, see Schedule E. If the two parties involved in a transaction use the FIX session-level messaging as the method of communication, see Schedule A for the handling of FIX session deficiencies and see Schedule B for FIX session connection scenarios. 5. Message Format 5.1 Data Type Data type is used to define value type in the data field. This protocol consists of several fundamental data types (int, float, char, string and binary data block) and data types extended on their basis. Data types, with the exception of those of type “data”, are mapped to ASCII strings as follows. 5.1.1 Int Int refers to the sequence of digits without commas or decimals and optional positive or negative sign 2 JR/T 0087—2012 character (ASCII characters “-” and “0” - “9”). The sign character utilizes one byte. int values may contain leading zeros (e.g. “00023” = “23”) Extended definition of int type: a) Length: the length of data expressed in bytes is indicated with a positive int. b) NumInGroup: the number of repeating group is expressed in a positive int. c) SeqNum: the message sequence number is expressed in a positive int. d) TagNum: the field (also known as tag) number is expressed in a positive int, but the first character cannot be zero. e) Day-of-month: the day of a month is expressed in an int the value of which ranges from 1 to 31. 5.1.2 Float Float refers to the sequence of digits with optional decimal point and sign character (ASCII characters “-”, “0” - “9” and “.”). All float fields must accommodate up to 15 significant digits. Float values may contain leading zeros (e.g. “00023” = “23”) . Float values may contain or omit trailing zeros after the decimal point (e.g. “23.0”=“23.0000”=“23”). Extended definition of float type (except as stated in particular, float types may be positive or negative): a) Qty: the number of shares ordered, etc. capable of storing a decimal value. b) Price: the number of decimal places may vary. c) PriceOffeset: float field representing a price offset. d) Amt: float field (see definition of “float” above) typically representing a Price times a Qty, e.g. the turnover. e) Percentage: it is expressed in decimals: .05 represents 5% Number (m, n)(used in settlement documents): m indicates the maximum number of all significant digits (excluding the decimal point and the negative and positive signs) and n represents the decimal places. 5.1.3 Char Char refers to any alphanumeric character or punctuation except for the delimiter. All char fields are case sensitive. Extended definition of character type: Boolean: a char field containing one of two values (‘Y’=True/Yes, ‘N’=False/No). 5.1.4 String 3 JR/T 0087—2012 String fields are case-sensitive Extended definition of string type: a) Multiple Vvalue String: String field containing one or more space delimited values. b) Currency: see GB/T 12406-2008. c) Exchange: for their strings, see GB/T 23696-2009. d) Char (n) (used in settlement documents): it represents a string containing less than n characters. e) month-year, with the following format: YYYYMM, YYYYMMDD, or YYYYMMWW. YYYY = 0000-9999, MM = 01-12,DD = 01-31,WW = w1, w2, w3, w4, or w5. f) day-of-month (used in the settlement documents), its format is as follows: YYYY-MM-DD g) UTCTimestamp, with the following format: YYYYMMDD-HH: MM: SS (second) or YYYYMMDD-HH: MM: SS.sss (millisecond), YYYY = 0000-9999, MM = 01-12, DD = 01-31, HH = 00-23, MM = 00-59, SS = 00-60 (second), sss=000-999 (millisecond). h) UTC Time Only or time (used in the settlement documents), with the following format: HH:MM:SS or HH: MM: SS.sss, HH = 00-23, MM = 00-59, SS = 00-60 (second), sss=000-999 (millisecond). i) UTCDate, with the following format: YYYYMMDD, YYYY = 0000-9999, MM = 01-12, DD = 01-31. j) LocalMktDate, with the following format: YYYYMMDD, YYYY = 0000-9999, MM = 01-12, DD = 01-31. 5.1.5 Data Original data not subject to limitation on format and contents and consisting of length field and data field. Data included in the data field may contain numerical value 0x01 and the length field indicates the number of characters contained in the data field. 5.2 Field 4 JR/T 0087—2012 5.2.1 Definition of Field Field is a fundamental data element. Each field has its tag number, business definition and defined valid values. Tag number, which is assigned in a centralized manner to different fields, is the distinctive mark of a field. In messages, different fields are identified through the tag number. The data type of a field determines its value type. The valid values of a field may be a set and any value other than such set is deemed as illegal value. The business definition, data type and valid values of all fields are defined in detail in the field definition section. 5.2.2 Use of Field Each message is comprised of required, optional and conditionally required (fields which are required based on the presence or value of other fields) fields. The required and conditionally required fields must be contained in a complete message. 5.2.3 User Defined Field If fields defined in this protocol is insufficient, market participants may expand the scope of defined fields, that is, create user defined fields. 5.2.4 Field Chinese Character Encoding If the value of a field is Chinese characters, the Chinese Internal Code Specification (GBK) shall be followed. 5.2.5 Field Delimiter All fields (including those of data type data) in a message are terminated by a delimiter character. The non-printing, ASCII “SOH” (#001, hex: 0x01, referred to in the Standard as <SOH>), is used for field termination. Therefore, All messages begin with the “8=FIX.x.y<SOH>”string and terminate with “10=nnn<SOH>”. There shall be no embedded delimiter character <SOH> within fields except for data type data. 5.2.6 Syntax Any message is strictly constructed of a stream of <tag>=<value> fields with a field delimiter between fields in the stream. The “tag=value” basic structure is delimited with the field separator <SOH>. The composition structure of message is shown in Table 1: tag=value tag=value tag=value tag=value Table 1: Message Format A message is made up of a header, the message body fields and a trailer. Each message is constructed of a stream of <tag>=<value> fields and such <tag>=<value> fields can be defined in any sequence by 5 JR/T 0087—2012 complying with the following rules: a) The general format of a message is a header followed by the message body fields and terminated with a trailer. b) The first three fields in the header which cannot be changed are BeginString (tag =8) followed by BodyLength (tag =9) followed by MsgType (tag =35) c) The last field in the trailer is the CheckSum (Tag =10). d) Fields within repeating groups shall be specified in the order that the fields are specified in the message definition. e) In a message, except for those of repeating groups, no other field can be repeated. 5.2.7 Repeating Group It is permissible for fields to be repeated within a repeating group in order to transmit array type data. Generally, the character ‘No’ which initializes the name of a field indicates the times of repetition and is placed at the beginning of a repeating group. The definition of repeating group in the Standard is indicated via the indentation symbol. Some repeating groups may also be nested within another repeating group. If a nested repeating group is used, then the outer repeating group must be specified 6. Safety and Encryption The transmission and exchange of sensitive data across public carrier networks or unsafe networks may make it advisable to employ data encryption techniques to mask the application messages. The choice of encryption method will be determined by mutual agreement of the two parties involved in the connection. Any field within a message can be encrypted and included in the SecureData field; however, certain explicitly identified fields must be transmitted unencrypted. Of course, the clear text representation may also be maintained for these encrypted fields. When encryption is employed, it is recommended but not required that all fields within the message body be encrypted. If repeating groups are used within a message and encryption is applied to part of the repeating group, then the entire repeating group must be encrypted. Embedded in the protocol are fields, which enable the implementation of such safety techniques as digital signature, key exchange and text encryption. There are three text encryption schemes which are as follows: a) Safe and sensitive data is encrypted and transferred to the SecureData field. b) All fields which are allowed to be encrypted are encrypted and transferred to the SecureData field. c) All fields which are allowed to be encrypted are encrypted and transferred to the SecureData field and these fields repeat in a message in clear text. 6 JR/T 0087—2012 7. Data Integrity The integrity of message data content can be verified in two ways: verification of message length and checksum. The message length is indicated in the BodyLength field and is verified by counting the number of characters in the message following the BodyLength field up to, and including, the delimiter SOH immediately preceding the CheckSum tag (“10=”) . The CheckSum integrity check is calculated by summing the binary value of each character from the “8” of “8=”up to and including the field delimiter immediately preceding the CheckSum field “10=” and transforming the result into a modulo 256 number. The checksum field is the last field in a message. The checksum is calculated after all encryption is completed. For C language code segment for checksum calculation, see Schedule D. 8. Mode of Expansion 8.1 Categories of Expansion Expansion is divided into two parts: message definition expansion and field definition expansion. Message definition expansion may be made through adding message types, but the priority is to define new businesses through field definition or value expansion in the existing messages. Businesses represented by the existing messages cannot be changed when the expansion is made. Field definition expansion may be made through adding fields, but the priority is to expand the definition of field by expanding the field value. The required field which has been defined in a message cannot be transformed into an optional one and its definition cannot be abolished. 8.2 Expansion Rules The initial character of the message type value of user defined messages is ‘UF’. The module sequence of a message cannot be changed when its definition is expanded, but the sequence of fields and repeating groups may be changed. The definitions and positions of the first three fields in a header cannot be changed, but the optional fields in the header may be expanded The definition and position of the final field in a trailer cannot be changed, but the optional fields in the trailer may be expanded. 8.3 Version Management The version management right with respect to this protocol is vested with the Securities Association of China. 7 JR/T 0087—2012 The format of version No. is X.Y.Z starting from 1.0.0. When a new version is completely compatible with the previous version, only Z in the version No. can be replaced. 9. Definition of Message 9.1 Message Header Each session or application message is preceded by a header. The header identifies the message type, length, destination, sequence number, origination point and time. Two fields are used to resend messages. The PossDupFlag is set to Y when resending a message as the result of a session level event (i.e. the retransmission of a message reusing a sequence number). The PossResend is set to Y when reissuing a message with a new sequence number. The receiving application shall process these messages as follows: PossDupFlag: if a message with this sequence number has been previously received, ignore the message, if not, process the message normally. (Support the FIX session-level need) PossResend: forward a message to the application and determine if the message has been previously received (i.e. verify order ID or relevant parameters). See Table 1 for the format of message header: Table 1 Message Header Tag Field Name Required Comments First string. Valid values:FIX.4.2 (Always 8 BeginString Y unencrypted, must be first field in message) 9 BodyLength Y 35 MsgType Y Message length (Always unencrypted, must be second field in message) Message type(Always unencrypted, must be third field in message) Identifier of message sender (Always 49 SenderCompID Y unencrypted, must be third field in message) 56 8 TargetCompID Y Identifier of message receiver (Always unencrypted) JR/T 0087—2012 Tag Field Name Required Comments Identifier of message originator (Can be 115 OnBehalfOfCompID N embedded within encrypted data section.). Required if the message was delivered by a third party Identifier of message recipient (Can be 128 DeliverToCompID N embedded within encrypted data section.). Required if the message is delivered by a third party 90 SecureDataLen N 91 SecureData N Length of encrypted data Encrypted data (Always immediately follows SecureDataLen field) Message sequence number (Can be embedded within encrypted data section.). 34 MsgSeqNum Y A fixed value may be set for this tag (e.g. 0) if the two parties involved in a transaction do not use the FIX session mechanism. Identifier of specific message originator 50 SenderSubID N (Can be embedded within encrypted data section.) Identifier of specific message originator’s 142 SenderLocationID N location (Can be embedded within encrypted data section) Identifier of specific message receiver 57 TargetSubID N (Can be embedded within encrypted data section) Identifier of specific message destination’s 143 TargetLocationID N location (Can be embedded within encrypted data section) Identifier of specific message originator 116 OnBehalfOfSubID N (Can be embedded within encrypted data section) 9 JR/T 0087—2012 Tag Field Name Required Comments Identifier of specific message originator’s 144 OnBehalfOfLocationID N location (Can be embedded within encrypted data section) Assigned value used to identify specific 129 DeliverToSubID N message recipient if the message is delivered by a third party (Can be embedded within encrypted data section) Identifier of specific message recipient's 145 DeliverToLocationID N location (Can be embedded within encrypted data section) Possible duplicate flag. Indicates possible 43 PossDupFlag N retransmission of message. (Can be embedded within encrypted data section) 97 PossResend N 52 SendingTime Y 122 OrigSendingTime N Possible resend flag. (Can be embedded within encrypted data section) Time of transmission (Can be embedded within encrypted data section) Time of original transmission (Can be embedded within encrypted data section) Type of message encoding (non-ASCII 347 MessageEncoding N characters) used in a message’s “Encoded” fields The last MsgSeqNum value received and 369 LastMsgSeqNumProcessed N processed (Can be embedded within encrypted data section) 370 OnBehalfOfSendingTime N Time of initial transmission (always expressed in UTC) 9.2 Message Trailer Each message, session or application, is terminated by a trailer. The trailer is used to segregate messages and contains the three digit character representation of the Checksum value. See Table 2 for the format of message trailer: 10 JR/T 0087—2012 Table 2 Message Trailer Tag Field Name Required 93 SignatureLength N 89 Signature N 10 CheckSum Y Comments Length of electronic signature (Always unencrypted) Electronic signature(Always unencrypted) Checksum. Always last field in message (Always unencrypted). 9.3 Session Messages 9.3.1 User Logon Management Messages 9.3.1.1 Notes on User Logon Management Messages User logon messages primarily include, among others, messages which support client logon and logout and other client management practices. The two parties involved in a transaction may, depending on their own business need, choose transactions which supports or does not support logon and logout practices. 9.3.1.2 User Logon Request (MsgType=UF001) It is the request of a user to log into the system of a futures company a session-level connection is established. See Table 3 for the format of User Logon Request: Table 3 User Logon Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 98 EncryptMethod Y Method of encryption (Always unencrypted) 8001 LogonPasswd Y Transaction password 95 RawDataLength N MsgType=UF001 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Length of unformatted raw data. Required for authentication purpose Unformatted raw data (Can be used to represent a 96 RawData N private key). Required for some authentication methods 8096 MacNetInfo N Computer network information of client 8105 ClientSoftName N Name of client software 8106 ClientSoftVersion N Version of client software Standard trailer Y 11 JR/T 0087—2012 9.3.1.3 User Logon Response (MsgType=UF002) It is the response returned by a futures company after a user requests to log into the system of the futures company. See Table 4 for the format of User Logon Response: Table 4 User Logon Response Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8002 LogonStatus Y Status of logon 8031 UserRespType Y Type of response to user 8003 AccountName N Account name 8004 RiskLevel N Level of risk posed by client 8005 AdditionalMargin N Additional margin 8006 ClientSecuType N Type of client security 8011 Riskratio N Risk ratio of client 8007 LastLogonIP N IP address for the last logon 8008 LastLogonTime N Date and time when the last logon was made MsgType=UF002 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Reason for rejecting logon request. Optionally 8032 LongonRejReason N employed when UserRespType (8031)=1 (representing rejection) Describes the reason for rejecting logon request. 58 Text N Optionally employed when the UserRespType(8031)=1(representing rejection) Standard trailer Y 9.3.1.4 User Logout Request (MsgType=UF003) It is the request of a user to log out of the system of a future company after the business time terminates. 12 JR/T 0087—2012 See Table 5 for the format of User Logout Request: Table 5 User Logout Request Tag Field Name Required Standard header Y 8088 RequestID Y 109 ClientID Y Standard trailer Y Comments MsgType=UF003 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Capital account of client 9.3.1.5 User Logout Response (MsgType=UF004) It is the response made by a futures company to the request of a user to log out of the system of the future company. See Table 6 for the format of User Logout Response: Table 6 User Logout Response Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8002 LogonStatus Y Status of logon 8031 UserRespType Y Type of response to user MsgType=UF004 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Reason for rejecting logout request. Optionally 8033 LogoutRejReason N employed when the UserRespType(8031)=1(representing rejection) Describes the reason for rejecting logon request. 58 Text N Optionally employed when the UserRespType(8031)=1(representing rejection) Standard trailer Y 13 JR/T 0087—2012 9.3.1.6 User Change PassWd Request (MsgType=UF005) It is the request of a user to change the password. See Table 7 for the format of User Change PassWd Request: Table 7 User Change PassWd Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8089 PassWdType Y Type of password 8090 OldPassWd Y Old password of user 8091 NewPassWd Y New password of user 58 Text N Standard trailer Y MsgType=UF005 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. 9.3.1.7 User Change PassWd Response (MsgType=UF006) It is the response made by a futures company with respect to the request of a user to change the password. See table 8 for the format of User Change PassWd Response Table 8 User Change PassWd Response Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8031 UserRespType Y Type of response to user MsgType=UF006 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Reason for rejecting password change request. 8034 ChangePWRejReason N Optionally employed when THE UserRespType(8031)=1(representing rejection) Describes the reason for rejecting password 58 Text N change request. Optionally employed when the UserRespType(8031)=1(representing rejection) Standard trailer 14 Y JR/T 0087—2012 9.3.2 Order Messages 9.3.2.1 Notes on Order Messages Order messages primarily include those which provide support to daily real-time transactions. See Schedule C for main scenarios for the application of order messages. 9.3.2.2 New Order Messages (MsgType=D) New order messages received with the PossResend flag set in the header shall be validated by the ClOrdID. Implementations shall also consider checking order parameters (side, symbol, quantity, etc.) to determine if the order had been previously submitted. If such order has previously been received, the order shall be acknowledged back to the client via an execution report message. If the order has not been received, the order shall be processed as a new order and acknowledged via an execution report message. The origination time specified in the TransactTime field shall allow the receiver of the order to apply business rules to determine if the order is potentially “stale”. See Table 9 for the format of New Order-Single Message: Table 9 New Order-Single Tag Field Name Required Comments Standard header Y 11 ClOrdID Y 109 ClientID Y Capital account of client 1 Account Y Trading code for client 110 MinQty N Minimum quantity of an order to be executed 55 Symbol Y Contract code 167 SecurityType N FUT = futures 200 MaturityMonthYear N MsgType=D Identifier of client order. Its uniqueness must be guaranteed within a valid trading day. Can be used to specify month and year of maturity Can 205 MaturityDay N be used in conjunction with MaturityMonthYear to specify a particular maturity date 207 SecurityExchange Y Can be used to identify the exchange 15 JR/T 0087—2012 Tag Field Name Required Comments 77 OpenClose Y Indicates opening or closing a position 8009 HedgeFlag Y Flag of speculation or hedge 8010 TouchCondition N Trigger condition 54 Side Y Side of order 38 OrderQty N Number of shares ordered 60 TransactTime Y Time of order creation 40 OrdType Y Type of order 44 Price N Price (Required to specify a limit order) 423 PriceType N Price type 99 StopPx N Stop price 15 Currency N Type of currency 59 TimeInForce N 168 EffectiveTime N 432 ExpireDate N 126 ExpireTime N 8096 MacNetInfo N 58 Text N Standard trailer Y Time at which a new order becomes effective. Absence of this field indicates Day Can be used to specify the time during which the order remains in effect Conditionally required if TimeInForce = GTD and ExpireTime is not specified. Conditionally required if TimeInForce = GTD and ExpireDate is not specified. Computer network information of client 9.3.2.3 Execution Reports (MsgType=8) Execution reports may be used to: a) confirm the receipt of an order b) confirm any change in the status of an existing order (e.g. accept order cancel requests), c) 16 relay order status information and JR/T 0087—2012 d) reject orders Each execution report includes two fields: OrdStatus (the status of order) and ExecType (the type of execution). The OrdStatus convey the current status of an order. The ExecType field identifies the execution type of an execution report. In an execution report, both the OrdStatus and the ExecType indicate any change in the status of an order. Execution information (e.g. partial fill or complete fill) shall not be communicated in the same report as one which communicates other state changes (such as pending cancel, canceled, accepted, done for day etc.) Requests to cancel an order are only acted upon when there is an outstanding order quantity. The general rule is: OrderQty = CumQty + LeavesQty There can be exceptions to this rule when ExecType and/or OrdStatus are Canceled, DoneForTheDay, Expired, Calculated, or Rejected in which case the order is no longer active and LeavesQty could be 0 The ClOrdID is provided for futures companies to affix an identification number to a client order and is unique within their internal systems. The field OrderID is populated with the futures company-generated order number. In an order cancellation, the ClOrdID needs to be connected with the OrigClOrdID. Push notification messages relating to forced liquidation are supported and the OpenClose is set to “Q”. For counters which do not return the AvgPx, the AvgPx can be set to “0”. See Table 10 for the format of Execution Report Message: Table 10 Execution Report Tag Field Name Required Standard header Y Comments MsgType=8 Identifier for order as assigned by a futures 37 OrderID Y company. Its uniqueness must be guaranteed within a single trading day. Identifier of client order. In the case of 11 ClOrdID N information on forced liquidation, the value is the identity of the sole string initialized with “NONE” appearing on the trading day. 41 OrigClOrdID N ClOrdID of the previous order used to identify the previous order in the cancel requests. 17 JR/T 0087—2012 Identifier of execution message as assigned by a 17 ExecID Y futures company. Its uniqueness must be guaranteed within a valid trading day. 18 150 ExecType Y Type of execution 39 OrdStatus Y Status of order 103 OrdRejReason N Required when rejecting an order 109 ClientID Y Capital account of client 1 Account Y Trading code for client 55 Symbol Y Contract code 167 SecurityType N FUT=futures 200 MaturityMonthYear N Month and year of maturity 205 MaturityDay N Day of maturity 207 SecurityExchange Y Can be used to identify the exchange 77 OpenClose N Indicates opening or closing a position 54 Side Y Side of order 38 OrderQty Y Number of shares ordered 40 OrdType N Type of order 44 Price N Price of order 99 StopPx N Stop price 59 TimeInForce N 15 Currency N 32 LastShares N 31 LastPx N Price of last fill (price of the most recent fill) 30 LastMkt N Market of execution for last fill 151 LeavesQty Y Remaining quantity of an existing order Time at which a new order becomes effective. Absence of this field indicates Day The type of currency Quantity of shares traded on last fill (quantity of shares traded on the most recent fill ) JR/T 0087—2012 14 CumQty Y Total number of shares filled 6 AvgPx Y Average price 60 TransactTime N Time of execution report 381 GrossTradeAmt N Total amount traded 110 MinQty N Minimum quantity of an order to be executed 8500 OrderEntryTime N Time at which an order was entered 8093 DeclarationID N Identifier of declaration 8094 TradeID N Identifier of trade Standard trailer Y 9.3.2.4 Order Status Request (MsgType=H) The order status request is used to ask for information on the status of a specific order with a service provider which gives information on the status of the order through an execution report message. See Table 11 for the format of Order Status Request Message: Table 11 Order Status Request Tag Field Name Required Standard header Y Comments MsgType=H Identifier for order as assigned by a futures 37 OrderID Y company. Its uniqueness must be guaranteed within a single trading day. 11 ClOrdID Y Identifier of client order 109 ClientID Y Capital account of client 1 Account Y Trading code for client 55 Symbol Y Contract code 207 SecurityExchange Y Can be used to identify the exchange 167 SecurityType N FUT=futures 200 MaturityMonthYear N Can be used to specify month and year of maturity Can 205 MaturityDay N be used in conjunction with MaturityMonthYear to specify a particular maturity date 54 Side Y Standard trailer Y Side of order 19 JR/T 0087—2012 9.3.2.5 Order Cancel Request (MsgType=F) The order cancel request is used to cancel all of the remaining quantity of an existing order. The order cancel request will only be accepted if the order can successfully be pulled back from the exchange floor without being executed or partially executed. A cancel request is assigned a ClOrdID and is treated as a separate order. If rejected, the ClOrdID of the cancel request will be sent in the Cancel Reject message, as well as the ClOrdID of the actual order in the OrigClOrdID field. The ClOrdID assigned to the cancel request must be unique. An immediate response to the order cancel request is required. It is recommended that an ExecutionRpt with ExecType=Pending Cancel be sent unless the Order Cancel Request can be immediately accepted or rejected. See Table 12 for the format of Order Cancel Request: Table 12 Order Cancel Request Tag 41 Field Name Required Standard header Y OrigClOrdID Y Comments MsgType=F ClOrdID of the previous order used to identify the previous order in the cancel requests. Identifier for order as assigned by a futures 37 OrderID Y company. Its uniqueness must be guaranteed within a single trading day. 20 11 ClOrdID Y Identifier of client order 109 ClientID Y Capital account of client 1 Account Y Trading code for client 55 Symbol Y Contract code 167 SecurityType N Security code source 200 MaturityMonthYear N FUT=futures 205 MaturityDay N Month and year of maturity 207 SecurityExchange Y Day of maturity 54 Side Y Side of order 60 TransactTime Y Time of order creation 40 OrdType Y Type of order 38 OrderQty Y Number of shares ordered 8093 DeclarationID N Identifier of declaration 58 Text N Standard trailer Y JR/T 0087—2012 9.3.2.6 Order Cancel Reject (MsgType=9) The order cancel reject message is used to reject an order cancel request. When a service provider who has received an order cancel request discovers that such request cannot be executed (e.g. the impossibility to change any filled order etc.), it will send an order cancel reject message When rejecting an order cancel request, the order cancel reject message shall provide the ClOrdID and OrigClOrdID values which were specified on the order cancel request message for identification (unless CxlRejReason= “Unknown order”). See Table 13 for the format of Order Cancel Reject: Table 13 Order Cancel Reject Tag Field Name Required Standard header Y Comments MsgType=9 Identifier for order as assigned by a futures 37 OrderID Y company. Its uniqueness must be guaranteed within a single trading day. 11 ClOrdID Y Identifier of client order 41 OrigClOrdID Y 39 OrdStatus Y Status of order 109 ClientID Y Capital account of client 1 Account Y Trading code for client 60 TransactTime N Time of order creation 434 CxlRejResponseTo N 102 CxlRejReason N 58 Text N Standard trailer Y ClOrdID of the previous order used to identify the previous order in the cancel requests. Type of request that a Cancel Reject is in response to Reason for rejecting order cancel request 9.3.3 Business Status Messages 9.3.3.1 Notes on Business Status Messages Business status messages are primarily those which provide support to status-related requests. 21 JR/T 0087—2012 9.3.3.2 Position Status Request (MsgType=UF201) It is the request by clients for information on the status of positions they currently hold. Clients may request for information on the status of positions they hold through all exchanges; information on the status of all positions held through a particular exchange; information on the status of all positions they hold through a specific exchange; and information relating to the status of positions held on a certain contract. See Table 14 for the format of Current /Previous Position Status Request: Table 14 Position Status Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8035 PosStatReqType Y Type of position status request 1 Account N Trading code for client 55 Symbol N Contract code 207 SecurityExchange N Can be used to identify the exchange 54 Side N Identifies the side of order for a position MsgType=UF201 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Beginning time of a previous position status 8101 BeginDate C request. Required when PosStatReqType(8035)=1 (representing previous position status request) Ending time of a previous position status request. 8102 EndDate C Required when PosStatReqType(8035)=1 (representing previous position status request) Standard trailer Y 9.3.3.3 Position Status Response (MsgType=UF202) It is the response made to the request of clients for information on the status of positions they hold. It is also the response to any position status response gap. If a futures company receives a previous position status request during trading hours, it does not need to return a response. 22 JR/T 0087—2012 See Table 15 for the format of Position Status Response: Table 15 Position Status Response Tag Field Name Required Comments Standard header Y 8088 RequestID Y 8031 UserRespType Y Type of response to user 8026 TotalRetNum N Number of responses returned 8027 PresentRetNum N 8095 NextFlag N 109 ClientID Y Capital account of client 1 Account N Trading code for client 55 Symbol Y Contract code 207 SecurityExchange Y Can be used to identify the exchange 8012 LatestPx N The latest price 54 Side Y Side of order MsgType=UF202 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Sequence number of the present response returned Whether there is any flag for subsequent data packets Flag of speculation or hedge. Required when 8009 HedgeFlag C PosStatRespType (8507)=0 (representing acceptance) Total positions (total number of shares filled). 14 CumQty C Required when PosStatRespType (8507)=0 (representing acceptance) Today positions. Required when 8015 TdPosition C PosStatRespType (8507)=0 (representing acceptance) 8016 YDPosition N Yesterday positions 8017 FrozenPosition N Number of positions frozen 8018 FrozenAmt N Amount frozen 8019 PositionDate N Date on which a positions was held 6 AvgPx N Holding cost (average price) 12 Commission N Commission 8021 PositionProfit N Profit or loss from the positions 8022 PositionPrice N Average price of the positions 8075 OneLotQty N Number of shares in one lot 8036 PosStatRejReason N Reason for rejecting position status request. 23 JR/T 0087—2012 Optionally employed when the UserRespType (8031)=1(representing rejection) Describes the reason for rejecting position status 58 Text N request. Optionally employed when the UserRespType (8031)=1(representing rejection) Standard trailer Y 9.3.3.4 Max Operation Position Status Request (MsgType=UF203) It is the request sent by a client for information on the status of maximum amount of positions it can open or close. See Table 16 for the format of Max Operation Position Status Request: Table 16 Max Operation Position Status Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 1 Account N Trading code for client 55 Symbol Y Contract code 207 SecurityExchange Y Can be used to identify the exchange 77 OpenClose Y Indicates opening or closing a position 54 Side Y Side of order MsgType=UF203 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Price. Required when requesting the status of the 44 Price N maximum amount of positions allowed to be opened 8009 HedgeFlag Y Standard trailer Y Flag of speculation or hedge 9.3.3.5 Max Operation Position Status Response (MsgType=UF204) It is the response made to the request of a client for information on the status of maximum amount of positions it has opened or closed. See Table 17 for the format of Max Operation Position Status Response: 24 JR/T 0087—2012 Table 17 Max Operation Position Status Response Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8031 UserRespType Y Type of response to user 1 Account N Trading code for client 55 Symbol Y Contract code 207 SecurityExchange Y Can be used to identify the exchange 77 OpenClose Y Indicates opening or closing a position 54 Side Y Side of order MsgType=UF204 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Maximum amount of positions opened. Required 8023 MaxOpenPosition N when requesting the status of the opened positions. Maximum amount of positions closed. Required when requesting the status of the closed 8024 MaxClosePosition N positions. If the closing of positions opened today or yesterday is supported, the value is the maximum amount of yesterday opened positions closed Maximum amount of today opened positions 8025 MaxCloseTdPosition N closed. Required when requesting the status of positions closed and if the closing of toady or yesterday opened positions is supported. 8009 8037 HedgeFlag MaxOpPosStatRejReaso n Y Flag of speculation or hedge Reason for rejecting position status request. N Optionally employed when the UserRespType(8031)=1(representing rejection) Describes the reason for rejecting position status 58 Text N request. Optionally employed when the UserRespType(8031)=1(representing rejection) Standard trailer Y 9.3.3.6 All Orders Status Request (MsgType=UF205) It is the request sent by a client for the status of all of its orders. The all orders status request is also used to request the status of orders in a particular exchange. See Table 18 for the format of All Orders Status Request: 25 JR/T 0087—2012 Table 18 All Orders Status Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8038 AllOrdStatReqType Y Type of all orders status request 207 SecurityExchange N Can be used to identify the exchange 8101 BeginDate C 8102 EndDate C Standard trailer Y MsgType=UF205 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Beginning time of an all previous orders status request Ending time of an all previous orders status request 9.3.3.7 All Orders Status Response (MsgType=UF206) It is the response made to the request of a client for the status of all of its orders. It is also the response to any response gap with respect to the request of a client for resending the status of all orders. If a futures company receives an all previous orders position status request during trading hours, it does not need to return a response. See Table 19 for the format of All Orders Status Response: 26 JR/T 0087—2012 Table 19 All Orders Status Response Tag Field Name Required Comments Standard header Y 8088 RequestID Y 8031 UserRespType Y Type of response to user 8026 TotalRetNum N Number of responses returned 8027 PresentRetNum N 8095 NextFlag N 109 ClientID Y MsgType=UF206 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Sequence number of the present response returned Whether there is any flag for subsequent data packets Capital account of client Trading code for client. Required when 1 Account C AllOrdStatRespType (8512)=0 (representing acceptance) Contract code. Required when 55 Symbol C AllOrdStatRespType (8512)=0 (representing acceptance) Can be used to identify the exchange. Required 207 SecurityExchange C when AllOrdStatRespType (8512)=0 (representing acceptance) Identifier of client order. Required when 11 ClOrdID C AllOrdStatRespType (8512)=0 (representing acceptance) Status of order. Required when 39 OrdStatus C AllOrdStatRespType (8512)=0 (representing acceptance) Indicates opening or closing a position. 77 OpenClose C Required when AllOrdStatRespType (8512)=0 (representing acceptance) Side of order. Required when 54 Side C AllOrdStatRespType (8512)=0 (representing acceptance) Number of shares ordered. Required when 38 OrderQty C AllOrdStatRespType (8512)=0 (representing acceptance) 40 OrdType C Type of order. Required when AllOrdStatRespType (8512)=0 (representing 27 JR/T 0087—2012 acceptance) 44 Price N Price of order 99 StopPx N Stop price 59 TimeInForce N Time at which a new order becomes effective. Absence of this field indicates Day 15 Currency N Type of currency 151 LeavesQty Y Remaining quantity of an existing order 14 CumQty Y Total number of shares filled 6 AvgPx Y Average price 60 TransactTime N Time of execution report 381 GrossTradeAmt N Total amount traded 110 MinQty N Minimum quantity of an order to be executed 8500 OrderEntryTime N Time at which an order was entered Reason for rejecting all orders status request. 8039 AllOrdStatRejReason N Optionally employed when the UserRespType(8031)=1(representing rejection) Describes the reason for rejecting position status 58 Text N request. Optionally employed when the UserRespType(8031)=1(representing rejection) Standard trailer Y 9.3.3.8 Settlement Result Status Request (MsgType=UF207) It is the request of a client for the status of settlement results. See Table 20 for the format of Settlement Result Status Request: Table 20 Settlement Result Status Request Tag Field Name Required Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8028 SettlementDate Y Date of settlement results 207 SecurityExchange Y Can be used to identify the exchange Standard trailer Y 28 Comments MsgType=UF207 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. JR/T 0087—2012 9.3.3.9 Settlement Result Status Response (MsgType=UF208) It is the response returned by a futures company to the request of a client for the status of settlement results. It is also the response to response gap with respect to the request of a client for the status of settlement results. See Table 21 for the format of Settlement Result Status Response: Table 21 Settlement Result Status Response Tag Field Name Required Standard header Y 8088 RequestID Y 8031 UserRespType Y Type of response to user 8028 SettlementDate Y Date of settlement results 207 SecurityExchange Y Can be used to identify the exchange 8026 TotalRetNum N Number of responses returned 8027 PresentRetNum N Sequence number of the present response returned 8095 NextFlag N 8040 SettlementResultStatRej Reason Comments MsgType=UF208 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Whether there is any flag for subsequent data packets Reason for rejecting settlement result status request. N Optionally employed when the UserRespType(8031)=1(representing rejection) Required when when UserRespType(8031)=0 (representing acceptance). Specifies the contents of the settlement result; 58 Text C Optionally employed when the UserRespType(8031)=1(representing rejection). Describes the reason for rejecting settlement result status request. Standard trailer Y 29 JR/T 0087—2012 9.3.3.10 Settlement Result Comfirm Request (MsgType=UF209) It is the request of a client for the confirmation of settlement results. See Table 22 for the format of Settlement Result Comfirm Request: Table 22 Settlement Result Comfirm Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8028 SettlementDate N Date of settlement results 8029 SettlementConfirm Y Confirmation of settlement results 207 SecurityExchange Y Can be used to identify the exchange Standard trailer Y MsgType=UF209 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. 9.3.3.11 Settlement Result Confirm Response (MsgType=UF209) It is the response returned by a futures company to the request of a client for the confirmation of settlement results. It is also the response to any response gap to the request of a client for the confirmation of settlement results. See Table 23 for the format of Settlement Result Comfirm Response: Table 23 Settlement Result Comfirm Response Tag Field Name Required Comments Standard header Y 8088 RequestID Y 8031 UserRespType Y Type of response to user 8028 SettlementDate N Date of settlement results MsgType=UF210 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Result 8030 SettlementConfirmResult C Required of settlement when result UserRespType(8031)=0 (representing acceptance). 30 confirmation. JR/T 0087—2012 207 8041 SecurityExchange SettlementResultConfirm RejReason Y Can be used to identify the exchange Reason for rejecting settlement result confirm N request. Optionally employed when the UserRespType(8031)=1(representing rejection) Describes the reason for rejecting settlement 58 Text N result confirm request. Optionally employed when the UserRespType(8031)=1(representing rejection) Standard trailer Y 9.3.3.12 Settlement Result Comfirm Status Request (MsgType=UF211) It is the request of a client for the status of settlement result confirmation. See Table 24 for the format of Settlement Result Comfirm Status Request: Table 24 Settlement Result Comfirm Status Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8028 SettlementDate N Date of settlement results 207 SecurityExchange Y Can be used to identify the exchange Standard trailer Y MsgType=UF211 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. 9.3.3.13 Settlement Result Comfirm Status Response It is the response returned by a futures company to the request of a client for the status of settlement result confirmation. Settlement Result Confirm Response messages can be used as reference. 9.3.3.14 Margin Rate Status Request (MsgType=UF212) It is the request of a client for the status of margin rates. Clients may request for either the status of margin rate of a particular variety or the status of margin rates of varieties with a specified date of delivery See Table 25 for the format of Margin Rate Status Request: 31 JR/T 0087—2012 Table 25 Margin Rate Status Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 1 Account N Trading code for client 8078 VarietyCode Y Variety code 55 Symbol N Contract code 200 MaturityMonthYear N 207 SecurityExchange Y Standard trailer Y MsgType=UF212 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Can be used to specify month and year of maturity Can be used to identify the exchange 9.3.3.15 Margin Rate Status Response (MsgType=UF213) It is the response returned by a futures company to the request of a client for the status of margin rates. A futures company may voluntarily transmit such message in the case of any intra-day change in the margin rate. See Table 26 for the format of Margin Rate Status Response: Table 26 MarginRate Status Response Tag Field Name Required Standard header Y Comments MsgType=UF213 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. If a 8088 RequestID Y futures company voluntarily transmits the margin rate to a client, the value is the identity of the sole string initialized with “NONE” appearing on the trading day 109 32 ClientID Y Capital account of client JR/T 0087—2012 Tag Field Name Required Comments 8031 UserRespType Y Type of response to user 1 Account N Trading code for client 55 Symbol N Contract code 200 MaturityMonthYear N Can be used to specify month and year of maturity Number of margin entries. Required when 8054 NoMarginEntries C UserRespType(8031)=0 (representing acceptance). 8055 MarginType N Type of margin 8056 MarginRate N Margin rate 8057 MaginAmt N Margin amount 207 SecurityExchange Y Can be used to identify the exchange 8042 MarginRateStatRejReas on Reason for rejecting position status request. N Optionally employed when the UserRespType(8031)=1(representing rejection) Describes the reason for rejecting marginrate 58 Text N status request. Optionally employed when the UserRespType(8031)=1(representing rejection) Standard trailer Y 9.3.3.16 Commission Rate Status Request (MsgType=UF214) It is the request of a client for the status of commission rates. See Table 27 for the format of Commission Rate Status Request: Table 27 Commission Rate Status Request Tag 8088 Field Name Required Standard header Y RequestID Y Comments MsgType=UF214 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. 33 JR/T 0087—2012 109 ClientID Y Capital account of client 8078 VarietyCode N Variety code 55 Symbol N Contract code 200 MaturityMonthYear N 207 SecurityExchange Y Standard trailer Y Can be used to specify month and year of maturity Can be used to identify the exchange 9.3.3.17 Commission Rate Status Response (MsgType=UF215) It is the response returned by a futures company to the request of a client for the status of commission rates. See Table 28 for the format of Commission Rate Status Response: Table 28 Commission Rate Status Response Tag Field Name Required Comments Standard header Y 8088 RequestID Y 8031 UserRespType Y Type of response to user 8026 TotalRetNum N Number of responses returned 8027 PresentRetNum N 8095 NextFlag N 8078 VarietyCode N Variety code 55 Symbol N Contract code 200 MaturityMonthYear N MsgType=UF215 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Sequence number of the present response returned Whether there is any flag for subsequent data packets Can be used to specify month and year of maturity Number of commission entries. Required when 8058 NoCommissionEntries C UserRespType(8031)=0 (representing acceptance). 34 JR/T 0087—2012 Tag Field Name Required 8059 CommissionType N Type of commission 8070 CommissionRate N Commission rate 8071 CommssionAmt N Commission 8092 SettleFee N Settlement fees 207 SecurityExchange Y Can be used to identify the exchange 8043 CommissionRateStatRejR eason Comments Reason for rejecting position status request. N Optionally employed when the UserRespType(8031)=1(representing rejection) Describes the reason for rejecting commission 58 Text N rate status request. Optionally employed when the UserRespType (8031)=1(representing rejection) Standard trailer Y 9.3.3.18 Customer Capital Status Request (MsgType=UF216) It is the request by clients for the status of their capital. See Table 29 for the format of Customer Capital Status Request: Table 29 Customer Capital Status Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 15 Currency N Type of currency Standard trailer Y MsgType=UF216 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. 9.3.3.19 Customer Capital Status Response (MsgType=UF217) It is the response returned by a futures company to the request of a client for the status of its capital. A futures company may voluntarily transmit such message for the purpose of issuing a margin call to a client. See Table 30 for the format of Customer Capital Status Response: 35 JR/T 0087—2012 Table 30 Customer Capital Status Response Tag Field Name Required Standard header22 Y Comments MsgType=UF217 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. In the case of 8088 RequestID Y a margin call, the value is the identity of the sole string initialized with “NONE” appearing on the trading day. 109 ClientID Y Capital account of client 8031 UserRespType Y Type of response to user 8045 BuyMarginAmt C 8046 SellMarginAmt C Margin buying. Required UserRespType(8031)=0 (representing acceptance). Margin selling. Required when UserRespType(8031)=0 (representing acceptance). Supplementary margin. Required when 8047 SupplementalMarginAmt C 8048 OccupyMarginAmt C 8049 TotalMarginAmt C 8014 TotalExMarginAmt N 8081 YesterdayStlAmt C 8082 BuyFrozenAmt C 8083 SellFrozenAmt C 8020 FrozenCommision N Commission for freezing the position 8074 TotalFrozenAmt N Total frozen amount 8084 UseableAmt C Usable 36 when UserRespType(8031)=0 (representing acceptance). Margin occupied. Required when UserRespType(8031)=0 (representing acceptance). Total margin. Required when UserRespType(8031)=0 (representing acceptance). Total margin of exchange Amount settled yesterday. Required when UserRespType(8031)=0 (representing acceptance). Buy frozen amount. Required when UserRespType(8031)=0 (representing acceptance). Sell frozen amount. Required when UserRespType(8031)=0 (representing acceptance). capital. Required when JR/T 0087—2012 Tag Field Name Required Comments UserRespType(8031)=0 (representing acceptance). 8098 FetchAmt N Capital available for withdrawal 12 Commission N Commission 8085 FloatProfit N Floating profit or loss 8086 CloseProfit N Profit or loss from the closing of positions 8087 DayFolatProfit N Outgoing and incoming payments on the day 8099 DayPaymentAmt N Outgoing payments on the day 8100 DayIncomeAmt N Incoming payments on the day 8004 RiskLevel C 8006 ClientSecuType C 8011 Riskratio C 15 Currency N 8044 CustomerCapitalStatRejR eason Level of risk posed by client. Required when UserRespType(8031)=0 (representing acceptance). Type of client security. Required when UserRespType (8031)=0 (representing acceptance). Risk ratio of client. Required when UserRespType (8031)=0 (representing acceptance). Type of currency Reason for rejecting customer capital status request. N Optionally employed when the UserRespType (8031)=1(representing rejection) Describes the reason for rejecting customer capital 58 Text N status request. Optionally employed when the UserRespType (8031)=1(representing rejection) Standard trailer Y 9.3.3.20 Agreement Status Request (MsgType=UF218) It is the request of a client for the status of contracts. The agreement status request may be used to request for the status of all contracts or a specific contract. See Table 31 for the format of Agreement Status Request: 37 JR/T 0087—2012 Table 31 Agreement Status Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 55 Symbol N Contract code 207 SecurityExchange N Can be used to identify the exchange Standard trailer Y MsgType=UF218 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. 9.3.3.21 Agreement Status Response (MsgType=UF219) It is the response made to the request of a client for the status of contracts. See Table 32 for the format of Agreement Status Response: Table 32 Agreement Status Response Tag Field Name Required Comments Standard header Y 8088 RequestID Y 8031 UserRespType Y Type of response to user 8026 TotalRetNum N Number of responses returned 8027 PresentRetNum N Sequence number of the present response returned 8095 NextFlag N Whether there is any flag for subsequent data packets MsgType=UF219 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Can be used to identify the exchange. Required when 207 SecurityExchange C AllOrdStatRespType (8031)=0 (representing acceptance) 8073 ExchangeName N 55 Symbol C 65 SymbolSfx N Name of contract 8075 OneLotQty C Number of shares in one lot. Required when 38 Name of exchange Contract code. Required when AllOrdStatRespType (8031)=0 (representing acceptance) JR/T 0087—2012 Tag Field Name Required Comments UserRespType(8031)=0 (representing acceptance). 200 MaturityMonthYear N 8076 MaxLotQty C 8077 MaxHoldPosition C 8078 VarietyCode C 8079 VarietyName C 8080 MinPxAlterUnit C 8050 AgreementStatRejReas on Can be used to specify month and year of maturity Maximum of lots. Required when UserRespType(8031)=0 (representing acceptance). Maximum holding positions. Required when UserRespType(8031)=0 (representing acceptance). Variety code. Required when AllOrdStatRespType (8031)=0 (representing acceptance) Variety name. Required when UserRespType(8031)=0 (representing acceptance). Minimum unit of price change. Required when UserRespType(8031)=0 (representing acceptance). Reason N number for Optionally rejecting agreement employed status when request. the UserRespType(8031)=1(representing rejection) Describes the reason for rejecting agreement status 58 Text N request. Optionally employed when the UserRespType(8031)=1(representing rejection) Standard trailer Y 9.3.4 Market Data Messages 9.3.4.1 Notes on Market Data Messages Market data messages mainly include those which provide support to market quotations 9.3.4.2 Market Data Status Request (MsgType=UF301) It is the request of a client to obtain market data. Clients may request for the market data of either all exchanges or a certain exchange, or request for the market data of a particular contract code. See Table 33 for the format of Market Data Status Request: 39 JR/T 0087—2012 Table 33 Market Data Status Request Tag Field Name Required Comments Standard header Y 262 MDReqID Y 263 SubscriptionRequestType Y Type of subscription request 55 Symbol N Contract code 207 SecurityExchange N Can be used to identify the exchange Standard trailer Y MsgType=301 Identifier of market data request. Its uniqueness must be guaranteed within a single trading day. 9.3.4.3 Market Data Status Response (MsgType=UF302) It is the response returned by a futures company to the request of a client for market data. A futures company may voluntarily transmit market data to clients. See Table 34 for the format of Market Data Status Response: Table 34 Market Data Status Response Tag Field Name Required Standard header Y Comments MsgType=UF302 Identifier of market data request. Its uniqueness must be guaranteed within a single trading day. 262 MDReqID Y When a futures company voluntarily transmits market data to a client, the value is the identity of the sole string initialized with “NONE” appearing on the trading day iI SubscriptionRequestType Y Type of subscription request 8031 UserRespType Y Type of response to user Contact code. Required when SubscriptionRequestType(263)=0(snapshot) and 55 Symbol C UserRespType(8031)=0(representing acceptance). Required when SubscriptionRequestType(263)=1 ( snapshot + 40 JR/T 0087—2012 Tag Field Name Required Comments updates) and UserRespType(8031)=0(representing acceptance). Required when SubscriptionRequestType(263)=2 (canceled snapshot+ updates) and clients request to cancel the subscription of a single contract code. Date of trade. Required when SubscriptionRequestType(263)=0(snapshot) and UserRespType(8031)=0 (representing acceptance). 75 TradeDate C Required when SubscriptionRequestType(263)=1 ( snapshot + updates) and UserRespType(8031)=0(representing acceptance). Can be used to identify the exchange. Required when SubscriptionRequestType(263)=0(snapshot) and UserRespType(8031)=0 (representing acceptance). 207 SecurityExchange C Required when SubscriptionRequestType(263)=1 (snapshot + updates) and UserRespType(8031)=0(representing acceptance). Number of market data price entries. Required when SubscriptionRequestType(263)=0(snapshot) and UserRespType(8031)=0 (representing acceptance) 8072 NoMDPxEntries C Required when SubscriptionRequestType(263)=1 ( snapshot + updates) and UserRespType(8031)=0(representing acceptance). 8103 MDPxEntryType N Type of market data price entry 8104 MDEntryPx N Market data price entry 41 JR/T 0087—2012 Tag Field Name Required Comments Previously held positions. Required when SubscriptionRequestType (263)=0(snapshot) and UserRespType(8031)=0 8052 PreHoldPosition C (representing acceptance) Required when SubscriptionRequestType (263)=1 ( snapshot + updates) and UserRespType (8031)=0(representing acceptance). Total number of shares filled. Required when SubscriptionRequestType (263)=0(snapshot) and UserRespType (8031)=0 (representing 14 CumQty C acceptance). Required when SubscriptionRequestType (263)=1 ( snapshot + updates) and UserRespType (8031)=0(representing acceptance). Total amount traded. Required when SubscriptionRequestType (263)=0(snapshot) and UserRespType (8031)=0 (representing 381 GrossTradeAmt C acceptance). Required when SubscriptionRequestType (263)=1 ( snapshot + updates) and UserRespType (8031)=0(representing acceptance). Average price. Required when SubscriptionRequestType (263)=0(snapshot) and UserRespType (8031)=0 (representing 6 AvgPx C acceptance). Required when SubscriptionRequestType (263)=1 ( snapshot + updates) and UserRespType (8031)=0(representing acceptance). Holding positions. Required when SubscriptionRequestType (263)=0(snapshot) and 8060 HoldPosition C UserRespType (8031)=0 (representing acceptance). Required when SubscriptionRequestType (263)=1 42 JR/T 0087—2012 Tag Field Name Required Comments ( snapshot + updates) and UserRespType(8031)=0(representing acceptance). 8061 BidQty N Number of bids 8062 AskQty N Number of offers Update time. Required when SubscriptionRequestType (263)=0(snapshot) and UserRespType (8031)=0 (representing 8063 UpdateTime C acceptance). Required when SubscriptionRequestType (263)=1 ( snapshot + updates) and UserRespType (8031)=0(representing acceptance). Update millisecond. Required when SubscriptionRequestType (263)=0(snapshot) and UserRespType (8031)=0 (representing 8064 UpdateMillisec C acceptance). Required when SubscriptionRequestType (263)=1 ( snapshot + updates) and UserRespType (8031)=0(representing acceptance). Number of offer price levels (in a descending order). Required when SubscriptionRequestType (263)=0(snapshot) and UserRespType (8031)=0 8065 NoOfferPriceLevel C (representing acceptance) Required when SubscriptionRequestType (263)=1 ( snapshot + updates) and UserRespType (8031)=0(representing acceptance). 133 OfferPx N Offer price with three decimal places 135 OfferSize N Quantity of offer Number of bid price levels (in a descending 8066 NoBidPriceLevel C order). Required when SubscriptionRequestType (263)=0(snapshot) and UserRespType (8031)=0 (representing acceptance) 43 JR/T 0087—2012 Tag Field Name Required Comments Required when SubscriptionRequestType (263)=1 ( snapshot + updates) and UserRespType (8031)=0(representing acceptance). 132 BidPx N Bid price with three decimal places 134 BidSize N Quantity of bid 200 MaturityMonthYear N Can be used to specify month and year of maturity Can 205 MaturityDay N be used MaturityMonthYear in to conjunction specify a with particular maturity date Reason for rejecting market data status request. 8051 MarketDataStatRejReason N Optionally employed when the UserRespType (8031)=1(representing rejection) Describes the reason for rejecting market data 58 Text N status request. Optionally employed when the UserRespType (8031)=1(representing rejection) Standard trailer Y 9.3.5 Transaction-assisting Messages 9.3.5.1 Notes on Transaction-assisting Messages Transaction-assisting Messages are primarily those with some auxiliary functions which provide support to transactions. 9.3.5.2 Response Gap Fill Resend Request (MsgType=UF801) When a client accepts a number of responses from a futures company, if there is a possible gap in any of the responses, the client may request the futures company to fill the gap. See Table 35 Response Gap Fill Resend Request: 44 JR/T 0087—2012 Table 35 Response Gap Fill Resend Request Tag Field Name Required Comments Standard header Y 8088 RequestID Y 109 ClientID Y Capital account of client 8067 GapMessageType Y Type of gap message 8068 GapStartNum Y Starting number of gap 8069 GapEndNum Y Ending number of gap Standard trailer Y MsgType=UF801 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. 9.3.5.3 Response Gap Fill Resend Rejected (MsgType=UF802) If a response gap fill request sent by a client is correct, the response made to such request will correspond to each type of message. Otherwise, the response gap fill resend rejected will be used to respond to the client. See Table 36 Response Gap Fill Resend Rejected: 45 JR/T 0087—2012 Table 36 Response Gap Fill Resend Rejected Tag Field Name Required Standard header Y 8088 RequestID Y 109 ClientID Y 8053 58 RespGapFillResendRejRea son N Text N Standard trailer Y Comments MsgType=UF802 Identifier of user request. Its uniqueness must be guaranteed within a single trading day. Capital account of client Reason for rejecting response gap fill resend request Describe the reason for rejecting response gap fill resend request 9.3.5.4 Information Issue Request (MsgType=UF803) If necessary, a futures company may issue information to clients. When a futures company communicates information on the opening and closing of the market or the first or last transaction to clients without specifying a particular exchange, it means such information concerns all exchanges. See Table 37 for the format of Information Issue Request: Table 37 Information Issue Request Tag Field Name Required Comments Standard header Y MsgType=UF803 8013 InformationID Y Identifier of information 8097 InfomationType Y Type of information 58 Text N Contents of information issued 207 SecurityExchange N Can be used to identify the exchange Standard trailer Y 9.3.5.5 Information Issue Response (MsgType=UF804) It is the response returned by a client after the client has received the information issued by a futures company See Table 38 for the format of Information Issue Response: 46 JR/T 0087—2012 Table 38 Information Issue Response Tag 8013 Field Name Required Comments Standard header Y MsgType=UF804 InformationID Y Identifier of information Standard trailer Y 47 JR/T 0087—2012 10. Field Definitions Refer to Table 39 for the field definitions of data fields used in application-level messages and the session-level messages of Schedule E and for the format of data type definitions, see the “comments” section of data type definitions (5.1). Table 39 Field Definitions Chinese Name of Tag Field Name 1 Account 6 AvgPx 7 BeginSeqNo 8 BeginString First string String 9 BodyLength Message length Length Message length. Always unencrypted. Always second field in message 10 CheckSum Checksum String Checksum. Always unencrypted. Always last field in message 11 ClOrdID Field Trading code for client Average price Sequence number of first message Identifier of client order Data Type String Price SeqNum Comments Trading code assigned by an exchange for a client. Calculated average price of all fills on an order Message sequence number of first message in range to be resent First string. Identifies beginning of protocol version. Always unencrypted. Always first field in message. Valid values: FIX.4.2 Identifier of order assigned by a client. Its uniqueness must be guaranteed within a String valid trading day. With respect to a multi-day order, the date of trade may be embedded within the ClOrdID field. In the case of information on forced liquidation, 48 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments the value is the identity of the sole string initialized with “NONE” appearing on the trading day 12 Commission 14 CumQty Commission Total number of shares filled Amt Qty Commissions charged by a futures company Total number of shares filled or positions held Identifies the unit of currency used for price. Absence of this field is interpreted as 15 Currency Type of currency Currency the default value. It is recommended that the currency value is provided whenever possible Message sequence number of last message in range to be resent 16 EndSeqNo Sequence number of last message SeqNum If request is for the resending of a single message, BeginSeqNo = EndSeqNo If request is for the resending of all messages subsequent to BeginSeqNo, EndSeqNo = “0” Identifier of execution message assigned by a futures company. Its uniqueness must 17 ExecID Identifier of execution message String be guaranteed within a valid trading day. Mainly used to correspond to specific messages contained in an execution report. In the response to any request for the status of an order, the value is “0”. 49 JR/T 0087—2012 Tag Field Name 30 LastMkt 31 LastPx 32 LastShares 34 MsgSeqNum Chinese Name of Field Market of execution for last fill Price of last fill Quantity of shares traded on last fill Message sequence number Data Type Comments Exchange Price Qty SeqNum Price of the most recent fill on an order Quantity of shares traded on the most recent fill of an order Message sequence number. A fixed value may be set for this tag (e.g. 0) if the two parties involved in a transaction do not use the FIX session mechanism. Message type. Always unencrypted. Always third field in message. A “U” as the first character in the MsgType field indicates that the message format is privately defined between the sender and receiver. Valid values: 0=Heartbeat 35 MsgType Message type String 1=Test Request 2=Resend Request 3=Reject 4=Sequence Reset 50 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 5=Logout 8=Execution Report 9=Order Cancel Reject A=Logon D=Order – Single F=Order Cancel Request H=Order Status Request UF001=User Logon Reques UF002=User Logon Response UF003=User Logout Request UF004=User Logout Response UF005=User Change PassWd Request UF006=User Change PassWd Response UF201=Position Status Request 51 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments UF202=Position Status Response UF203=Max Operation Position Status Request UF204=Max Operation Position Status Response UF205=All Orders Status Request UF206=All Orders Status Response UF207=Settlement Result Status Request UF208=Settlement Result Status Response UF209=Settlement Result Comfirm Request UF210=Settlement Result Comfirm Response UF211=Settlement Result Comfirm Status Request UF212=Margin Rate Status Request UF213=Margin Rate Status Response UF214=Commission Rate Status Request UF215=Commission Rate Status Response 52 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments UF216=Customer Capital Status Request UF217=Customer Capital Status Response UF218=Agreement Status Request UF219=Agreement Status Response UF301=Market Data Status Request UF302=Market Data Status Response UF801=Response Gap Resend Request UF802=Response Gap Fill Resend Rejected UF803=Information Issue Request UF804=Information Issue Response 36 NewSeqNo 37 OrderID Sequence number of new message Identifier for order as assigned by a futures SeqNum String Sequence number of new message Identifier for order as assigned by a futures company. Its uniqueness must be guaranteed within a single trading day. 53 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments company 38 OrderQty Number of orders Qty Number of orders Identifies current status of order. Valid values: 0=New 1=Partially filled 2=Filled 4=Canceled 6=Pending Cancel 39 OrdStatus Status of order char 7=Stopped 8=Rejected 9=Suspended A=Pending New B=Calculated C=Expired 54 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments Order type. Valid values: 1=Market 2=Limit a=Best price b=Newest price c=Newest price up one tick d= Newest price up two ticks 40 OrdType Order type char e=Newest price up three ticks f=Lowest selling price g= Lowest selling price up one tick h=Lowest selling price up two ticks i=Lowest selling price up three ticks j=Highest buying price k=Highest buying price up one tick 55 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments l=Highest buying price up two ticks m=Highest buying price up three ticks 41 OrigClOrdID ClOrdID of the previous order String ClOrdID of the previous order when canceling an order Indicates possible retransmission of message with this sequence number. Valid values: 43 PossDupFlag Possible duplicate flag Boolean Y = Possible duplicate N = Original transmission 44 Price 45 RefSeqNum 49 SenderCompID 50 SenderSubID 56 Price Sequence number of reference message Identifier of message sender. Identifier of specific message originator Price SeqNum String String Price Sequence number of the reference message in connection with a message Assigned value used to identify firm sending message. Assigned value used to identify specific message originator (e.g. trader) JR/T 0087—2012 Tag Field Name 52 SendingTime Chinese Name of Field Data Type Time of transmission UTCTimestamp Comments Time of message transmission Side of order. Valid values: 54 Side Side of order char 1=Buy 2=Sell 55 Symbol 56 TargetCompID 57 TargetSubID 58 Text Contract code Identifier of message receiver Identifier of specific message receiver Text String String String String Assigned value used to identify receiving firm Assigned value used to identify specific individual intended to receive message Free format text string Specifies the time when the order becomes effective. Valid values: 0=Day 59 TimeInForce Time of effectiveness char 1= Good Till Cancel 2=Good during This Section 57 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 3=Immediate or Cancel 6=Good Till Date 7=Good by Call Auction 60 TransactTime Transaction time UTCTimestamp 65 SymbolSfx Contract name String 75 TradeDate Date of trade LocalMktDate Time of order or execution creation Flag of opening or closing a position. Valid values: O=Open 77 OpenClose Flag of opening or closing a position C=Close char Y=Yesterday position closed T=Today position closed Q= Liquidation forced 89 Signature Electronic signature data 90 SecureDataLen Length of encrypted Length 58 Electronic signature Length of encrypted data block JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments data 91 SecureData 93 SignatureLength 95 RawDataLength 96 RawData Encrypted data Length of electronic signature Length of unformatted raw data Unformatted raw data data Length Length data Encrypted data block Number of bytes in electronic signature field Number of bytes in raw data field Unformatted raw data, can include bitmaps, word processor documents, etc. Indicates that message may contain information that has been sent under another sequence number. Valid values: 97 PossResend Possible resend flag Boolean Y = Possible resend N = Original transmission Method of encryption. Valid values: 0=None / other 98 EncryptMethod Method of encryption int 1=PKCS(proprietary) 2=DES(ECB mode) 59 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 3=PKCS/DES(proprietary) 4=PGP/DES 5=PGP/DES-MD5 6=PEM/DES-MD5 99 StopPx Stop price Price Code to identify reason for rejecting order cancel request. Valid values: 0=Too late to cancel 1=Unknown order 2=Broker / Exchange Option 102 CxlRejReason Reason for rejecting order cancel request int 3=Order already in Pending Cancel or Pending Replace status 4=Unable to process Order Mass Cancel Request 5=OrigOrdModTime did not match last TransactTime of order 6=Duplicate ClOrdID received 7=Parked cancel not found 60 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 8=Parked cancel has been sent 9=Parked cancel has been deleted 10=Broker did not have enough number of available conditional orders 11=Investor did not have enough number of available conditional orders 12=Broker did not support conditional order 99=Other Code to identify reason for order rejection. Valid values: 0=Broker / Exchange option 1=Unknown symbol 103 OrdRejReason Reason for order rejection 2=Exchange closed int 3=Order exceeds limit 4=Too late to enter 5=Unknown Order 6=Duplicate Order (e.g. dupe ClOrdID)) 61 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 7=Duplicate of a verbally communicated order 8=Stale Order 9=Trade Along required 10=Invalid Investor ID 11=Unsupported order characteristic 12=Surveillance Option 13=Incorrect quantity 14=Incorrect allocated quantity 15=Unknown account(s) 16=Over close position 17=Insufficient money 18=Parked order not found 19=Parked order has been sent 20=Parked order has been deleted 62 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 21=Over close today position 22=Over close yesterday position 23=Broker did not have enough number of available conditional orders 24=Investor did not have enough number of available conditional orders 25=Broker did not support conditional order 99=Other 107 SecurityDesc Securities description String 108 HeartBtInt Heartbeat interval int 109 ClientID Capital account of String Descriptive information on securities. An English abbreviation used to describe securities in FIX protocol. Heartbeat interval (seconds) Capital account opened by a client with a futures company. client Minimum quantity of 110 MinQty an order to be Qty executed Maximum number of 111 MaxFloor shares within an order Maximum number of shares within an order to be shown on the exchange floor at Qty any given time. to be shown on the 63 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments exchange floor at any given time. 112 115 TestReqID OnBehalfOfCompID 116 OnBehalfOfSubID 122 OrigSendingTime Test request identifier Identifier of message originator Identifier of specific message originator Time of original transmission String Identifier included in Test Request message to be returned in resulting Heartbeat Assigned value used to identify firm originating message if the message was String delivered by a third party i.e. the third party firm identifier would be delivered in the SenderCompID field. String UTCTimestamp Assigned value used to identify specific message originator (i.e. trader) if the message was delivered by a third party Time of original message transmission recorded when transmitting orders as the result of a resend request Indicates that the Sequence Reset message is replacing messages which will not be resent. Valid values: 123 GapFillFlag Gap fill flag Boolean Y= Sequence Reset -Gap Fill message, MsgSeqNum field valid N=Sequence Reset-Reset Message, ignore MsgSeqNum 126 64 ExpireTime Time of order expiration UTCTimestamp Conditionally required if TimeInForce = GTD and ExpireDate is not specified. JR/T 0087—2012 Tag 128 Field Name DeliverToCompID Chinese Name of Field Identifier of message recipient Identifier of specific Data Type Assigned value used to identify the firm targeted to receive the message if the String DeliverToSubID 132 BidPx 133 OfferPx 134 BidSize Quantity of bid Qty 135 OfferSize Quantity of offer Qty 136 NoMiscFees 137 MiscFeeAmt 139 MiscFeeType Bid price with three decimal places Offer price with three decimal places Number of types of miscellaneous fees Amount of miscellaneous fees Type of miscellaneous message is delivered by a third party i.e. the third party firm identifier would be delivered in the TargetCompID field 129 message recipient Comments String Assigned value used to identify specific message recipient if the message is delivered by a third party. Price Price NumInGroup Amt String Number of repeating groups of miscellaneous fees Amount of miscellaneous fees Indicates type of miscellaneous fee. Valid values: 65 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type fee Comments 1=Regulatory (e.g. SEC) 2=Tax 3=Local Commission 4=Exchange Fees 5=Stamp 6=Levy 7=Other 8=Markup 9=Consumption Tax 10=Per transaction 11=Conversion 12=Agent 13=TransferFee 140 66 PreClosePx Previous closing price Price Previous closing price JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments Indicates whether the both sides of the session should reset sequence numbers. Valid 141 ResetSeqNumFlag Sequence number reset flag values: Boolean Y=Yes, reset sequence numbers N=No Assigned value used to identify specific message sender’s location Identifier of specific 142 SenderLocationID message sender's String location Assigned value used to identify specific message receiver’s location Identifier of specific 143 TargetLocationID message receiver's String location 144 OnBehalfOfLocation ID Assigned value used to identify specific message originator’s location if the message Identifier of specific message originator's String location Assigned value used to identify specific message recipient’s location if the message Identifier of specific 145 DeliverToLocationID was delivered by a third party message recipient's String was delivered by a third party location 150 ExecType Type of execution char Type of execution report, used in conjunction with OrdStatus. Valid values: 67 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 0=New 4=Canceled 6=Pending Cancel 7=Stopped 8=Rejected 9=Suspended A=Pending New B=Calculated C=Expired F=Trade (partial fill or fill)) I=Order Status 151 LeavesQty 167 SecurityType 68 Remaining quantity of an existing order Type of securities Qty String Amount of shares open (matchable) for further execution. Indicates type of securities. FUT=futures JR/T 0087—2012 Chinese Name of Tag Field Name 168 EffectiveTime 200 MaturityMonthYear 205 MaturityDay Date of maturity day-of-month 207 SecurityExchange Exchange code Exchange Field Time during which an order remains in effect Month and year of maturity Data Type Comments UTCTimestamp month-year Format: YYYYMM (e.g.201010) Used in conjunction with Maturity Month Year. Valid values: 1-31 ISO10383Standard in which CCFX=China Financial Futures Exchange Type of subscription request. Valid values: 263 SubscriptionRequest Type of subscription Type request 0=Snapshot, subscribe only for the up-to-date market data char 1=Snapshot + Updates, subscribe for ongoing market data 2=Disable previous Snapshot + Update Request , unsubscribe Type of message encoding (non-ASCII characters) used in a message’s “Encoded” 347 MessageEncoding Type of message encoding fields. Valid values: String ISO-2022-CN UTF-8 (for using Unicode) 69 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments GBK (the Chinese Internal Code Specification applicable to the Mainland of China and Singapore) GB2312(Chinese character encoding of the People's Republic of China used for information exchange ) 354 EncodedTextLen Length of encoded text Length Number of bytes in the Encoded Text field Encoded representation of the Text field in the encoded format specified via the 355 EncodedText Encoded text data Message Encoding field. If used, the ASCII representation must also be specified in the Text field 369 370 LastMsgSeqNumPro cessed last message Time of initial Sending Time transmission RefTagID 372 RefMsgType The last MsgSeqNum value received and processed. Can be specified on every SeqNum message sent. Useful for detecting a backlog with the counterparty. processed On Behalf Of 371 70 Sequence number of Number of relevant tag Type of relevant UTCTimestamp int String Indicates the tag being referenced Type of the message being referenced JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments message Code to identify reason for a session-level Reject message. Valid values: 0=Invalid tag number 1=Required tag missing 2=Tag not defined for this message type 3=Undefined Tag number 4=Tag specified without a value Reason for a 373 SessionRejectReason session-level Reject message int 5=Value is incorrect (out of range) for this tag 6=Incorrect data format for value 7=Decryption problem 8=Signature problem 9=CompID problem 10=SendingTime accuracy problem 11=Invalid MsgType 71 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 12=XML Validation error 13=Repeating within a tag(not a repeating group) 1 =Error in the sequence of fields with a sequence number 15=Error in the sequence of repeating group fields 16= Error in the number of repetition for the repeating group 17=Appearance of the field delimiter <SOH> in a data field other than that of data Code to identify reason for a voluntary execution given in the execution report voluntarily sent by a service provider. Valid values: 0=GT Corporate action 378 ExecRestatementRea son 1=GT renewal / restatement (no corporate action) Restatement reason int 2=Verbal change 3=Repricing of order 4=Broker option 5=Partial decline of OrderQty (e.g. exchange-initiated partial cancel)) 72 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 6=Cancel on Trading Halt 7=Cancel on System Failure 8=Market (Exchange) Option 101=Repurchase Settlement 381 GrossTradeAmt 383 MaxMessageSize 384 NoMsgTypes Total amount traded Maximum length of message Number of message types Amt Length NumInGroup Total amount traded: CumQty * AvgPx (expressed in units of currency) Maximum number of bytes in a single message Number of message types in a repeating group Specifies the direction of the message. Valid values: 385 MsgDirection Direction of message char S=Send R=Receive Code to represent the price type. Valid values: 423 PriceType Price type int 1= Percentage 2=Per unit (i.e. per share or contract) 73 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 3=Fixed Amount (absolute value) 4=Discount – percentage points below par 5=Premium – percentage points over par 6=Basis points relative to benchmark 7=TED price 8=TED yield 432 ExpireDate Date of order expiration LocalMktDate Type of request that a 434 CxlRejResponseTo Cancel Reject is in Conditionally required if TimeInForce = GTD and ExpireTime is not specified. Identifies the type of request that a Cancel Reject is in response to. Valid values: char 1=Order Cancel Request response to 8001 LogonPasswd Transaction password String Status of client logon. Valid values: 8002 LogonStatus Status of logon char 0=Logon 1=Logout 74 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 9=Other 8003 AccountName Account name String Level of risk posed by the account. Valid values: 0=Normal 1=Additional margin 8004 RiskLevel Level of risk char 2=Forced liquidation 3=Warning 4= Margin call liquidation 5=Abnormal 8005 AdditionalMargin Additional margin Amt Type of client security. Valid values: 0= Safe client 8006 ClientSecuType Type of client security char 1=Low-risk client 2=Risky client 75 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 3=Frozen client 4=Client deserving attention 8007 LastLogonIP IP address for the last logon String Date and time when 8008 LastLogonTime the last logon was IP address which was used by a client to make the last logon Date and time when a client made the last logon UTCTimestamp made Flag of speculation or hedge. Valid values: 8009 HedgeFlag Flag of speculation or hedge 0=Speculation char 1=Hedge 2=Arbitrage Trigger condition for order. Valid values: 1=Immediate 8010 TouchCondition Trigger condition char 2=Stop loss 3=Stop profit 76 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 4=Parked order 5=Conditional price > newest price 6= Conditional price≥ newest price 7=Conditional price < newest price 8=Conditional price ≤ newest price 9=Conditional price > lowest selling price A=Conditional price ≥ lowest selling price B=Conditional price < lowest selling price C=Conditional price ≤ lowest selling price D=Conditional price > highest buying price E=Conditional price ≥ highest buying price F=Conditional price < highest buying price H=Conditional price ≤ highest buying price 8011 Riskratio Risk ratio of client float Risk ratio of client= margin occupied/ client equity 77 JR/T 0087—2012 Chinese Name of Tag Field Name 8012 LatestPx 8013 InformationID 8014 TotalExMarginAmt 8015 TdPosition Today positions Qty 8016 YDPosition Yesterday positions Qty 8017 FrozenPosition 8018 FrozenAmt 8019 PositionDate 8020 FrozenCommision 8021 PositionProfit 78 Field The latest price Identifier of information Total margin of exchange Number of positions frozen Amount frozen Date on which a positions was held Commission for freezing the position Profit or loss from the positions Data Type Price String Amt Qty Amt LocalMktDate Amt Amt Comments JR/T 0087—2012 Tag Field Name 8022 PositionPrice 8023 MaxOpenPosition 8024 MaxClosePosition 8025 MaxCloseTdPosition 8026 TotalRetNum Chinese Name of Field Average price of the positions Maximum number of positions opened Maximum number of positions closed Maximum number of today positions closed Number of responses returned Data Type Comments Amt Qty Qty Qty int Sequence number of 8027 PresentRetNum the present response int returned 8028 SettlementDate 8029 SettlementConfirm Date of settlement results Confirmation of settlement results LocalMktDate char Valid values: 79 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 0=Confirm settlement results Valid values: 8030 SettlementConfirmR Results of settlement esult result confirmation char 0=Settlement results confirmed 1=Settlement results not confirmed Type of response made to the request of a client. Valid values: Type of response 8031 UserRespType made to the request of int a client 0=Acceptance 1=Rejection Reason for rejecting logon request. Valid values: 0= Repeating RequestID 1= Invalid ClientID 8032 LogonRejReason Reason for rejecting logon request int 2=Password error 3=Repeating logon request 4= Lower version of client computer 99=Other 80 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments Reason for rejecting logout request. Valid values: 0= Repeating RequestID 8033 LogoutRejReason Reason for rejecting logout request int 1= Invalid ClientID 2=No logon 99=Other Reason for rejecting password change request. Valid values: 0= Repeating RequestID 8034 ChangePWRejReaso n 1= Invalid ClientID Reason for rejecting password change int request 2=Wrong PassWdType 3=OldPassWd error 4=Unqualified NewPassWd 99=Other 8035 PosStatReqType Type of position status request Type of position status request. Valid values: int 0=Current position status request 81 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 1=Previous position status request Reason for rejecting position status request. Valid values: 0= Repeating RequestID 1= Invalid ClientID 2=Wrong RequestType 8036 PosStatRejReason Reason for rejecting position status request int 3=Wrong Account 4=Wrong Symbol 5=Wrong SecurityExchange 6=Wrong date range 99=Other Reason for rejecting max operation position status request. Valid values: 8037 MaxOpPosStatRejRe ason Reason for rejecting max operation position status request 0= Repeating RequestID int 1= Invalid ClientID 2=Wrong Account 82 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 3=Wrong Symbol 4=Wrong SecurityExchange 5=Positions opened without specifying the price 99=Other Type of all orders status request. Valid values: 8038 AllOrdStatReqType Type of all orders status request int 0=Type of all current orders status request 1=Type of all previous orders status request Reason for rejecting all orders status request. Valid values: 0= Repeating RequestID 1= Invalid ClientID Reason for rejecting 8039 AllOrdStatRejReason all orders status request int 2=Wrong RequestType 3=Wrong SecurityExchange 4=Wrong date range 99=Other 83 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments Reason for rejecting settlement result status request. Valid values: 0= Repeating RequestID 8040 SettlementResultStat RejReason Reason for rejecting settlement result status 1= Invalid ClientID int 2=Wrong SettlementDate request 3=Wrong SecurityExchange 99=Other Reason for rejecting settlement result confirm request. Valid values: 0= Repeating RequestID 8041 SettlementResultCon firmRejReason 1= Invalid ClientID Reason for rejecting settlement result int confirm request 2=Wrong SettlementDate 3=Wrong SettlementConfirm 4=Wrong SecurityExchange 99=Other 8042 MarginRateStatRejR 84 Reason for rejecting margin rate status int Reason for rejecting margin rate status request. Valid values: JR/T 0087—2012 Tag Field Name eason Chinese Name of Field Data Type request Comments 0= Repeating RequestID 1= Invalid ClientID 2=Wrong Account 3=Wrong VarietyCode 4=Wrong Symbol 5=Wrong MaturityMonthYear 6=Wrong SecurityExchange 99=Other Reason for rejecting commission rate status request. Valid values: 0= Repeating RequestID 8043 CommissionRateStat RejReason Reason for rejecting commission rate status request 1= Invalid ClientID int 2=Wrong VarietyCode 3=Wrong Symbol 4=Wrong MaturityMonthYear 85 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 5=Wrong SecurityExchange 99=Other Reason for rejecting customer capital status request. Valid values: 8044 CustomerCapitalStat RejReason 0= Repeating RequestID Reason for rejecting customer capital status int request 1= Invalid ClientID 2=Wrong Currency 99=Other 8045 BuyMarginAmt Margin buying Amt 8046 SellMarginAmt Margin selling Amt Additional margin Amt 8047 SupplementalMargin Amt 8048 OccupyMarginAmt Margin occupied Amt 8049 TotalMarginAmt Total margin Amt 8050 AgreementStatRejRe Reason for rejecting agreement status 86 int Reason for rejecting agreement status request. Valid values: JR/T 0087—2012 Tag Field Name ason Chinese Name of Field Data Type request Comments 0= Repeating RequestID 1=Wrong Symbol 2=Wrong SecurityExchange 99=Other Reason for rejecting password change request. Valid values: 0= Repeating MDReqID 8051 MarketDataStatRejR eason Reason for rejecting market data status 1=SubscriptionRequestType error int 2=Symbol error request 3=SecurityExchange error 99=Other 8052 8053 PreHoldPosition RespGapFillResendR ejReason Previously held positions Qty Reason for rejecting response gap fill Reason for rejecting response gap fill resend request. Valid values: int 0= Repeating RequestID resend request 87 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 1= Invalid ClientID 2= Wrong GapMessageType 3=Wrong gap number 99=Other 8054 NoMarginEntries Number of margin entries int Type of margin. Valid values: 0=Bull speculation 1=Bear speculation 2=Long hedge 8055 MarginType Type of margin int 3=Short hedge 4=Long arbitrage 5=Short arbitrage 99=Other 88 JR/T 0087—2012 Chinese Name of Tag Field Name 8056 MarginRate Margin rate float 8057 MaginAmt Margin amount Amt NoCommissionEntrie Number of s commission entries 8058 Field Data Type Comments int Type of margin. Valid values: 0=Open 8059 CommissionType Type of commission int 1=Close 2= Today positions closed 99=Other 8060 HoldPosition Holding positions Qty 8061 BidQty Number of bids Qty 8062 AskQty Number of offers Qty 8063 UpdateTime Update time LocalMktDate 8064 UpdateMillisec Update millisecond String 89 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments Number of offer price 8065 NoOfferPriceLevel levels (in a NumInGroup descending order) Number of bid price 8066 NoBidPriceLevel levels (in a NumInGroup descending order) Valid values: 0=Response gap with respect to current/previous position status request 1=Response gap with respect to all current/previous orders position status request 8067 GapMessageType Type of gap message char 2=Response gap with respect to settlement result status request 3=Response gap with respect to commission rate status request 4=Response gap with respect to agreement status request 8068 GapStartNum 8069 GapEndNum 90 Starting number of gap Ending number of gap SeqNum SeqNum JR/T 0087—2012 Chinese Name of Tag Field Name 8070 CommissionRate Commission rate float 8071 CommssionAmt Commission Amt 8072 NoMDPxEntries 8073 ExchangeName Name of exchange String 8074 TotalFrozenAmt Total frozen amount Amt 8075 OneLotQty 8076 MaxLotQty 8077 MaxHoldPosition 8078 VarietyCode Variety code String 8079 VarietyName Variety name String 8080 MinPxAlterUnit Minimum unit of Amt Field Number of market data price entries Number of shares in one lot Maximum number of lots Maximum holding positions Data Type Comments int Qty Qty Qty 91 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments price change Amount settled 8081 YesterdayStlAmt 8082 BuyFrozenAmt Buy frozen amount Amt 8083 SellFrozenAmt Sell frozen amount Amt 8084 UsableAmt Usable capital Amt 8085 FloatProfit Floating profit or loss Amt 8086 CloseProfit yesterday Profit or loss from the closing of positions Amt Amt Outgoing and 8087 DayFolatProfit incoming payments on Amt the day If a futures company voluntarily transmits messages to a client, the value is the Identifier of user 8088 RequestID request. Its uniqueness must be guaranteed within a single trading 92 String identity of the sole string initialized with “NONE” appearing on the trading day The RequestID is issued by a requester and the responder shall, in giving a response, align such RequestID with the corresponding requester. JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments day. Valid values: 0=Trading password 8089 PassWdType Type of password char 1=Capital password 2=Order password 8090 OldPassWd Old password of user String 8091 NewPassWd New password of user String 8092 SettleFee Settlement fees Amt 8093 DeclarationID 8094 TradeID Identifier of declaration Identifier of trade String String Identifier of declaration assigned by an exchange. Identifier of trade assigned by an exchange. Whether there is any 8095 NextFlag flag for subsequent Boolean data packets 8096 MacNetInfo Computer network String Computer network information. The format is “information number: value| 93 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments information number: value…” and the valid values of the information number: information 0=IP address 1=MAC address 2= Motherboard number 3=CPU number 4= Hard disk number Type of information issued by a futures company. Valid values: 0=General notice 1=Opening 8097 InfomationType Type of information char 2=Closing 3=First transaction 4=Last transaction 5=Suspension of trading on an exchange (used at the centralized cross-matching phase after the call auction or used for some special situation) 94 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 6=Trading tips 7=Market information 8=Advisory information Capital available for 8098 FetchAmt 8099 DayPaymentAmt 8100 DayIncomeAmt 8101 BeginDate Beginning date LocalMktDate 8102 EndDate Ending date LocalMktDate withdrawal Outgoing payments on the day Incoming payments on the day Amt Amt Amt Type of market data price. Valid values: 8103 MDPxEntryType Type of market data price entry 0=Newest price int 1=Yesterday's settlement price 2=Yesterday's closing price 95 JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments 3=Opening price 4=Highest price 5=Lowest price 6=Today's closing price 7=Settlement price 8=Limit-up price 9=Limit-down price 99=Other 8104 MDEntryPx 8105 ClientSoftName 8106 ClientSoftVersion 8500 OrderEntryTime 96 Market data price entry Name of client software Version of client software Time at which an Price String String UTCTimestamp JR/T 0087—2012 Tag Field Name Chinese Name of Field Data Type Comments order was entered 97 JR/T 0087—2012 11. Format of Settlement Data Files A settlement data sender transmits each day in the following way to fund management companies and custodian banks respectively the customer fund file, the customer fund change file, the trading data file, the holding data file, the liquid details file, the holding details file and the delivering details file: homogeneous data concerning all fund products under a fund management company or custodian bank is merged into one file and an empty file shall be transmitted in the absence of such data. Therefore, a settlement data sender each day needs to transmit 7 text files to fund management companies or custodian banks. These files are respectively the customer fund file, the customer fund change file, the trading data file, the holding data file, the liquid details file, the holding details file and the delivering details file. The naming rules for these files are as follows: Uniform identifier of sender+ name of file type + date + organization code of recipient (fund management company or custodian bank).text For the identifier of sender (number (4), hereinafter represented with XXXX), the encoding method of China Futures Margin Monitoring Center, Co., Ltd is adopted and, for the fund management company or custodian bank, the organization code (char (40), hereinafter represented with Y) is used. 11.1 Customer Fund File The name of a customer fund file a sender (with the uniform identifier XXXX) transmits to a fund management company or custodian bank (organization code certificate Y): XXXXcusfund+date_Y.txt For example, the name of a customer fund file which is transmitted on October 8, 2005 by a futures company with the identifier of 0001 to a fund management company with the organization code of710685288 is 0001cusfund20051008_710685288.txt. A sender each day needs to transmit to a fund management company or custodian bank a customer fund file with the corresponding name. A corresponding entry is entered for each CliendID. For the field and data type of each entry, see Table 40: Table 40 Customer Fund File Field Data type Blank or not Date date N Internal ClientID char(18) N Total Equity number(14,2) N 98 Comments Format: yyyy-mm-dd Client equity on the day JR/T 0087—2012 Field Data type Blank or not Comments Usable capital calculated based on the mark-to-market accounting method. In addition, under the transaction-by-transaction offsetting approach, the amount of UsableAmt number(14,2) N floating profit or loss shall, after being included in the usable capital, equal to the usable capital calculated based mark-to-market on the accounting method. Additional Margin Required RiskLevel number(14,2) N number(14,2) N number(14,2) N number(14,2) Y number(14,2) N number(14,2) Y The percent sign % is omitted. For example, 46 represents 46% YesterdayStlAmt (based on mark to market) YesterdayStlAmt (based on transaction-by-transact ion offsetting) TodayStlAmt (based on mark to market) TodayStlAmt (based on transaction-by-transact ion offsetting) Today total profit or loss based on the mark to market accounting TodayTotalProfit (based on mark to market) number(14,2) N method. The calculation formula: today position profit or loss+ profit or loss on closed positions+ profit or loss from delivery and 99 JR/T 0087—2012 Field Data type Blank or not Comments matching TodayTotalProfit (based on transaction-by-transact Profit or loss on closed positions number(14,2) Y ion offsetting) transaction-by-transaction offsetting approach Floating profit or loss calculated FloatProfit (based on transaction-by-transact based on the number(14,2) Y ion offsetting) based on the transaction-by-transaction offsetting approach Pledged capital provided by a PledgedAmt number(14,2) N futures company on the statement of account for a client Non-settlement char N char(10) N char(10) N Member or Not Uniform Identifier of Settlement Member Uniform Identifier of Exchange Member None Encoding method of China Futures Margin Monitoring Center Encoding method of China Futures Margin Monitoring Center For example: 2004-12-15@[email protected]@[email protected]@[email protected]@510000.00@5000 [email protected]@[email protected]@[email protected]@N@0001@0001 11.2 Customer Fund Change File The name of a customer fund change file a sender (with the uniform identifier XXXX) transmits to a fund management company or custodian bank (organization code certificate Y): XXXXfundchg+date_Y.txt For example, the name of a customer fund change file which is transmitted on October 8, 2005 by a futures company with the identifier of 0001 to a fund management company with the organization code of710685288 is 0001fundchg20051008_710685288.txt. A sender each day needs to transmit to a fund management company or custodian bank a customer fund change file with the corresponding name. A fund management company enters an entry for each outgoing or incoming payment. For the field and data type of each entry, see 100 JR/T 0087—2012 Table 41: Table 41 Customer Fund Change File Contents Data type Blank or not Comments Date date N Format: yyyy-mm-dd Internal ClientID char(18) N Outgoing payments are Payment and IncomeAmt number(14,2) N recorded as negative. Incoming payments are recorded as positive. Uniform Identifier Assigned by Bank to Client Futures For char(2) Y Settlement Account Settlement Account and incoming payments not transferred by banks, such field can be empty. For Client Futures outgoing char(22) Y outgoing and incoming payments not transferred by banks, such field can be empty. For Uniform Identifier Assigned by Bank to char(2) Y Firm Margin Account and incoming payments not transferred by banks, such field can be empty. For Firm Margin Account outgoing char(22) Y outgoing and incoming payments not transferred by banks, such field can be empty. Comments Non-settlement member or not Uniform Identifier of Settlement Member Uniform Identifier of char(40) Y char N None Encoding char(10) N method of China Futures Margin Monitoring Center char(10) N Encoding method of 101 JR/T 0087—2012 Exchange Member China Futures Margin Monitoring Center For example: 2005-12-15@[email protected]@01@1234567890123@02@8888888888888@@N@0001 @0001 2005-12-15@[email protected]@05@9999999999999@03@777777777777@@N@0001 @0001 11.3 Trading Data File The name of a trading data file a sender (with the uniform identifier XXXX) transmits to a fund management company or custodian bank (organization code certificate Y): XXXXtrddata+date_Y.txt For example, the name of a customer fund file which is transmitted on October 8, 2005 by a futures company with the identifier of 0001 to a fund management company with the organization code of710685288 is 0001trddata20051008_710685288.txt. A sender each day needs to transmit to a fund management company or custodian bank a trading data file with the corresponding name. For the field and data type of each entry, see Table 42: Table 42 Trading Data File Field Data type Blank or not Date date N Internal ClientID char(18) N Deal Serial Number char(8) N Contract Variety char(6) N Trade Flag char N Buy-B. Sell-S Trading Volume number(10) N Unit: lot Trading Price number(14,2) N Trading Turnover number(14,2) N Deal Time time N 102 Comments Format: yyyy-mm-dd Deal Serial Number issued by an exchange Format: hh: mm :ss JR/T 0087—2012 Field Data type Blank or not OpenClose char N HedgeFlag char N number(14,2) N CloseProfit (based on mark to market) Comments Opened position-O. Closed position-L Speculation-S. Hedge-H. Arbitrage-A. In the case of opening a position, such field is 0. Profit or loss on closed positions based on the CloseProfit (based on transaction-by-transacti number(14,2) Y on offsetting) transaction-by-transaction offsetting approach. In the case of opening a position, the field is 0. Commission number(14,2) N Trading Account char(10) N code of an exchange to which the trade corresponds Dalian Commodity Exchange-D. Zhengzhou Uniform Identifier of Exchange Commodity Exchange-Z. char N Shanghai Futures Exchange-S. China Financial Futures Exchange -J. Non-settlement member or not char N None Identifier of declaration in DeclarationID char(12) N the contract note of an exchange Seat Number Uniform Identifier of Settlement Member char(15) N Encoding method of China char(10) N Futures Margin Monitoring Center 103 JR/T 0087—2012 Field Data type Blank or not Comments Encoding method of China Uniform Identifier of char(10) Exchange Member N Futures Margin Monitoring Center For example: 2005-01-21@000001@00038331@WT501@B@[email protected]@1560000.00@09:30:55@O@ [email protected]@[email protected]@00171401@Z@N@000001000001@200801@0001@0001 11.4 Holding Data File The name of a holding data file a sender (with the uniform identifier XXXX) transmits to a fund management company or custodian bank (organization code certificate Y): XXXXholddata+date_Y.txt For example, the name of a holding data file which is transmitted on October 8, 2005 by a futures company with the identifier of 0001 to a fund management company with the organization code of710685288 is 0001holddata20051008_710685288.txt. A sender each day needs to transmit to a fund management company or custodian bank a holding data file with the corresponding name. For the field and data type of each entry, see Table 43: Table 43 Holding Data File Field Data type Blank or not Date date N Internal ClientID char(18) N Contract Variety char(6) N Trade Flag char N HedgeFlag char N HoldPosition number(10) N Margin number(14,2) N (based on mark to number(14,2) N PositionProfit market) 104 Comments Format: yyyy-mm-dd Speculation-S. Hedge-H. Arbitrage-A. Unit: lot JR/T 0087—2012 Field Data type Blank or not PositionProfit Comments Position profit or loss based on the (based on transaction-by-transaction transaction-by-tra number(14,2) Y offsetting approach nsaction offsetting) PositionPrice Yesterday Settlement Price Today Settlement Price Account number(14,2) N number(14,2) N number(14,2) N char(10) N Trading code of an exchange to which the trade corresponds Dalian Commodity Exchange-D. Zhengzhou Uniform Identifier char of Exchange N Commodity Exchange-Z. Shanghai Exchange-S. China Futures Financial Futures Exchange -J. Non-settlement char member or not N Uniform Identifier of Settlement None Encoding method of China Futures char(10) N Margin Monitoring Center Member Uniform Identifier of Exchange Encoding method of China Futures char(10) N Margin Monitoring Center Member For example: 2005-01-25@000008@WT502@B@S@[email protected]@[email protected]@11200.00@1200 [email protected]@00171401@Z@N@0001@0001 2005-01-25@000009@WT505@S@H@[email protected]@[email protected]@10200.00@1 [email protected]@00579246@Z@N@0001@0001 11.5 Liquid Details File 105 JR/T 0087—2012 The name of a liquid details file a sender (with the uniform identifier XXXX) transmits to a fund management company or custodian bank (organization code certificate Y): XXXXliquiddetails +date_Y.txt For example, the name of a liquid details file which is transmitted on October 8, 2005 by a futures company with the identifier of 0001 to a fund management company with the organization code of710685288 is 0001holddata20051008_710685288.txt. A sender each day needs to transmit to a fund management company or custodian bank a liquid details file with the corresponding name. For the field and data type of each entry, see Table 44: Table 44 Liquid Details File Field Data type Blank or not Date date N Internal ClientID char(18) N Contract Variety char(6) N Deal Serial Number char(8) N Trade Flag char N Trading Price number(14,2) N OpenPrice n N Trading Volume number(10) N Yesterday Settlement Price number(14,2) N Today Settlement Price number(14,2) N number(14,2) N CloseProfit (based on mark to market) offsetting) 106 Format: yyyy-mm-dd Deal serial number issued by an exchange Buy-B. Sell-S Trading price when closing a position Trading price when opening a position Number of positions closed. Unit: lot Profit CloseProfit (based on transaction-by-transaction Comments number(14,2) Y or positions loss based on closed on transaction-by-transaction offsetting approach the JR/T 0087—2012 Field Original Deal Serial Number Account Uniform Identifier of Settlement Member Uniform Identifier of Exchange Member Data type Blank or not Comments Deal serial number issued by char(8) Y an exchange when a client opened a position. char(10) N Encoding method of China char(10) N Futures Margin Monitoring Center Encoding method of China char(10) N Futures Margin Monitoring Center For example: 2005-01-26@2565@m0505@00013914@[email protected]@2147.00@[email protected]@2145.00@60. [email protected]@00002140@20000003@0001@0001 11.6 Holding Details File The name of a holding details file a sender (with the uniform identifier XXXX) transmits to a fund management company or custodian bank (organization code certificate Y): XXXXholddetails+date_Y.txt For example, the name of a holding details file which is transmitted on October 8, 2005 by a futures company with the identifier of 0001 to a fund management company with the organization code of710685288 is 0001holddetails20051008_710685288.txt. A sender each day needs to transmit to a fund management company or custodian bank a holding details file with the corresponding name. For the field and data type of each entry, see Table 45: 107 JR/T 0087—2012 Table 45 Holding Details File Field Data type Blank or not Date date N Internal ClientID char(18) N Contract Variety char(6) N Deal Serial Number char(8) N Trade Flag char N HedgeFlag char N HoldPosition number(10) N OpenPrice number(14,2) N Yesterday Settlement Price number(14,2) N Today Settlement Price number(14,2) N number(14,2) N PositionProfit (based on mark to market) PositionProfit (based on transaction-by-transaction Uniform Identifier of Settlement Member Uniform Identifier of Exchange Member 108 Format: yyyy-mm-dd Deal serial number issued by an exchange Buy-B. Sell-S Speculation-S. Hedge-H. Arbitrage-A. Unit: lot Position profit or loss based on number(14,2) Y offsetting) Account Comments the transaction-by-transaction offsetting approach char(10) N Trading code of an exchange to which the trade corresponds Encoding method of China char(10) N Futures Margin Monitoring Center Encoding method of China char(10) N Futures Margin Monitoring Center JR/T 0087—2012 For example: 2005-01-26@2565@m0505@00005968@B@S@[email protected]@[email protected]@50.00@-1 50.00 @00171401@0001@0001 11.7 Delivering Details File The name of a delivering details file a sender (with the uniform identifier XXXX) transmits to a fund management company or custodian bank (organization code certificate Y): XXXXdelivdetails+date_Y.txt For example, the name of a delivering details file which is transmitted on October 8, 2005 by a futures company with the identifier of 0001 to a fund management company with the organization code of710685288 is 0001delivdetails20051008_710685288.txt. A sender each day needs to transmit to a fund management company or custodian bank a delivering details file with the corresponding name. For the field and data type of each entry, see Table 46: Table 46 Delivering Details File Field Data type Blank or not Date date N Internal ClientID char(18) N Contract Variety char(6) N Trade Flag char N Comments Date of number(14,2) N Format: yyyy-mm-dd Number of contract to be delivered Buy-B. Sell-S Average AvgPx delivery. trading price by client, variety and trade when opening a position Trading Turnover number(14,2) N Final Settlement Price number(14,2) N Delivery Payment number(14,2) N number(10) N number(14,2) N Number of Lots Delivered SettleFee Total turnover Unit: lot 109 JR/T 0087—2012 Field Data type Blank or not number(14,2) N char(10) N Comments Profit or Loss from Delivery and Matching Account Uniform Identifier of Settlement Member Uniform Identifier of Exchange Member Encoding method of China char(10) N Futures Margin Monitoring Center Encoding method of China char(10) N Futures Margin Monitoring Center For example: 2006-04-19@00100008@cu0604@[email protected]@[email protected]@781000.00@2@10 [email protected]@20000003@0001@0001 110 JR/T 0087—2012 Schedule A (Informative Schedule) FIX Session Gap Fill Options In the middle of a FIX session, after detecting the missing of a message (or discovering a message gap), the acceptor has the following options to deal with the gap: 1. after discovering the missing of a message, the acceptor may request for the transmission of the missed message and all messages subsequent to such message from the initiator, see Graph A.1; and 2. the acceptor may, after detecting the missing of a message, maintain a list of all messages received and request for the missed message from the initiator, see Graph A.2: System of Fund Management Company System of Futures Company Message 1 Message 1 Message 2 Message 2 Message 3 Missed message 3 Detected the gap Message 4 Message 5 Message 4 Ignored Message 5 Ignored Resend request (from message 3) Received a resend request Message 3 Message 3 Message 4 Message 4 Message 5 Message 5 Graph A.1 Gap Fill Option 1 111 JR/T 0087—2012 System of Fund Management Company System of Futures Company Message 1 Message 1 Message 2 Message 2 Message 3 Missed message 3 Detected the gap Message 4 Message 4 Message 5 Maintained Missed message 5 Resend request (from Message 3) Received a resend request Message 3 Message 3 Message 6 Message 4 Detected the gap Received a resend request Resend request (from Message 5) Graph A.2 Gap Fill Option 2 112 Message 6 Maintained JR/T 0087—2012 Schedule B (Informative Schedule) FIX Session Connection Scenarios B.1 Logon for FIX Session Graph B.1shows a scenario for connection logon in which the initiator sends a logon message to the acceptor. As the first message is invalid, the acceptor rejects the logon request by sending a logout message. The second message is a valid one and the acceptor responds with a confirming logon message. System of Fund Management Company System of Futures Company TCP/IP connection Established connection Sent logon message 1 Invalid logon message Sent logout message1 Received logout message 1 Text=invalid logon Received logon message 2 Sent logon message 2 HeartBtInt=XXX ResetSeqNumFlag=N Receive logon message 2 Sent logon message 2 Graph B.1 Logon 113 JR/T 0087—2012 B.2 Logout Graph B.2 shows a scenario for logout session in which, before actually closing the session, the logout imitator waits for the acceptor to respond with a confirming logout message. System of Fund Management Company System of Futures Company Sent a logout message 100 Received a logout message 100 Received a logout message 200 Sent a logout message 200 Shut down the connection Shut down the connection Graph B.2 Logout B.3 Resend Graph B.3shows a scenario for the resending of message in the case of termination of the session. Under the scenario, the TCP/IP link is unexpectedly disconnected at any time after the initiator sends some application messages to the acceptor. Thereafter, the initiator does not detect the telecommunication failure until sending message number 104 and waits for reestablishing the communication link. After the communication link is reestablished, the initiator sends logon message number 105 to reestablish the connection. After the connection is made, the acceptor sends a resend request message to the initiator, asking for the retransmission of message number 103 and messages subsequent to it. The initiator responds to such request and uses a sequence reset message to mark the place of message number 105. 114 JR/T 0087—2012 System of Fund Management Company System of Futures Company Sent message 100 Received message 100 Sent message 101 Received message 101 Sent message 102 Received message 102 Sent logon message 105 Received logon message 105 HeartBtInt=XXX ResetSeqNumFlag Received logon message 30 Received logon message 30 Sent resend request 31 BeginSeqNo=103 Received resend request 31 EndSeqNo=0 Sent message 103 Received message 103 Sent message 104 Received message 104 Received Sequence Sent Sequence Reset-Gap Fill 105 Reset-Gap Fill105 MsgType=4 GapFillFlag=Y NewSeqNo=106 Graph B.3 Resend B.4 Resend Request Graph B.4shows a resend scenario in which the resend message contains a session message. Under the scenario, after sending some application and heartbeat messages to the acceptor, the initiator receives a resend request number 30(the sequence number of a message the acceptor currently sends). Consequently, the initiator resends the application messages to the acceptor and the heartbeat messages are marked or skipped by a sequence reset message, maintaining 115 JR/T 0087—2012 the consistency and continuity of the message sequence numbers. Generally, the initiator should keep a certain range of messages to fill gaps and these messages include application and session messages, i.e. all messages which have been sent. System of Fund Management Company System of Futures Company Sent message 100 Received message 100 Sent message 101 Received message 101 Sent heartbeat message 102 Received heartbeat message 102 Sent heartbeat message103 Received heartbeat message 103 Sent message 104 Received message 104 Sent resend request 30 BeginSeqNo=100 Received resend request 30 EndSeqNo=0 Sent message 100 Received message 100 Sent message 101 Received message 101 Sent Sequence Reset-Gap Received Sequence Fill 102 Reset-Gap Fill 102 Msg Type =4 Gap Fill Flag =Y NewSeqNo=104 Received message 104 Sent message 104 Graph B.4 Resend Request 116 JR/T 0087—2012 B.5 Heartbeat and Test Request Graph B.5shows a scenario for heartbeat and test request where during the period of message inactivity, the two sides involved in the connection may send heartbeat or test request at specified time intervals in accordance with the applicable rules. System of Fund Management Company System of Futures Company Sent heartbeat message 100 Received heartbeat message 100 Sent test request 101 Received test request 101 TestReqID=101 Received heartbeat message 30 Sent heartbeat message 30 Received heartbeat message 31 Sent heartbeat message 31 TestReqID=101 Sent test request 32 Received test request 32 TestReqID=32 Sent heartbeat message 102 Received heartbeat message 102 TestReqID=32 Graph B.5 Heartbeat and Test Request 117 JR/T 0087—2012 Schedule C (Informative Schedule) Application Scenario C.1 New Order-Single Scenario Graph See Graph C.1 for New Order-Single Scenario. System of Futures Company System of Fund Management Company ClOrdID=1896 (Identifier of client order assigned by the fund management company) CiOrdID=1896 OrderID=4569 (Identifier for order assigned by the futures company) ExecID=1357 (Identifier of execution) ClOrdID=1896 OrderID=4569 ExecID=1400 DeclarationID=1799 (Identifier of declaration assigned by the exchange) ClOrdID=1896 OrderID=4569 ExecID=1403 DeclarationID=1799 TradeID=33522 (Identifier of trade assigned by the exchange) LastShares=400 LeavesQty=600 ClOrdID=1896 OrderID=4569 ExceID=1420 DeclarationID=1799 TradeID=33533 LastShares=600 LeavesQty=0 ClOrdID=1896 New Order-Single Execution Report-Pending New Execution Report-New Execution Report-Partially Filled Execution Report-Filled Graph C.1 New Order-Single Scenario 118 (Identifier of client order assigned by the fund management company to the client order) ClOrdID=1896 OrderID=4569 (Identifier for order assigned by the futures company) ExecID=1357 (Identifier of execution) ClOrdID=1896 OrderID=4569 ExecID=1400 DeclarationID=1799 (Identifier of declaration assigned by the exchange) ClOrdID=1896 OrderID=4569 ExecID=1403 DeclarationID=1799 TradeID=33533 (Identifier of trade assigned by the exchange) LastShares=400 LeavesQty=600 CoOrdID=1896 OrderID=4569 ExecID=1420 DeclarationID=1799 TradeID=33533 LastShares=600 LeavesQty=0 JR/T 0087—2012 C.2 Order Cancel Scenario Graph See Graph C.2 for Order Cancel Scenario. System of Fund Management Company System of Futures Company ClOrdID=1896 (Identifier of client order assigned by the fund management company) CiOrdID=1896 OrderID=4569 (Identifier for order assigned by the futures company) ExecID=1357 (Identifier of execution) ClOrdID=1896 OrderID=4569 ExecID=1400 DeclarationID=1799 (Identifier of declaration assigned the exchange) ClOrdID=1896 OrderID=4569 ExecID=1403 DeclarationID=1799 TradeID=33522 (Identifier of trade assigned by the exchange)LastShares=400 LeavesQty=600 ClOrdID=1896 New Order-Single Execution Report-Pending New Execution Report-New Execution Report-Partially Filled CiOrdID=1896 OrderID=4569 (Identifier for order assigned by the futures company) ExecID=1357 (Identifier of execution) ClOrdID=1896 OrderID=4569 ExecID=1400 DeclarationID=1799 (Identifier of declaration assigned the exchange) ClOrdID=1896 OrderID=4569 ExecID=1403 DeclarationID=1799 TradeID=33522 (Identifier of trade assigned by the exchange) LastShares=400 LeavesQty=600 ClOrdID=1900 ClOrdID=1900 OrigClOrdID=1896 (Identifier of client order assigned by fund management company) Order Cancel Request OrigClOrdID=1896 (Order in Pending Cancel status) (Order in Pending Cancel status) ClOrdID=1900 ClOrdID=1900 OrigClOrdID=1896 Execution Report-Pending Cancel OrigClOrdID=1896 OrderID=4569 OrderID=4569 ExceID=1420 ExceID=1420 ClOrdID=1900 ClOrdID=1900 OrigClOrdID=1896 OrigClOrdID=1896 OrderID=4569 Execution Report-Canceled OrderID=4569 ExecID=1425 ExecID=1425 LeavesQty=0 LeavesQty=0 Graph C.2 Order Cancel Scenario 119 JR/T 0087—2012 Schedule D (Informative Schedule) Checksum Calculation A code segment to calculate the checksum is as follows: char *GenerateCheckSum( char *buf, long bufLen ) { static char tmpBuf[ 4 ]; long idx; unsigned int cks; for( idx = 0L, cks = 0; idx < bufLen; cks += (unsigned int)buf[ idx++ ] ); sprintf( tmpBuf, “%03d”, (unsigned int)( cks % 256 ) ); return( tmpBuf ); } 120 JR/T 0087—2012 Schedule E (Informative Schedule) FIX Session E.1 FIX Session E.1.1 Sequence Numbers All messages are identified by a unique sequence number. Sequence numbers are initialized at the start of each FIX session starting at 1 (one) and increment throughout the session until the termination of the session. Monitoring sequence numbers will enable parties to identify and react to missed messages and to synchronize applications when reconnecting during a FIX session. Each session will establish an independent incoming and outgoing sequence series. Participants will maintain a sequence series to assign to outgoing messages and a separate series to monitor for sequence gaps on incoming messages. E.1.2 Heartbeats During periods of message inactivity, the two sides involved in the connection will generate Heartbeat messages at regular time intervals. The heartbeat monitors the status of the communication link. The Heartbeat Interval is declared by the session initiator using the HeartBtInt field in the Logon message. The heartbeat interval timer should be reset after every message is transmitted. The HeartBtInt value should be agreed upon by the two sides involved in the connection and specified by the Logon initiator and echoed back by the Logon acceptor. The same HeartBtInt value is used by both sides. E.1.3 Gap Fill AS FIX session protocol is based on an optimistic message transmission model, it is possible to miss a message in the course of transmission. Considering that the initiator is unable to detect the missed message, it is the responsibility of the acceptor to detect and deal with any message gap. There are two options to address this issue: after detecting the missing of any message, the acceptor requests for the missed message and all messages subsequent to the missed message from the initiator; and, after detecting any gap, the acceptor maintains a list of al messages received and asks for the resending of the missed message by the initiator. E.1.4 Possible Duplicates When a message is retransmitted in response to a resend request or when a message is retransmitted if it is unsure whether the message has been successfully received at its intended destination, the PossDupFlag (Possible Duplicate=Y) is required to be included in the 121 JR/T 0087—2012 message. It is the receiving application's responsibility to handle the message. Even if the original sequence number is used when a message with the PossDupFlag field is generated, considering that some fields are likely to change, such as OrigSendingTime, SendingTime, BodyLength and PossDupFlag, it is necessary to recalculate the CheckSum value. E.1.5 Possible Resends Ambiguous application level messages may be resent with the PossResend flag set (Possible Resend=Y) and new sequence numbers. This is useful when an order remains unacknowledged for an inordinate length of time and it is suspected that the order had never been sent. The receiving application must recognize this flag and interrogate internal fields (order number, etc.) to determine if this order has been previously received. The possible resend message will contain exactly the same body data. Likewise, as some fields are likely to change, it is necessary to recalculate the CheckSum value. E.1.6 Message Acknowledgment As the FIX session protocol is based on an optimistic message transmission model and message gaps are identified by monitoring message sequence numbers, the FIX protocol does not support individual message acknowledgment. However, the acknowledgement of a large number of messages can be defined at the application level. It is permissible to accept or reject these messages at the application level, such as acknowledgement of order. E.2 Connection A FIX session is defined as a bi-directional stream of ordered messages between two parties within a continuous sequence number series. Parties can connect and disconnect multiple times while maintaining a single FIX session. Disconnection can be caused by external factors. Connecting parties can bi-laterally agree as to when sessions are to be started/stopped based upon individual system. Generally, a new FIX session is established once within each 24 hour period. If it is necessary to maintain 24 hour connectivity, it is required to establish a new set of sequence numbers by sending a Logon message with the ResetSeqNumFlag set. A FIX session is comprised of three parts: logon, message exchange and logout. E.2.1 Logon Establishing a FIX connection involves three distinct operations: creation of a telecommunications level link, authentication/acceptance of the initiator by the acceptor and message synchronization (initialization). The sequence of connection is as follows: E.2.1.1 Link The session initiator establishes a telecommunication link with the session acceptor. 122 JR/T 0087—2012 E.2.1.2 Authentication The initiator sends a Logon message. The acceptor will authenticate the identity of the initiator by examining the Logon message. The Logon message should contain the necessary data such as user name and password. If the initiator is successfully authenticated, the acceptor responds with a Logon message. If authentication fails, the session acceptor should shut down the connection after optionally sending a Logout message to indicate the reason of failure. Sending a Logout in this case is not required because doing so in some cases may be problematic. The initiator must wait for the confirming Logon message from the acceptor before declaring the session fully established. The session initiator may begin to send other messages immediately following the Logon message. It is recommended to wait a short period of time following the Logon or to send a Test Request and wait for a response to it before sending new messages in order to allow both sides to handle resend request processing. Failure to do this could result in a Resend Request message being issued by one’s counterparty for each new message sent. E.2.1.3 Initialization After authentication, the initiator and acceptor should synchronize their messages sequence numbers before sending any new messages. The message sequence numbers are synchronized through interrogation of the MsgSeqNum field. A comparison of the MsgSeqNum in the Logon message to the internally monitored next expected sequence number will indicate any message gaps. Likewise, the initiator can detect gaps by comparing the acknowledgment Logon message MsgSeqNum to the next expected value. E.2.2 Message Exchange After completion of the initialization process, normal message exchange begins. The formats for all valid messages are detailed in the sections 'Session Messages' and 'Application Messages'. E.2.3 Logout Normal termination of the message exchange session will be completed via the exchange of Logout messages. Session termination without receiving a Logout should treat the counterparty as logged out. Termination by other means should be considered an abnormal condition and dealt with as an error. It is recommended that before sending the Logout message, a TestRequest should be issued to force a Heartbeat from the other side. This helps to ensure that there are no sequence number gaps. Before actually closing the session, the Logout initiator should wait for the opposite side to 123 JR/T 0087—2012 respond with a confirming Logout message. This gives the acceptor a chance to perform any Gap Fill operations. Once the messages from the ResendRequest have been received, the acceptor should issue the Logout. The session may be terminated immediately if the acceptor does not respond in an appropriate timeframe. Note: Logging out does not affect the state of any orders. All active orders will continue to be eligible for execution after logout. E.2.4 Message Recovery The following section provides details on how to recover messages. Each FIX participant must maintain two sequence numbers for each FIX session, one each for incoming and outgoing messages. When the incoming sequence number does not match the expected number, corrective processing is required. Note that the SeqReset-Reset messageis an exception to this rule as it should be processed without regards to its MsgSeqNum. If the incoming message has a sequence number less than expected and the PossDupFlag is not set, it indicates a serious error. It is strongly recommended that the session be terminated and manual intervention be initiated. If the incoming sequence number is greater than expected, it indicates that messages were missed and retransmission of the messages should be requested via the Resend Request. Upon receipt of a Resend Request, the resender can respond in one of three ways:(note①) a) As a normal response, the resender transmits the requested messages in order with the original sequence numbers and PossDupFlag set to “Y”. b) As a normal response, the resender issues a SeqReset-GapFill with PossDupFlag set to “Y” to indicate the deletion of old or redundant message. c) As an abnormal response, the resender issues a SeqReset-Reset with PossDupFlag set to “Y” to force sequence number synchronization. During the gap fill process, certain session messages are not required to be retransmitted. Instead, a special SeqReset-GapFill message is generated. The session messages which are not to be resent are: Logon, Logout, ResendRequest, Heartbeat, TestRequest and SeqReset-Reset and SeqReset-GapFill. This leaves Reject as the only session message which can be resent. All FIX implementations must monitor incoming messages to detect inadvertently retransmitted session messages (PossDupFlag flag set indicating a resend). When received, these messages should be processed for sequence number integrity only; the Note①:In this section, requester refers to the party requesting the resend and resender refers to the party responding to the request. 124 JR/T 0087—2012 business/application processing of these messages should be skipped. If there are consecutive session messages to be resent, it is suggested that only one SeqReset-GapFill message be sent in their place. The sequence number of the SeqReset-GapFill message is the next expected outbound sequence number. The NewSeqNo field of the GapFill message contains the sequence number of the highest session message in this group plus 1. (Note②) An engine should store out of sequence messages in a temporary queue and process them in order when the gap is closed. This prevents generating resend requests for n->m, n->m+1, n->m+2, ... which can result in many resent PossDupFlag=Y messages. Sequence number checking is a vital part of FIX session management. However, a discrepancy in the sequence number stream is handled differently for certain classes of FIX messages. The following Table E.1 lists the actions to be taken when the incoming sequence number is greater than the expected incoming sequence number. (Note③) Note②:For example, during a Resend operation there are 7 sequential administrative messages waiting to be resent. They start with sequence number 9 and end with sequence number 15. Instead of transmitting 7 Gap Fill messages (which is perfectly legal, but not network friendly), a SeqReset-GapFill message may be sent. The sequence number of the Gap Fill message is set to 9 because the remote side is expecting that as the next next sequence number. The NewSeqNo field of the GapFill message contains the number 16, because that will be the sequence number of the next message to be transmitted. Note③:In all cases except the Sequence Reset - Reset message, the FIX session should be terminated immediately if the incoming sequence number is less than expected and the PossDupFlag is not set. A Logout message with some descriptive text should be sent to the other side before closing the session. 125 JR/T 0087—2012 Table E.1 Sequence Number Error Handling Message Type Action to Be Taken against Sequence Number Error Logon Must always be the first message transmitted. Authenticate and accept the connection. After sending a Logon confirmation back, send a ResendRequest if a message gap was detected in the Logon sequence number. Logout If a message gap was detected, issue a ResendRequest to retrieve all missing messages followed by a Logout message which serves as a confirmation of the logout request. DO NOT terminate the session. The initiator of the Logout sequence has responsibility to terminate the session. This allows the Logout initiator to respond to any ResendRequest message. ResendRequest Perform the Resend processing first, followed by a ResendRequest of your own in order to fill the incoming message gap. SeqReset-Reset Ignore the incoming sequence number. The NewSeqNo field of the SeqReset message will contain the sequence number of the next message to be transmitted. SeqReset-GapFill Send a ResendRequest back immediately. However, it is important to insure that no messages have been inadvertently skipped over. This means that GapFill messages must be received in sequence. An out of sequence GapFill is an abnormal condition. All Other Messages Perform normal Gap Fill operations. E.3 FIX Session Messages The FIX session messages address the utility needs of the protocol. The following sections describe each message and provide the message layout. Session messages will be generated from both sides of the connection. E.3.1 Heartbeat (MsgType=0) The Heartbeat monitors the status of the communication link and identifies when the last of a string of messages was not received. When either end of a FIX connection has not sent any data for [HeartBtInt] (Heartbeat interval) seconds, it will generate and transmit a Heartbeat message. When either end of the connection has not received any data for (HeartBtInt + “some reasonable transmission time”) 126 JR/T 0087—2012 seconds, it will generate and transmit a Test Request message. If there is still no Heartbeat message received after (HeartBtInt + “some reasonable transmission time”) seconds then the connection should be considered lost and corrective action be initiated. If HeartBtInt is set to zero then no regular heartbeat messages will be generated. A test request message can still be sent independent of the value of the HeartBtInt, which will force a Heartbeat message. Heartbeats issued as the result of Test Request must contain the TestReqID transmitted in the Test Request message. This is useful to verify that the Heartbeat is the result of the Test Request and not as the result of a regular timeout. The following Table E2 describes the heartbeat format: Table E.2 Heartbeat Tag 112 Field Name Required Comments Standard Header Y MsgType = 0 TestReqID N Identifier of test request. Required when the heartbeat is the result of a Test Request message Standard Trailer Y E.3.2 Logon (MsgType=A) The logon message authenticates a user establishing a connection to a remote system. The logon message must be the first message sent by the application requesting to initiate a FIX session. The HeartBtInt field is used to declare the timeout interval for generating heartbeats (same value used by both sides). The HeartBtInt value should be agreed upon by the two sides and specified by the Logon initiator and echoed back by the Logon acceptor. Upon receipt of a Logon message, the session acceptor will authenticate the party requesting connection and issue a Logon message as acknowledgment that the connection request has been accepted. The acknowledgment Logon can also be used by the initiator to validate that the connection was established with the correct party. The session acceptor should be prepared to immediately begin processing messages after receipt of the Logon. The session initiator can choose to begin transmission of FIX messages before receipt of the confirmation Logon. However, this protocol provides that normal message delivery wait until after the return Logon is received to accommodate encryption key negotiation. The confirmation Logon can be used for encryption key negotiation. If a session key is deemed to be weak, a stronger session key can be suggested by returning a Logon message with a new key. This is only valid for encryption protocols that allow for key negotiation. The Logon message can be used to specify the MaxMessageSize supported. It can also be 127 JR/T 0087—2012 used to specify the MsgTypes supported for both sending and receiving. The following Table E3 describes the logon format: Table E.3 Logon Tag Field Name Required Comments Standard Header Y MsgType = A 98 EncryptMethod Y Method of encryption (Always unencrypted) 108 HeartBtInt Y Heartbeat interval 95 RawDataLength N Length of unformatted raw data. Required for authentication purpose 96 RawData N Unformatted raw data. authentication purpose 141 ResetSeqNumFlag N Sequence number reset flag 383 MaxMessageSize N Maximum length of message. Maximum number of bytes in a single message 384 NoMsgTypes N Number of message types 372 RefMsgType N Type of message 385 MsgDirection N Direction of message Standard Trailer Required for Y E.3.3 Test Request (MsgType=1) The test request message forces a heartbeat from the opposing application. The test request message checks sequence numbers or verifies communication line status. The opposite application responds to the Test Request with a Heartbeat containing the TestReqID. The TestReqID verifies that the opposite application is generating the heartbeat as the result of Test Request and not a normal timeout. The opposite application includes the TestReqID in the resulting Heartbeat. Any string can be used as the TestReqID (one suggestion is to use a timestamp string). The following Table E4 describes the test request format: Table E.4 Test Request Tag 112 Field Name Required Comments Standard Header Y MsgType = 1 TestReqID Y Identifier of test request Standard Trailer Y E.3.4 Resend Request (MsgType=2) The resend request is sent by the receiving application to initiate the retransmission of messages. This function is utilized if a sequence number gap is detected, if the receiving application lost a message, or as a function of the initialization process. 128 JR/T 0087—2012 The resend request can be used to request a single message, a range of messages or all messages subsequent to a particular message. The sending application may wish to consider the message type when resending messages; e.g. if a session message is in the resend series and becomes invalid as a result of the elapse of a significant time period since its original inception, the sender may not wish to retransmit the message. The Sequence Reset-GapFill message is used to skip messages that a sender does not wish to resend. (Note④) The resend request can be used to: a) request a single message: BeginSeqNo = EndSeqNo; b) request a range of messages: BeginSeqNo = first message of range, EndSeqNo = last message of range; or c) request all messages subsequent to a particular message: BeginSeqNo = first message of range, EndSeqNo = 0 (represents infinity). The following Table E5 describes the resend request format: Table E.5 Resend Request Tag Field Name Required Comments Standard Header Y MsgType = 2 7 BeginSeqNo Y Sequence number of first message 16 EndSeqNo Y Sequence number of last message Standard Trailer Y E.3.5 Reject (session-level) (MsgType=3) The reject message should be issued when a message is received but cannot be properly processed due to a session-level rule violation. An example of when a reject may be appropriate would be the receipt of a message with invalid basic data (e.g. MsgType=&) which successfully passes de-encryption, CheckSum and BodyLength checks. Rejected messages should be logged. The receiving application should disregard any message that is garbled, cannot be parsed or fails a data integrity check. Processing of the next valid FIX message will cause detection of a sequence gap and a Resend Request will be generated. Logic should be included in the FIX Note④: it is imperative that the receiving application process messages in sequence order, e.g. if message number 7 is missed and 8-9 received, the application should ignore 8 and 9 and ask for a resend of 7-9, or, preferably, 7-0 (0 represents infinity). This latter approach is strongly recommended to recover from out of sequence conditions as it allows for faster recovery when both sides are simultaneously attempting to recover a gap. 129 JR/T 0087—2012 engine to recognize the possible infinite resend loop, which may be encountered in this situation. Generation and receipt of a Reject message indicates a serious error that may be the result of faulty logic in either the sending or receiving application. If the sending application chooses to retransmit the rejected message, it should be assigned a new sequence number and sent with PossResend=Y. Whenever possible, this protocol provides that the cause of the failure be described in the Text field. If an application-level message received fulfills session-level rules, it should then be processed at a business message-level. If this processing detects a rule violation, a business-level reject should be issued. Many business-level messages have specific “reject” messages, which should be used. All others can be rejected at a business-level via the Business Message Reject message. The following Table E6 describes the reject format: Table E.6 Reject Tag Field Name Required Comments Standard Header Y MsgType = 3 45 RefSeqNum Y Sequence number of the message being referenced, i.e. sequence number of the rejected message 371 RefTagID N Tag number of the FIX field being referenced. 372 RefMsgType N MsgType of the FIX message being referenced 373 SessionRejectReason N Code to identify reason for a session-level Reject message 58 Text N Text. Message to explain reason for rejection 354 EncodedTextLen N Length of encoded text 355 EncodedText N Encoded text (non-ASCII characters) Standard Trailer Y The following Table 7 lists the reasons for session-level Reject: 130 JR/T 0087—2012 Table E.7 Session Reject Reason (English) Session Reject Reason 0 = Invalid tag number 1 = Required tag missing 2 = Tag not defined for this message type 3 = Undefined Tag 4 = Tag specified without a value 5 = Value is incorrect (out of range) for this tag 6 = Incorrect data format for value 7 = Decryption problem 8 = Signature problem 9 = CompID problem 10 = SendingTime accuracy problem 11 = Invalid MsgType 12 =XML Validation error 13 = Repeating within a tag(not a repeating group) 14 = Error in the sequence of fields with a sequence number 15 = Error in the sequence of repeating group fields 16 = Error in the number of repetition for the repeating group 17 = Appearance of the field delimiter <SOH> in a data field other than that of data E.3.6 Sequence Reset (MsgType=4) The sequence reset message is used by the sending application to reset the incoming sequence number on the opposing side. This message has two modes: “Sequence Reset-Gap Fill” and “Sequence Reset-Reset”. The “Sequence Reset-Reset” mode is usually used to recover from a disaster situation. When using the ResetSeqNumFlag to maintain 24 hour connectivity and establish a new set of sequence numbers, both sides should agree upon a reset time and the party that will be the initiator of the process, but the initiator of the ResetSeqNum process may be different than the initiator of the Logon process. The process should be as follows: One side will initiate the process by sending a TestRequest and wait for a Heartbeat in response to ensure of no sequence number gaps. Once the Heartbeat has been received, the initiator should send a Logon with ResetSeqNumFlag set to Y and with MsgSeqNum of 1. The acceptor should respond with a Logon with ResetSeqNumFlag set to Y and with MsgSeqNum of 1. At this 131 JR/T 0087—2012 point new messages from either side should continue with MsgSeqNum of 2. It should be noted that once the initiator sends the Logon with the ResetSeqNumFlag set, the acceptor should obey this request and the message with the last sequence number transmitted “yesterday” may no longer be available. The connection should be shut down and manual intervention taken, if this process is initiated but not followed properly. The sequence reset message has two modes: The message is SeqReset-Gap Fill when GapFillFlag =Y, and the message isequence Reset-Reset when GapFillFlag=N. The sequence reset message can be used in the following situations: a) During normal resend processing, the sending application may choose not to send a message (e.g. a session message). The Sequence Reset – Gap Fill can be used to mark the place of that message. b) During normal resend processing, a number of session messages are not resent and the Sequence Reset – Gap Fill message is used to fill the sequence gap created as a result thereof. c) In the event of an application failure, it may be necessary to force synchronization of sequence numbers on the sending and receiving sides via the use of Sequence Reset – Reset. The sequence reset message in all situations specifies NewSeqNo to reset as the value of the sequence number of the next message to be transmitted.。 If the GapFillFlag field is set to Y), the MsgSeqNum should conform to message sequencing rules, i.e. the MsgSeqNum of the Sequence Reset-GapFill message should represent the beginning MsgSeqNum in the GapFill range because the remote side is expecting a message with this MsgSeqNum . The SeqReset-Gap Fill can only increase the sequence number. If the SeqReset-Gap Fill is received attempting to decrease the next expected sequence number the message should be rejected and treated as a serious error. (Note⑤) Note⑤:It is possible to have multiple ResendRequests issued in a row (i.e. 5 to 10 followed by 5 to 11). If sequence number 8, 10, and 11 represent application messages while the 5-7 and 9 represent session messages, the series of messages as result of the Resend Request may appear as SeqReset-GapFill with NewSeqNo of 8, message 8 and SeqReset-GapFill with NewSeqNo of 10, message 10. This could then be followed by SeqReset-GapFill with NewSeqNo of 8, message 8(with a lesser sequence number), SeqReset-GapFill with NewSeqNo of 10, message 10, and message 11. One must be careful to ignore the duplicate SeqReset-GapFill which is attempting to lower the next expected sequence number This can be detected by checking to see if its MsgSeqNum is less than expected. If so, the SeqReset-GapFill is a duplicate and should be discarded. 132 JR/T 0087—2012 If the GapFillFlag field is not present (or set to N), the sequence reset message is SeqReset-Reset. It is possible that the purpose of the SeqReset-Reset is to recover from an out-of-sequence condition. The MsgSeqNum in the header should be ignored. Sequence Reset – Reset should NOT be used as a normal response to a Resend Request (use Sequence Reset – Gap Fill). The Sequence Reset – Reset should only be used to recover from a disaster situation which cannot be recovered via the use of Sequence Reset – Gap Fill. Note that the use of Sequence Reset -Reset may result in the possibility of lost messages. The following Table E8 describes the sequence reset format: Table E.8 Sequence Reset Tag Field Name Required Comments Standard Header Y MsgType = 4 123 GapFillFlag N Gap fill flag 36 NewSeqNo Y New sequence number Standard Trailer Y E.3.7 Logout (MsgType=5) The logout message initiates or confirms the termination of a FIX session. Disconnection without the exchange of logout messages should be interpreted as an abnormal condition. Before actually closing the session, the logout initiator should wait for the opposite side to respond with a confirming logout message. This gives the remote end a chance to perform any Gap Fill operations that may be necessary. The session may be terminated if the remote side does not respond in an appropriate timeframe. After sending the Logout message, the logout initiator should not send any messages unless requested to do so by the logout acceptor via a ResendRequest. The following Table E9 describes the logout format: Table E.9 Logout Tag Field Name Required Comments Standard Header Y MsgType = 5 58 Text N Text 354 EncodedTextLen N Length of encoded text 355 EncodedText N Encoded text (non- ASCII characters) Standard Trailer Y 133
© Copyright 2026 Paperzz