Constant function market maker
Constant-function market makers (CFMM) are a paradigm in the design of trading venues where a trading function and a set of rules determine how liquidity takers (LTs) and liquidity providers (LPs) interact, and how markets are cleared. The trading function is deterministic and known to all market participants. CFMMs display pools of liquidity of two assets. The takers and providers of liquidity interact in the liquidity pools: LPs deposit their assets in the pool and LTs exchange assets directly with the pool. CFMMs rely on two rules; the LT trading condition and the LP provision condition. The LT trading condition links the state of the pool before and after a trade is executed, and it determines the relative prices between the assets by their quantities in the pool. The LP provision condition links the state of the pool before and after liquidity is deposited or withdrawn by an LP. Thus, the trading function establishes the link between liquidity and prices, so LTs can compute the execution costs of their trades as a function of the trade size, and LPs can compute the exact quantities that they deposit. In CFMMs, both conditions state that price formation happens only through LT trades (see below). In  decentralized platforms running on peer-to-peer networks, CFMMs are hard-coded and immutable programs implemented as Smart Contracts, where LPs and LTs invoke the code of the contract to execute their transactions. A particular case of CFMMs are the constant product market makers (CPMMs) such as Uniswap v2 and Uniswap v3 where the trading function uses the product of the quantities of each asset in the pool to determine clearing prices. CFMMs are also popular in prediction markets. Definition

Trading function 
Consider a reference asset  and an asset  which is valued in terms of . Assume that the liquidity pool of the CFMM initially consists  of quantity  of asset  and quantity  of asset . The pair  is referred to as the reserves of the pool (the following definitions can be extended to a basket of more than two assets). The CFM is characterised by a trading function  (also known as the invariant) defined over the pool reserves  and . The trading function is continuously differentiable and increasing in its arguments ( denotes the set of positive real numbers). For instance, the trading function of the constant product market maker (CPMM) is . Other types of CFMMs are the constant sum market maker with ; the constant mean market maker with , where  and ; and the hybrid function market maker, which uses combinations of trading functions. LT trading condition and convexity 

LT transactions involve exchanging a quantity  of asset  for a quantity  of asset , and vice-versa. The quantities to exchange are determined by the LT trading condition: 
 
where  is the depth of the pool (see the LP provision condition below) and is a measure of the available liquidity. The value of the depth  is constant before and after a trade is executed, so the LT trading condition  defines a level curve. For a fixed value of the depth , the level function   (also known as the forward exchange function ) is such that . For any value  of the depth, the level function   is twice differentiable. The LT trading condition  links the state of the pool before and after a liquidity taking trade is executed. For LTs, this condition specifies the exchange rate , of asset  in terms of the reference asset , to trade a (possibly negative) quantity   of asset :
 

The marginal exchange rate of asset  in terms of asset , akin to the midprice in a limit order book (LOB), is the price for an infinitesimal trade in a CFMM:
 
It is proven that no roundtrip arbitrage in a CFMM implies that the level function  must be convex. Execution costs in the CFMM are defined as the difference between the marginal exchange rate and the exchange rate at which a trade is executed. It has been shown that LTs can use the convexity of the level function around the pool's reserves level to approximate the execution costs  by . LP provision condition and homotheticity 

LP transactions involve depositing or withdrawing quantities  of asset  and asset . Let  be the initial depth of the pool and let  be the depth of the pool after an LP deposits ,  i.e.,  and . Let  and  be the level functions corresponding to the values  and , respectively. Denote by  the initial marginal exchange rate of the pool. The LP provision condition requires that LPs do not change the marginal rate , so
 

The LP provision condition  links the state of the pool before and after a liquidity provision operation is executed. The trading function  is increasing in the pool reserves  and  So, when liquidity provision activity increases (decreases) the size of the pool, the value of the pool's depth  increases (decreases). The value of  can be seen as a measure of the liquidity depth in the pool. Note that the LP provision condition holds for any homothetic trading function. Constant Product Market Maker 

