VERSION 1.1
Overview
This article describes mapping rules which are applied to incoming TOF-messages in order to convert them to FIX4.4 messages.
Deal Types recognition rules
Below is the table that represents the rules for recognition of the deal type in incoming Record Response (340).
Deal type | Matching predicate | Field Lists | Comment |
---|---|---|---|
FXSpot | Pure Deal-Type (569) == '2' | 501 | Spot |
FXFwd | Pure Deal-Type (569) == '4' and not exists(Fixing Date 1 (554)) | Outright | |
FXSwap | Pure Deal-Type (569) == '8' and not exists(Fixing Date 1 (554)) and not exists(Fixing Date 2 (555)) | 502 | Swap |
NDF | (Pure Deal-Type (569) == '4' and exists(Fixing Date 1 (554)) or (Pure Deal-Type (569) == '8' and exists(Fixing Date 1 (554)) and exists(Fixing Date 2 (555))) | 501/502 | NDF Outright or NDF Swap |
FXDeposit | Pure Deal-Type (569) == '16' | 503 | Deposit |
FXFRA | Pure Deal-Type (569) == '32' | 505 | FRA |
TOF Record Response to FIX Trade Capture Report mapping rules
Below is the table which represents rules of mapping which are applied to TOF Record Response (340) message in order to convert it to FIX Trade Capture Report (msgType = AE) message.
TOF | FIX 4.4 |
Mapping Rules |
Comment | |||||
---|---|---|---|---|---|---|---|---|
TOF field | TOF tag | FIX field | FIX tag | Req'd | Valid Values | Data Type | ||
- | - | TradeReportID | 571 | Y | - | String | FIX 571 = tcid#N, where tcid is four-character code. tcid#N is extracted from header …<US>…<GS>tcid#N<US>… | Unique identifier of Trade Capture Report ('AE') |
- | - | SenderSubID | 50 | Y | - | String | FIX 50 = 'REUTERS' | Assigned value used to identify specific message originator |
- | - | TradeReportTransType | 487 | N | 0 = New 1 = Cancel 2 = Replace | int | FIX 487 = '0' | Identifies Trade Capture Report (AE) message transaction type |
Direction | 514 | TrdSubType | 829 | N | 0 = Regular Trade 12 = Exchange for Swap 22 = Privately Negotiated Trades 51 = Deposits 52 = Blank credit 53 = Repurchase agreement | int | if DealType == FXDeposit or DealType == FXFRA FIX 829=51 | - |
- | - | ExecID | 17 | N | - | String | FIX 17 = tcid#N, where tcid is four-character code. tcid#N is extracted from header …<US>…<GS>tcid#N<US>… | Unique identifier of Execution Report |
- | - | SecondaryExecID | 527 | N | - | String | Not mapped | Identifier of original Swap for MICEX Spot |
- | - | PreviouslyReported | 570 | Y | N = Not reported | Boolean | FIX(570) = 'N' | - |
ID of the original it this is a Contra | 567 | TradeReportRefID | 572 | N | - | String |
| The TradeReportID (571) that is being referenced for correction or cancelation. For REPO Margin Calls in MICEX: reference to tag 818 tag of original REPO deal |
ID of previous if this is a next | 568 | |||||||
Rate Direction | 524 | PriceType | 423 | N | - | int |
| - |
Price Convention | 573 | PriceSubType | 10423 | N | - | int | If Exists(TOF 573), FIX 10423 = TOF 573 | - |
- | - | ExecType | 150 | N | F = Trade G = Trade Correct H = Trade Cancel | char | FIX 150 = 'F' | - |
Currency 1 | 517 | Symbol | 55 | Y | Format: Crncy1/Crncy2 | String | FIX 55 = concat (TOF 517, '/', TOF 518) | Crncy1, Crncy2 - 3 character ISO Currency code. Example: 'USD/JPY', 'EUR/USD' |
Currency 2 | 518 | |||||||
- | - | SecurityID | 48 | N | - | String | Not mapped | - |
- | - | SecurityIDSource | 22 | N | 4 = ISIN Code | String | Not mapped | - |
- | - | Product | 460 | N | 2 = Commodity 4 = Currency 5 = Equity 6 = Government 8 = Loan 11 = Municipal | int |
| - |
- | - | CFICode | 461 | N | MRCXXX = Currency ESXXXX = Common stock EPXXXX = Preferred stock DBXXXX = Bonds EUXXXX = Mutual fund "OgsCXN" = Non-standardized Option on Currency. g: C=Call / P=Put, s: A=American / E=European. | String |
| Indicates the type of security using ISO standard, Classification of Financial Instruments (CFI code) values. |
- | - | SecurityType | 167 | Y | CS = Common stock PS = Preferred stock EUSOV = Eurobond MUNI = Municipal bond BN = Bank notes CORP = Corporate bond MF = Mutual fund FOR = Foreign Exchange Contract OPT = Options | String |
| |
Settlement | 674 | SecuritySubType | 762 | N | ‘DELIVERABLE’ | String |
| - |
Pure-Deal type | 569 | SecurityDesc | 107 | N | - | String |
Please see Deal Types recognition rules for details of Deal type recognition. | Security description |
FRA Fixing Date/Fixing Date Period 1 | 554 | |||||||
FRA Settlement Date/Fixing Date Period 2 | 555 | |||||||
Source Reference | 501 | TradeID | 1003 | N | - | String | FIX 1003 = TOF 501 | - |
Secondary Source Reference | 539 | SecondaryTradeID | 1040 | N | - | String | FIX 1040 = TOF 539 | - |
- | - | NoEvents | 864 | N | - | NumInGroup |
| - |
FRA Fixing Date/Fixing Date Period 1 | 554 | EventType | => 865 | Y | - | int | FIX 865 [1] = '101' | - |
EventDate | => 866 | Y | - | LocalMktDate | FIX 866 [1] = convert2LocalMktDate(TOF 554) | - | ||
- | - | NoUnderlyings | 711 | N | - | NumInGroup | Not mapped | Is used for REPO only. Absent otherwise. |
- | - | UnderlyingSymbol | => 311 | N | - | String | Not mapped | Is used for REPO only. Absent otherwise. |
- | - | NoUnderlyingStips | 887 | N | - | NumInGroup | Not mapped | - |
- | - | UnderlyingStipType | => 888 | N | - | String | Not mapped | - |
- | - | UnderlyingStipValue | => 889 | N | - | String | Not mapped | - |
Direction | 514 | StartDate | 916 | N | - | LocalMkDate |
| - |
Value Date Period 1 Currency 1 | 525 | |||||||
FRA Settlement Date | 555 | |||||||
Direction | 514 | EndDate | 917 | N | - | LocalMkDate |
| - |
Value Date Period 2 Currency 1 | 527 | |||||||
FRA Maturity Date/Payment Date/Premium Date for FXO | 556 | |||||||
- | - | DeliveryType | 919 | N | - | int | Not mapped | - |
Period 1 | 515 | SettlType | 63 | C | 0 = Regular / FX Spot settlement (T+1 or T+2 depending on currency) 1 = Cash / TOD (T+0) 2 = Next Day (T+1) / TOM (T+1) 6 = Future | char | if DealType = FXSpot:
| The field is set for FX Spot. |
Pure-Deal type | 569 | SettlDate | 64 | C | Format: YYYYMMDD | LocalMktDate | if TOF 569 == '2' OR TOF 569 == '4', FIX 64 = convert2LocalMktDate (TOF 525) | - |
Value date Period 1 Currency 1 | 525 | |||||||
Date of Deal | 502 | TradeDate | 75 | N | Format: YYYYMMDD | LocalMktDate | FIX 75 = MakeLocalTimeFromUtc (TOF 502, TOF 503) | - |
Time Of Deal | 503 | |||||||
Deal Volume Currency 1 | 519 | LastQty | 32 | N | - | Qty | FIX 32 = TOF 519 | Amount of dealt currency. |
Pure-Deal type | 569 | LastPx | 31 | Y | - | Price |
| - |
Deposit Rate | 520 | |||||||
Swap Rate | 521 | |||||||
Exchange Rate Period 1 | 522 | |||||||
- | - | Yield | 236 | N | - | Percentage | Not mapped | - |
- | - | Price | 10044 | N | - | Price | Not mapped | - |
- | - | Price2 | 10640 | N | - | Price | Not mapped | - |
- | - | NoSides | 552 | Y | - | int | FIX 552 = '1' | For data from Bloomberg NoSides(552)=2 always. For data from Reuters can be 1 or 2 depends on Method of deal (540) field |
Direction | 514 | Side | => 54 | Y | '1' = Buy '2' = Sell 'F' = Lend 'G' = Borrow | char |
| - |
Review Reference Number | 552 | OrderID | => 37 | Y | - | String | FIX 37 [1] = TOF 552 | First entry contains deal ID as assigned by corresponding data feed (Reuters, Bloomberg or Micex). Second entry (if presents) contains ID of the matching deal as assigned by corresponding data feed (Reuters, Bloomberg or Micex) |
- | - | ClOrdID | => 11 | N | - | String | Not mapped | The field is provided by Bloomberg only. Absent for Trade Captures received from Reuters and Micex |
Currency 1 | 517 | Currency | => 15 | N | - | Currency | FIX 15 [1] = TOF 517 | 3 character ISO Currency code of the Dealt Currency |
Base Currency | 544 | SettlCurrency | => 120 | N | - | Currency | FIX 120 [1] = TOF 544 | 3 character ISO Currency code for settlement denomination |
- | - | Account | => 1 | N | - | String | Not mapped | Account mnemonic |
- | - | TradingSessionID | => 336 | N | - | String | Not mapped | Identifier for Trading Session and Board |
- | - | TradingSessionSubID | => 625 | N | - | String | Not mapped | Subidentifier for Trading Session |
- | - | GrossTradeAmt | => 381 | N | - | Amt | Not mapped | Total amount traded |
- | - | AccruedInterestAmt | => 159 | N | - | Amt | Not mapped | Amount of Accrued Interest |
- | - | Commission | => 12 | N | - | Amt | Not mapped | Commission |
- | - | CommType | => 13 | N | - | char | Not mapped | Commission type |
Volume Of Interest | 570 | EndAccruedInterestAmt | => 920 | N | - | Amt | if Exists(TOF 570), FIX 920 = TOF 570 | - |
- | - | StartCash | => 921 | N | - | Amt | Not mapped | - |
- | - | EndCash | => 922 | N | - | Amt | Not mapped | - |
Pure-Deal type | 569 | PeriodCurrency1 | => 9073 | N | - | String | If TOF 569 in ('2', '4'), FIX 9073 = TOF 529 | - |
Payment Instruction Period 1 Currency 1 | 529 | |||||||
Pure-Deal type | 569 | PeriodCurrency2 | => 9074 | N | - | String | If TOF 569 in ('2', '4'), FIX 9074 = TOF 530 | - |
Payment Instruction Period 1 Currency 2/Their Premium Payment Instruction | 530 | |||||||
Pure-Deal type | 569 | TotalGrossTradeAmt | => 2369 | N | - | Amt | If TOF 569 in ('2', '4'), FIX 2369 = TOF 545 | - |
Calculated Volume Period 1 Currency 2 | 545 | |||||||
- | - | NoMiscFees | => 136 | N | - | NumInGroup | Not mapped | Number of repeating groups of miscellaneous fees |
- | - | MiscFeeAmt | => => 137 | N | - | Amt | Not mapped | Miscellaneous fee value |
- | - | MiscFeeType | => => 139 | N | - | int | Not mapped | Indicates type of miscellaneous fee |
Broker Dealing Code | 510 | NoPartyIDs | => 453 | Y | There should be greater than or equal to 2 repeating groups. | int |
| - |
Broker Name | 511 | |||||||
Local TCID | 551 | PartyIDSource | => => 447 | N | From Reuters and Micex: From Bloomberg: | char | FIX 447[1][1] = 'D' | - |
PartyID | => => 448 | N | - | string | if exists(TOF 551), FIX 448[1][1] = TOF 551 | - | ||
PartyRole | => => 452 | N | 17 = Contra Firm for counterparty 26 = Correspondent Broker 27 = Buyer/Seller for recepient 39 = Contra Investor ID | int | if exists(TOF 551), FIX 452[1][1] = '27' | - | ||
NoPartySubIDs | =>=> 802 | N | - | if exists(TOF 551), FIX 802[1][1] = '2' | - | |||
Bank1 Name | 509 | PartySubID | =>=>=>523 | N | - | string |
| - |
PartySubIDType | => => =>803 | N | 1 = Firm | string | FIX 523[1][1][1] = '0' | - | ||
Dealer ID | 504 | PartySubID | => => =>523 | N | - | string | FIX 523[1][1][2] = trim(TOF 504) | - |
PartySubIDType | => => =>803 | N | 1 = Firm 2 = Person 9 = Contact Name 4001 = Counterparty ID 1 4002 = Counterparty ID 2 4003 = Counterparty ID 3 4004 = Counterparty ID 4 | string | FIX 523[1][1][2] = '1' | - | ||
Bank1 | 508 | PartyIDSource | => => 447 | N | From Reuters and Micex: From Bloomberg: | char | FIX 447[1][1][2] = 'D' | - |
PartyID | => => 448 | N | - | string | if exists(TOF 508) FIX 448[1][1][2] = trim(TOF 508) | - | ||
PartyRole | => => 452 | N | 17 = Contra Firm for counterparty 26 = Correspondent Broker 27 = Buyer/Seller for recepient 39 = Contra Investor ID | int | FIX 452[1][1][2] = '17' | - | ||
Brorker Name | 511 | PartyIDSource | => => 447 | N | From Reuters and Micex: From Bloomberg: | char | if exists(TOF 511) FIX 447[1][FIX 453 + 1] = 'D' | - |
PartyID | => => 448 | N | - | char | if exists(TOF 511), FIX 447[1][FIX 453 + 1] = TOF 511 | - | ||
PartyRole | => => 452 | N | 17 = Contra Firm for counterparty 26 = Correspondent Broker 27 = Buyer/Seller for recepient 39 = Contra Investor ID | int | if exists(TOF 511), FIX 452[1][FIX 453 + 1] = '26' | - | ||
Broker Dealing Code | 510 | PartyIDSource | => => 447 | N | From Reuters and Micex: From Bloomberg: | char | if exists(TOF 511), FIX 447[1][FIX 453 + 1] = 'D' | - |
PartyID | => => 448 | N | - | if exists(TOF 511), FIX 447[1][FIX 453 + 1] = TOF 510 | - | |||
PartyRole | => => 452 | N | 17 = Contra Firm for counterparty 26 = Correspondent Broker 27 = Buyer/Seller for recepient 39 = Contra Investor ID | int | if exists(TOF 511), FIX 452[1][FIX 453 + 1] = '39' | - | ||
- | - | NoStipulations | => 232 | N | 1 | int | FIX 232 = '1' | - |
- | - | StipulationType | =>=> 233 | Y | - | String | FIX 233 [0] = 'TEXT' | - |
Conversation Text | 548 | StipulationValue | =>=> 234 | Y | - | String | FIX 234 [0] = TOF 548 | - |
Pure-Deal type | 569 | NoLegs | 555 | C | 2 | int | If TOF 569 == '8' OR TOF 569 == '16' OR TOF 569 = '32', FIX 555 = '2' | - |
Currency 1 | 517 | LegSymbol | => 600 | Y | Crncy1/Crncy2 | String | FIX 600 [i] = concat(TOF 517,'/',TOF 518), i=1,2 | Crncy1, Crncy2 - 3 character ISO Currency code. Example: 'USD/JPY', 'EUR/USD' |
Currency 2 | 518 | |||||||
- | - | LegProduct | => 607 | N | int |
| - | |
- | - | LegCFICode | => 608 | N | MRCXXX = Currency ESXXXX = Common stock EPXXXX = Preferred stock DBXXXX = Bonds EUXXXX = Mutual fund "OgsCXN" = Non-standardized Option on Currency. g: C=Call / P=Put, s: A=American / E=European | String |
| - |
Direction | 514 | LegSide | => 624 | Y | 1 = Buy 2 = Sell | char |
| - |
Currency 1 | 517 | LegCurrency | => 556 | Y | 3 character ISO Currency code | Currency | FIX 556 [i] = TOF 517, i=1,2 | - |
Period 1 | 515 | LegSettlType | => 587 | N | 0 = Regular / FX Spot settlement (T+1 or T+2 depending on currency). 1 = Cash / TOD (T+0) 2 = Next Day (T+1) / TOM (T+1) 6 = Future | char |
where: X = 515, [i==1] X = 516, [i==2] | - |
Period 2 | 516 | |||||||
Value Date Period 1 Currency 1 | 525 | LegSettlDate | => 588 | N | Format: YYYYMMDD | LocalMktDate | if DealType = FXFRA:
else:
| - |
Value Date Period 2 Currency 1 | 527 | |||||||
FRA Settlement Date | 555 | |||||||
FRA Maturity Date | 556 | |||||||
Deal Volume Currency 1 | 519 | LegQty | => 687 | N | - | Qty | FIX 687 [1] = TOF 519 FIX 687 [2] = TOF 547 | - |
Deal Volume Period 2 Currency 1 | 547 | |||||||
Exchange Rate Period 1 | 522 | LegLastPx | => 637 | N | - | Price | FIX 637 [1] = TOF 522 FIX 637 [2] = TOF 523 | - |
Exchange Rate Period 2 | 523 | |||||||
Calculated Volume Period 1 Currency 2 | 545 | LegTotalGrossTradeAmt | => 2359 | N | - | Amt | if TOF 569 == '8':
| - |
Calculated Volume Period 2 Currency 2 | 546 | |||||||
Pure-Deal type | 569 | |||||||
Date of Deal | 502 | TransactTime | 60 | N | Format: YYYYMMDD-HH:MM:SS | UTCTimestamp | FIX 60 = concat (convert2Timestamp(TOF 502),'-', TOF 503) | Time the transaction represented by this Trade Capture Report ('AE') occurred |
Time of Deal | 503 | |||||||
Date Confirmed | 505 | NoTrdRegTimestamps | 768 | N | - | TrdRegTS | if exists(TOF 505, TOF 506), FIX 768 = '1' | - |
Time Confirmed | 506 | |||||||
Date Confirmed | 505 | TrdRegTimestamp | => 769 | N | Format: YYYYMMDD-HH:MM:SS | UTCTimestamp | FIX 769 = concat (convert2Timestamp(TOF 505),'-', TOF 506) | - |
Time Confirmed | 506 | |||||||
- | - | TrdRegTimestampType | => 770 | N | - | - | FIX 770 = '17' | - |
Payment instruction Period 1 Currency 1 | 529 | LegPeriodCurrency1 | => 9075 | N | - | String | If TOF 569 in ('7', '8', '9', '10', '16', '32') THEN:
| - |
Payment Instruction Period 2 Currency 1 | 531 | |||||||
Pure-Deal type | 569 | |||||||
Payment Instruction Period 1 Currency 2/Payment Instruction Period 1 Currency 2 | 530 | LegPeriodCurrency2 | => 9076 | N | - | String | IF TOF 569 in ('7', '8') THEN:
| - |
Payment Instruction Period 2 Currency 2/Their Hedge Payment Instruction | 532 | |||||||
Pure-Deal type | 569 | |||||||
Comment Text | 553 | Text | 58 | N | - | String | FIX 58 = concat (TOF 553,'.','Title1:',TOF 561,'User Defined Data 1:',TOF 562,'Title2:',TOF 563,'User Defined Data 2:',TOF 564,'Title3:',TOF 565,'User Defined Data 3:',TOF 566) | - |
User-defined Title 1 | 561 | |||||||
User-defined Data 1 | 562 | |||||||
User-defined Title 2 | 563 | |||||||
User-defined Data 2 | 564 | |||||||
User-defined Title 3 | 565 | |||||||
User-defined Data 3 | 566 | |||||||
Spot Basis Rate | 560 | LastSpotRate | 194 | N | - | Price | FIX 194 = TOF 560 | - |
Outright Points Premium Rate | 559 | LastForwardPoints | 195 | N | - | PriceOffset | FIX 195 = TOF 559 | - |
ID of previous if this is 'next' | 568 | SecondaryTradeReportID | 818 | N | - | String | if HasRelated(TOF 568), FIX 818 = TOF 568 | Tag will be defined for MICEX only. Identifies REPO trade ID. HasRelated means that field exists and contains <TCID>#<ticket number>, where ticket number != 0. |
Method of Deal | 540 | TrdType | 828 | N | Valid values: '0' Regular Trade '1' Block Trade '2' EFP (Exchange for physical) '3' Transfer '4' Late Trade '5' T Trade '6' Weighted Average Price Trade '7' Bunched Trade '8' Late Bunched Trade '9' Prior Reference Price Trade '10' After Hours Trade | int | FIX 828 = TOF 540 + 100 | - |
- | - | USTradeType | 10001 | N | R = REPO first leg r = REPO second leg D = Margin call | char | Not mapped. | Tag will be defined for MICEX only. |
- | - | USTradeStatus | 10002 | N | M = Matched/confirmed (included into off-line settlement) C = Cancelled by the Trading System W = Withdrawn by the user | char | Not mapped. | Tag will be defined for MICEX only. |
- | - | TotalAmount | 10111 | N | - | Amt | Not mapped. | Tag will be defined for MICEX only. |
Year Length | 572 | CouponDayCount | 1950 | N | - | int | FIX 1950 = TOF 572 | Coupon Day Count. |
- | - | OperationType | 10003 | N | K = Deposit D = Withdraw | char | Not mapped. | Tag will be defined for MICEX only. |
Transaction ID | 585 | TransactionID | 2485 | N | string | FIX 2485 = TOF 585 |