LMAX Exchange FIX4.4 & API FAQs April 2015

June 17, 2017 | Author: Lilian Williams | Category: N/A
Share Embed Donate


Short Description

Download LMAX Exchange FIX4.4 & API FAQs April 2015...

Description

LMAX Exchange FIX4.4 & API FAQs April 2015

Disclaimer LMAX Exchange has taken reasonable efforts to ensure that the information contained in this publication is correct at the time of going to press, but shall not be liable for decisions made in reliance on it. LMAX Exchange will endeavour to provide notice to customers of changes being made to this document, but this notice cannot be guaranteed. Therefore, please note that this publication may be updated at any time. The information contained is therefore for guidance only.

April 2015 This document contains a list of FAQs for the purpose of assisting customers with their development work during the on-boarding process. If you have any questions please get in touch by emailing the LMAX Exchange Technical Account Management team using [email protected]

1

General FAQ Info What are the differences between LMAX FIX and the LMAX API’s (.Net/Java)? APIs contain Account and Position Events. APIs do not have any Order History. APIs support contingent orders. FIX offers good session management. FIX offers Cancel on Disconnect. FIX does not have Account or Position Events. FIX has Order History. FIX does not support contingent orders. FIX allows you to have multiple unique logons to the same trading account. We have not seen a speed advantage to be gained by selecting a particular API/FIX.

How do I connect to the LMAX Exchange Demo environment? LMAX Exchange Demo Web GUI: https://web-order.london-demo.lmax.com LMAX FIX Demo Market Data:

DNS: fix-marketdata.london-demo.lmax.com TargetCompId: LMXBDM Port: 443 LMAX FIX Demo Trading:

DNS: fix-order.london-demo.lmax.com TargetCompId: LMXBD Port: 443 The FIX logon will need to include your LMAX Exchange username in FIX tags 49 and tag 553.

Do I need to use encryption when connecting to both the LMAX Live or LMAX Demo environments? Yes encryption is required. LMAX Exchange will drop the TCP connection attempt if encryption is not used or setup correctly.

2

Do you have an example of a stunnel configuration? (Please note a customer may need to adapt this example for their purposes). fips = yes [Demo-Trading] accept = 127.0.0.1:40001 connect = fix-order.london-demo.lmax.com:443 sslVersion = TLSv1 options = NO_SSLv2 options = NO_SSLv3 [Demo – Market Data] client = yes accept = 127.0.0.1:40003 connect = fix-marketdata.london-demo.lmax.com:443 sslVersion = TLSv1 options = NO_SSLv2 options = NO_SSLv3 Please note that SSLv3 has been decommissioned for security reasons so you must use TLSv1 or higher.

Does LMAX Exchange offer last look? LMAX Exchange does not offer last look so therefore the price you see is an actual firm price that can be executed. Our liquidity providers do not have the ability to refuse a trade request as is done on many ECNs. In order to protect our liquidity LMAX Exchange actively manages the type of order flow.

Does the LMAX Exchange Demo market data stream reflect that of the Live environment? The LMAX Exchange Demo platform reflects the pricing and trading in LMAX Demo and not LMAX Live(Production). We have a “robot” that samples top of book prices at 5 second intervals from the LMAX Exchange Live environment and synthesis some market depth based on these top of book prices. The market data service in LMAX Demo records this activity, not the activity on the real order books in the LMAX Exchange Live environment.

3

What is the maximum position size for FX pairs on LMAX Exchange? The maximum position size differs for each instrument. This information, as well as information on other instrument parameters can be found by clicking the ‘i’ button next to the instrument when using the LMAX Exchange Web GUI.

What do Tick Size, Tick Value and Contract Size mean? Tick Size defines the granularity of the price of each product. e.g. for EUR/USD the tick size is 0.00001 which means the price of EUR/USD can be up to 5 d.p on LMAX Exchange. Any smaller increments will be rejected as invalid prices. Contract Size (lot size) defines the notional value of each contract on LMAX Exchange. The quantities received on the market data feed and the quantities sent on the order-entry feed are stated in number of contracts. 1 LMAX contract is 10,000 notional currency. For LMAX Exchange FX pairs the min quantity is 0.1 which is 1,000 notional currency. Tick Value (Tick Size x Contract Size) allows you to calculate your P&L based on the difference between the tick difference of the opening and closing prices of a trade.

