LMAX - perfect platform for HFT?

Hello everybody,

not that long ago I encountered a broker called LMAX.
I was impressed with their MTF technology that to the best of my knowledge was available only for the largest investment institutions in the world.
It was very impressing that individual traders as me could use that modern technology.
Before coming across with LMAX I knew some ECN brokers having execution time from 200 to 400ms.

LMAX claims execution time averaging 4ms !!!
I think right now they are the best option for algorithmic traders.

What is your opinion about them?
Have you heard of LMAX and MTF technology before?

Kind regards,
Michael

1 Like

Hey Michael, just ran across your post. I have a trading platform which enables semi-automatic multi-order incremental scalping on Dukascopy. For a while, we were happy with Dukas, but we investigated their intra-spread liquidity. Turns out that Dukas matches Best Bids and Offers (they have a special order type for that) only with their brokerage clients. So the probability of a wholesale fill inside the spread is improbable, and if you get hit, the fill sizes are nowhere near what you are requesting. Meaning it’s a good Retail liquidity brokerage, but its “wholesale” liquidity, contrary to their claims, is near zero.

So… with great hesitancy my partner agreed we’d migrate the software to LMAX looking for “partial wholesale” fills inside the spread, tighter spreads, and faster execution times. After many weeks of work, we now have an Alpha quality platform available.

Our original platform code is Java, which used the Dukascopy API. To preserve the core logic, we had to fully emulate the Dukascopy IEngine with all of the conversions between LMAX data formats to the Dukas values. This means that we can submit dozens of simultaneous orders, and expect to be able to cancel/replace in under 100 msecs, probably well under 50 msecs from a colocated server.

So, yes, you are correct that for scalping with the possibility of at least partial wholesale fills, fastest possible execution and “no last look” all point to LMAX for Forex trading. I’ll post more result in a few days once we get performance optimized and stability under stress testing.

HyperScalper

I can confirm that LMAX is most likely the best venue for “HFT” trading. My own style is micro scalping with multiple simultaneous limit orders, which we have confirmed “make the spread” in most cases. I call this “wholesale” pricinig, but it’s a matter of semantics. If you are a specialist trader with “high frequency” precision trading requirements, then I can highly recommend execution on LMAX.

But I know traders get all excited about things like this, and I must caution you that if you are not an “algorithmic” trader with specialist requirements, and if you cannot develop to an API with confidence, then you should NOT consider LMAX as it reallly offers no advantages to the normal retail trader. You would be better to use Dukascopy or other such retail brokerages. LMAX does not offer the “creature comforts” which most traders need but, when it comes to execution, there’s nothing better I can say, having “thrashed” the system now for more than a full week and wrung all of the bugs out of our interactive trading platform.

One more thing: U.S. persons cannot obtain LMAX accounts due to FATCA and other issues of regulation. As a U.S. person myself, I’ve had to partner with a European firm in order to work with LMAX.

Good Trading !
HyperScalper

Let me tell you how it goes with FXCM.

  • up to 3, 4 quotes / second, and even more
  • stable connection round the clock
  • fast execution (native c++ API)
  • max 1.5 pips slippage between request and confirmation
  • API is free. No $10000 deposit, no $250 one time fee activation, no ECN connection per request, no $500 mil trade size per month, no $50 minimum commission, etc etc.

I wish all those brokers with FIX API and crazy requirements to go to h**l for the moment.

Just to show an example here, first of all we see only slight price
improvement on these 6 transactions (3 Buy and 3 Sell) but there is
some price improvement nevertheless.

The >>> and/or <<< symbols indicate tenths of a pip price improvement
and some fills were obtained by “hitting the bid/ask” so price improvement
would not be expected. 3 staggered Buys, and then 3 staggered Sells
completes the “Long trade” sequence back to flat again.

An Average Buy and Average Sell indication is a guide to the overall
positive result for this scalp sequence on LMAX. The reason the display looks
weird is that I’m viewing it with VNC but it’s Java running on a remote
dedicated Linux server running the Gnome desktop.

Just to explain a bit further, when Buying here, the software “reacts” to a
pullback and strikes the ASK to Buy. So no price improvement would
be expected. On the Sell operations a couple of them are resting limit
orders so some price improvement would be expected. Sometimes you
want to get in “now” (so you strike retail) and sometimes you want to
wait to get a more “wholesale” type of fill inside the spread.

