Instead of limit-order books, THORChain uses continuous liquidity pools (CLP). The CLP is arguably one of the most important features of THORChain, with the following benefits:
Provides “always-on” liquidity to all assets in its system.
Allows users to trade assets at transparent, fair prices, without relying on centralised third-parties.
Functions as source of trustless on-chain price feeds for internal and external use.
Democratises arbitrage opportunities.
Allows pools prices to converge to true market prices, since the fee asymptotes to zero.
Collects fee revenue for liquidity providers in a fair way.
Responds to fluctuating demands of liquidity.
Start with the fixed-product formula:
Derive the raw "XYK" output:
Establish the basis of Value (the spot purchasing power of
x in terms of
Y ) and slip, the difference between the spot and the final realised
Derive the slip-based fee:
Deduct it from the output, to give the final CLP algorithm:
Comparing the two equations (Equation 2 & 6), it can be seen that the Base XYK is simply being multiplied by the inverse of Slip (ie, if slip is 1%, then the output is being multiplied by 99%).
The simplest method to exchange assets is the pegged model, (1:1) where one asset is exchanged one for another. If there is a liquidity pool, then it can go insolvent, and there is no ability to dynamically price the assets, and no ability to intrinsically charge fees:
The fixed-sum model allows pricing to be built-in, but the pool can go insolvent (run out of money). The amount of assets exchanged is simply the spot price at any given time:
The fixed-product model (Base XYK above), instead bonds the tokens together which prevents the pool ever going insolvent, as well as allowing dynamic pricing. However, there is no intrinsic fee collection:
The Fixed-Rate Fee Model adds a 30 Basis Point (0.003) (or less) fee to the model. This allows fee retention, but the fee is not liquidity-sensitive:
The Slip-based Fee Model adds liquidity-sensitive fee to the model. This ensures the fee paid is commensurate to the demand of the pool's liquidity, and is the one THORChain uses. The fee equation is shown separate (12b), but it is actually embedded in 12a, so is not computed separately.
Assuming a working Swap Queue, the CLP Model has the following benefits:
The fee paid asymptotes to zero as demand subsides, so price delta between the pool price and reference market price can also go to zero.
Traders will compete for trade opportunities and pay maximally to liquidity providers.
The fee paid for any trade is responsive to the demand for liquidity by market-takers.
Prices inherit an "inertia" since large fast changes cause high fee revenue
Arbitrage opportunities are democratised as there is a diminishing return to arbitrage as the price approaches parity with reference
Traders are forced to consider the "time domain" (how impatient they want to be) for each trade.
The salient point is the last one - that a liquidity-sensitive fee penalises traders for being impatient. This is an important quality in markets, since it allows time for market-changing information to be propagated to all market participants, rather than a narrow few having an edge.
Balances of the pool (X and Y), are used as inputs for the CLP model. An amplification factor can be applied (to both, or either) in order to change the "weights" of the balances:
Input Balance Weight
Output Balance Weight
a = b = 2 then the pool behaves as if the depth is twice as deep, the slip is thus half as much, and the price the swapper receives is better. This is akin to smoothing the bonding curve, but it does not affect pool solvency in any way. Virtual depths are currently not implemented
a = 2, b = 1 then the
Y asset will behave as though it is twice as deep as the
X asset, or, that the pool is no longer 1:1 bonded. Instead the pool can be said to have 67:33 balance, where the liquidity providers are twice as exposed to one asset over the other.