Links

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:
Hpair=Hepoch×Uptime5H_{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.
Hbid=(1×2990(10/3000))+(5×2985(15/3000))H_{bid} = (1 \times {2990\over(10/3000)}) + (5 \times {2985\over(15/3000)})
HbidH_{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.
Hask=(5×3015(15/3000))+(10×3017.5(17.5/3000))H_{ask} = (5 \times {3015\over(15/3000)}) + (10 \times {3017.5\over(17.5/3000)})
HaskH_{ask}
is calculated every minute.
Hmin=Min(Hbid,Hask)H_{min} = Min(H_{bid}, H_{ask})
Rewards 2-sided liquidity by taking the minimum of
HbidH_{bid}
and
HaskH_{ask}
.
Calculated every minute.
Hepoch=N=1dp(Hmin(N))H_{epoch} = \sum_{N=1}^{dp} (H_{min}(N))
HepochH_{epoch}
is the sum of all
HminH_{min}
in a given epoch.
UptimeUptime
is the percentage of RFQs within price levels which are served with respect to the total RFQs received within those price levels.
Hpair=Hepoch×Uptime5H_{pair} = H_{epoch} \times Uptime ^ 5
HpairH_{pair}
normalizes
HepochH_{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
wpw_{p}
Weight of trading pair
wcw_{c}
Weight of chain
HpairH_{pair}
The score for a market maker for a given trading pair
HadjH_{adj}
Weighted score for a market maker for a given trading pair for a given chain
HtotalH_{total}
Sum of weighted scores for a market maker for all trading pairs
MM
Sum of weighted scores for all market makers for all trading pairs
HscoreH_{score}
Final Market Maker HashScore
ii
Pair index
II
Total number of trading pairs
nn
Market maker index
NN
Total number of market makers
hh
Total HFT allocated for the month
RR
Your Market Making Reward
Hadj=wp×wc×HpairH_{adj} = w_{p} \times w_{c} \times H_{pair}
The total of all weighted scores for a market maker is then calculated by adding
HadjH_{adj}
across all the pairs:
Htotal=i=1I(Hadj)H_{total} = \sum_{i=1}^{I} (H_{adj})
All weighted scores for all market makers are then added together to calculate
MM
:
M=n=1N(Htotal)M = \sum_{n=1}^{N} (H_{total})
The final Market Maker HashScore is then calculated by dividing
HtotalH_{total}
by
MM
:
Hscore=HtotalMH_{score} = {H_{total} \over M}
Finally, the Market Making Reward is determined as follows:
R=h×HscoreR = h \times H_{score}