Fame and fortune as a liquidity provider for Australian and New Zealand dollars? (maybe not)
So my latest trading/programming project was to scalp the Australian New Zealand dollar crossrate (AUD/NZD), to grab a tick or two by attempting to get filled at the bid for buy orders and at the ask for sell orders and then offset the position through triangular arbitrage.
Triangular Arbitrage as explained by Investopedia is:
The process of converting one currency to another, converting it again to a third currency and, finally, converting it back to the original currency within a short time span. This opportunity for riskless profit arises when the currency’s exchange rates do not exactly match up. Triangular arbitrage opportunities do not happen very often and when they do, they only last for a matter of seconds. Traders that take advantage of this type of arbitrage opportunity usually have advanced computer equipment and/or programs to automate the process.
As an example, suppose you have $100,000 and you are provided with the following exchange rates: EUR/USD = 0.8631, EUR/GBP = 1.4600 and USD/GBP = 1.6939.
With these exchange rates there is an arbitrage opportunity:
Sell dollars for euros: $100,000 x 0.8631 = 86,310 euros
Sell euros for pounds: 86,310/1.4600 = 59,116.44 pounds
Sell pounds for dollars: 59,1164.40 x 1.6939 = $100,137.30 dollars
$100,137.30 – $100,000 = $137.30
From these transactions, you would receive an arbitrage profit of $137.30 (assuming no transaction costs or taxes).
For this project the spread for the AUD/NZD crossrate is rather wide and ranges anywhere from 3 to 8 ticks. Interactive Brokers currency exchange called IdealPro, acts as an ECN where banks act as liquidity providers, but brokerage customers can also post bids and offers into the IdealPro order book, thus acting as liquidity providers as well. The strategy would watch the AUD/USD and NZD/USD exchange rates and then place limit orders to buy/sell AUD/NZD at rates where a 1-2 tick profit could be made if my bid or offer was hit. Below is a screenshot of the IdealPro order book for AUD/NZD where you can see my bid for 100,000 AUD/NZD at 1.35575 on the left side of the book.
My software would constantly modify the the limit prices for my orders as the AUD/USD and NZD/USD exchange rates fluctuated.
I built an initial prototype of this strategy and let it loose trading small position sizes to get an initial idea of how the system would perform. Some of the challenges that the system would need to work through are:
– Partial Fills – what if a buy order for 100,000 AUD/NZD is only filled for 50,000?
– IdealPro shutdown period. IdealPro is offline daily from 2pm – 2:15pm PDT.
– Low liquidity periods. I don’t want the system to be in the market when the AUD/NZD spread is more than 10 ticks wide.
– Lost connectivity. What to do when the connection between the software and the broker goes down?
The prototype ran for a couple of days and generated about 60 trades during that time period. The results were mixed due to the fact that the bid/offer prices for AUD/USD and NZD/USD would change after the AUD/NZD limit order was filled, but before the offsetting orders could get filled. I decided to remedy this by only using limit orders to close out the position. The risk here though is that even though the limit price may only be 1 tick away from the market, there’s the chance that the market could move away from the limit and never be filled. I decided to also add a time based exit so if the limit order wasn’t filled within 10 minutes that the system would exit the position using a market order.
After this was implemented the system was able to generate consistent trades with 2-3 tick profits, but the occasional limit order which was left unfilled and closed out 10 minutes later was wiping out most of the profits from the winning trades. I was beginning to investigate this further when I received a couple of emails from my broker notifying me that they did not like all the order modification traffic that my software was sending to their servers, which amounted to about 50,000 price updates to my limit orders per day.
So for the time being it is back to the drawing board for this one, as I will need to figure out if its possible to make this strategy profitable without updating bids/offers in the IdealPro order book or maybe look at using another broker who won’t mind the order traffic this software generates.