The Tailor Made Software Suite for FX Options

Microsoft Word - eFXO Trade STP FIX API.docx



eFXO Trade STP FIX API

Version 1

16 October 2023


eFXO Trade STP FIX API

Copyright 2021-2023 eFXO All rights reserved.

Information contained herein is for Internal use and may only be used for business purposes authorized by eFXO.


Contents

  1. Introduction 3

    1. Revision 3

    2. Purpose 3

    3. Content 3

    4. Feedback 3

    5. Workflow 3

    6. Counterparty codes 4

    7. Expiry Cuts 4

    8. Trading Hours 4

    9. UAT Servers 4

    10. Production Servers 4

  2. FIX Implementation 5

    1. Protocol Version 5

    2. Message Formats 5

    3. FIX Message Encryption 5

    4. Connection / Disconnection 5

  3. Session Level Message Definitions 6

    1. Standard Message Header 6

    2. Trailer 6

    3. Logon (35=A) from client 6

    4. Logon (35=A) from server 7

    5. Logout (35=5) 7

    6. Heartbeat (35=0) 7

    7. Test Request (35=1) 7

    8. Reject (35=3) 7

  4. Business Message Definitions 8

    1. TradeCaptureReport (35=AE) 8

      eFXO Trade STP FIX API

      OptionProductType (1=FX) 9

      OptionProductType: (2=European) 9

    2. TradeCaptureReportAck (35=AR) 9

  1. Introduction


    1. Revision


      Version

      Date

      Remarks

      1

      2-March-2022

      First version with AE and AR messages

      1

      18-November-2022

      Added TrdRptStatus 6 Pending

      1

      16-October-2023

      Added LegUpiCode and LegRtn


    2. Purpose


      This document provides the FIX messages for Trade STP of FX Options. You have the ability to receive and send trade booking messages.


    3. Content


      Included in this document are the following:

      • General definitions and specifications for clients using FIX to perform trade bookings.

      • FIX message formats to be used and details of their expected parameters.

      • Workflow logic.

      • Counterparty and cut definition logic.


    4. Feedback


      Feedback and questions can be directed to: support@efxo.com


    5. Workflow


      On sending an TradeCaptureReport message (AE) you can expect 6 responses: An TradeCaptureReportAck (AR) with TrdRptStatus (939):

      0 = Delivered to counterparty, so they are connected. This is not an end state.

      1 = Format Error: you message has technical problems and cannot be processed. 2= System Error: eFXO has internal issue and message cannot be processed.

      3 = NotConnected: Counterparty is not connected, so message could not be delivered.

      4 = Success: Counterparty accepts trade booking.

      5 = Failed: Counterparty rejects trade booking. Text (58) will have the reason they provided.

      eFXO Trade STP FIX API

      6 = Pending: Trade needs to be enriched, so booking timeout increased from 1 minute to 15 minutes.

    6. Counterparty codes


      Counterparties are identified by the LEI code: https://www.lei-lookup.com/


    7. Expiry Cuts


      To standardize expiry cut times, we require the expiry cut to be set with the UTC time of the expiry. Example: New York cut is 10am New York time.

      Depending on the time of year, that will be 15:00 UTC (wintertime) or 14:00 UTC (summertime). The value for expiry cut must be set to value “15:00” or “14:00” depending on the summertime/wintertime.


    8. Trading Hours


      The system will be available from:


      Start Time: 7am Singapore time. End Time: 5pm New York time.


      On Monday through Friday. System maintenance will be performed after 5pm New York time or during weekends.


    9. UAT Servers


      Servers are:

      tradestpuat1.efxo.com and tradestpuat2.efxo.com

      Connection must be made on port 7303. IP whitelisting is required. Port 7303 requires TLS 1.2 encryption.


      There will be 2 robots active for testing:

      LEI: REJECT01234567890123 : This robot rejects every booking. LEI: ACCEPT01234567890123 : This robot accepts every booking.


    10. Production Servers


      Servers are:

      eFXO Trade STP FIX API

      tradestpprd1.efxo.com and tradestpprd2.efxo.com

      Connection must be made on port 7303. IP whitelisting is required. Port 7303 requires TLS 1.2 encryption.

  2. FIX Implementation


    1. Protocol Version


      The protocol is based on FIX Protocol Version 4.4.


    2. Message Formats


      This document defines the set of supported messages, the expected fields to be contained in those messages and the range of accepted values which the fields may take. Any messages that it receives which are not in the supported message set, will be ignored. Messages not adhering to the specified format, containing fields with values outside the set defined here or containing any additional fields other than those defined in this document will be rejected.


    3. FIX Message Encryption


      No encryption is used.


    4. Connection / Disconnection


      eFXO Trade STP FIX API

      Connection should be initiated by the client. The eFXO trade STP process will act as the server. The client should send a logon message containing a username and password. The server will reply with a logon message. The client can terminate the connection by sending a logout message or it can terminate the network connection.

  3. Session Level Message Definitions


    1. Standard Message Header


      This is the standard header that must be used for every message.


      FIX Tag

      FieldName

      Req'd

      Description / Comments

      8

      BeginString

      Y

      FIX.4.4

      9

      BodyLength

      Y

      The message length in bytes

      35

      MsgType

      Y

      Message type code

      49

      SenderCompId

      Y

      As provided

      56

      TargetCompId

      Y

      As provided

      34

      MsgSeqNum

      Y

      Message sequence number

      52

      SendingTime

      Y

      Time of message in UTC


    2. Trailer


      This is the standard trailer that must be used for every message.


      FIX Tag

      FieldName

      Req'd

      Description / Comments

      10

      Checksum

      Y

      Three character FIX byte checksum value


    3. Logon (35=A) from client


      eFXO Trade STP FIX API

      First message from client to logon to the server. The RawData is used by the server to control multiple clients on multiple versions of the protocol.


      FIX Tag

      FieldName

      Req'd

      Description / Comments

      98

      EncryptMethod

      Y

      Must be 0

      108

      HeartBtInt

      Y

      Must be 60

      141

      ResetSeqNumFlag

      Y

      Must be 'Y'

      96

      RawData

      Y

      Set to '1' as this is spec version 1

      95

      RawDataLength

      Y

      Set to length of RawData, so 1

      553

      UserName

      Y

      As provided

      554

      Password

      Y

      As provided

      453

      NoPartyIds

      Y

      Must be 1

      =>448

      PartyId

      Y

      Your LEI code

      =>447

      PartyIdSource

      Y

      'N': Legal Entity Identifier (ISO 17442) LEI

    4. Logon (35=A) from server


      This is the reply from the server on a successful logon:


      FIX Tag

      FieldName

      Req'd

      Description / Comments

      98

      EncryptMethod

      Y


      108

      HeartBtInt

      Y


      141

      ResetSeqNumFlag

      Y



    5. Logout (35=5)


      Both sides can send a logout.


      FIX Tag

      FieldName

      Req'd

      Description / Comments

      58

      Text

      Y

      Logout reason as text


    6. Heartbeat (35=0)


      Heartbeats are exchanged every 60 seconds after the last message. When a test request is received then the response is also a heartbeat, but with value 112 set to the value of the test request.


      FIX Tag

      FieldName

      Req'd

      Description / Comments

      112

      TestReqId

      N

      Value from TestRequest


    7. Test Request (35=1)


      FIX Tag

      FieldName

      Req'd

      Description / Comments

      112

      TestReqId

      Y

      Any string


    8. Reject (35=3)


      eFXO Trade STP FIX API

      This message is a respond to a message that is in wrong format.


      FIX Tag

      FieldName

      Req'd

      Description / Comments

      45

      RefSeqNo

      Y

      MsgSeqNo of rejected message

      371

      RefTagId

      Y

      Tag number that was wrong

      372

      RefMsgType

      Y

      MsgType of wrong message

      373

      SessionRejectReason

      Y

      Either 1 (tag missing) or 5 (value incorrect)

      58

      Text

      Y

      Readable text saying what is wrong

  4. Business Message Definitions


    1. TradeCaptureReport (35=AE)


      eFXO Trade STP FIX API

      This message is provided by the PartyId who is the IntroducingFirm and transmitted to the PartyId who is the ClientId.


      FIX Tag

      FieldName

      Req'd

      Description / Comments

      571

      TradeReportId

      Y

      Unique identifier

      453

      NoPartyIds

      Y

      Must be 1

      =>448

      PartyId

      Y

      LEI code of counterparty


      =>447


      PartyIdSource


      Y

      'N': Legal Entity Identifier (ISO 17442) LEI,

      except 'C' for Custum value for PartyRole=12


      =>452


      PartyRole


      Y

      3=ClientId, 4=ClearingFirm (GiveUp), 6=IntroducingFirm (Sender), 12=ExecutingTrader, 17=ContraFirm,

      18=ContraClearingFirm

      20000

      Venue

      Y

      1=SEF,2=MTF,3=OTF,4=Other,5=OTC

      146

      NoRelatedSym

      Y

      Must be 1

      =>55

      Symbol

      Y

      Symbol in EURUSD format

      5830

      PremiumCcy

      N

      Premium Currency

      138

      MicsFeeCurr

      N

      Trade Fee currency

      60

      TransActTime

      N


      20003

      MicCode

      N


      20006

      InvestmentDecisionWithin

      N


      20007

      ExecutionWithinFirm

      N


      =>555

      NoLegs

      Y

      Must be greater than 0

      ==>654

      LegRefId

      Y

      Start with 1 and must increase per leg

      ==>9136

      OptionProductType

      Y

      1=FX, 2=European


      <See product leg specs>



      ==>5020

      PremiumDate

      C

      Required for Options

      ==>6436

      Premium

      C

      Required for Options, can be 0

      ==>5678

      Volatility

      N


      ==>137

      MiscFeeAmt

      N


      ==>20001

      UsiPrefix

      N


      ==>20002

      UsiValue

      N


      ==> 2893

      UPI code

      N


      ==>20004

      ComplexTradeComponent

      N


      ==>20005

      InstrumentIdentificationCo

      N


      ==>20008

      WaiverIndicator

      N


      ==>20009

      OtcPostTradeIndicator

      N


      ==> 20010

      LegRtn

      N


      OptionProductType (1=FX)


      FIX Tag

      FieldName

      Req'd

      Description / Comments

      ==>624

      LegSide

      Y

      1=Buy,2=Sell; Left side currency for ClientID

      ==>588

      LegSettlDate

      Y

      Delivery Date in YYYYMMDD format

      ==>612

      LegStrikePrice

      Y

      FX rate

      ==>687

      LegQty

      Y

      Notional Amount

      ==>556

      LegCurrency

      Y

      Notional Currency

      ==>63

      SettlType

      Y

      0=Delivery, 1=Cash

      ==>120

      SettlCurrency

      N

      Cash settlement currency

      ==>611

      LegMaturityDate

      N

      Fixing Date in YYYYMMDD format

      ==>9125

      LegCutOff

      N

      UTC expiry/fixing time in YY:MM format


      OptionProductType: (2=European)


      FIX Tag

      FieldName

      Req'd

      Description / Comments


      ==>624


      LegSide


      Y

      1=Buy,2=Sell; Option from ClientID

      perspective

      ==>611

      LegMaturityDate

      Y

      Date in YYYYMMDD format

      ==>9125

      LegCutOff

      Y

      UTC expiry time in YY:MM format

      ==>588

      LegSettleDate

      Y

      Date in YYYYMMDD format

      ==>612

      LegStrikePrice

      Y

      Strike price

      ==>9072

      CallOrPut

      Y

      1=Call, 2=Put on first currency of pair

      ==>687

      LegQty

      Y

      Optional notional

      ==>556

      LegCurrency

      Y

      Optional notional currency

      ==>63

      SettlType

      Y

      0=Delivery, 1=Cash

      ==>120

      SettlCurrency

      N

      Cash settlement currency


    2. TradeCaptureReportAck (35=AR)


eFXO Trade STP FIX API

This message can be used by the client to confirm or reject a request to book a trade.


FIX Tag

FieldName

Req'd

Description / Comments

571

TradeReportId

Y

Unique identifier for request

939

TrdRptStatus

Y

See section 1.5


58


Text


N

Readable text saying what is wrong or trade

id

Copyright © 2024 eFXO