# User's odds

**So, how are the odds calculated, and how is the winner chosen?** We need to understand two basic parameters - TWAB & PICKS - to answer these questions.

**TWAB, Time-Weighted Average Balance**

**TWAB, Time-Weighted Average Balance**

The first thing that comes to mind when determining the odds of winning is the deposit size, isn't it? Yes and no.

Since the protocol accumulates yield over time, a fundamental metric is the time the user's stETH has been in the pool and how much yield it has generated for the protocol. Otherwise, a crypto whale could cheat by entering the protocol at the last minute with a big deposit, receive huge odds, and "steal" yields from small users.

Therefore, the first indicator that affects the odds is **TWAB (time-weighted average balance)**. This indicator displays the user's contribution to the pool's total yield generated between draws.

Let's check the following exaggerated example.
Assume that there are only **2 users **in the protocol and the **Total Time **between draws is **7 days (100% of the time)**.

**User 1 **kept his **100 stETH** for the full 7 days (**100% of the time**).
His TWAB is (100 stETH x 1.00) = **100
User 2 **kept his **1,000 stETH **for only 1 day (**14.285714285714% of the time**).
His TWAB is (1,000 stETH x **0.14285714285714**) = **142,8571428571 **

**Total TWAB** is 100 + 142,8571428571 =** 242,8571428571
User 1 TWAB is 100 **(or 41,1764705882% from the Total TWAB)
**User 2 TWAB is 142,8571428571** (or 58,8235294118% from the Total TWAB)

**PICKS**

**PICKS**

You can think of picks as the number of tickets you hold. Each user has a certain number of Picks, and every pick in the draw takes part in the process of selecting the winner.

But first, we have to determine the **Total Picks**. Total Picks is defined as Total TWAB / Minimum Deposit. In our case, it is **242,8571428571 **/** 0.1 stETH **= **2,428 picks **(we discard any decimal).

So, how many Picks will each user get in the example above? That's where the TWAB comes into play.

User 1 will get **2,428 x 41,1764705882% = 999 picks **(we discard any decimal)

User 2 will get **2,428 x 58,8235294118% = 1,428 picks **(we discard any decimal)

## Participants list for draw

Now, when we have a number of picks for each user, the Asymetrix creates the list for the draw. It looks as follows:

1. [address of User 1] 2. [address of User 1] 3. [address of User 1] 4. [address of User 1] .... Address of User 1 repeats 999 times total.... 1000. [address of User 2] 1001. [address of User 2] 1002. [address of User 2] 1003. [address of User 2] .... Address of User 1 repeats 1,428 times total....

Total 2,428 lines (picks)

As the next step, the list of all participating tickets (PICKS LIST) is hashed to generate a unique ID for the request. A request is then sent to Chainlink VRF to generate a random numbers. Chainlink VRF generates random numbers, which can range up to 2^256 possible values. To ensure the result falls within the range required for the number of participating tickets, a modulo function is applied to the results.

Once there are random numbers within the required range, it is matched with the content of the relevant PICKS LIST to determine a winner. Winners are determined based on the randomly generated numbers by Chainlink VFR that fall within the valid range, providing a fair and equal odds for each ticket.

Detailed information for each draw is available on a separate page, allowing users to ensure that the draw is fair, transparent, and fully traceable.

The bottom line is that both parameters affect your odds: the size of the user deposit and the time deposit was in the protocol. Asymetrix protocol dynamically calculates odds for all users.

Last updated