Liquidity Providers Reward Programme

Objective

The objective is to incentivise meaningful, real liquidity with maximum up-time across all products offered by PowerTrade. A Central Limit Order Book (CLOB) liquidity can be measured by a combination of factors:

  • Depth of bid/ask

  • Spreads (bid/ask from mid for top of the book)

  • Up-time or continuous market making

  • Two-way markets

  • Maker volume (liquidity that is actually taken)

Incentives by Product

There are four parts which are taken into account when rewarding market-makers across the different products:

  1. Firstly, PowerTrade measures how long each bid/offer limit orders stay live for a given market-maker hh over the current reward epoch (the current rewards epoch is 14 days). There is then a maximum spread requirement in order for the quantities to be taken into account. If values fall outside these parameters (spread to mid is too high) they are excluded from the calculations.

  2. An up-time calculation is also part of the make up of the final rewards, so market-makers are incentivised to keep this as high as possible.

  3. Finally, there are minimum requirements in terms of minimum up-time and minimum maker volume if these are not met over the epoch, the market-makers are automatically excluded from the rewards programme.

  4. The rewards are then shared proportionally, taking into account all the valid scores for the epoch.

Quantities used throughout:

  • BidDepth (AskDepth) measures the size/volume of the Bid (Ask).

  • SprBid (SprAsk) measures the spread from the Bid(Ask) level to the Mid Level, divided by spot.

  • δibid\delta_i^{bid}, δjask\delta_j^{ask} measures the proportional length of time the bid/ask order has remained live over the epoch.

  • The quantities above will be labelled with ‘i’ or ‘j’ in the equations to reference the each individual order level (i,j= 1, 2, 3, ... ).

Minimum Requirements BID:

BidDepth > min_depth_bid

SprBid < MaxSpread/Spot = max_spr_bid

SprBid= (Mid - BidLevel)/Spot

Where BidLevel is the level for the Bid.

Minimum Requirements ASK:

AskDepth > min_depth_ask

SprAsk < MaxSpread / Spot = max_spr_ask

SprAsk = (AskLevel - Mid)/Spot

Where AskLevel is the level for the Ask.

Minimum Up-Time Requirement:

Another minimum requirement to classify for the programme is that the market-maker must demonstrate a minimum 75% up-time over the epoch. By up-time it is understood that the minimum requirements on the bid/ask side are being fulfilled as described above.

Minimum Maker-Volume:

In order to classify for the programme a market-maker needs to satisfy a minimum of 0.5% of the maker volume for that period.

Options

The following parameters are applied for Options:

  • max_spread_bid = 6%

  • max_spread_ask = 6%

  • min_up_time_over_epoch = 75%

  • min_maker = 0.5%

