Rewards are calculated daily, based on the % of the square root of your total trading volume as compared to the square root of all participants' volume. A cap is also applied, in order to avoid reward concentration. This cap can be different for each reward pool and might change over time.
Here are the exact steps the code performs to calculate rewards for each user:
- Calculate the total trade volume (base sell, and base buy) for all active users that took place this day (UTC)
where X is the number of trades that User 1 made this day, and ‘trade’ is a trade made by user 1
- Total the square root of all user total (be sure to square root before taking a summation):
where X is the total number of users
- For each user, calculate the square root of their total
- Take the ratio of UserRoot to RootTotal - this gives the percentage of daily rewards this user will receive, without the cap.
- Apply the cap (if any):
- Next, we calculate the daily payout amount. This is the total reward pool, divided by the number of days in the bounty period.
- Finally, we calculate each user's daily reward by multiplying the daily payout amount by each user’s payout percentage: