Analysis of v4 draws

In an attempt to make some informed decisions regarding updates to the prize distribution for the v4 USDC pool, I converted the NPM draw calculator to a Brownie script and analyzed all prizes the Polygon depositors can claim in the first 16 draws.

Below plots show a graphical representation. The data on the x-axis are depositors sorted by their cumulative TWAB for the first 16 draws. Prizes (or values) are divided in a claimed and dropped category. The claimed category are prizes depositors can actually claim while the dropped category are prizes they cannot claim due to the configured maximum number of prizes they can claim per draw (currently this is set at 2).

prizes_all

The first plots shows claimable and dropped prizes for all depositors. It’s immediately clear that the biggest 500 depositors can regularly claim prizes while the amound of dropped prizes is only significant for the biggest 100 depositors or so.

prizes_100

The next plot shows a zoomed in version of the subset of prizes earned by the largest 100 depositors. Most of them max out the claimable prizes and the ones that do not usually only deposited after a couple of draws were distributed already. Interestingly, the number of dropped prizes tapers off quite quickly. While the biggest depositors lose out on more than 200 prizes, the ones in the second half of the largest 100 depositors miss out on around 10 to 20 prizes over 16 draws. I think this suggest a strong support for raising the maximum price cap to about 4.

prizes_1000-1100

Even smaller depositors in the 1000 to 1100 range regularly earn prizes. This category of depositors has around 100 USDC deposited and has won about 20 prizes over 16 draws.

A more numeric representation of this data can be found below. All identities together can claim close to 5000 prizes and about 3500 can never be claimed due to the claim limit. Most of these dropped prizes originate from the top 100 depositors.

Total prizes claimed (by all addresses): 4845
Total prizes dropped (by all addresses): 3445
Total prizes claimed (by addresses 0-100): 1997
Total prizes dropped (by addresses 0-100): 3108
Total prizes claimed (by addresses 1000-1100): 20
Total prizes dropped (by addresses 1000-1100): 0

The next plots show the total claimable and dropped value over all these draws and prizes for all depositors, the biggest 100 depositors and the ones in the arbitrarily chosen 1000 to 1100 range.

values_all

values_100

values_1000-1100

If we look at the total value claimed over the first 16 draws, we can see that the biggest depositors are able to claim about 3000 to 4000 USDC with some obvious peaks for the users that won a $2500 prize. Apparently there was one very lucky person around position 400 that can claim a $2500 prize while having less than $2000 deposited. In the 1000 to 1100 range, there was also one person that won a $100 prize (essentially doubling the size of his deposit).

Over the past 16 draws, about $130k is claimable and $35k will roll over after 60 days. The biggest 100 depositors can claim about half of all prize value.

Total value claimed (by all addresses): 127.410
Total value dropped (by all addresses): 35.260
Total value claimed (by addresses 0-100): 68.570
Total value dropped (by addresses 0-100): 31.890
Total value claimed (by addresses 1000-1100 ): 290
Total value dropped (by addresses 1000-1100 ): 0

If you have any questions about this data, ask below. If you want to see other things related to prize draws analyzed, please suggest so below and we’ll see if I can do that.

9 Likes

Thanks so much for this @drcpu! Super quality work.

Since you were the one who put this together, I’m curious, do you have any specific recommendations?

My take on it is that it actually seems the prize cap is working fairly well in limiting the impact of whales. It seems though to really boost impact though what we’d want to do is also boost the total number of prizes to be distributed. Just my thoughts after reading, I’d love to know yours!

1 Like

I don’t think I really have any specific recommendations. The current distribution parameters seem to work rather well. I would maybe raise the prize cap a little bit such that medium-size depositors don’t hit the cap, for two reasons:

  1. It would make wallet splitting significantly less interesting except for the biggest whales and for them it’ll be a significant hassle.
  2. Until we have established a proper framework on how to redistribute rolled over price money (e.g. by increasing the prize cap), it does not make a ton of sense to not optimize the distribution to start with.

