The Beanstalk UI displays vAPY (variable APY) statistics for each asset on the Deposit Whitelist. APYs are called variable because they are not enforced by Beanstalk in any way. Rather, the APY uses historical data about Beans earned by Stalkholders to estimate future returns for Depositing in the Silo.
The APY calculation has two parts:
- 1.Estimating the number of Beans that will be minted per Season using recent historical data.
- 2.Estimating the number of Beans and Stalk that a Farmer will receive over time for Depositing their whitelisted assets in the Silo. This takes into account the Stalk supply and Seed supply and makes some assumptions about Stalkholder behavior.
Seeds grow Stalk each Season, regardless of deltaB. Estimated annual Stalk growth for a Stalkholder is called the Stalk vAPY.
The Beanstalk UI and Subgraph use a 30-day exponential moving average (EMA) of Beans earned by Stalkholders to estimate future Beans earned by Stalkholders. The formula uses a weighted average in which recent Seasons are weighted more heavily.
The current EMA value can be located on the Silo page by hovering over the Bean vAPY.
The vAPY calculations make the following assumptions:
- No new assets are Deposited into or Withdrawn from the Silo;
- No liquidity is added or removed from liquidity pools that Beans trade in;
- There areBeans earned by Stalkholders each Season; and
- Every Stalkholder Mows their Grown Stalk each Season.
The formulas for (
) take the following additional variables as inputs:
- (), the total number of Seeds at Season
- (), the total number of Stalk at Season
- (), the number of Seeds per BDV granted for Depositing this asset
- () for Deposited BEAN;
- () for Deposited BEAN:3CRV, etc.
The formulas for (
) make estimations of the following variables:
- (), the estimated total number of Stalk at Season
- (), the estimated total number of Seeds at Season
- (), the estimated number of a Depositor's Stalk at Season
- (), the estimated number of a Depositor's Deposited Beans at Season.
) is calculated from the estimated number of Beans owned in a year (
) by using a sequence from the current Season (
) to (
First, initialize the sequence with:
Then iterate through the following sequence for
We then define (
) for a given (