Hashflow
Search…
⌃K

# Market Making Rewards

The formula for rewarding MMs is inspired by dYdX liquidity provider incentives.
A total of 0.125% of the total HFT supply (1,250,000 HFT before inflation) will be reserved for market making rewards and distributed each month. The rewards that each market maker will receive is computed pro-rata based on a Market Maker HashScore, which is derived using a combination of uptime, two-sided depth, bid-ask spreads, and the number of markets supported.
The following function is used to compute the Market Maker HashScore for a given trading pair:
$H_{pair} = H_{epoch} \times Uptime ^ 5$
Market Maker performance is monitored and calculated on a minute-by-minute basis and aggregated into the Hfinal for a given trading pair every month.
Orders below a certain minimum depth for a given trading pair are excluded, and orders over a certain maximum spread are excluded.
The following formula breaks down the steps used to derive Hfinal:
Formula (in order of calculation)
Example / Explanation
Assume a Market Maker has multiple open bid orders (1 ETH at $2990, 5 ETH at$2985, 10 ETH at $2950) on the ETH-USDC market, and ETH is currently trading at$3000 (based on mid-market). Assume MinDepth is $500 and MaxSpread vs. mid-market is$20, or 6.7 Basis Points ($20/3000). A BP is 1/100th of one percent. $H_{bid} = (1 \times {2990\over(10/3000)}) + (5 \times {2985\over(15/3000)})$ $H_{bid}$ is calculated every minute. Assume a Market Maker has multiple open ask orders (0.1 ETH at$3010, 5 ETH at $3015, 10 ETH at$3017.5) on the ETH-USDC market, and ETH is currently at $3000 (based on mid-market). Assume MinDepth is$500 and MaxSpread vs. mid-market is $20, or 6.7 Basis Points ($20/3000). A BP is 1/100th of one percent.
$H_{ask} = (5 \times {3015\over(15/3000)}) + (10 \times {3017.5\over(17.5/3000)})$
$H_{ask}$
is calculated every minute.
$H_{min} = Min(H_{bid}, H_{ask})$
Rewards 2-sided liquidity by taking the minimum of
$H_{bid}$
and
$H_{ask}$
.
Calculated every minute.
$H_{epoch} = \sum_{N=1}^{dp} (H_{min}(N))$
$H_{epoch}$
is the sum of all
$H_{min}$
in a given epoch.
$Uptime$
is the percentage of RFQs within price levels which are served with respect to the total RFQs received within those price levels.
$H_{pair} = H_{epoch} \times Uptime ^ 5$
$H_{pair}$
normalizes
$H_{epoch}$
to factor in the uptime.
Each trading pair and chain will have a different weight when computing the Market Maker HashScore. The initial weights are as follows:
Market
Weight
For Ethereum: All combinations of ETH, USDC, USDT, WBTC, DAI
For other chains: All combinations of native asset + native stables
70%
All other markets
30%
Chain
Weight
Ethereum
50%
BNB Chain
14%
Avalanche
20%
Arbitrum
6%
Optimism
2%
Polygon
8%
These initial chain weights have been computed based on the TVL in these chains. For Ethereum, a 50% weight has been assigned given its large TVL relative to the other chains. For all other chains, their weights were computed based on their relative TVL.
The following function is used to calculate the Market Maker HashScore using the weights described above.
Variable
Description
$w_{p}$
$w_{c}$
Weight of chain
$H_{pair}$
The score for a market maker for a given trading pair
$H_{adj}$
Weighted score for a market maker for a given trading pair for a given chain
$H_{total}$
Sum of weighted scores for a market maker for all trading pairs
$M$
Sum of weighted scores for all market makers for all trading pairs
$H_{score}$
Final Market Maker HashScore
$i$
Pair index
$I$
$n$
Market maker index
$N$
Total number of market makers
$h$
Total HFT allocated for the month
$R$
$H_{adj} = w_{p} \times w_{c} \times H_{pair}$
The total of all weighted scores for a market maker is then calculated by adding
$H_{adj}$
across all the pairs:
$H_{total} = \sum_{i=1}^{I} (H_{adj})$
All weighted scores for all market makers are then added together to calculate
$M$
:
$M = \sum_{n=1}^{N} (H_{total})$
The final Market Maker HashScore is then calculated by dividing
$H_{total}$
by
$M$
:
$H_{score} = {H_{total} \over M}$
Finally, the Market Making Reward is determined as follows:
$R = h \times H_{score}$