What is the maximum frequency of price updates available on LMAX Exchange? Customers that are cross-connected to LMAX Exchange in either LD4 London or TY3 Toyko will be able to receive up to 1000 messages per second, which is 1 message per millisecond. LMAX Exchange currently publishes on the "millisecond end" and publishes the current order book state (millisecond time pulse). When LMAX Exchange Live accounts are created the default frequency is 10 updates per second per instrument. We aim to tailor a customer’s setup depending on where the customer’s servers are located around the world and factoring in the available bandwidth. Please contact [email protected] to discuss your requirements.

Does LMAX Exchange disconnect open connections over the weekend? Most weekends there is either an LMAX Exchange new release or maintenance being performed on the LMAX Exchange systems and so FIX sessions may be terminated. There will be some weekends where connectivity will remain up over the whole weekend.

4

Does LMAX Exchange have problems with arbitrage strategies? LMAX Exchange does not allow arbitrage.

Why was my Market FOK order spread over multiple fills? Market Orders will always be fully filled at the best available prices. You may receive one or more fills (multiple execution reports) for your fully filled Market FOK order.

What is the difference between Germany 30 & Germany 30 (Mini) and US SPX 500 & US SPX 500 (Mini)? The Mini instruments have smaller contract sizes and thus require smaller margins. The contract size is 2.5 EUR per point for Germany 30 and 1 EUR per point for Germany (Mini). US SPX 500 has a contract size of 25 USD per point and US SPX 500 (Mini) has a contract size of 10 USD per point.

5

API (.NET/Java) FAQ Info How can I request a list of all my working orders & positions in the market via API? When you log into the API you automatically receive a list of all your working orders and positions. You will need to make a PositionSubscriptionRequest and register a PositionEventListener in order to receive updates on your net (current open) positions, in addition to the individual orders. How do I receive my current balance, equity and free margin via API? You can receive those details by requesting the instruction “Account State” via .NET API, where you can receive the following details about your account state: _balance; _availableFunds; _availableToWithdraw; _unrealisedProfitAndLoss; _margin; _walletByCurrency; You would need to setup a listener in order to give the .NET API an instruction to follow after receiving this information. Why is there a discrepancy between LMAX Exchange live market data updates seen via FIX and the downloadable historical data using the API? The difference is due to throttling that is applied to a customer’s account/username. The historical data files always include every single top of book tick (not limited to the 1000 updates per second per instrument). Even with an unthrottled FIX or API feed that will provide up to a maximum of 1000 updates per second (1 message per m/s), there is no guarantee that the data will match what you see in the historical data files as these files will always include every top of book tick.

How far back in time does your historical market data go? The LMAX Exchange historical market data starts from October 2010 in the LMAX Live environment. The LMAX Demo environment includes a few months’ worth of historical data.

6

How do you access LMAX Exchange historical market data using the API? A customer subscribes to historic data events with a HistoricMarketDataSubscriptionRequest. This is just a subscription as the customer has not actually asked for any data yet. The customer then requests a date range and format for a specific order book using a TopOfBookHistoricMarketDataRequest(ticklevel) or AggregateHistoricMarketDataReque st (day/minute level), this will generate a number of events which send the customer “download URLs” for the files containing the data requested. Actually downloading the data is done outside of the API. The customer will need to work out the best way of downloading the data. Can CancelOrder raise an InstructionReject error (similar to PlaceMarketOrder & PlaceLimitOrder) or does the verification end on Success and Failure Callbacks? Yes, CancelOrder can raise an InstructionReject. Our API is asynchronous and the call to the callback "onSucess" only means that the instructions have reached the LMAX Exchange gateways and they have been able to parse it. This does not mean that the order has been executed. Upon successful execution, LMAX Exchange will send an event (for example an OrderStateEvent) and customers should listen and manage these events. If the instruction is rejected, you will receive an InstructionReject event. You need to have a listener to these events and react as convenient. How do I know the current exposure in the market? (Open Positions) In order to know this, it is necessary to create an instruction on the API to calculate this. Currently, LMAX Exchange does not send this information as it is. It can only be accessed through the Web UI. How can I request a list of all my Working Orders & Positions in the market? When you log in you automatically receive a list of your working orders and positions, but it is not possible to retrieve them afterwards due to system restrictions. To do this you have to log in again or use the Web UI.

7

FIX FAQ Info What version of FIX does LMAX Exchange use on the non-market maker side, also known as the LMAX Professional/Broker side? FIX4.4 (Please note the LMAX Exchange market-maker side uses FIX4.2) What order types does LMAX Exchange provide via FIX4.4? Market: Immediate or Cancel (IOC) & Fill or Kill (FOK) Limit: Good for Day (trading session), Good till Cancel, IOC & FOK Stop: Good for Day (trading session), Good till Cancel Stop Limit: Day (trading session), Good till Cancel

