dYdX Trading Rewards Mechanism Review

Article by Max Holloway (@max_holloway) | Paper by Thomas Cintra & Max Holloway

Since the introduction of the dYdX foundation in August of 2021, there has been an explosion of growth for the dYdX protocol. The protocol went from daily volume in the tens of millions of dollars to daily volume in the hundreds of millions of dollars, to now daily volume in the billions of dollars. Open interest has told a similar story of growth, with daily average open interest currently hovering around $1B.

Clearly some of this growth has been fueled by the rewards mechanisms that dYdX offers to incentivize trading. The rewards mechanism that all traders have access to is aptly named the Trader Rewards mechanism. Roughly speaking, this mechanism distributes a 3,835,616 DYDX tokens to traders after every 28 day epoch. The way it decides how much of the rewards pool to give to each trader is through the following rewards formulas.

dYdX Rewards Formulas
dYdX Rewards Formulas

Here, w is a trader’s trader score, f is the amount a trader pays in fees, d is the trader’s average open interest (i.e. average sum of position sizes), and g is the trader’s amount of DYDX staked; a, b, and c are weight parameters that determine the importance of f, d, and g respectively; R is the total amount of DYDX distributed at the end of the epoch, and r is the amount of DYDX received by the trader. At the end of every 28 day epoch, dYdX calculates every trader’s trader score w by looking at the trader’s fees (f), average open interest (d), and staked DYDX (g) throughout the epoch, finding the sum of all of the traders’ trader scores, and then calculating the amount of rewards to be received r for each trader.

If this formula sounds a bit complicated, that’s because it is! But it can be understood as a formula that satisfies the following objectives for dYdX:

  • dYdX wants to give rewards to traders who pay a lot of fees, keep a lot of open interest, and have a lot of staked DYDX (explaining f, d, and g);
  • dYdX cares more about some of these than others (explaining a, b, and c); and
  • dYdX wants every trader to have a little bit of each (explaining the multiplication of factors).

When we take all of these objectives together, this formula is not so complicated at all, and instead is an elegant way of capturing all of the listed desired behavior from dYdX.

Why should we care about the trader rewards mechanism?

The trader rewards mechanism distributes 3,835,616 DYDX tokens to dYdX exchange traders every 28 days. This is an immense amount of value up for grabs, and with this value come profit-maximizing traders. Some tangible proof of the existence of rewards-maximizing traders is the fact that one trader pushed almost $1.7B of wash trading volume through the COMP-USD perpetual market near the end of epoch 0, which could only reasonably have been done in order to get trader rewards. In general, historical data shows that in all except one of the past eight epochs, trading volume has surged at the end of the epoch. This phenomenon has been well documented in multiple commonwealth posts.

Graph of trading volume over time. Weeks containing the end of an epoch are circled in red.
Graph of trading volume over time. Weeks containing the end of an epoch are circled in red.

So why does this increased trading volume in the end of each epoch occur? As it turns out, it is entirely a product of the way that the trader rewards mechanism is set up! And we can understand it further by taking a trip into the mind of a rational trader who wants to maximize their rewards from dYdX.

Maximizing trader rewards profits

To comprehend why traders would want to increase their trading volume near the end of an epoch, we just need to ask ourselves two simple questions.

  1. Would you rather pay for something and receive it in a month or pay for something and receive it in a week?
  2. Would you rather pay for something before you know how much it is worth or pay for something after you know how much it is worth?

The obvious answer to both of these questions is that you would rather pay for something and receive it in a week, and you would rather know the value of the thing you are paying for before paying for it. With this in mind, we can gain some intuition for why traders would wait until the end of a trading epoch to pay dYdX fees. Traders would rather pay later so that they can wait the minimal time after payment to receive rewards, and they also have a lot more information about how much the DYDX rewards are worth once they near the end of the epoch. It is for this reason that we observe so much exchange volume on dYdX at the end of each epoch!

Now that we know why rewards-maximizing traders pay more dYdX fees at the end of an epoch, we can move on to a more nebulous question: how much should a trader pay in fees to maximize their rewards profits? It turns out, the answer to this question is far from obvious, and it takes a lot of math to find it. If the trader pays too little in fees, then their trader score is lower and they miss out on rewards; if the trader pays too much in fees, then they get a lot of rewards, but they lose all of the money they spent on fees. The trader’s profit function with respect to their fees paid resembles a concave-down function with a single maximum point.

Trader’s profit function, with respect to the amount of fees that the trader pays.
Trader’s profit function, with respect to the amount of fees that the trader pays.

To maximize the rewards that a trader gets, they just need to find the amount of fees that lead to a maximum for the curve given above. Simple, right? Well, it is simple, until we recall the fact that there may be over a thousand other traders doing the exact same optimization, and the amount that they pay in fees has an impact on the sum of all trader scores, which has an impact on every individual’s profit curve! So how in the world can we simultaneously optimize for each trader’s profit function?

This is where game theory comes to the rescue. We can employ concepts from mathematical optimization to write an algorithm that will find what is called a Nash Equilibrium, which is a set of strategies used by all of the rewards-maximizing traders in order to determine their amount of fees paid, such that no individual trader would want to change their action. In simple terms, we can find a way that every rewards-maximizing trader should behave, such that none individual traders would want to change their behavior. Furthermore, we are able to demonstrate that this Nash equilibrium is unique, and thus it is a dominant strategy for players to follow the optimization algorithm that we provide.

This is an important result, because it shows anyone on dYdX how to maximize the profits that they can get from the trader rewards mechanism. With our code public, anyone can run the algorithm to help determine an amount that they should pay in fees in order to maximize their trading rewards profits. However, we must reiterate that the authors are not liable for the outcomes of users’ trading; the algorithm provided is offered as-is, and the authors are not liable for its correctness.

For traders who pay a rewards-profit-maximizing amount in fees, we find that they may see returns of upwards of 60% annualized on capital deployed, although this value does not come without risk, and we encourage traders to perform their own analysis, as this article is not financial advice.

In addition to providing tools for profit-maximizing rewards traders, we also found a chilling result regarding the dYdX exchange volume. When we model the dYdX exchange as only being composed of rewards-profit-maximizing traders, we find that the expected total fees paid closely resembles what we observe in real life. That is, all of dYdX’s exchange volume could be explained by the existence of rewards-profit-maximizing traders. We are not claiming that the exchange is only composed of rewards-profit-maximizing traders, however we find this phenomenon interesting and worth investigating further.

Ideas for new rewards mechanisms

Now that we understand some of the cool properties of the existing mechanism, let’s talk about some changes that we might make to improve it.

The main complaint given by community members regarding the current trading rewards mechanism is that it incentivizes an inorganically large amount of volume near the end of the epoch. Some solutions were posted in forums, such as setting the fee parameter to the median of a trader’s fees paid in each hour, or decreasing the length of the epoch. Neither of these ideas are viable, since the first idea excludes infrequent traders from rewards, and the second idea is impractical from a dYdX implementation perspective. Perhaps more fundamentally though, neither of these ideas address the reason why traders have elevated trading at the end of the epoch, and both of these ideas would still be subject to elevated trading near the end of each hour and near the end of the shorter epoch, respectively.

We propose another mechanism, which splits the epoch into N intervals and gives R/N rewards at the end of each interval, with the following catch: each interval is offset by a random noise parameter r. For instance, instead of splitting the epoch into intervals that end at days [1, 2, 3, ..., 27, 28] and giving R/n rewards to traders at the end of each interval, we propose splitting the epoch into intervals that end at days [r, 1+r, 2+r, ..., 27+r], where r is randomly selected time between 0 and 1 days long. This random noise parameter is only determined after the end of each epoch, at which point it can be generated on-chain using Chainlink’s Verifiable Random Function, and then used by dYdX to compute the amount of rewards that each trader is entitled to.

This mechanism uses randomness to make it infeasible for traders to know when each trading interval ends, and thus eliminates their ability to pay higher fees near the end of the epoch. We would expect then that traders under this mechanism maximize their rewards profits by paying fees at a constant rate throughout the epoch, rather than saving all of their fees for the end of the epoch. This mechanism would thus entirely resolve the exaggerated end-of-epoch trading observed in the current trading rewards mechanism.

Unfortunately, each of the mechanisms, including the random noise mechanism, make it significantly more difficult for rewards-profit-maximizing traders to maximize their profits. Thus, they will likely lead to lower participation in rewards-profit-maximization, leading to more concentrated rewards in the hands of few sufficiently high frequency traders, and also leading to lower dYdX exchange revenues.

While the exaggerated end-of-epoch fees demonstrate clear rewards-profit-maximizing behavior, the current mechanism at least provides an accessible way for all traders to maximize their rewards profits, especially now that we have provided an algorithm that anyone can use to estimate their optimal fees paid. None of the new mechanisms mentioned satisfy this important property, and thus we suggest keeping the current rewards mechanism for the time being.

Trader rewards parameter recommendations

Although we do not have a better alternative than the current trader rewards formula, we do have recommendations for improving the rewards formula’s parameters. Specifically, we find that heavily incentivizing open interest has dubious positive effects on protocol long-term growth, and on its own it does not contribute to protocol revenue. Lowering the weight of open interest, b, would relax the incentive for traders to take out highly leveraged positions in order to compete for rewards revenue. Thus, it seems that lowering the b parameter would be a positive change for the exchange. This would also allow us to increase the fee weight, a, which we show in our paper is roughly linearly correlated with exchange revenues.

Comparison of old weights and new weights for the trader rewards formula.
Comparison of old weights and new weights for the trader rewards formula.

We recommend decreasing the open interest parameter from b=0.28 → b=0.15 and increasing the fee parameter from a=0.67 → a=0.80. We anticipate that this will lead to an approximately 20% increase in exchange revenues each epoch, which at the time of writing would entail approximately $3M in marginal exchange revenue in each 28-day epoch.

Pre-epoch sales

In addition to recommendations for the trader rewards formula and its parameters, we also provide a recommendation for the asset in which trader rewards should be distributed. Although it is most straightforward for dYdX to issue rewards denominated in the DYDX token, this leads to a number of undesirable results for rewards-profit-maximizing traders. Namely, since the trader must pay fees during the epoch and receive DYDX rewards at the end of the epoch, the trader must incorporate implicit DYDX exposure into their trading strategy. Yet, the precise amount of DYDX is not known until the very end of the epoch, which makes it exceedingly difficult for rewards-profit-maximizers to hedge their DYDX exposure throughout the epoch. While this on the surface seems nice — after all, why would you want traders to short the DYDX token? — it is actually to the detriment of the exchange, since this presents yet another barrier to new traders coming in, and it encourages risk-averse traders to underpay in fees in case the DYDX price slips between the time they trade and the time they receive DYDX rewards. This, of course, leads to lower dYdX revenues.

To resolve this issue, we propose a simple solution: conduct a sale of DYDX tokens into stable asset(s) (e.g. USDC or DAI) before the beginning of each epoch, and distribute all of the proceeds from the sale as trader rewards. This allows all traders to know the value of the rewards pool before they begin trading for the epoch, and thus eliminates the need for traders to integrate an unknown amount of DYDX exposure into their portfolios. This change is expected to increase trader participation.

Final Thoughts

From an intro to the dYdX trader rewards mechanism to recommendations for improvements to the mechanism, we covered a lot in this article. The current trader rewards mechanism has proven to be an elegant way to grow exchange volume and open interest, and although it has the unsavory side effect of incentivizing inorganic late-epoch trading, it still remains the most fair and accessible mechanism of the ones studied. In particular, it provides an easy way for rewards-profit-maximizing traders to maximize their rewards, which results in increased exchange revenues. We also find that the parameters of this model can be improved in such a way that we expect will yield $3M+ in marginal revenue per 28-day epoch, which only comes at the expense of open interest, which we argue is not a particularly useful business metric to optimize. Finally, we propose that dYdX distribute rewards as stable assets rather than as DYDX, which we also believe will increase rewards-profit-optimizing trader participation as well as exchange profits.

We hope this project inspires everyday dYdX traders to spend more in fees to maximize their rewards profits, and we hope it also inspires those outside of the dYdX ecosystem to start trading on the platform — come on in, the trading rewards are fine! 🦔


Disclosure: Reference to the DYDX price is necessary for this research. The authors do not own DYDX token, nor are they affiliated with dYdX Trading Inc. or any of its affiliates. This research was funded by the dYdX Grants DAO. Any opinions and results stated here are those of the authors, not of dYdX, its affiliates, nor the dYdX Grants DAO. This is not financial advice.

Subscribe to Xenophon Labs
Receive the latest updates directly to your inbox.
This entry has been permanently stored onchain and signed by its creator.