Times are in GMT(UTC).



Does it have a special order type where you say fill at this price or cancel my order otherwise ?
I tell why, because you can compute the profit at +1 pip + commission and they fill the order at a different price that you cannot control and you end up with -1 pip + commission.

Hi, well I can answer that for you but first of all, remember that this is using an API.
LMAX offers 3 ways to interface with the exchange: 1) Java API, 2) DotNET API or 3) FIX API.
As I said, this is for “pro” traders.

Both 1) and 2) are using a “web services” approach, for which they give you
an API which is a fairly “thin” layer over the underlying XML type interchange.

For FIX, I am not an expert, and we chose not to use that approach right now, as
it doesn’t give us any advantage, and anyway we started with Java software with
which I am an expert. Having never used FIX, that was a learning curve I wanted
to delay until later.

It took me about 90 days to port our software, but that was due to some emulations
of Dukascopy API, specifically IEngine internal order tracking, which we wanted to
do to preserve the “core logic” of the app as much as possible. Now, to answer
your question :slight_smile:

LMAX supports normal Market orders, and Limit orders. With a Limit order, you cannot
be filled at a “worse” price, but you may certainly be filled at a “better” price, so your
issue does not arise when Limit orders are used.

As for more “exotic” types, such as “Fill or Kill” (FOK) I am not sure, but that would
be through the FIX API, most likely, if available. Of course LMAX supports simultaneous
multiple Limits both above and below the market. One thing I found weird was that
price change was not supported (in the Java API) so we need to Cancel and then place
a new Order at the new Price/Quantity. FIX might support an “atomic” cancel/replace
but I am not sure.

LMAX offers a web-based trading platform. Personally I don’t like it at all, but it doesn’t
matter for our purposes. Third parties, like MultiCharts and I believe Ninja offer interfaces
to LMAX and some trading methods which normal traders would find familiar.

But as I will continue to say, unless you are a “hard core” algorithmic micro scalping
professional user, you should NOT choose LMAX. It really doesn’t offer that much
advantage for a retail trader, and the available software interfaces are limited.

But if you have a pro trading operation, and specialist software or are fortunate enough
to know how to develop yourself, then LMAX can be a huge advantage.

They also have inactivity fees, so the casual trader won’t like that. For professionals,
these are insignificant relative to the speed, precision and “better than retail” pricing
which LMAX offers.

Incidentally, anyone who wants to watch the LIVE LMAX Books can use this link:

https://s3-eu-west-1.amazonaws.com/lmax-widget3/website-widget-vwap.html

0.1 is their smallest size (1k), and you will see that all Bids and Offers affect the book,
and all participants enjoy a “level playing field” for execution.

Hope this helps, Good Trading !
HyperScalper

Yes, I understand. But FXCM’s offerings in many ways cannot be compared to LMAX,
they are just for very different trader audiences. Congratulations if you wrote a C++
API application !! So I’m not in any way minimizing your post, thanks for the information,
but LMAX allows all participants to “make the market” and be “liquidity providers” and
there are almost no exchange venues which truly offer that.

When proper trading methods are used, “slippage” and “requotes” are non-existent on
LMAX, as it is a true “exchange” and liquidity inside the spread is dependent upon the
participants at every instant in time. You are not required to “buy retail” from Banks
and large Market Makers. You can compete with them on the same “level” playing
field for fills. So you become a “mini market maker” yourself which, as I say, for a
pro trading operation makes a huge difference.

For professionals, this is
the difference between hundreds and thousands per day. Good Trading ! HyperScalper

HyperScalper, you put some valuable information in this thread. I really appreciate it.
Yes, I recognized the linux from the scroll bar and window border.
Good for you, that you get it ported,running,bug free :slight_smile: Congratulations!
I hope you will continue to share you experience with LMAX in this thread.

Here’s another scalp just completed. During the U.S. afternoon, there is
nearly no price movement, so often these are just “practice” trades even
though they are live.

