Still working with LMAX so will post a bit more data. Below we see the actual price improvement data, as before, but an additional field "msecs:" shows the time between Order Submission and Acknowledgement.
The typical latencies are around 70 msecs or less. Some latencies are as low as 23 msecs. Certainly there is high consistency with Order Processing times <70 msecs. This is running on a Quad Xeon dedicated server running Linux Centos and Oracle Java Server VM 7 Update 71 situated in Germany over the public internet, which is why the latencies are lower than I could have achieved from my U.S. location. I set the triggering criteria over VNC connection to the Java Swing user interface, but the core logic is on the server.
This is Java code, using LMAX's Java API written with as much concurrency and performance as I could manage.
Keep in mind that there are 2 distinct types of Order submissions. 1) Resting limit orders outside the market, which are "hit" by the market, and 2) Limit orders submitted by the Triggering System which are designed to fill instantly by hitting >Ask to Buy and striking <Bid to Sell so these would not yield price improvement if they strike the market precisely at the Inside.
But, to ensure a fill from the Triggering, often we strike with Limit orders priced slightly above the Ask to Buy, maybe 0.2 PIPs above, or strike slightly below the Bid to Sell, thus giving us the best available Retail price, which essentially emulates what a Market Order would do, an immediate fill.
Probably I should differentiate between these two Order placement methods.
LMAX is best described as "rock solid" and highly consistent in responding to Orders with no detectable "slippage" and no "requotes or counterparty rejections" which are simply not possible on this exchange. It's a scalper's "dream come true".
Later we will move to their FIX API but this is enough performance for our needs now.
HyperScalper
Example, here is clearly a Resting Limit Order outside the market which fills with 1 PIP price improvement (10.0 tenths of a PIP):
01-15 16:42:04.233 USDJPY BUY B<<<<<<<<<* (10.0)
wPI: 10.00
qty: 0.01m @ prc: 116.951
ask: 116.961
msecs: 23
LMAXoid: AAGJIwAAAAJs8z9Q
The above record says that a BUY with a resting limit order was filled
below the ASK price (denoted by the *) by 10/10 PIP which is substantial
"wholesale" price improvement.
Code:
01-15 01:05:31.039 EURUSD BUY B* (0.0) wPI: 0.00 qty: 0.001m @ prc: 1.17763 ask: 1.17763 msecs: 74 LMAXoid: AAGJHQAAAAJsqCW6
01-15 01:41:48.465 EURUSD BUY B<* (2.0) wPI: 2.00 qty: 0.001m @ prc: 1.1774 ask: 1.17742 msecs: 81 LMAXoid: AAGJHQAAAAJsqGH4
01-15 01:41:54.646 EURUSD BUY B* (1.0) wPI: 1.00 qty: 0.001m @ prc: 1.17736 ask: 1.17737 msecs: 68 LMAXoid: AAGJHQAAAAJsqGJ+
01-15 01:42:53.040 EURUSD SEL *S (1.0) wPI: 1.00 qty: 0.001m @ prc: 1.17753 bid: 1.17752 msecs: 69 LMAXoid: AAGJHQAAAAJsqGP4
01-15 01:43:15.118 EURUSD SEL *>S (2.0) wPI: 2.00 qty: 0.001m @ prc: 1.17756 bid: 1.17754 msecs: 70 LMAXoid: AAGJHQAAAAJsqGQZ
01-15 05:24:51.226 EURUSD BUY B* (0.0) wPI: 0.00 qty: 0.005m @ prc: 1.17696 ask: 1.17696 msecs: 71 LMAXoid: AAGJHQAAAAJsqZDy
01-15 05:59:01.215 EURUSD SEL *>S (2.0) wPI: 2.00 qty: 0.005m @ prc: 1.17686 bid: 1.17684 msecs: 69 LMAXoid: AAGJHQAAAAJsqeLS
01-15 06:21:22.282 EURUSD SEL *>S (2.0) wPI: 2.00 qty: 0.005m @ prc: 1.17637 bid: 1.17635 msecs: 82 LMAXoid: AAGJHQAAAAJsqiO7
01-15 16:42:04.233 USDJPY BUY B<<<<<<<<<* (10.0) wPI: 10.00 qty: 0.01m @ prc: 116.951 ask: 116.961 msecs: 23 LMAXoid: AAGJIwAAAAJs8z9Q
01-15 17:00:04.609 USDJPY BUY B<<<<<<<* (8.0) wPI: 8.00 qty: 0.001m @ prc: 116.935 ask: 116.943 msecs: 22 LMAXoid: AAGJIwAAAAJs9O65
01-15 17:00:05.925 USDJPY BUY B<<<<<<<<<* (10.0) wPI: 10.00 qty: 0.009m @ prc: 116.935 ask: 116.945 msecs: 22 LMAXoid: AAGJIwAAAAJs9O65
01-16 03:06:10.229 USDJPY SEL *S (0.0) wPI: 0.00 qty: 0.01m @ prc: 116.227 bid: 116.227 msecs: 80 LMAXoid: AAGJIwAAAAJtCz1z
01-16 03:27:47.807 USDJPY SEL *>>>>S (5.0) wPI: 5.00 qty: 0.001m @ prc: 116.267 bid: 116.262 msecs: 70 LMAXoid: AAGJIwAAAAJtC27W
01-16 03:27:59.098 USDJPY SEL *>>>>S (5.0) wPI: 5.00 qty: 0.006m @ prc: 116.267 bid: 116.262 msecs: 70 LMAXoid: AAGJIwAAAAJtC27W
01-16 03:28:38.426 USDJPY BUY B<<* (3.0) wPI: 3.00 qty: 0.007m @ prc: 116.244 ask: 116.247 msecs: 74 LMAXoid: AAGJIwAAAAJtC3Ep
01-16 04:15:10.310 USDJPY BUY B<<<<<<<<* (9.0) wPI: 9.00 qty: 0.012m @ prc: 116.163 ask: 116.172 msecs: 69 LMAXoid: AAGJIwAAAAJtC9L+
01-16 04:17:14.735 USDJPY SEL *>>>S (4.0) wPI: 4.00 qty: 0.012m @ prc: 116.199 bid: 116.195 msecs: 73 LMAXoid: AAGJIwAAAAJtC9Y3
01-16 04:35:14.292 USDJPY BUY B<<<* (4.0) wPI: 4.00 qty: 0.012m @ prc: 116.402 ask: 116.406 msecs: 76 LMAXoid: AAGJIwAAAAJtC/0j
01-16 04:35:21.219 USDJPY SEL *>S (2.0) wPI: 2.00 qty: 0.012m @ prc: 116.426 bid: 116.424 msecs: 23 LMAXoid: AAGJIwAAAAJtC/2M
01-16 04:48:57.828 USDJPY BUY B<<<<* (5.0) wPI: 5.00 qty: 0.013m @ prc: 116.356 ask: 116.361 msecs: 69 LMAXoid: AAGJIwAAAAJtDBJG
01-16 14:11:10.780 USDJPY SEL *>>>>S (5.0) wPI: 5.00 qty: 0.01m @ prc: 116.682 bid: 116.677 msecs: 23 LMAXoid: AAGJIwAAAAJtMFMB
01-16 14:11:10.783 USDJPY SEL *>>>>S (5.0) wPI: 5.00 qty: 0.005m @ prc: 116.682 bid: 116.677 msecs: 23 LMAXoid: AAGJIwAAAAJtMFMB
01-16 19:52:21.598 USDJPY SEL *>>S (3.0) wPI: 3.00 qty: 0.001m @ prc: 117.559 bid: 117.556 msecs: 68 LMAXoid: AAGJIwAAAAJtUYG2
01-16 20:01:46.727 USDJPY SEL *S (1.0) wPI: 1.00 qty: 0.015m @ prc: 117.492 bid: 117.491 msecs: 68 LMAXoid: AAGJIwAAAAJtUbw9
01-16 20:11:44.187 USDJPY SEL *S (0.0) wPI: 0.00 qty: 0.01m @ prc: 117.544 bid: 117.543 msecs: 69 LMAXoid: AAGJIwAAAAJtUfWS
01-16 20:12:16.885 USDJPY BUY B<* (2.0) wPI: 2.00 qty: 0.001m @ prc: 117.562 ask: 117.564 msecs: 68 LMAXoid: AAGJIwAAAAJtUfix
01-16 20:16:24.606 USDJPY SEL *S (0.0) wPI: 0.00 qty: 0.024m @ prc: 117.547 bid: 117.546 msecs: 69 LMAXoid: AAGJIwAAAAJtUhAk
01-16 20:37:07.223 USDJPY SEL *>>S (3.0) wPI: 3.00 qty: 0.01m @ prc: 117.545 bid: 117.542 msecs: 72 LMAXoid: AAGJIwAAAAJtUqGx