dYdX v3 vs v4: New Trader Rewards Overview

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:

  1. 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.
  2. 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.
  3. 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:

  1. 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!
  2. 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.
  3. 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:

  1. v4 trading would be effectively free (99% discount) until it reaches about ~50% of v3’s volume.
  2. 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 :notes:.

12 Likes

Thank you for the comprehensive analysis, @tncintra. It really helps to understand the new dYdX v4 trader rewards mechanism and how it will positively influence the transition from v3 to v4. I’m particularly intrigued by the potential effect on market maturity over time. Looking forward to the next steps!

5 Likes

I wanted to add this. If we are to reflect on the past, I believe the decision to reduce rewards on dYdX v3 was premature, given the project’s growth phase. Our prototype design for a new analytics dashboard, which uses volume data from v3, highlights days when trading on dYdX was extremely challenging due to limited liquidity.

Consider the weakest 10 days over the past 100:

Sun May 14: $291m
Sat May 20: $214m
Sun May 21: $324m
Sat May 27: $201m
Sat Jun 3: $276m
Sun Jun 4: $272m
Sat Jul 22: $336m
Sat Jul 29: $268m
Sat Aug 5: $233m
Sun Aug 6: $294m

With an average volume of around $270m for these days, I propose a metric for adjusting rewards: only when this average surpasses $1b should we contemplate reducing rewards. If it falls below $1b, we must elevate rewards to ensure continuous trading and user loyalty.

Our new tool, offering an overview of all market volumes per day, will be a valuable asset for tracking the real-time impact of reward adjustments on v4. I believe in basing reward adjustments on the average of the lowest 10 trading volume days over the past 100 days. This method provides a pragmatic and quantifiable approach to inform these decisions.

3 Likes

Thanks for the discussion @CipherLabs. I agree that volume on v3 and rewards are highly correlated, and this will likely hold true on dYdX chain. I think the idea of using trading volume as a gauge for how much we should spend in rewards is interesting, especially in v4 where trading volume is directly tied to validator incentives, and therefore the security of dYdX chain.

However I don’t believe this should apply to dYdX v3 if the goal is to migrate trading activity to v4.

It is my (rough) opinion that we’ll need at least as much in rewards on v4 than on v3 in order to encourage most trading/liquidity to migrate over. If we were to keep v3 rewards as high as it is right now, then we would effectively have to double the current emissions in order to migrate most the activity over to dYdX chain. This would be extremely costly: approximately $41M USD annually based on current DYDX prices.

The current DYDX emissions schedule on v3 is:

Instead, we might consider a budget-neutral approach:

  1. Genesis: Reduce v3 rewards by 25% and divert those to the v4 rewards treasury (~400K DYDX).
  2. Every epoch, reduce DYDX rewards on v3 by 50% and divert those to v4 rewards.

The numbers provided are just examples, and the epoch time period was chosen for convenience - we might want to expedite this process.

This approach has the upside of gradually reducing v3 rewards to encourage migration to v4, and allows us to gather data on how the market reacts and reassess our decision. However, it has the significant downside that v4 adoption is constricted by the initial ~400K DYDX funding: if the trading fees being paid on dYdX v4 exceed ~$800K USD in the first epoch, then the 99% discount is reduced.

A budget-neutral approach is just one of many options. It might be the case that, to accelerate v4 adoption, the community chooses to fund the v4 rewards module with an initial stipend of 1M DYDX, to ensure that at least the first ~$2M in trading fees are effectively free (99% discount).

Interested in hearing what others have to say!

6 Likes

Hey @tncintra great post. This approach makes a lot of sense.

A couple of thoughts on implementation:

  1. Have you done any work on how much surplus should be retained in the rewards module or how to manage this? If this is too low then the block by block reward rate could become more a function of T than C when activity is high/volatile as T could get depleted.

  2. Do you have any thoughts on cutting trading reward emissions to v3 entirely after an epoch or two? What would be the reason to keep incentivising activity there?

  3. What do you think about a bigger temporary incentive (increase trading rewards for a short, fixed period) to v4 for a month or so to create some initial activity?

5 Likes

I was going to ask the same thing.

1 Like

Hey @tncintra I duplicated my most from other topic so we keep discussion here:

From what I gather, for the first little while, up to 99% of fees will be given back as rewards in dydx tokens. That percentage will be lowered through voting once the liquidity migrates from V3.

My question is, what token will validators receive their rewards in? USDC or the native dydx token?

I’m also not sure if there will be any limit on dydx token rewards per block.

Overall, this trading rewards + stake rewards system (especially with the 99% fee return in the beginning) seems like an open invitation for wash trading. Someone with a big stack can get both rewards and a portion of fees from the validator. So their Rakeback (using a term from poker) would end up being >100%.

What do you think about the possibility of wash trading?

3 Likes

Hi @0xCLR, @CipherLabs, @RealVovochka. Thank you for the questions. We’re currently working on a more comprehensive analysis of the migration of trading rewards from v3 to v4 that we hope will answer some of your questions.

Regarding wash trading, I do believe that this should be studied in greater detail, and we’re looking into what conditions could make wash trading profitable. Right now, I am not convinced it is profitable unless a user commands a very large amount of staked DYDX.

We hope to post an update soon!

4 Likes

Hello sir. Where are you getting your data for value of DYDX incentives? I show value of incentives higher than fees since epoch 20 as 20, 23, 25, 26, and 27. I calculated it manually using the SMA DYDX price between epoch dates.

1 Like

@tncintra giving you a tag so you see the response on a stale post

1 Like

Hey @swmartin19, thanks for highlighting this. It appears I made a mistake in indexing my dataframes. I meant to use the price corresponding to the Epoch End date but accidentally used Epoch Start, so the values (esp for earlier epochs) are a little off.

I wanted to use Epoch End because that would be closer to the price that users could sell the DYDX for once they claim their rewards. However, when attempting to determine how much the DYDX was “worth” for that epoch, an SMA seems just as reasonable.

Looking at Epoch 25 as an example, about 5,057,164 USD was paid in fees and 1,582,192 DYDX was paid in rewards. The price of DYDX hovered pretty tightly around $2, so I don’t see how incentives would’ve been higher than fees for this epoch. Please correct me if I am wrong!

1 Like

Ahhh I see our discrepancy here. You only include trading fees, where as I am including LP rewards as well.

So Epoch 25 I get:

Trading Rewards - 1,582,192
LP Rewards - 1,150,685
30D SMA DYDX price - $2.01 (on Binance DYDX/USDT pair)
Total Value - $5,493,082.77

Versus trading fees of $5m

Whats the argument against not including LP rewards?

1 Like

ugh didnt reply to your response lol… tagging again.

Btw, appreciate the quick response on a stale post. Super nice of you to engage! @tncintra

1 Like