-
Notifications
You must be signed in to change notification settings - Fork 2
Simulation Outcomes
The chief goal of this simulation is to evaluate the relationship between the amount of defectors and the probability of group collapse. So what is group collapse? The tandapay protocol can be thought of through the lens of a decentralized insurance protocol. Imagine an insurance protocol with N users, who all pay in k dollars each month. If no claim is approved, they get their premiums refunded back to them in full. However, if a claim is approved, they are obligated to release their premium payment to the claimant. Failure to do so will result in them being removed from the community. This process of refusing to pay a claimant and leaving the community is known as a defection.
If N=100 and k=100, then we have a pool of $10,000 each month. When a claim is approved, the smart contracts used by the community require the payout of $10,000. This demand is inflexible and cannot be changed regardless of how many members defect. As the number of people remaining in the community decreases, the more each community member is required to pay to cover the $10,000 value of the claim award. Premiums increase relative to the number of members who left and continue to leave the community. As members leave, the game theoretical payoff matrix for the individual member declines. As premiums rise, members may decide that the cost of premiums outweighs the value of the coverage. In our example above policyholders are paying a premium of $100. If 50 people defect, and there are only 50 left, they now have to pay $200 to cover their portion of the claim. Given this spike in premiums they might decide to quit and leave the community rather than pay the premium.
This dynamic creates an effect known as, "death spiraling," which amplifies the voices of the minority group of defectors, by creating cascading waves of people who quit due to rising premiums. As the size of the minority group of initial defectors increases, so does the resulting second wave of people who decide to quit. This increases the cost of covering the value of a claim for the remaining members. As a result members continue to quit until the community collapses.
When viewing the simulation's settings menu, users will see an option titled, "percent honest defectors." This option is NOT the percentage of users who will actually defect. The amount of users who actually defect relies on several other variables such as "percent independent".
For more information, see: Defectors in Detail
With the previous explanation of the distinction between "percent honest defectors" and actual "defectors", let's perform a search through the domain of "percent honest defectors".
If you want to follow along, follow the installation instructions for TandaPay Simulation, and run python3 main.py. The GUI should appear. Click "Run Searching". Then, in the "Searching Menu", change "Attribute to search" to "perc_honest_defector". Then, click "Search". You should get a similar result to what is seen below.
Read more at: Statistics
The outcome of this search is as follows:
| Value | Wins Percent | Draws Percent | Losses Percent |
| 0.1 | 0.0 | 2.0 | 98.0 |
| 0.1175 | 1.0 | 0.0 | 99.0 |
| 0.135 | 1.0 | 4.0 | 95.0 |
| 0.1525 | 2.0 | 2.0 | 96.0 |
| 0.17 | 7.0 | 19.0 | 74.0 |
| 0.1875 | 10.0 | 26.0 | 64.0 |
| 0.205 | 25.0 | 28.0 | 47.0 |
| 0.2225 | 28.0 | 44.0 | 28.0 |
| 0.24 | 60.0 | 24.0 | 16.0 |
| 0.2575 | 74.0 | 20.0 | 6.0 |
| 0.275 | 80.0 | 16.0 | 4.0 |
| 0.2925 | 79.0 | 19.0 | 2.0 |
| 0.31 | 84.0 | 15.0 | 1.0 |
| 0.3275 | 92.0 | 7.0 | 1.0 |
| 0.345 | 95.0 | 5.0 | 0.0 |
| 0.3625 | 95.0 | 5.0 | 0.0 |
| 0.38 | 99.0 | 1.0 | 0.0 |
| 0.3975 | 100.0 | 0.0 | 0.0 |
| 0.415 | 100.0 | 0.0 | 0.0 |
| 0.4325 | 100.0 | 0.0 | 0.0 |
| 0.45 | 99.0 | 1.0 | 0.0 |
All Roots:
0.5020643879416782
0.24282861995857888
-0.01581793911995869
Real Roots:
0.5020643879416782
0.24282861995857888
-0.01581793911995869
Possible Solutions:
0.24282861995857888
Linreg Model:
y = -8230.088274920787x^3
+ 6000.352175105803x^2
+ -906.4037375577141x^1
+ 34.12865682396028x^0
Modeling the data with a regression model, we can see that there is a sharp S curve in the data, and the point where the probability of group collapse is closest to 50% is about 0.242828. This is right in the middle of our S-curve. So, how many actual defectors are there to create a 50% probability of group collapse?
So, if we want a quick and dirty approach to figuring out how many actual defectors this is, we need to perform a quick simulation run with the solution we found from searching before. The solution was 0.24282862, a.k.a 24.282862% percent honest defectors. We run the simulation for 1000 trials with this value for percent honest defectors, and we can see that "Avg Defectors = 17.9450` overall. Therefore, if approximately 17.95% of users defect, there is a 50% chance of group collapse.
If you are following along, navigate to the Settings menu and enter the solution you got from searching as a percentage in "EV4: Percent Honest Defectors". In my case, I entered in 24.282862. You can reuse this value, or put the one that your searching run yielded. The reason they may be slightly different is due to the nature of probability and variance, which this simulation relies on. It should be a similar value though. In the "Sample Size" field, enter 1000. Now, click "OK" and navigate back to the main menu, and click "Run Simulation"
Read more at: Simulation Runs
In the results pane, you should see something similar to this:
Results Summary:
wins = 585, 58.5000%
draws = 306, 30.6000%
losses = 109, 10.9000%
Wins Breakdown:
Case A: 585
Description: WIN: valid_remaining below 50% of total_member_cnt
Case B: 0
Description: WIN: final period completed with valid_remaining below 55% of total_member_cnt
Win Defectors Avg = 18.4256
Win Skipped Avg = 28.8991
Win Invalid Avg = 39.6222
Win Quit Avg = 3.5573
Draws Breakdown:
Case A: 306
Description: DRAW: 3 periods in a row where nobody quits or leaves, and valid_remaining below 60% of total_member_cnt
Case B: 0
Description: DRAW: final period completed with valid_remaining below 65% of total_member_cnt
Draw Defectors Avg = 17.5654
Draw Skipped Avg = 25.3725
Draw Invalid Avg = 32.2484
Draw Quit Avg = 2.6895
Losses Breakdown:
Case A: 109
Description: LOSS: 3 periods in a row where nobody quits or leaves, and valid_remaining above 60% of total_member_cnt
Case B: 0
Description: LOSS: final period reached with valid_remaining above 65% of total_member_cnt
Loss Defectors Avg = 16.4312
Loss Skipped Avg = 20.1101
Loss Invalid Avg = 23.1743
Loss Quit Avg = 1.5505
Overall Averages:
Avg Defectors = 17.9450
Avg Skipped = 26.8620
Avg Invalid = 35.5730
Avg Quit = 3.0730
Minimums:
Min Defectors = 12
Info: LOSS: 3 periods in a row where nobody quits or leaves, and valid_remaining above 60% of total_member_cnt
Min Skipped = 14
Info: LOSS: 3 periods in a row where nobody quits or leaves, and valid_remaining above 60% of total_member_cnt
Min Invalid = 11
Info: LOSS: 3 periods in a row where nobody quits or leaves, and valid_remaining above 60% of total_member_cnt
Min Quit = 0
Info: LOSS: 3 periods in a row where nobody quits or leaves, and valid_remaining above 60% of total_member_cnt
Maximums:
Max Defectors = 24
Info: WIN: valid_remaining below 50% of total_member_cnt
Max Skipped = 40
Info: WIN: valid_remaining below 50% of total_member_cnt
Max Invalid = 59
Info: WIN: valid_remaining below 50% of total_member_cnt
Max Quit = 9
Info: WIN: valid_remaining below 50% of total_member_cnt
We're interested in the overall average number of defectors across this 1000 simulation runs. So, we navigate down to the "Overall Averages" section, and there you will see your result.
You can experiment with the different variables of the simulation and try to find out how the different variables impact the outcomes, or find the number of defectors necessary for different probabilities of group collapse. If you have followed along so far, you should have recreated the results shown above. Check out the other sections of this wiki to familiarize yourself with the simulation, and see our links section for further reading.
Read Next: