Cost of altruism for solo stakers
The risk adjusted return of a stake increases with the amount of stake they have or the larger the pool they become a part of. This article attempts to formalize why that is the case. The difference in return between a solo validator, an individual or entity running their own, single validator, and large pools is called the cost of altruism.
NOTE: Below is a lot of formalization but also many shortcuts, simplifications and approximations.
Issuance
For algorithmically determined issuance, we can place a mechanism on a spectrum between a fixed reward rate $kS^s$, where $k$ is a scalar and $S^s$ is the amount of ETH staked which is equal to $S\lambda$ where $\lambda$ is the staking ratio, and a fixed total reward $k \frac{S^s_i}{\sum_{j=1}^n{S^s_j}}$. We can express the percentage yield earned by stakers $\hat{i}_t$ as:
\[\hat{i}_t=\frac{k}{(S^s_t)^x} \tag{1}\]and total ETH issuance as:
\[i_t=k(S^s_t)^{1-x} \tag{2}\]When $x$ is equal to 1, the amount issued is constant. When $x$ is equal to 0, the yield is constant. Therefore, the smaller $x$ is, the yield and staking ratio are less and more volatile, respectively. Ethereum has chosen a middle ground between fixed rate and fixed total reward. The maximum annual amount of ETH issued $i_{t}$ is determined by:
\[i_t=166.4(S^s_t)^{\frac{1}{2}} \tag{3}\]The $166.4$ is equal to $2.6 \times 64$ where $64$ is the base reward factor and $2.6 \approx \frac{82181.25}{\sqrt{10^9}}$ where $82181.25$ is the number of epochs per year. ETH issuance increases with the amount staked but at a decreasing rate.
Reinvestment and variance
However, those with larger stakes are able to reinvest more quickly in new validators, creating a wedge between the expected and realized yield which is dependent on the size of an individual’s total stake. With no variance, the annual realized compounded issuance yield for ETH, $i^*$, is equal to:
\[i^*=\bigg(1+\frac{\hat{i}}{\gamma}\bigg)^{\gamma}-1 \tag{4}\]where $\gamma$ is the reinvestment rate per year. The reinvestment rate $\gamma$ for an individual staking $\bar{S}^s$ ETH is equal to:
\[\gamma=\frac{\bar{S}^{s}\hat{i}}{\phi} \tag{5}\]where $\bar{S}^s$ is the total amount of ETH staked by said individual and $\phi$ is the minimum amount of ETH to launch a new validator which is currently 32 ETH. If you are in a stake pool $z$, $\bar{S}^s$ is the amount staked in the pool and each participant reinvests at $\gamma_{z}$. The expected yield from issuance for a solo validator is equal to:
\[\hat{i}=\varphi(\hat{i}_p)+(1-\varphi)(\hat{i}_a)=(\hat{i}_p-\hat{i}_a)\varphi+\hat{i}_a \tag{6}\]where $\hat{i}_p$ is the yield for being chosen as a block proposer, $\hat{i}_a$ is the yield for attesting to block, and $\varphi$ is $\frac{32}{S^s}$. The variance $\sigma^2$ is equal to:
\[\sigma^2=E(\hat{i}^2)-E(\hat{i})^2 \tag{7}\]where $E(\hat{i}^2)$ is:
\[E(\hat{i}^2)=\varphi(\hat{i}_p)^2+(1-\varphi)(\hat{i}_a)^2 \tag{8}\]$E(\hat{i})^2$ is:
\[E(\hat{i})^2=((\hat{i}_p-\hat{i}_a)\varphi+\hat{i}_a)^2 \tag{9}\]Therefore:
\[\sigma^2=\big((\hat{i}_p^2-\hat{i}_a^2)\varphi+\hat{i}_a^2\big)-((\hat{i}_p-\hat{i}_a)\varphi+\hat{i}_a)^2 \tag{10}\]If $y$ has multiple validators, the variance scales by $\frac{1}{(V^y)^2}$ where $V^y$ is the number of validators controlled by $y$ or by the pool that $y$ is in. The standard deviation of returns is simply the square root of the variance which scales linearly by the number of validators controlled $\frac{1}{V^y}$. In other words, smaller total stakes result in higher variance. The standard deviation $\sigma$ is simply $\sqrt{\sigma^2}$. Therefore, the risk adjusted yield would be $\frac{\hat{i}}{\sigma \Lambda}$ where $\Lambda$ is an annualization factor, if needed.
ETH/stETH rate
With an amount $\bar{S}^{s}_{t}$ of ETH staked in a liquid staking protocol and amount of $\ddot{S}_t$ derivative tokens in circulation, the price $\ddot{p}$ should be no more than:
\[\ddot{p}_t=\frac{\bar{S}^{s}_{t}}{\ddot{S}_t} \tag{11}\]However, there is a delay in redemption. User $y$ needs to redeem $\ddot{S}^y_t$ stETH tokens for ETH at time $t$ which in excess of the amount in the protocol buffer $b_t$ amounts to $\bar{S}^{s,y}_{t}$ ETH:
\[\bar{S}^{s,y}_{t}=\ddot{S}^y_t\ddot{p}_t-b_t \tag{12}\]We assume the buffer processes withdrawals first-come-first-served. For user $y$ to instantly redeem, she needs to take out a loan of $\phi_t$ ETH with a collateral ratio of $\frac{\bar{S}^{s}_{t}}{\ddot{S}_t}$ for duration $T$ which is the amount of time it takes to unstake from the liquid staking protocol at an interest rate $\zeta_t$ and a convenience yield of $\pi$:
\[\phi_t(1+\zeta_t-\pi_t)^T=\bar{S}^{s,y}_{t} \tag{13}\]If we set $\bar{S}{t}^{s,y}$ to $\bar{S}{t}^{s}$ this means the price is equal to:
\[\ddot{p}_t=\frac{\phi_t-\kappa}{\ddot{S}_t} \tag{14}\]where $\kappa$ is the ETH transaction cost to repay the loan since we assume that the costs to sell the liquid staking token and initiate the loan are the same. The variation between the bounds is determined by the demand for converting staked ETH into ETH, the time it takes to unstake from Ethereum, the amount in the liquid staking protocol buffer, and the willingness of ETH holders to lend to staked ETH holders.
The convenience yield is a logarithmic function of ETH staked:
\[\pi_t=\ln(\bar{S^s_t}) \tag{15}\]The amount of time $T$ is determined by the amount of time to unstake and the accumulated amount of unstaked ETH in the protocol. To be clear here, regardless of $T$ below, the $T$ above takes into account the amount of time it takes to withdraw over some period of time using the protocol buffer, e.g. can withdraw from the buffer over a few days instead of having to directly withdraw from Ethereum.
A full withdrawal directly from Ethereum is when you want to full exit the network voluntarily with 32 or less ETH. When you want to perform a full withdrawal you must sign a message that you would like to exit which places you in the exit queue. The total number of validators that can perform a full withdrawal each epoch $V^f$ is determined by:
\[V^f = \max \left(4, \left\lfloor\frac{V}{65536}\right\rfloor\right) \tag{16}\]where $V$ is the total number of validators. Once in the exit queue, the amount of days it takes to reach the exit epoch, when your stake is no longer earning rewards or subject to slashing, is equal to:
\[T^x=\max\bigg(.0178, \frac{V^x}{V^f\epsilon}\bigg) \tag{17}\]where $\epsilon$ is the number of epochs per day and is currently equal to $225$, $V^x$ is the number of full withdrawals in the exit queue, and $.0178$ corresponds to the minimum number of epochs needed to be in the exit queue, currently $4$, which is $25.6$ minutes, or $\approx .0178$ days. Then, the amount of time from the exit epoch to the withdrawal epoch $T^e$ is $256$ epochs, or $\frac{256}{\epsilon} \approx 1.4$ days. Once in the withdrawal epoch, a full withdrawal needs to wait for its turn in a validator sweep. A validator sweep cycles through each validator in order of validator ID and checks if they are eligible for a partial or full withdrawal. A partial withdrawal is any amount of ETH in excess of 32 ETH. Each block can process up to 16 withdrawals, partial or full. The number of blocks per day $B$ is equal to:
\[B=\frac{24 \times 60 \times 60}{T^B}-m \tag{18}\]where $T^B$ is amount of time in seconds for a single block which is currently 12 seconds and $m$ is the number of missed blocks per day. The first term is the number of slots per day. Which means the number of withdrawals per day is equal to $W=16B$. The amount of days in the withdrawal queue is equal to:
\[T^w=\frac{V^x+V^w+V^{p}}{W} \tag{19}\]Therefore, the total time to withdraw directly from Ethereum $T_d$ is equal to:
\[T_d=T^x+T^e+T^w \tag{20}\]It does not cost any ETH for full or partial withdrawals and it is not possible to withdraw any specific amount.
We also need to consider the the expected buffer inflows since we already consider the amount currently in the buffer $b_t$. The number of days to unstake from the liquid staking protocol $T_l$ utilizing only the buffer is:
\[T_l=\frac{\ddot{S}^y_t\ddot{p_t}-b_t}{\Delta_b} \tag{21}\]where $\Delta_b$ is the expected average daily inflow into the buffer. If a staker decides to utilize future buffer flows she can pay off the principal over the life of the loan thus reducing interest expenses.
Staker objective function
We assume investors have mean-variance preferences along the lines of:
\[\begin{equation} \begin{aligned} \max_{w} \quad & w^T\mu-\frac{\lambda}{2}w^T\Sigma w \\ \text{s.t.} \quad & \textbf{1}^Tw=1 \\ \quad & 0\le w \\ \end{aligned} \end{equation} \tag{22}\]where $w$ is a vector of weights, $\mu$ is a vector of returns net of costs, $\lambda$ is a risk aversion parameter, and $\Sigma$ is a covariance matrix. All pools are liquid staking pools and thus have a token.
For solo validator operators and pools, if we (wrongly) assume for now that all node types are equally as reliable and costless, build a maximum decorrelation portfolio of nodes:
\[\begin{equation} \begin{aligned} \min_{w} \quad & w^TCw \\ \text{s.t.} \quad & \textbf{1}^Tw=1 \\ \quad & 0 \le w \\ \end{aligned} \end{equation} \tag{23}\]where $w$ is a vector of weights and $C$ is a correlation matrix of node characteristics. Once you have $w$, maximize number of validators on each node since they are imperfectly correlated and virtually costless. For simplicity we assume away relative operational risks between validators of different sizes, though in practice it does benefit larger validators and pools.
Numerical example
Currently the total amount of ETH in existence is approximately 120.1 million. Of that, 32.4 million is staked, resulting in a staking ratio of approximately 27%. Working with the current state of Ethereum, we assume that there is one solo staker running a single validator with 32 ETH. The rest is staked in a liquid staking pool. The amount of ETH staked implies an annualized expected yield of:
\[\hat{i_t}=\frac{k}{(S^s_t)^x}=\frac{166.4}{32.4M^{.5}}\approx2.9\% \tag{24}\]The reinvestment rate for solo and pooled stakers are:
\[\begin{align} \gamma_{\text{solo}}=\frac{\bar{S}^{s}\hat{i}}{\phi}&=\frac{32\times 2.9\%}{32}\approx .03 \\ \gamma_{\text{pool}}\quad \quad \quad&=\frac{32.4M\times 2.9\%}{32}\approx29,362 \end{align} \tag{25}\]In other words, a solo staker is able to reinvest their profits every $\approx 34$ years whereas pools virtually earn the continuously compounded rate of return. The compound rate of return for perfect solo and pooled stakers are:
\[\begin{align} i^*_{\text{solo}}=\bigg(1+\frac{\hat{i}}{\gamma}\bigg)^{\gamma}-1=\bigg(1+\frac{.029}{.03}\bigg)^{.03}-1\approx 2.04\%\\ i^*_{\text{pool}}=\bigg(1+\frac{.029}{29,362}\bigg)^{29,362}-1\approx2.94\% \end{align} \tag{26}\]Removing the MAX_EFFECTIVE_BALANCE parameter would effectively alleviate this discrepancy. However, we also need to consider that a liquid staking token holder accrues a convenience yield that is a logarithmic function of the amount staked. Therefore, for now, we will simply add it to the compound rate of return:
\[\begin{align} i^*_{\text{pool}}=\bigg(1+\frac{.029}{29,362}\bigg)^{29,362}-1\approx2.94\% + \pi_{\text{pool}} \end{align} \tag{27}\]Simply, the larger and more centralized the set of pools become, the greater the cost of altruism for a solo staker is as the pools reinvest more frequently and liquid staking tokens become more liquid and used for other purposes in the Ethereum ecosystem. Therefore, the cost of altruism would be: $2.94\%+\pi_{\text{pool}}-2.04\%=0.9\%+\pi_{\text{pool}}$. Note, we are assuming that the protocol is always optimizing for stakers with 32 ETH, which is the period between today $t_0$ and $t_{0+\frac{1}{\gamma_{\text{solo}}}}$. Also, we have not taken into account MEV.
A problem with our example is that we have not considered the differences in risk experienced by a solo staker relative to a pooled staker. Consider if Ethereum removed the MAX_EFFECTIVE_BALANCE parameter. Again, we assume operational risks are the same for all stakers. The stakers perform their tasks perfectly. The base reward in gwei per ETH staked is:
\[b=\frac{10^9\times64}{\sqrt{32 \times 10^9\times V}} \tag{28}\]Inserting 1.01M for $V$ we get a base reward of 355 gwei. The reward for an attestation is:
\[r_a=\frac{14+26+14}{64}32b \tag{29}\]When substituting for $b$ we get 9,585 gwei. The reward to a block proposer from including attestations is:
\[r_p = \frac{V}{32}\frac{8}{64-8}r_a \tag{30}\]Substitute for $V$ and $b$ and the reward to a block proposer is 43,325,055 gwei. Note, I’m going to ignore anything sync committee related for now so the numbers will not quite add up to the above analysis but it will be a close enough approximation.
Each validator, we will assume with 32 ETH, thus makes either $r_a$ or $r_b$ in an epoch. To simplify, we can annualize $r_a$ and $r_p$ and convert into ETH by multiplying each by $\gamma = 10^9 \times 8281.25$. Thus, the annual yield for a solo validator attesting $\hat{i}_a$ and proposing $\hat{i}_p$ are 2.46% and 11,1127%, respectively. Plug that into our variance equation $(10)$ results in an annualized variance of 1.22%. The cost of altruism becomes:
\[\approx \pi_{\text{pool}}+\frac{1}{2}1.22\%\approx \pi_{\text{pool}}+.61\% \tag{31}\]Finally, we have not considered relative fees and operational costs for a solo staker relative to a large pool. While beyond the scope of this article, it is important to understand this. Thus, the cost of altruism would become:
\[\approx \pi_{\text{pool}}+.61\%+(c_{\text{solo}}-c_{\text{pool}}) \tag{32}\]where $c_{\text{solo}}$ and $c_{\text{pool}}$ are the costs and fees experienced by a solo and pooled staker.