Saturday, May 9, 2020

batch auctions for foreign exchange

The foreign exchange market is quite decentralized, and I've been thinking recently that it might be convenient for some players in the market for there to be a daily batch auction, perhaps early in the morning in NYC, late morning in London, and evening in Tokyo.  Academics often seem to like batch auctions for the thickness (liquidity) they offer, but one of my motivations was the existence of currency derivatives and indexes; there are traders who may be trying to hedge in the spot market against an "end-of-day" risk, and I thought having a batch auction that provided fixes for derivatives would make it easier to avoid some basis risk.

Foreign exchange markets can feel a bit like barter in some ways; if I'm buying pounds from a trader in London, we'll both think of ourselves as the buyer, and if someone in Europe wants to trade dollars for yen, it's not clear whether that's a purchase or a sale.[1]  In some ways, a centralized auction alleviates the double-coincidence-of-wants problem and makes barter feasible and even makes money (or, in this case, a vehicle currency) redundant, but there is a complication: consider a trader who enters, into the auction, an order expressing a desire to exchange 10 euros for 900 yen, and suppose the auction determines that the clearing price is 100 yen per euro.  A European entering an order to buy 900 yen expects to end up exchanging 9 euros for 900 yen, while a Japanese person entering an order to sell 10 euros expects to exchange 10 euros for 1000 yen.  An American may wish to hand over 10 euros and receive 900 yen and to receive the gains from trade in US dollars.  An order now should specify the currency of the order, which may be the currency the trader wants to buy, or sell, or something else.  In more generality, the trader may express three baskets of currencies, expecting that, if the trade is executed, the trader will give up basket A and receive basket B and some multiple of basket C such that the currency received and the currency provided have the same value at the clearing prices.

Actually determining how to clear the markets turns out to be equivalent to solving a convex optimization problem, at least if currencies are arbitrarily divisible and orders can be partially executed, at least provided that, for each order that executes, the currency associated with that order is provided by some combination of other orders that execute.  The solution technique is likely to involve iteratively finding the excess demand for different currencies given different price vectors, and it seems likely that in a practical distributed setting you would want to group orders by currency, where you would first figure out, given the proposed price, which orders execute, the total gains from trade those orders, and how much currency that adds to the demand vector.  One potential complication here is created by orders that clear exactly, with no gains from trade, which may end up partially executing; when excess demand of different groups of orders is being aggregated it may be necessary, especially late in the process of finding the execution price, to retain a lot of possible excess demand vectors to aggregate the partial calculations.


[1] This is the source of some confusion regarding options at times; the terms "put" and "call" are similarly poorly defined.  In some ways, though, this is clarifying, though I think I should let go of this particular tangent at this point.

No comments: