tl;dr
The new Trader Rewards module for dYdX v4 has been announced. This forum post goes over the new mechanism, how it compares to the current rewards program, and some thoughts on the new parameters.
We hope this post contextualizes the new v4 parameters based on v3 rewards data, and elucidates why these parameters are crucial to bootstrapping volume on dYdX v4!
This post assumes the reader has read the blog post announcing v4 rewards. This forum post assumes the chain’s PoS token will be DYDX.
Background
Rewards are now paid every block, instead of every epoch. At each block, A DYDX is disbursed as rewards to traders, according to the following formula:
A=min(C * S/p, T),
where C in [0, 1] is a constant, S is the total amount paid in fees that block (accounting for maker rebates), p is a DYDX oracle price, and T is the amount of DYDX that has vested into the rewards treasury. To build some intuition, let’s express these rewards for each trader i, denoted as ri:
ri=min(C*si/p, T*si/S)
where si is the amount that trader has paid in fees (accounting for maker rebates). Notice that si ÷ p is the amount paid in fees in DYDX terms, so C * si ÷ p essentially subsidizes C% of the amount paid in fees, up to 100%. As stated in the announcement, the initial subsidy will be up to C=99% of fees paid. These rewards are capped by T, the amount available for rewards at that block.
At each block, a “Fixed Emission” vests into the Rewards Treasury, and some amount A is disbursed in rewards. The max rewards available for the block, T, is equal to the amount in rewards leftover from the previous block, plus the fixed emission from this block. We will denote the fixed emission as the E parameter.
Why this is Cool
In dYdX v4, bootstrapping trading activity (and therefore fees) is essential to acquiring and retaining validators/stakers securing the chain, and ensuring it runs smoothly. The trader rewards module effectively subsidizes this process, by paying traders up to 100% of their fees in DYDX rewards. This encourages traders to migrate from v3 to v4, and hopefully incentivizes enough trading volume for validators to sustainably operate the chain.
The new rewards mechanism targets 3 key innovations:
- Traders can no longer receive more in rewards than they pay in fees. This eliminates most concerns around traders “gaming” the rewards module, as Xenophon Labs and other community members have discussed several times in the past.
- Rewards are disbursed every block. This allows the community to analyze the impact of changes to the module’s parameters much more quickly. It follows that we can quickly iterate on changes to rewards parameters, as we can measure their effect in a matter of days/weeks instead of months. Furthermore, it eliminates the risk that traders had to accept when trading in dYdX v3, potentially increasing the benefit the rewards module has on liquidity.
- Governance can control the “maximum subsidy” per trade. The new rewards formula introduces a
C
parameter, which acts as a ceiling for how much “cash back” a trader gets on their trades.
The two parameters that governance can control in the new trader rewards module are:
- C: the “discount parameter” C determines the maximum percentage of trading fees that the community will subsidize using rewards (see the formula in the background section).
- E: the “emissions parameter” E determines the per-block emissions to the rewards module (see the “Fixed Emission” arrow in the infographic in the background section)
Comparing to v3
We can see why points (1) and (3) above are important by looking at dYdX v3 data. When we compare the USD amount paid in fees to the USD amount disbursed in rewards, we see that the community was actually paying for trading in earlier epochs, and over time reduced those subsidies. In theory, this indicates the dYdX v3 market has “matured” to a certain extent, and organic trades are placed despite decreasing rewards. We plot the ratio of USD rewards to USD fees paid below.
A few preliminary thoughts:
- There have been points in time where the Trader Rewards program paid more in rewards than was accrued in fees. The new rewards program for v4 fixes this problem entirely by taking the min(C*S/p, T), since C ≤ 1!
- Early trading activity was extremely sensitive to rewards being paid. In order to bootstrap activity on v4, and therefore be able to incentivize validators, governance will likely need to fund the rewards module with sufficient DYDX.
- However, over time, traders were generally willing to accept a lower ratio of rewards to fees paid (the “Ratio” term in the graph). Although volume did decrease since the 2021 bull-market, the fact that traders are willing to accept lower rewards:fees indicates the market might indeed mature over time!
Using thought (2) and thought (3) we can brainstorm a few ways to think about setting C and E, both at the Genesis of v4 and moving forward.
Side Note: Penetration Pricing
The trader rewards module can be understood as a demand-side discount or subsidy. The subsidy might start very high (99%) and be gradually lowered as the dYdX v4 market matures and builds user-loyalty. This is a technique commonly referred to as penetration pricing: begin with lower-than-market-prices and gradually increase your price as you get a larger share of the market.
Setting E
: Transitioning activity from v3 to v4
Given that the initial C parameter will be set to 0.99 (effectively subsidizing all trading fees), a few natural questions might be:
- How much do we need to pay in emissions to subsidize C=99% of the recent v3 trading fees?
- What inflation does this put DYDX at? As was discussed with @Callen_Wintermute’s v4 Vanguard posts, we must eventually reduce emissions to be below the terminal inflation of 2%.
Over the last 6 months, approximately $6.4M is paid in trading fees per epoch on average, or $83M USD annually. Given this, we can calculate:
Recent Annualized Fees | Max Discount (C) | Annualized Emissions (in DYDX) | Terminal Inflation | Notes |
---|---|---|---|---|
$83M | 99% | 41M | 4% | Fully subsidize recent v3 trading. |
$83M | 50-85% | 21M | 2% | Keep current emissions. |
If our goal is to migrate the $83M in trading fees being paid to v4, we will likely need to provide better pricing than exists on v3. If we fund the v4 rewards module with the same emissions as the v3 module, the following would happen:
- v4 trading would be effectively free (99% discount) until it reaches about ~50% of v3’s volume.
- Past the 50% mark, the discount would decrease until it stabilizes at the current discount observed on v3 (between 50% and 85%, based on the last 6 months)
One way we might think about this is that there is a balance between v3 and v4 trading. Of course, this disregards additional traders that might come into v3 as competition for v3 rewards decreases, so this is not a perfect model. A very preliminary mental model might be:
Conclusion? The community might need to lower v3 rewards to unlock greater v4 adoption, and prevent the community from overspending on rewards.
Side Note: DYDX Price, Oracles, and the E Parameter
Notice that if DYDX price changes significantly, the emissions vesting into the rewards module should change as well. If DYDX price lowers abruptly and we don’t increase emissions, then trading activity might evaporate, reducing validator/staking incentives and leading to potential security concerns. If DYDX price rises abruptly, then the rewards module will accumulate a large surplus.
On Oracles: The rewards formula relies on an oracle to determine the price of DYDX. This introduces a small but potential vulnerability: an attacker might artificially depreciate the price of DYDX (for one or more blocks), pay a bunch of fees, and extract all the DYDX out of the rewards treasury. When the price of DYDX bounces back, they make a profit. Depending on the cost of oracle manipulation (e.g., DYDX liquidity, etc.), and how the oracle is constructed, this might or might not be a concern. Either way, a potential way to mitigate this risk is by ensuring that there is never a huge surplus in the rewards module.
Lowering C
and measuring Elasticity of Demand
By subsidizing trading fees with rewards, we increase trading volume, which increases fees paid and therefore validator incentives. However, this increase in trading volume is only observed if traders are elastic to trading fees. Empirically, many studies find that trading fees and trading volume are negatively correlated to varying degrees (see this meta-analysis if interested, particularly page 9).
When demand is inelastic, introducing a subsidy leads to a marginal increase in the quantity demanded. In our case, this means that inelastic demand might allow us to lower the amount of trader rewards, without significantly affecting the trading activity on the protocol.
Although not a perfect measurement by any means, we can gauge the elasticity of traders to trading rewards by comparing historical trading fees paid to DYDX price. We performed a similar analysis in our original Trader Rewards report, showing that DYDX price Granger-causes the amount paid in trading fees. The correlation is displayed clearly in previous graphs.
It might be clear that trading volume is elastic to rewards (i.e., strong positive correlation), especially during earlier epochs. As the v4 markets mature, we may iteratively lower C and observe the impact on trading volume. Iteratively lowering C will provide empirical data for the elasticity of v4 volume to the new rewards module, allowing the community to make an informed decision to optimize trading fees vs rewards emissions.
Final Thoughts
The new trader rewards module fixes several issues that were found on the previous rewards module, and introduces some new tools for governance to manage incentives. The first step the community will have to take is determining the initial emissions into the module, E, and whether to lower existing v3 emissions. Stay tuned .