In CPMMs such as Uniswap v2, the trading function is  so the level function is , the marginal exchange rate is  and the exchange rate for a quantity  is  

In CPMMs, the liquidity provision condition is  when the quantities  are deposited to the pool. Thus,  liquidity is provided so that the proportion of the reserves  and  in the pool is preserved. Profits and losses of liquidity providers

Fees 
For LPs, the key difference between the traditional markets based on LOBs and CFMMs is that in LOBs, market makers post limit orders above and below the mid-price to earn the spread on roundtrip trades, while in CFMMs, LPs earn fees paid by LTs when their liquidity is used. Predictable loss 

Without fees paid by LTs, liquidity provision in CFMMs is a loss-leading activity. To thoroughly characterise their losses, LPs use Predictable Loss (PL), which is a comprehensive and model-free measure for the unhedgeable and predictable losses of liquidity provision. One source of PL is the convexity cost (losses due to adverse selection) whose magnitude depends on liquidity taking activity and the convexity of the level function. The other source is the opportunity cost, which is incurred by LPs who lock assets in the pool instead of investing them in the risk-free asset. For an LP providing reserves  at time  and withdrawing liquidity at time , PL is

where  is an increasing stochastic process with initial value , and  is a process that describes the reserves in asset . In particular,  satisfies 

PL can be estimated without specifying dynamics for the marginal rate or the trading flow and without specifying a parametric form for the level function. PL shows that liquidity provision generates losses for any type of LT trading activity (informed and uninformed). The level of fee revenue must exceed PL in expectation for liquidity provision to be profitable in CFMMs. If one considers that  is exogenous so all trading in the pool is informed, that  follows a geometric Brownian motion with constant volatility, and that the risk-free rate is zero, then PL reduces to the Loss-Versus-Rebalancing. Impermanent loss 

Impermanent loss, or divergence loss, is sometimes used to characterise the risk of providing liquidity in a CFMM. Impermanent loss compares the evolution of the value of the LP's assets in the pool with the evolution of a self-financing buy-and-hold portfolio invested in an alternative venue. The self-financing portfolio is initiated with the same quantities  as those that the LP deposits in the pool. It can be shown that the impermanent loss   at time  is 
 
where  are the reserves in asset  in the pool at time . The convexity of the level function shows that . In the case of CPMMs, the impermanent loss is given by 

where  is the marginal exchange rate in the CPMM pool at time . is not an appropriate measure to characterise the losses of LPs because it can underestimate or overestimate the losses that are solely imputable to liquidity provision. More precisely, the alternative buy-and-hold portfolio is not exposed to the same market risk as the holdings of the LP in the pool, and the impermanent loss can be partly hedged. In contrast, PL is the predictable and unhedgeable component in the wealth of LPs. Concentrated liquidity 

Concentrated liquidity is a feature introduced by Uniswap v3 for CPMMs. The key feature of a CPMM pool with CL is that LPs specify a range of exchange rates in which to post liquidity. The bounds of the liquidity range take values in a discretised finite set of exchange rates called ticks. Concentrating liquidity increases fee revenue, but also increases PL and concentration risk, i.e., the risk of the exchange rate exiting the range. History 
An early description of a CFMM was published by economist Robin Hanson in "Logarithmic Market Scoring Rules for Modular Combinatorial Information Aggregation" (2002). Early literature referred to the broader class of "automated market makers", including that of the Hollywood Stock Exchange founded in 1999; the term "constant-function market maker" was introduced in "Improved Price Oracles: Constant Function Market Makers" (Angeris & Chitra 2020). First be seen in production on a Minecraft server in 2012, CFMMs are a popular DEX architecture. Crowdfunded CFMMs 
A crowdfunded CFMM is a CFMM which makes markets using assets deposited by many different users. Users may contribute their assets to the CFMM's inventory, and receive in exchange a pro rata share of the inventory, claimable at any point for the assets in the inventory at that time the claim is made. Examples 
 Uniswap 
 RMM-01 
 PMMP 
 StableSwap

References 

Financial markets