Can I get information about my balance and positions via FIX? This information is not available via LMAX FIX. In the Demo environment you can view balance and positions using the LMAX Exchange Demo Web GUI – https://web-order.london-demo.lmax.com. Alternatively, you could write a small piece of code using the LMAX .NET or Java API to request this information. If required please send an email to [email protected] to request the LMAX API documentation and specify whether you prefer Java or .NET.

When sending a FIX OrderCancelReplaceRequest (35=G), is Tag 38 (OrderQty) the remaining (unfilled) quantity of the order or the original quantity? FIX Tag 38 can be either of these. The remaining quantity will be cancelled regardless of what quantity you populate this FIX Tag with.

8

If an instrument is suspended, do you send indicative rates? We do not send out indicative rates. If an instrument is suspended the market data stream would stop. We allow our Liquidity Providers (Market Makers) to cancel their orders during a suspension so it is possible to receive Market Data updates to reflect the removal of liquidity e.g. 35=W with NoMDEntires 268=0. Once the instrument is re-opened the market data stream will start up again. If an order is sent, an execution report with reject INSTRUMENT_SUSPENSION will be sent in response.

Can you provide some examples of common Session Level Reject messages (35=3)? A session level reject message will be sent in response to a message which is structurally invalid. Tag 373 identifies the reason for a session level reject; below are some common values that are contained in this tag: 0 = Invalid tag number – the client is sending a tag that is not supported on LMAX FIX 4.4 1 = Required tag missing – a mandatory tag is missing from the client’s FIX message 2 = Tag not defined for this message type – the client is sending a tag that is not specified in our FIX Specification for this particular message type 3 = Undefined Tag – the client is sending a tag that is not supported on LMAX FIX 4.4 4 = Tag specified without a value – there is no value for a given fix tag (e.g. 48=) 9 = CompID problem – the client is sending an incorrect TargetCompID 11 = Invalid MsgType – LMAX FIX 4.4 does not support the MsgType being sent by the client I am having trouble sending a TradeCaptureReportRequest message, can you provide an example? Ensure you have set Tag 580 (NoDates) = 2 and populated Tag 60 (TransactTime) twice as this is a repeating group. TransactTime corresponds to start (first entry in repeating group) and end (second entry in repeating group) timestamp of the period for which trades should be retrieved expressed in UTC. See the below example: 8=FIX.4.4|9=146|35=AD|34=3349|49=xxx|52=2015022010:50:04.148|56=LMXBL|263=0|568=390041488433|569=1|580=2|60=2015022008:50:04.148|60=20150220-10:50:04.148|10=081|

9

What are some standard LMAX Exchange FIX rejection reasons? INSTRUMENT_DOES_NOT_EXIST, // Self-explanatory. INSTRUMENT_NOT_OPEN, // Self-explanatory. PRICE_NOT_VALID, // Invalid price specified on order: Higher than maximum price, lower than minimum price, too many decimal places, not a valid price increment. QUANTITY_NOT_VALID, // Invalid quantity specified on order: Less than minimum order quantity, too many decimal places, not a valid quantity increment. EXPOSURE_CHECK_FAILURE, // Account does not have sufficient trading resources to support the order. DUPLICATE_ORDER, // Duplicate InstructionId (ClOrdId on FIX). UNKNOWN_ORDER, // Unknown order to cancel when cancelling or cancel/replacing an order. INVALID_MARKET_DEPTH, // Market data request for too much depth. INVALID_UPDATE_TYPE, // Market data request for invalid market data type. INSTRUMENT_SUSPENDED, // Self-explanatory. TEMPORARY_SUSPENSION, // Automated suspension. OUTSIDE_ALLOWED_PRICE_RANGE, // Outside volatility band. MAXIMUM_POSITION_EXCEEDED, // Accepting order would potentially lead to position limits being exceeded. ACCOUNT_IN_LIQUIDATION, // Account is being liquidated and cannot accept new orders What are some standard LMAX Exchange FIX messages? Trading ********** Logon 8=FIX.4.4|9=104|35=A|49=xxx|56=LMXBL|34=1|52=2015021522:01:05|98=0|108=30|141=Y|553=xxx|554=###########|10=005| 8=FIX.4.4|9=72|35=A|49=LMXBL|56=xxx|34=1|52=2015021522:01:05.495|98=0|108=30|141=Y|10=065| New Order 8=FIX.4.4|9=128|35=D|49=xxx|56=LMXBL|34=2028|52=2015021315:05:14|11=54897|18=H|22=8|38=1000|40=1|48=4001|54=1|59=0|60=2015021315:05:14.084|10=166| Execution Report 8=FIX.4.4|9=215|35=8|49=LMXBL|56=xxx|34=2091|52=2015021315:05:14.077|1=1820613222|11=54897|48=4001|22=8|54=1|37=AAGJHQAAAAJwThP5|5 9=3|40=1|60=2015021315:05:14.077|6=0|17=bIRaZgAAAALC2TsW|527=0|39=0|150=0|14=0|151=1000|38=1000| 10=220|

