Revolut supports limit orders, which it calls “auto-exchange”. This allows users to enter the rate at which they would like to sell one currency and buy another currency, together with the amount expressed in either the sold currency or the bought currency. When the market rate reaches the order level, the order is filled.
Revolut fails to adhere to two FX market conventions:
- Currency precedence: FX rates are expressed in CCY1/CCY2 format, whereby CCY1 amount x rate = CCY2 amount or CCY2 amount ÷ rate = CCY1 amount. Market convention is that the more valuable currency is CCY1 and the less valuable currency is CCY2, causing an FX rate higher than 1, except for EUR, GBP, AUD, NZD, FJD, TOP, WST, PGK, BWP, SBD and USD, all of which are always CCY1 (except against each other in which case whichever currency comes first in this list will be CCY1). Instead, Revolut always sets the sold currency as CCY1 and the bought currency as CCY2.
- Decimal places: Market convention is that FX spot rates are quoted to between 4 and 6 significant figures with an even number of decimal places (plus a fractional pip digit in major currency pairs), with some exceptions such as many CZK pairs (often 3 decimals) and many Arab currency pairs (often 5 decimals). Instead, Revolut displays all currency pairs to 4 decimal places, which appears to be hard-coded. Examples of market convention in major currency pairs can be found at www.truefx.com (these live rates from an FX liquidity aggregator also prove that Revolut’s rates are genuine interbank rates).
Revolut’s failure to follow global FX market convention causes a problem when entering orders (“auto-exchange”). For example, let’s say for example want to enter an order to buy GBP/HUF (sell HUF and buy GBP) at 350.00. According to Revolut, GBP/HUF has traded over the last year in a range of 354.15 to 379.58. But because I am selling HUF and buying GBP, Revolut requires me to enter the 350.00 rate as an inverted reciprocal HUF/GBP rate of 0.00285714. Then because Revolut supports only 4 decimal places on FX rates, even where rates need to be quoted to many extra decimal places because of incorrect inversion, I can enter a rate only of 0.0028 (357.14 in GBP/HUF terms) or 0.0029 (344.83 in GBP/HUF terms). This means that a GBP/HUF rate, when selling HUF, can be entered only as an inverted HUF/GBP rate in huge increments of 3.5%.
Therefore I recommend that Revolut should always display FX rates and accept entry of FX rates according to FX market convention with respect to both currency precedence and decimal places.