For each strike, expiry and call put product K,T,CPK, T, CP the following quantities are computed over the time length of the entire epoch:

  1. Total depth over spread of two way liquidity for the epoch:

    QBid(K,T,CP)=δ1bidBidDepth1SprBid1+δ2bidBidDepth2SprBid2+...\small{Q^{}_{Bid}(K,T,CP) = \delta_1^{bid}\frac{BidDepth_1}{SprBid1} +\delta_2^{bid}\frac{BidDepth_2}{SprBid2}+}...

    QAsk(K,T,CP)=δ1askAskDepth1SprAsk1+δ2askAskDepth2SprAsk2+...\small{Q^{}_{Ask}(K,T,CP) = \delta_1^{ask}\frac{AskDepth_1}{SprAsk1} +\delta_2^{ask}\frac{AskDepth_2}{SprAsk2}+}...

    Only the minimum is taken, which rewards equilibrium in bid/offer and rewards two-way market-making:

    QMIN(K,T,CP)=MIN(QAsk,QBid)\small{Q_{MIN}^{}(K,T,CP) = MIN(Q_{Ask}^{},Q_{Bid}^{})}

    All observations are summed in order to provide an intermediary step score for the market-maker:

    Qstep1h=CPTKQMIN(K,T,CP)\small{Q^h_{step1} = \sum_{CP}\sum_{T}\sum_K Q_{MIN}(K,T,CP) }

  2. Minimum up-time for the period across the various strikes/expiries:

    Rewards liquidity providers who provide most uptime liquidity over the period, with a minimum required of up-time: if less than 75% of the time per day, excluded from reward programme (see below):

    UpTimeepochh=Δ(Qstep1h)\small{UpTime^h_{epoch}} = \Delta(Q^h_{step1}) Where Δ\Delta represents the fraction of time over the epoch when the liquidity provider has placed some meaningful two-way liquidity. Notice, PowerTrade measures time with nanosecond precision.

  3. Maker Volume:

    πepochh=i=1mVh(i)TVT\pi_{epoch}^h = \frac{\sum_{i=1}^m V^h(i)}{TVT}

    Where TVT = Total Volume Traded over the period for all options, πepochh\pi_{epoch}^h represents the portion of traded volume that the market-maker hh has won over the period in volume terms (m are the total trades that the market-maker has filled).

    1MinMakerVolume(h)=1\bold 1_{Min Maker Volume}\small{(h)}=1 if πepochh>minMaker\pi_{epoch}^h >minMaker

    • min_maker = 0.5%

    else, 1MinMakerVolume(h)=0\bold 1_{Min Maker Volume}\small{(h)}=0

  4. Minimum up-time is 75% over the epoch:

    This is measured as follows.

    If:

    (Δ(Qstep1h)>0.75)\Big( \Delta(Q^h_{step1}) > 0.75\Big)

    then 1MinUpTimeDay(h)=1\bold 1_{Min UpTimeDay}\small{(h)}=1 else 1MinUpTimeDay(h)=0\bold 1_{Min UpTimeDay}\small{(h)}=0

Final formula for Options Market-Maker Score:

Finally, all these quantities are put together in order to form another intermediary step in the calculations for the final score of each individual market-maker hh:

Qstep2h=Qstep1h(K,T,CP)×(UpTimeepochh)1/2×πepochh×1MinUpTime(h)×1MinMakerVolume(h)\small{Q^h_{step2} = Q^h_{step1}(K,T,CP) \times \large{(} \small{UpTime^h_{epoch}}\large{)}^{1/2} \times \pi_{epoch}^h \times \small{\bold 1_{Min UpTime}} \small{(h)} \times \bold 1_{Min Maker Volume}(h)}

Then, each individual market-maker score is assigned proportionally, taking into account all of the trading scores for the epoch:

QfinalScoreh=Qstep2hhQstep2hQ^h_{finalScore} = \frac{Q^h_{step2}}{\sum_h Q^h_{step2}}

If the total liquidity rewards for Options in PB for the epoch is RoptionsR_{options}, the individual market-maker reward is:

Roptionsh=Roptions×QfinalScorehR^h_{options} = R_{options} \times Q^h_{finalScore}

Futures

The following parameters are applied for Futures:

  • max_spread_bid = 6%

  • max_spread_ask = 6%

  • min_up_time_over_epoch = 75%

  • min_maker = 0.5%

