ethereum-economic-model icon indicating copy to clipboard operation
ethereum-economic-model copied to clipboard

WIP: Extension 5 - Pool Compounding

Open BenSchZA opened this issue 3 years ago • 2 comments

BenSchZA avatar Oct 01 '21 11:10 BenSchZA

Still have some unanswered questions about some of the results, and some documentation and plotting cleanups to do.

rosseyre avatar Oct 01 '21 14:10 rosseyre

PR Overview

Implements a pool compounding mechanism as described in no.5 of the model extension roadmap

Experiments set an avg_pool_size parameter which establishes the initial AVG pool size across all pool validator environments. Pool sizes increase as the pool initialises new shared validator instances by pooling returns. New validators from validator-process assemble new pools, as opposed to joining existing pools. See these and additional assumptions in 4_validator_pool_compounding notebook_

NOTE: simulation times are relatively slow as Deepcopy (default_experiment) is currently set to true as it was affecting simulation behaviour (@BenSchZA, perhaps you may be able to assist here? miss those quick simulation times!)

Experiments (WIP) The experiment notebook is currently presented mainly as a 'control panel', to plot data related to the mechanism, for debugging purposes.

It configures and produces two simulations:

  • Extended time-domain analysis
  • Sweep of pool size (e.g. pool size v.s. yields)

Current status The expected results are increased yields for larger initial pool sizes, as larger pools are able to initialise shared validators at a higher rate than smaller pools. However, current plots (e.g. AVG Cumulative Profit Yields (%) per pool) show only a modest increase in cumulative yields. The mechanism and/or yield calculations need to be validated further.

**Annomolies / issues **

  • Modest / negligible increase in yields with larger initial pool sizes
  • saw-tooth-like pattern in eth_staked per pool, especially with higher avg_pool_size (see plot)

Key files

Notebooks:

  • 4_validator_pool_compounding

Model

  • validators.py
  • system_metrics.py

Policy functions

validators.py

  • policy_validators: Receives shared_validator_instances from policy_shared_validators and allocates them to their respective validator environments.

system_metrics.py

  • policy_shared_validators : Disaggregates validator profits at current timestep to pool level & calculates new shared validator instances based on the min stake requirement.
  • policy_pool_yields:
  • Calculates yield metrics at the individual pool level

rosseyre avatar Dec 14 '21 11:12 rosseyre