Have you ever been in a foreign country, looking for a foreign exchange desk ? You may have noticed the differences in prices… Of course, the fees you have to pay to buy or sell foreign currency explain a part of these differences. But the main reason is that FOREX market has a very particular structure and I’ll try to describe it. This structure has an influence on price, on liquidity but also on IT side.
Forex Market : nothing like you’ve ever seen before
The Forex Market (foreign exchange market) is a decentralized market : it means that if you want to buy/sell currencies you won’t find any organized market like Euronext for equities. Any corporate/institutional who wants to buy/sell currencies should contact brokers and bank : they will do OTC operations (Over The Counter). It means that the client will “directly” exchange currencies with a bank without order on a centralized market. The liquidity structure is therefore very specific to FX as you can’t find an official place to exchange your currency.
This particularity is critical for FX Market. When we are talking about FX SPOT operation to someone coming from Equity world, he will tend to minimize the complexity of pricing/hedging this kind of product. This is a mistake ! The FX Liquidity is complex and you need to be smart to find the right liquidity on the market. Maybe FX Spot is complex for you as you don’t know what it is : « a foreign exchange spot transaction, also known as FX spot, is an agreement between two parties to buy one currency against selling another currency at an agreed price for settlement on the spot date » (source : Wikipedia)
Let’s now imagine you’re a trader in a bank and you receive amount/prices from different sources (we’ll see the different type of sources afterwards). A bank A will send a price for 1 000 000, 2 000 000, 5 000 000, a bank B will send only a price for 10 000 000 etc… at last, you are able to send orders with a total of 50 000 000 EUR for example. Amount and quality of the prices are not the only criteria on the FX Market to evaluate liquidity : you should not forget the hit ratio. All counterparties have the right to reject one of your trade due to what we call : “the last look”. The hit ratio is just the relation between the number of ACCEPTED trade on the total number of tries.
The last look mechanism is supposed to prevent any order on a quote that is not up to date. If a client has latency, he will hit a price that is no more available for the bank so the bank is allowed to reject the order explaining “Market move : last look”. So this rejection is a very important criteria in liquidity ; having good price for good amount is not enough : this liquidity has to be hittable.
Where does the liquidity comes from ?
There are several types of liquidity sources
- Other banks : you can ask other banks to send you their prices and deal with them.
- Unofficial official market : historically there are 2 electronic markets with huge liquidity, mainly for interbank exchange : EBS from ICAP and Reuters Matching from Thomson Reuters. There are in reality 2 electronic matching applications.
- ECNs : To access electronic prices on FX, you can use platforms like Currenex, FxALL etc… These platforms were at the beginning just a way to connect liquidity coming from different banks at the same place. Clients (mainly corporate or institutional on these platforms) can compare prices and deal with a bank. As these platforms receive huge amounts of orders, they had the idea to develop ECN (Electronic Communication Network) where clients, bank, hedge fund could put orders and being executed against one other.
- Clients : of course, if you’re a broker/bank you receive liquidity from your client who need to exchange currencies. This is an important challenge for banks and we’ll address that in the next section.
You now understand that FX Market looks like this :
Put your hands in spaghettis : execution / hedge
Let’s take a concrete example : you’re a trader receiving a pretty big order from one of your client : client BUY 80 000 000 EUR/USD. As a market operator, you have to hedge this operation by selling the same amount (if you have a basic strategy). Hedge is just finding a way to « cover » what has been sent by the client, if the bank doesn’t want to keep the position. When a trade is done, the risk is given by the counterparty to the bank. By hedging the deal, the trader has 2 objectives : giving the risk to someone else, trying to give the risk at a better price to earn some money. In the previous example, the bank has a SELL position of 80 000 000 EUR/USD (because the client buys) so if the price goes up, the bank could loose money. The SPOT trader, and it’s a full time job, needs to find the best way to hedge the deal : keep the position and wait before hedging, hedge right now, find a client to hedge the position etc…
So the question is : how will I find 80 000 000 EUR/USD on the market without destroying the market ? The risk with such order is to give too much information to other market actors and allow them to make money on the risk you have with 80 000 000 in your book. Execution algorithm will help the trader : we call this kind of algorithm a Smart Order Router.
Using an aggregator, you will consolidate all prices/amount received from the different banks (called Liquidity Providers or LP). With all these streams, you can construct a Market Depth like any organized market. Then the bank should use all its intelligence to find the right way of distributing orders to LPs. Two possibilities :
- Should I ask a price for 80M to all LPs ?
- Should I split this order into small orders given to a set of LPs ? How can I do this split ?
There are several ways of doing this split and it could be the object of a full article. Main criteria : do I want to have the best price possible ? Do I want to execute the volume at a given price ? Do I want to execute the volume without being rejected ? Do I want to be sure that no one in the market discover my order ?
You now understand that there is a huge correlation between prices of different banks as they mainly use the same LPs. If you choose to pick liquidity from different banks, you face the risk to be rejected because the price given by one bank was constructed with a price of another bank you already hit. With Last Look mechanism, you could be rejected and then had to find another liquidity source. Time is money and for a big amount, the more you wait the more risk you take. Few years ago, Banks understand that they should maybe avoid to go to the market to hedge their deals, they could use the liquidity coming from their client.
“I won’t go out, I stay at home !” : internalization
Instead of directly hedging each client deals on the street, the bank could keep a position and wait for another client order in the opposite way. It will avoid the bank to pay the spread and pay fees to LPs. There are risks in both solutions. Solution of internalizing the liquidity is based on the assumption that the bank has enough orders incoming to reduce the time traders will keep the position. This assumption could be pretty strong and the bank has to analyze deeply its client.
One solution to be sure that a trade will enter and cover your position is to show to the market (so your client) that you have an interest of trading on a dedicated side. Basically, you could skew your prices in order to attract clients. Skewing is like saying : “Look I have a lot of USD to BUY, I will give you a better price if you SELL me than if you want to BUY me USD”. But what kind of clients will I attract ? Maybe a corporate that has an interest with this side and will do the trade with rather than another bank. Most probably it will attract speculators whose decisions are not guided by a concrete need but by making money. Attracting this kind of client is maybe good for liquidity but risky because if your price is wrong, they won’t hesitate to hurt you.
Finally this market is not that strange, it’s just something that can be seen as handmade. This strange way of dealing has a pretty big impact on tool you will use to deal : let’s have a look on the IT side.
How will the geeks eat the spaghettis ?
We are mainly talking about SPOT business from the beginning and I’ll continue with this assumption in this IT part. The first main point on FX (not different from Equity) is the speed. When you receive a price from a LP or an order from a Client, your ability to hit the price or to answer the client fast is crucial. On main currencies, like orders on EUR/USD, there is such a competition that the first bank to answer to a client has a big change to win the deal.
For prices, the refresh can be very fast : under 50 ms. Basically you will construct a price to the client using your own orders (internalization) and the price you found on the street (price you receive from LP). The LP price can change in less than 50ms, it means that the IT infrastructure you have between the LP server and your server is crucial. We are not talking about High Frequency Trading but the problematic is pretty the same : we can’t accept any latency in the price due to the network or to the server. What would be the consequence ? Let’s imagine that we (the bank) have a delay of 100 ms on all prices coming from our liquidity providers. We will construct a price for the client with a delay compared to the market. If this delay is profitable to the client, he will hit us and then we will have to hedge this deal. If we hit LP quotes with a delay, LPs will reject us saying : “your quotes are too old and no more valid” and will receive REJECTION. The cost can be pretty important for the bank as the price has been confirmed to the client and we are not able to find a better price in the market. The “low-level” IT infrastructure is essential : banks often do cross connect, trying to put their server of pricing directly in the same data center than the LP. This is a huge business for network providers.
On FX, some could think that speed is the key. Historically, it is the case obviously but algorithm is the new war. You will need more than a fork to eat correctly your spaghettis. The first thing trader will need is to be able to have a clean / unified vision of the market. Aggregation of all streams coming from the LPs is the first answer : how can I unify all liquidity sources to be able to see the market ? The trader still want to be free to hit one source or another. This is the first challenge : handle heterogeneous sources in terms of technical connection, definition etc… The second challenge is to be able to write an algorithm able to choose the right source of liquidity : what we previously called the Smart Order Router. All these kind of algorithms are based on computer science theory and IT is critical to help them to define the right method. Finding the best price in such market is not more than classic computer science problems. There is no time to define it here, hopefully it will be the object of another article. Smart Order Router is the first step in algorithm, let’s say the essential algorithm. For a few years, banks have been developping client and execution algorithm. These toys are made to answer the client’s needs in term of execution, to improve efficiency when finding liquidity on the market. The client could ask the bank to find 50M on the market and that’s it. Or he could ask to execute 50M on the market with an order executed each 10 min (this is a basic algorithm called time slicer).
All these subjects are a challenge for “high-level IT” : what language should I choose to implement efficient algorithm ? To consume quickly the price ? For business, this is a big investment but mandatory. Without a minimum investment, you cannot compete with other banks but this is not only a characteristic of FX Market. With new functional languages, some could think that traders should directly write their own algorithms and include it into the system. For big players, with multi-skills-super-smart traders maybe they can do such thing. In every-day bank, I think it’s almost impossible and a bad idea : IT has a big role to play in the process of writing algorithm because they are they are supposed to be the specialist of such implementation. IT is structurally crucial for this kind of market.
FX is a strange but interesting market, with huge challenge in the future :
- Particularly with the new economic situation in the world (emerging currencies, debt crisis etc…).
- The current market situation could lead to questioning about this market structure : how should we organize / consume the liquidity ?
- On the IT side too, algorithms are still trendy ? But for how long ? Will we go for more complex algorithm, needing more powerful infrastructure ? Or will we go back to standard and fair executions ?
The current market (low volatility, low volume on traditional actor like EBS) leads to very interesting questioning. I would not be surprised if there were big changes in the near future, maybe to go back to simple and fair execution between market actors.