For Futures, need to calculate score for each expiry, then add up all scores:

  1. Total depth over spread of two way liquidity at every nano-second are recorded at each Futures expiry TT: Q(fut)Bid(T)=δ1bidBidDepth1SprBid1+δ2bidBidDepth2SprBid2+\small{Q(fut)^{}_{Bid}(T) = \delta_1^{bid}\frac{BidDepth_1}{SprBid1} +\delta_2^{bid}\frac{BidDepth_2}{SprBid2}+} Q(fut)Ask(T)=δ1askAskDepth1Spr1+δ2askAskDepth2Spr2+\small{Q(fut)^{}_{Ask}(T) = \delta_1^{ask}\frac{AskDepth_1}{Spr1} +\delta_2^{ask}\frac{AskDepth_2}{Spr2}+}

    Only the minimum is taken, which rewards equilibrium in bid/offer and rewards two-way market making:

    Q(fut)MIN(T)=MIN(Q(fut)Askmin,Q(fut)Bidmin)\small{Q(fut)_{MIN}^{}(T) = MIN(Q(fut)_{Ask}^{min},Q(fut)_{Bid}^{min})}

    All observations are summed in order to provide an intermediary step score for the market-maker:

    Qstep1h(fut)=TQ(fut)MIN(T)\small{Q^h_{step1}(fut) = \sum_{T}Q(fut)_{MIN}(T) }

  2. Minimum up-time for the period across the various expiries:

    Rewards liquidity providers who provide most uptime liquidity over the period, with a minimum required of up-time: if less than 75% of the time per day, excluded from reward programme (see below): UpTimeepochh=Δ(Qstep1h(fut))\small{UpTime^h_{epoch}} = \Delta(Q^h_{step1}(fut)) Where Δ\Delta represents the fraction of time over the epoch when the liquidity provider has placed some meaningful two-way liquidity. Notice, PowerTrade measures time with nanosecond precision.

  3. Maker Volume: πperiodh=i=1mVh(i)TVT\pi_{period}^h = \frac{\sum_{i=1}^m V^h(i)}{TVT}

    Where TVT = Total Volume Traded over the period for all futures, πepochh\pi_{epoch}^h represents the portion of traded volume that the liquidity provider $h$ has won over the period in volume terms.

    1MinMakerVolume(h)=1\bold 1_{Min Maker Volume}\small{(h)}=1 if πepochh>minMaker\pi_{epoch}^h >minMaker

    • min_maker = 0.5%

    else, 1MinMakerVolume(h)=0\bold 1_{Min Maker Volume}\small{(h)}=0

  4. Minimum up-time is 75% over the epoch: This is measured as follows. If: (Δ(Qstep1h(fut))>0.75)\Big( \Delta(Q^h_{step1}(fut)) > 0.75\Big) then 1MinUpTimeDay(h)=1\bold 1_{Min UpTimeDay}\small{(h)}=1 else 1MinUpTimeDay(h)=0\bold 1_{Min UpTimeDay}\small{(h)}=0

Final formula for Futures Market-Maker Score:

Finally, all these quantities are put together in order to form another intermediary step in the calculations for the final score of each individual market-maker hh:

Qstep2h(fut)=Qstep1h(fut)×(UpTimeepochh)1/2×πepochh×1MinUpTime(h)×1MinMakerVolume(h)\small{Q^h_{step2}(fut) = Q^h_{step1}(fut) \times \large{(} \small{UpTime^h_{epoch}}\large{)}^{1/2} \times \pi_{epoch}^h \times \small{\bold 1_{Min UpTime}} \small{(h)} \times \bold 1_{Min Maker Volume}(h)}

Then, each individual market-maker score is assigned proportionally, taking into account all of the trading scores for the epoch:

QfinalScoreh(fut)=Qstep2h(fut)hQstep2h(fut)Q^h_{finalScore}(fut) = \frac{Q^h_{step2}(fut)}{\sum_h Q^h_{step2}(fut)}

If the total liquidity rewards for Futures in PB for the epoch is $R_{futures}$, the individual market-maker reward is:

Rfuturesh=Rfutures×QfinalScoreh(fut)R^h_{futures} = R_{futures} \times Q^h_{finalScore}(fut)

Spot

The following parameters are applied for Spot:

  • max_spread_bid = 6%

  • max_spread_ask = 6%

  • min_up_time_over_epoch = 75%

  • min_maker = 0.5%

For spot, scores are simplified even further

  1. Total depth over spread of two way liquidity at every nano-second Q(spot)Bid=δ1bidBidDepth1SprBid1+δ2bidBidDepth2SprBid2+\small{Q(spot)^{}_{Bid} = \delta_1^{bid}\frac{BidDepth_1}{SprBid1} +\delta_2^{bid}\frac{BidDepth_2}{SprBid2}+}

    Q(spot)Ask=δ1askAskDepth1SprAsk1+δ2askAskDepth2SprAsk2+\small{Q(spot)_{Ask}^{} = \delta_1^{ask}\frac{AskDepth_1}{SprAsk1} +\delta_2^{ask}\frac{AskDepth_2}{SprAsk2}+}

    Only the minimum is taken, which rewards equilibrium in bid/offer and rewards two-way market making:

    Q(spot)MIN=MIN(QAsk(spot),QBid(spot))\small{Q(spot)_{MIN}^{} = MIN(Q_{Ask}(spot),Q_{Bid}(spot))} Qstep1h(spot)=Q(spot)MIN\small{Q^h_{step1} (spot)= Q(spot)_{MIN} }

  2. Minimum up-time for the period.

    Rewards liquidity providers who provide most uptime liquidity over the period, with a minimum required of up-time: if less than 75% of the time per day, excluded from reward programme (see below):

    UpTimeepochh=Δ(Qstep1h(spot))\small{UpTime^h_{epoch}} = \Delta(Q^h_{step1}(spot)) Where Δ\Delta represents the fraction of time over the epoch when the liquidity provider has placed some meaningful two-way liquidity . Notice, PowerTrade measures time with nanosecond precision.

  3. Maker Volume:

    πperiodh=i=1mVh(i)TVT\pi_{period}^h = \frac{\sum_{i=1}^m V^h(i)}{TVT}

    Where TVT = Total Volume Traded over the period for all spot trades, πepochh\pi_{epoch}^h represents the portion of traded volume that the liquidity provider hh has won over the period in volume terms.

    1MinMakerVolume(h)=1\bold 1_{Min Maker Volume}\small{(h)}=1 if πepochh>minMaker\pi_{epoch}^h >minMaker

    • min_maker = 0.5%

    else, 1MinMakerVolume(h)=0\bold 1_{Min Maker Volume}\small{(h)}=0

  4. Minimum up-time is 75% over the epoch: This is measured as follows. If: (Δ(Qstep1h(spot))>0.75)\Big( \Delta(Q^h_{step1}(spot)) > 0.75\Big) then 1MinUpTimeDay(h)=1\bold 1_{Min UpTimeDay}\small{(h)}=1 else 1MinUpTimeDay(h)=0\bold 1_{Min UpTimeDay}\small{(h)}=0

Final formula for Spot Market-Maker Score:

Finally, all these quantities are put together in order to form another intermediary step in the calculations for the final score of each individual market-maker hh:

Qstep2h(spot)=Qstep1h(spot)×(UpTimeepochh)1/2×πepochh×1MinUpTime(h)×1MinMakerVolume(h)\small{Q^h_{step2}(spot) = Q^h_{step1}(spot) \times \large{(} \small{UpTime^h_{epoch}}\large{)}^{1/2} \times \pi_{epoch}^h \times \small{\bold 1_{Min UpTime}} \small{(h)} \times \bold 1_{Min Maker Volume}(h)}

Then, each individual market-maker score is assigned proportionally, taking into account all of the trading scores for the epoch:

QfinalScoreh(spot)=Qstep2h(spot)hQstep2h(spot)Q^h_{finalScore}(spot) = \frac{Q^h_{step2}(spot)}{\sum_h Q^h_{step2}(spot)}

If the total liquidity rewards for Spot in PB for the epoch is RspotR_{spot}, the individual market-maker reward is:

Rspoth=Rspot×QfinalScoreh(spot)R^h_{spot} = R_{spot} \times Q^h_{finalScore}(spot)

Perps

The following parameters are applied for Perps:

  • max_spread_bid = 6%

  • max_spread_ask = 6%

  • min_up_time_over_epoch = 75%

  • min_maker = 0.5%

For spot, scores are simplified even further

  1. Total depth over spread of two way liquidity at every nano-second Q(perps)Bid=δ1bidBidDepth1SprBid1+δ2bidBidDepth2SprBid2+\small{Q(perps)^{}_{Bid} = \delta_1^{bid}\frac{BidDepth_1}{SprBid1} +\delta_2^{bid}\frac{BidDepth_2}{SprBid2}+} Q(perps)Ask=δ1askAskDepth1Spr1+δ2askAskDepth2Spr2+\small{Q(perps)^{}_{Ask} = \delta_1^{ask}\frac{AskDepth_1}{Spr1} +\delta_2^{ask}\frac{AskDepth_2}{Spr2}+}

    Only the minimum is taken, which rewards equilibrium in bid/offer and rewards two-way market making:

    Q(perps)MIN=MIN(Q(perps)Ask,Q(perps)Bid)\small{Q(perps)_{MIN}^{} = MIN(Q(perps)_{Ask},Q(perps)_{Bid})}

    All observations are summed in order to provide an intermediary step score for the market-maker:

    Q)step1h(perps)=Q(perps)MIN\small{Q)^h_{step1}(perps) = Q(perps)_{MIN}}

  2. Minimum up-time for the period across the epoch.

    Rewards liquidity providers who provide most uptime liquidity over the period, with a minimum required of up-time: if less than 75% of the time per day, excluded from reward programme (see below):

    UpTimeepochh=Δ(Qstep1h(perps))\small{UpTime^h_{epoch}} = \Delta(Q^h_{step1}(perps))

    Where Δ\Delta represents the fraction of time over the epoch when the liquidity provider has placed some meaningful two-way liquidity . Notice, PowerTrade measures time with nanosecond precision.

  3. Maker Volume:

    πperiodh=i=1mVh(i)TVT\pi_{period}^h = \frac{\sum_{i=1}^m V^h(i)}{TVT}

    Where TVT = Total Volume Traded over the period for all spot trades, πepochh\pi_{epoch}^h represents the portion of traded volume that the liquidity provider hh has won over the period in volume terms.

    1MinMakerVolume(h)=1\bold 1_{Min Maker Volume}\small{(h)}=1 if πepochh>minMaker\pi_{epoch}^h >minMaker

    • min_maker = 0.5%

    else, 1MinMakerVolume(h)=0\bold 1_{Min Maker Volume}\small{(h)}=0

  4. Minimum up-time is 75% over the epoch: This is measured as follows. If: (Δ(Qstep1h(perps))>0.75)\Big( \Delta(Q^h_{step1}(perps)) > 0.75\Big) then 1MinUpTimeDay(h)=1\bold 1_{Min UpTimeDay}\small{(h)}=1 else 1MinUpTimeDay(h)=0\bold 1_{Min UpTimeDay}\small{(h)}=0

Final formula for Perps Market-Maker Score:

Finally, all these quantities are put together in order to form another intermediary step in the calculations for the final score of each individual market-maker hh:

Qstep2h(perps)=Qstep1h(perps)×(UpTimeepochh)1/2×πepochh×1MinUpTime(h)×1MinMakerVolume(h)\small{Q^h_{step2}(perps) = Q^h_{step1}(perps)\times \large{(} \small{UpTime^h_{epoch}}\large{)}^{1/2} \times \pi_{epoch}^h \times \small{\bold 1_{Min UpTime}} \small{(h)} \times \bold 1_{Min Maker Volume}(h)}

Then, each individual market-maker score is assigned proportionally, taking into account all of the trading scores for the epoch:

QfinalScoreh(perps)=Qstep2h(perps)hQstep2h(perps)Q^h_{finalScore}(perps) = \frac{Q^h_{step2}(perps)}{\sum_h Q^h_{step2}(perps)}

If the total liquidity rewards for Perps in PB for the epoch is RperpsR_{perps}, the individual market-maker reward is:

Rperpsh=Rperps×QfinalScoreh(perps)R^h_{perps} = R_{perps} \times Q^h_{finalScore}(perps)

Last updated