10

OrderCancelRequest 8=FIX.4.4|9=157|35=F|49=xxx|56=LMXBL|34=320814|52=2015022009:15:03.524|41=1424379907-310727|11=1424379907310733|48=100889|22=8|54=1|60=20150220-09:15:03.524|38=10|10=150| OrderCancelReplaceRequest 8=FIX.4.4|9=183|35=G|34=169077|49=xxx|52=2015022009:14:42.661|56=LMXBL|11=Feb20026604DAX1|18=Q|22=8|38=50|40=2|41= Feb20026604DAX1|44=10986.3|48=100097|54=1|59=0|60=2015022009:14:42.660|10=018| OrderStatusRequest 8=FIX.4.4|9=85|35=H|49=xxx|56=LMXBL|34=2|52=2015022010:17:54.279|11=57080.5|48=100637|22=8|54=2|10=141| TradeCaptureReport 8=FIX.4.4|9=146|35=AD|34=3349|49=xxx|52=2015022010:50:04.148|56=LMXBL|263=0|568=390041488433|569=1|580=2|60=2015022008:50:04.148|60=20150220-10:50:04.148|10=081| Heartbeating 8=FIX.4.4|9=57|35=0|49=LMXBL|56=xxx|34=2105|52=20150213-15:05:44.079|10=137| 8=FIX.4.4|9=53|35=0|49=xxx|56=LMXBL|34=2029|52=20150213-15:05:44|10=188| Market Data *************** Logon 8=FIX.4.4|9=104|35=A|49=xxx|56=LMXBLM|34=1|52=2015021522:01:05|98=0|108=30|141=Y|553=xxx|554=#############|10=005| 8=FIX.4.4|9=72|35=A|49=LMXBLM|56=xxx|34=1|52=2015021522:01:05.495|98=0|108=30|141=Y|10=065| Market Data Request 8=FIX.4.4|9=1150|35=V|34=2|49=xxx|52=2014121108:55:54|56=LMXBLM|262=2014121108_55_54|263=1|264=1|265=0|267=2|269=0|269=1|146=71|48=4001|22=8|48=4008|22=8| 48=4007|22=8|48=4009|22=8|48=4016|22=8|48=4015|22=8|48=4011|22=8|48=4003|22=8| 48=4006|22=8|48=4001|22=8|48=4017|22=8|48=4014|22=8|48=4012|22=8|48=4005|22=8| 48=4002|22=8|48=4013|22=8|48=4010|22=8|48=4004|22=8|48=100479|22=8|48=100481| 22=8|48=100483|22=8|48=100485|22=8|48=100487|22=8|48=100489|22=8|48=100491|22 =8|48=100493|22=8|48=100495|22=8|48=100497|22=8|48=100499|22=8|48=100501|22= 8|48=100503|22=8|48=100505|22=8|48=100507|22=8|48=100509|22=8|48=100511|22=8| 48=100513|22=8|48=100515|22=8|48=100517|22=8|48=100519|22=8|48=100521|22=8|48 =100523|22=8|48=100525|22=8|48=100527|22=8|48=100529|22=8|48=100531|22=8|48= 100533|22=8|48=100535|22=8|48=100537|22=8|48=100539|22=8|48=100541|22=8|48=10 0543|22=8|48=100545|22=8|48=100547|22=8|48=100613|22=8|48=100615|22=8|48=1006 17|22=8|48=1006

11

19|22=8|48=100667|22=8|48=100671|22=8|48=100669|22=8|48=100673|22=8|48=100675 |22=8|48=100093|22=8|48=100677|22=8|48=100637|22=8|48=100639|22=8|48=100097|2 2=8|48=100806|22=8|48=100807|22=8|48=100679|22=8|48=100681|22=8|10=094| Market Data update 8=FIX.4.4|9=181|35=W|49=LMXBLM|56=xxx|34=2|52=2014121108:55:53.459|262=2014121108_55_54|48=100097|22=8|268=2|269=0|270=9855.2|271=20|272=20141211|273=08:55: 53.261|269=1|270=9856.7|271=30|10=033|

12

View more...

Comments

Copyright � 2017 SILO Inc.