Here the trading plaform is running remotely on a Linux Quad Xeon dedicated
box near the UK, where the LMAX exchange is located. This reduces the network
latency, and allows us to “reactively strike” on a “price snap”. These are typically “retail”
strikes, so we Buy by placing a Limit Order at the ASK at that moment when we
see the pullback we want. So no price improvement. (The snap pullback is the
price improvement we were looking for, rather than liquidity inside the spread…)

The last closing Target was allowed as a Limit order to just stay in the market,
but it did not receive more than about 0.2 PIP price improvement due to a near
zero level of “retail counterparty liquidity”.

In this type of trading, by the way, or in any trading, just “flipping a coin” to
decide whether to go Long or Short just doesn’t work. Analytics indicating the
market trend are required (not shown here) to keep us trading “in the right
direction”.

Good Trading ! HyperScalper



One of the goals of our trading operation was to be able to trade “wide spread”
Currency Pairs such as GBP/JPY . This pair has a fairly wide range, but it also has
a wide Bid/Ask spread which makes it nearly impossible to trade with only
Retail pricing. In the attached graphic, a Limit order at Best Bid was filled, and
subsequently a limit at Best Offer. Careful measurement shows that a substantial
portion of the spread was “made” rather than “paid”.

The >>>> and <<<< notations show how many Tenths of a PIP better than
the retail price (wholesale price improvement) were obtained.

Thus, even though the market price does not move at all, or moves only very
little, it is possible to be profitable. Good Trading ! HyperScalper


I always having a glance with hft trading system, some said it built for specialist traders only. well, anywhere to trade better reconsider what the cost of your trade , each transaction. i do scalp trade as my primary method, i’m noobs with hft, and i wish to learn more, and I taking consider the HFT idea into my armada markets account, perhaps i cant said they’re perfect for it, narrowed spread and execution are fair enough, but it’s not the issue i’ve been thinking about. well, HFT in my noobs mind, means a fast lighting order, fast in fast out, catch the market price even before it taking breathe.
first thing to come in my mind, do we take this routine eventually, at regular basis. fast order fast exit, could it be means a more order executed ? how bout the cost for each transaction?. said with normal scalp method without consider HFT, we only able to grap 100 orders a monthly, so when it took hft supported is should expand the trades executed? for ex 200 trades. correct me if i’m wrong, i’m just a retail trader, and i use my common sense well, an extreme overtrade scalp are only good for them, as the collect more from the commision.

Good points. 1) HFT is for specialist institutions. For individiual professional traders, I think it’s best to use the term “Active Micro Scalping”. 2) Fast in / fast out and primarily winning the spread is NOT what the technique does, as it is not practical except for institutions. 3) Contact someone who does “active day trading” and gain access to specialist analytics and order entry software if you wish to adopt similar techniques yourself. I call the style of trading “incremental micro scalping” because it is not “one shot in, one shot out” but a process or methodology of “continuous trading”. Most importantly it is “specialist trading” for a trading business, and cannot be done by underfunded or inexperienced traders. Stick with “swing trading” and you’ll be happier :slight_smile: would be my advice. But to develop a specialist trading business you need to treat it as a business, and invest in the right software and training to succeed. HyperScalper

I thought scalping/HFT/news trading is forbidden with LMAX. They made it very clear when I asked about it in their live support.

Can you tell me what that means? In my view it has no meaning whatsoever. Trades taken which happen to coincide with “news” are just trades. Scalping is just trading for smaller targets on shorter timeframes, which is, again, just trading. In their sample applications they show complete “unthrottled” code which cancels and places new orders every single time the Bid/Ask changes. Something I would never do, but absolutely no concept of a maximum trade rate. Dukascopy, for example, limits changes to a given order to a maximum of 1 change per second. So I am interested if you get some clarification on what that means, and just how such a policy would be applied. In my own trading, I am not “abusive” of the exchange, which is somehow what I believe the policy is intended to “police”, but there do not appear to be any restrictions either implemented by the software (I use the Java API) or in actual practice as I have been actively “thrashing” the exchange (in a responsible manner) now for 2 weeks. Someone please clarify, or I guess we could ask LMAX what they intend. After all, high performance is one of their selling points… Seems somewhat bogus to me, and we’re actually using it “in anger” Live, with perfect response from the exchange, by the way… My software might have some limitations/bugs (mea culpa :)) but LMAX performs flawlessly. You can be absolutely certain that the “institutional liquidity providers” are using HFT with sub-millisecond rates. But not us ordinary “retail” users, who happen to be able to get “wholesale” pricing on LMAX. It’s such a breath of fresh air to be able to “steal” liquidity from “under their noses” due to the LMAX exchange’s Fair FIFO executions. Just amazing… HyperScalper

Your post got me thinking so I read their customer agreement, and their api agreement and could see nothing which suggested that “scalping/HFT/news trading is forbidden” . As with all exchanges, cases where software has some pathological bug which loops endlessly submitting orders, or very extreme trading patterns might be deemed by them to constitute “abuse”. However, it clearly states they would notify you about their concerns and permit you to correct any perceived problems.

Their documents are:

http://www.lmax.com/pdf/Customer-Agreement.pdf

And more are located generally on this page:
Become a Client | LMAX Professional

The LMAX “Disruptor” has for years been touted as capable
of handling an incredible number of transactions per second
so, again, fast and accurate trading is part of LMAX’s “DNA”.

HyperScalper

Hi HyperScalper,

From what I can understand you have opened an account both with Dukas and LMAX; a part from execution speed, which one would you recommend for retail traders? It seems you are more prone to recommend Dukas, for retail, although you seem very enthusiastic of LMAX; why so?

I have had experience with JForex and intend to use LMAX API but not for HFT. I prefer .NET to Java, personally.

I have recently opened a DEMO account with LMAX and I find a bit cumbersome to use it. It might sound a stupid question, but do they have volume published for FX? I was not capable of finding volume as simple indicator. I have not tried their API, yet, but I understand that the meat is through JSON and/or XML and they have simply written wrapper around the web implementation. As a side question and getting back to the inactivity commission topic: are you aware whether they charge you inactivity commission if you interrogate directly their web API?

A final question is : what is their minimum lot size? I think they allow up to mini lots; am I right?

Sorry if for they many questions and to be somehow off-topic, but I think your view will be definitely precious to others and I in doubt precisely between Dukas and LMAX and I think you are the ideal person to ask, given your experience. Thanks in advance.

It would be best if we discussed the many issues in a PM, but let me address your questions here as best I can.

LMAX Demo accounts are crap. Dukascopy Demo accounts are almost “the real thing”. We had to negotiate a Live account at LMAX in order to get a decent development environment, and were treated poorly. Eventually they apologized to us for the way they treated us at LMAX but, by then, we were used to “do it yourself”.

If you have the choice between LMAX and Dukascopy the only sane choice would be Dukascopy. For our proprietary trading we run several JForex strategies which are “swing” type trading approaches using Dukascopy and various colocated servers. Unless you use MetaTrader, which is not well integrated by Dukascopy, and especially if you can develop Java-based software using their IStrategy and standalone API functions, Dukascopy has no parallel anywhere. Hands down, it’s the best environment for “retail” trading and automation.

We have a Micro Scalping platform which runs using the standalone Dukascopy API, but we were unable to get any wholesale pricing inside the spread, using their PLACE_BID and PLACE_OFFER Order Entry types. On investigation, we began to realize they were “dead inside the spread” so that it was impossible for us to get Wholesale Price improvement at Dukascopy. So I proposed to my partner that we port the platform to LMAX, not realizing how difficult that was going to be !!

I am a real-time high performance multi-threaded Java expert / junkie but, in order to port our multi-threaded platform took me about 4 months work, mostly because it has a huge number of functions heavily specialized for fast Micro Scalping. I emulated the entire Dukascopy IEngine API over LMAX’s Java API which, in itself, was difficult since the core logic needed to be preserved as much as possible. So I had to learn things about Java which previously only God seemed to know, and there ain’t really anybody who will give you any real help. Maybe you’ve been there :slight_smile:

Long story short, now that we have the platform ported, I must say that LMAX is absolutely incredible since it really does give us 1) wholesale pricing power, and 2) 50% tighter spreads than Dukascopy and 3) even faster order entry than Dukascopy. But the work involved in doing this was far more than most mortals would be able to handle but, hey, “no pain, no gain” right?

Now to your specific points:

Choose Dukascopy for normal retail scalping or trading. PM me if you are wondering about scalping on Dukascopy, which can be done very well. It was only the “wholesale” pricing which we wanted, that spurred our painful but hopefully lucrative development on LMAX. For all other types of trading, Dukascopy is the place to be, and both C# (dotNET) crap and Java are virtually the same thing, as C# is just a rip-off of most of Java’s concepts, I’ve done Visual Studio stuff but prefer pure Java myself.

Honestly, I’d advise you stay away from LMAX unless you have some really crazy, really price sensitive, requirements which cannot be done at Dukascopy. And that’s really almost nothing except for wholesale pricing, so really there’s no reason for you to consider working with LMAX. However, if you do have some special requirements which only LMAX can deliver, you are probably Certifiably Insane. Just kidding. But seriously, there’s almost nothing except wholesale pricing which Dukascopy can’t deliver for you. We can talk about it.

If you are using LMAX, that means you are a Pro trader with special requirements. Therefore, you should not be concerned with “inactivity” fees since you’re going to be doing volume and making Money, right ? Besides, everything is “negotiable” if you are a professional.

Both Dukascopy and LMAX Forex minimum Lot Size is 1000 currency units, which LMAX calls 0.1 and Dukascopy calls 0.001million. They have comparable commissions. There is no real maximum Lot Size so I think where you said “they allow up to mini lots” you probably meant “down to mini lots” but it’s actually down to what might be called “micro lots” anyway 1000, where 100,000 would be considered a “standard lot”.

If there’s a PM facility on this forum and you want to talk about it, contact me or get in touch by googling my username, and perhaps we can discuss in-depth or you can clarify your needs. Or check my profile, maybe there’s info in there. It’s all about traders helping traders, right ? With Dukascopy I can certainly help with lots of advanced API stuff.

As you might have gathered from my Love/Hate relationship with LMAX, this project was so difficult that I nearly regret having ever started it. For our trading business, now the pressure is on me to deliver profits, having put such a huge amount of software effort into porting our interactive micro-scalping trading platform to LMAX.

Hey, Live and Learn, right? No B**ls, No Glory. Maybe my next project will be to delve into FIX and push further onto LMAX now that I see what is possible, but it DEFINITELY IS NOT for 99.99% of Forex traders, let me make that absolutely clear.

I can clue you into details of the LMAX API’s if you really are insane enough to try and work with them, and I’m not kidding about that, Insane would be the word. For example, during a long-running session, we are unable to resynchronized with the LMAX exchange to determine the state of Live orders. As a workaround, I just spawn off a sub-process which logs in, and receives a one-time “block push” of the Order states, which I can then validate against the main trading process “view” of the orders collection. With FIX I believe you can do much more, but small workarounds like that are just fine, given that I wasn’t prepared to delve into FIX in porting our platform, there were so many variables and unknowns as it was just with the Java API.

We get 5 Levels of Market Depth up to 12 times per second on a Forex currency pair. We get amazing pricing, extremely fast multi-order processing simultaneously on both sides of the market, but it’s “bare bones” otherwise, so you get the idea I hope. But with Dukascopy you can much more easily get multiple simultaneous orders on both sides of the market, etc., so only wholesale pricing is really given to you with LMAX which, for most Forex traders, is completely irrelevant. Capiche? :slight_smile:

Good Trading !
HyperScalper

Hi HyperScalper,

Thank you so much for such a comprehensive reply, full of precious information.

I have tried to contact you through private messaging, but I am not allowed since I do not have enough privileges. I am posting on your ‘wall’ (‘Visitor Messages’ on your profile).

Thanks again and more on this there.

Hi!

In this forum you mentioned that earlier traded at Dukaskopy and can help. For a long time looking for a real ECN broker. So far my search failed.

Recently became interested in the subject of HFT, so for me the real ECN vital topic! As far as I know is the real broker that allows you to set a price within the spread, then it becomes the best price. But somewhere in the forum read your message about what Dukaskopy dies within the spread. What do you mean? They do not allow you to change the best Bid and Ask prices? Is all that remains for me is Lmax? Although again on the forum you write that they are not ECN? I’m confused! Tell all really?

If Dukaskopy real ECN whether they will issue a reject my limit orders small volume of 0.01 Lot? Whether the data amount of output on the interbank market or will they reject and reduced with regular customers Dukascopy like me?