❓

# Trading Rewards - FAQs

Frequently asked questions for VRTX trading rewards.

No, each epoch is independent. You will qualify as long as your maker volume of the current epoch is >0.25%.

Spot and perpetual markets have the same requirements, so both of them should be 5K.

Uptime represents the total minutes in the epoch (out of 28 days) your

`Q_MIN(N)`

is positive, so it's a value in the range of `[0, 40320]`

.`maker_fee`

doesn’t represent fees that maker paid, it represents the accumulative `taker_fee`

that the opposite side of your maker order paid, which means for a trade --`(taker, maker, taker_fee)`

, we keep track of fees as follows -- `taker_fees(taker) += taker_fee`

, `maker_fees(maker) += taker_fee`

.Calculations are based on wallet addresses. To sum them up, we extract the wallet from all subaccounts, and all trades / orders across multiple subaccounts are unified.

Yes, we take the smaller side of bid and ask as your size.

The

`reward_coefficient / num_product`

represents the portion of tokens (both maker and taker) allocated to the product. Assume epoch total maker tokens are 1000, we have 4 products. If a product has `reward_coefficient = 1.2`

, maker / taker tokens allocated to this product will be `1000 * 1.2 / 4`

. We want to allocate more tokens to more active markets, so the more fees a market collected, the higher

`reward_coefficient`

it will have.Not the whole minute, we take a snapshot every minute using random sampling. You’ll qualify as long as you meet the requirements when the snapshot is taken.

We use the mid-market price --

`(bid_1 + ask_1) / 2`

.`Q_MIN(N) = min(Q_BID(N), Q_ASK(N))`

, where:`Q_BID(N) = BidDepth_1 / BidSpread_1 + BidDepth_2 / BidSpread_2 + ...`

`Q_ASK(N) = AskDepth_1 / AskSpread_1 + AskDepth_2 / AskSpread_2 + ...`

We’ll use an example to introduce how these values (

`Depth`

and `Spread`

) are calculated.Assume you have the following orders:

**Price**: $80, size: 999 (bid)**Price**: $98, size: 10 (bid)**Price**: $99, size: 6 (bid)**Price**: $101, size: 8 (ask)**Price**: $102, size: 15 (ask)**Price**: $140: size: 999 (ask)

Assuming the mid market price is $100, min depth is $1.5k, and max spread is 0.05, we have:

`BidDepth_3 = 80*999 = 79920`

,`BidSpread_3 = (100-80)/100 = 0.2`

`BidDepth_2 = 98*10 = 980`

,`BidSpread_2 = (100-98)/100 = 0.02`

`BidDepth_1 = 99*6 = 594`

,`BidSpread_1 = (100-99)/100 = 0.01`

`AskDepth_1 = 101*8 = 808`

,`AskSpread_1 = (101-100)/100 = 0.01`

`AskDepth_2 = 102*15 = 1530`

,`AskSpread_2 = (102-100)/100 = 0.02`

`AskDepth_3 = 140*999 = 139860`

,`AskSpread_3 = (140-100)/100 = 0.4`

Since

`BidSpread_3 > 0.05`

and `AskSpread_3 > 0.05`

, these two orders will be ignored. Now the depths of valid orders are:`BidDepth = BidDepth_2 + BidDepth_1 = 1574`

`AskDepth = AskDepth_2 + AskDepth_1 = 2338`

Since both depths are more than the requirement ($1.5k), we have:

`Q_BID(N) = 594 / 0.01 + 980 / 0.02 = 108400`

`Q_ASK(N) = 808 / 0.01 + 1530 / 0.02 = 157300`

So,

`Q_MIN(N) = min(108400, 157300) = 108400`

.However, if the $99 order’s size is 5 (instead of 6), the

`Q_MIN(N)`

will be 0 since the min depth requirement can’t be fulfilled on the bid side.We have

`q_score = sum_q_min^0.3 * maker_fee^0.7 * uptime^5`

, where `sum_q_min`

represents the sum `Q_MIN(N)`

across all minutes, `maker_fee`

and `uptime`

have been introduced above. `q_score`

directly determines how many tokens you will get which is -- `q_score / sum(q_score, across all addresses) * total_maker_tokens`

, so you can try to increase any of these three values to get better `q_score`

subsequently getting more tokens.