It seems about 1/5 of all prize money won’t be able to get claimed. I think it makes sense to redistribute that as more small prizes.

1 Like

could this be used to buy/bond POOL and distribute it only to depositors that hold POOL in their wallet?

4 Likes

My only short term feedback is to probably increase number of prizes from 2 to 3/4.

A few of my friends with $10k - $50k deposit sizes split deposits into multiple wallets with $5k in each.

So if wallet cap increases to 3 or 4 - makes life easier for everyone

1 Like

Great analysis. I enjoyed every bit of it.

It seems that we kind of need to decide what is the quantity from which we want to start to penalize the deposit. And from there we could calculate the wallet cap.

We have introduced a wallet cap to avoid Wales to win all the prizes (because people were discouraged after seeing that one wallet could get most of the prizes). Increasing the wallet cap to 4 prizes is very reasonable in my opinion. I don’t think that anybody would be “disappointed” by seeing other people get 4 prizes.

With this new wallet cap we would be penalizing wallets that have around 20K or higher (rough estimation). I don’t consider 20K or less to be a whale at all, which is why I don’t think that we should penalize those deposits (which we’re doing right now with the 2 prizes per wallet cap).

I’m even in favour of increasing the wallet cap to 10 prizes in the future, but I wouldn’t do this just now. The reasoning for me to think this is that prizes right now are mostly funded by PT Treasury, so I like the fact that those prizes can go to many small fishes that can get a good impression of PT and spread the word.

I also take this opportunity to express that I believe that we should consider doing a weekly draw instead of daily. I’m seeing plenty of messages in the Discord saying that they have been 5 days without winning a prize, so they are losing a bit of hope. And that is just crazy!!! People are losing the perspective and think that because there are daily prizes they should be winning on a daily basis.

I believe that if the draws were made weekly, we could increase the number of prizes in one draw and people wouldn’t get this feeling that they are not winning during multiple draws.

3 Likes

I agree that we should increase the prize cap, and do so gradually. No extreme changes! @drcpu’s choice of 4 seems sensible to me.

In terms of the daily vs weekly, it kind of ends up being the same. If you think about it, we have approximately 7 * 800 = 5600 weekly prizes going out. We could make it weekly and explicitly 5600 prizes, but then you’d have to wait a whole week to see if you’ve won. If you haven’t, imagine how dejected you’d be!

I like that someone has something to look forward to every day; and we do still have optionality with the prizes. The next tier up from 768 is 3072. So we could cut the 768 prize tier to $5, and also have 3072 $1 prizes. On Polygon with tx fees being so low it still makes sense.

Personally, I like the idea of having very small prizes. It reminds me of a $1 scratch and win, where the odds of winning $2 were relatively high.

3 Likes

Here is the repository I used to perform the analysis of the top post.

3 Likes

If the goal is to prevent whales from winning all the prizes and the 2 prize cap did just that - why do we think it’s reasonable to raise the cap now/already? Just because of middle depositors reaching the threshold? That’s silly. Just look at the first graph. If it gets skewed back towards the whales at all, we are back to where we started.

Why can’t all the dropped prizes just go back into the pot as tickets that can’t win so it perpetually raises the prizes for everyone?

Whale narrative:
I know ‘yearn’ farming/dumping rightly caused a negative perception against whales. But all of us need to remember whales/big deposits are necessary for the protocol to grow and organically generate prizes. A good (or an ideal) whale could be a ‘treasury’ deposit from another protocol worth millions, or individuals who genuinely believe in the long term vision and don’t dump farmed POOL. So we should absolutely encourage whales and incentivize them with ‘POOL’ tokens, but only for exhibiting desired ideal behavior (such as long term deposits, not dumping POOL token etc)

Prize cap:
We are not even talking about whales, we are just talking about a medium sized depositor with $5k - $50K deposit. The 2 prize cap was just a starting point, and based on user’s experience - their deposit may not be earning them their fair share of prizes. Example - If $5k or a $50k deposit lets a user win 2 prizes frequently per day, then there is no incentive for a user to deposit $50k. Or he may end up splitting $50k deposit as $5k each over 10 separate accounts , causing us to incorrectly assess new user growth.

Summary: Focus of v4 narrative is to emphasize that it is friendly for small depositors , but lets not over-index on limiting price caps or whale deposits as it will be detrimental to protocol growth

3 Likes

Wow guys so i had estimated that at 100k 80% of the APR is lost, but the whale punishment is actually a lot steeper.

Wrote some code to simulate prizes:

here are the results:

> estimateMultiple()
1000 [ 5781, 5783, 0.9996541587411378 ]
2000 [ 9807, 9826, 0.9980663545695094 ]
5000 [ 33638, 34109, 0.9861913278020464 ]
10000 [ 63537, 66240, 0.9591938405797101 ]
12000 [ 71194, 75390, 0.9443427510279878 ]
15000 [ 82475, 89852, 0.9178983216845479 ]
20000 [ 105342, 118495, 0.8889995358453944 ]
50000 [ 234853, 304434, 0.7714414290125282 ]
100000 [ 446671, 646365, 0.6910507221152136 ]

The simulation simulates one draw per $100 per day, and only 10_000 days of simulation, so there is imprecision. However, I ran it multiple times and the punishment ratio should be well within 1% of analytical (‘true’) answer.

Basically, even going from just 10k to 20k, one goes from 95% efficient to 88% efficient.
So if we are at 24% APR at $1000, 23% APR at $10,000, 21% APR at $20,000
and 16% APR at $100,000 !!

The code:

const daily100DPWin = 1/69.39 // daily 100 dollar probability of winning
const deposit = 10000

//tiers
const totalPrizes = 4096
const tierNumPrizes = [1,   3,  12, 48, 192, 768, 3072]
const tierPrizes = [2500, 500, 200, 50,  10,   5,    1]

function simulate(deposit = 10000) {
  let prizes = []
  for(let draw=0; draw<Math.trunc(deposit/100); draw++){
    for(let tier in tierNumPrizes){
      if (Math.random() < (tierNumPrizes[tier]/totalPrizes*daily100DPWin)) {
        prizes.push(tierPrizes[tier])
      }
    }
  }
  return prizes.sort(function(a, b){return b-a});
}

function estimatePunishment(deposit=10000, simulateDays=10000, maxPrizes=2) {
  let unpunishedWinnings = 0
  let punishedWinnings = 0
  for(let days=0; days<simulateDays; days++) {
    let dayResult = simulate(deposit)
    unpunishedWinnings += dayResult.reduce((partial_sum, a) => partial_sum + a, 0);
    punishedWinnings += dayResult.slice(0,maxPrizes).reduce((partial_sum, a) => partial_sum + a, 0);
  }
  return [punishedWinnings, unpunishedWinnings, punishedWinnings/unpunishedWinnings]
}

function estimateMultiple(deposits = [1000, 2000, 5000, 10000, 12000, 15000, 20000, 50000, 100000]) {
  for (const deposit of deposits) {
    console.log(deposit, estimatePunishment(deposit))
  }
}

estimateMultiple()
6 Likes

Very interesting stuff. Would it be possible to run it again now that the TVL has grown even further?

If I understand correctly, it means that the narrative “the more you deposit, the more you win” is incorrect.

Looks like that doesn’t include what kind of prizes you are winning. @Pedrowww commented If I understand correctly, it means that the narrative “the more you deposit, the more you win” is incorrect. but whales are much more likely to win the $2,500 prize, correct?

APR isn’t only the # of prizes you win but also the tiers of prize value.

3 Likes

Pulling data from the past draws, it seems that most of the tier 1 and 2 prizes are won by non-whales. But a proper analysis might debunk my empirical approach.