Understanding three-month validator retainment and compound rates
A single month can tell us something useful about a validator's reward behaviour. It can also reflect an unusually large operating expense, a delayed transfer or a decision to add several months of rewards to self-stake at once.
In Introducing validator retainment and compound rates, I explained how monthly snapshots turn public balances, identity relationships and validator rewards into two measurements. Retainment measures reward retention within a publicly linked identity graph. Compounding measures rewards reflected in additional validator self-stake.
The three-month rolling figures extend those measurements across a longer period. They combine the underlying monthly amounts, give each month weight according to its rewards and expose how much history actually contributed to the result.
A figure labelled “three months” can contain fewer than three monthly observations, and each month's contribution is measured separately before the results are combined. This article explains how those windows are formed and how the two rolling rates are derived.
Three calendar months, moving one month at a time
The rolling window follows the monthly snapshot calendar. It advances when a new monthly calculation becomes available; it does not move forward each day or represent a fixed 90-day interval.
Suppose the latest calculated period closes at the September 2026 snapshot. A complete three-month result combines:
| Monthly interval | Opening snapshot | Closing snapshot |
|---|---|---|
| June | 1 June | 1 July |
| July | 1 July | 1 August |
| August | 1 August | 1 September |
Three complete intervals therefore require four boundary snapshots. Once the October closing period is calculated, June drops out and September enters the window.
These dates identify UTC month boundaries. As described in the first article, the actual balance snapshot uses the first canonical Asset Hub block at or after the boundary, paired with the latest indexed People Chain block at or before that Asset Hub timestamp. The recorded block timestamps and eras define the precise intervals.
The closing snapshot marks the end of the measured period. A window closing on 1 September describes June, July and August; it does not include September's activity.
Start with the monthly amounts
The rolling calculation starts with the amounts measured for each monthly interval:
| Measurement | Meaning |
|---|---|
| Graph rewards | Ordinary and incentive rewards used for the interval's retainment calculation |
| Net inflow | Closing balance minus opening balance for the measured graph, or validator account during an identity transition |
| Retained rewards | Positive net inflow, capped at that interval's graph rewards |
| Validator rewards | Ordinary and incentive rewards earned by this validator alone |
| Self-stake change | Ending recorded self-stake minus starting recorded self-stake within the monthly era range |
| Compounded rewards | Positive self-stake change, capped at that validator's rewards |
The monthly boundary rules remain the same as in the first article. Rewards exclude the opening era and include the closing era, so adjacent months do not count the same boundary rewards twice. Self-stake change compares the first and last available observations within the era range, including both boundary eras where available.
Retainment and compounding keep their distinct scopes throughout aggregation. Retainment normally uses the complete identity graph's rewards, while compounding always uses the individual validator's rewards.
Deriving the three-month retainment rate
For the months included in the window, the calculation adds the reward totals and the amounts already attributed to retainment:
Rolling graph rewards = sum of included monthly graph rewards
Rolling retained rewards = sum of included monthly retained rewards
Rolling retainment rate = rolling retained rewards ÷ rolling graph rewards × 100
Consider this illustrative three-month history, with all amounts shown in DOT:
| Month | Graph rewards | Net inflow | Retained rewards | Monthly retainment rate |
|---|---|---|---|---|
| June | 100 | +150 | 100 | 100% |
| July | 900 | +450 | 450 | 50% |
| August | 200 | −80 | 0 | 0% |
| Total | 1,200 | +520 | 550 |
The rolling retainment rate is:
550 ÷ 1,200 × 100 = 45.8333%
An arithmetic average of the three monthly percentages would give 50%. That would give June's 100 DOT of rewards the same influence as July's 900 DOT. Summing the amounts first makes the result reward-weighted: a month containing more rewards contributes more to the denominator.
The underlying amounts are combined at full precision, with rounding applied only to the final percentage.
The monthly cap remains monthly
There is a second distinction in the example. The graph's summed net inflow is 520 DOT, but its summed retained rewards are 550 DOT.
That is expected. June's 150 DOT increase was capped at its 100 DOT of rewards. August's 80 DOT decrease produced zero retained rewards for August. The rolling calculation adds those monthly outcomes without applying a new cap to the combined balance movement.
Calculating retainment once across the whole interval would instead give 520 ÷ 1,200, or 43.3333%. That answers a different question about net growth across the outer boundaries. The rolling figure measures the share of rewards attributed to retainment within the included monthly intervals.
A withdrawal in a later month therefore does not cancel retainment previously attributed to an earlier month. Equally, an unusually large deposit cannot exceed its own month's reward cap and compensate for another month's low retainment.
Net inflow and retained rewards should therefore be read together. Balance movements preserve information that the bounded retainment amounts cannot express. A rolling retainment rate can be positive even when the sum of monthly net inflows is negative.
Deriving the three-month compound rate
Compounding follows the same aggregation rule with the validator's own rewards and monthly compounded amounts:
Rolling validator rewards = sum of included monthly validator rewards
Rolling compounded rewards = sum of included monthly compounded rewards
Rolling compound rate = rolling compounded rewards ÷ rolling validator rewards × 100
For example:
| Month | Validator rewards | Self-stake change | Compounded rewards | Monthly compound rate |
|---|---|---|---|---|
| June | 50 | +80 | 50 | 100% |
| July | 300 | +90 | 90 | 30% |
| August | 100 | −40 | 0 | 0% |
| Total | 450 | +130 | 140 |
The rolling compound rate is:
140 ÷ 450 × 100 = 31.1111%
June's additional stake is capped at June's rewards, and August's reduction remains visible in the total self-stake change without subtracting from earlier compounded amounts. As with retainment, this is a summary of monthly attribution. It does not establish that all previously compounded DOT remains staked at the closing boundary.
What happens when history is incomplete?
The window covers three specific calendar months, but a validator may have usable observations for only one or two of them. The rate is calculated from the available months within that window.
Missing months do not become zero-rate months, and older months are not brought forward to replace them. It is therefore useful to distinguish the window length from its coverage:
| Description | Meaning |
|---|---|
| Window length | The three calendar months being considered |
| Coverage | The number of those months that actually contribute to the calculation |
Suppose July and August are available in the June–August example, but June is missing. The result has two months of coverage within a three-month window. Its amounts and rates use July and August alone. An older May observation cannot fill the missing June position.
Gaps inside the window are also permitted. If June and August are available but July is missing, both available months can contribute. The included observations span 1 June to 1 September, even though the intervening history is incomplete. A three-month span between boundaries does not establish three months of coverage.
A measured month with zero rewards is different from a missing month. It counts towards coverage and contributes its balance and self-stake movements. Its retained or compounded amount is zero where the corresponding rewards are zero.
The two rolling rates handle zero rewards independently. If total graph rewards are zero, the retainment rate is unavailable. If total validator rewards are zero, the compound rate is unavailable. A rate of 0% means there were rewards but no attributed retained or compounded amount. An unavailable rate means there is no meaningful reward denominator.
Keeping identity history in scope
The rolling history follows the same validator under the identity graph root associated with its latest included month. Earlier months that closed under a different root are excluded, even when they fall within the three-month calendar window.
The monthly transition rule from the first article still applies. If a validator changes graph, its transition interval uses its own account balances and rewards where a reliable opening balance exists. That interval belongs to the closing graph for the purposes of window selection, so it can contribute to the new graph's rolling result. Subsequent intervals can return to full graph scope.
Consequently, matching graph roots does not guarantee that every included month used full graph balances. A window may combine an account-level transition interval with later graph-level intervals.
The months need not form an uninterrupted run under one root. If a validator's months close under graph A, then graph B, then graph A again, the latest window can include the two A months and omit the B month. Graph membership itself can also change while the root remains the same.
These are validator results assembled under a graph identity. Validators currently sharing a graph can have different rolling histories. Their rolling percentages should not be averaged to construct an operator rate, and shared graph rewards should not be summed once per validator.
Making the rolling result reproducible
Reproducing a rolling rate begins with the monthly measurements. For a complete three-month window, retain the four boundary snapshots and calculate each of the three intervals using the same identity, reward and self-stake rules described in the first article.
For each validator, select the eligible months within the window, preserving the identity scope of each interval. Add the monthly retained amounts and divide by the corresponding total graph rewards. Separately, add the monthly compounded amounts and divide by the corresponding total validator rewards. Multiply each ratio by 100 to express it as a percentage.
Use the original amounts at full precision throughout. Round only the final percentages to four decimal places, rounding halfway values upward. This avoids introducing errors by averaging or reconstructing amounts from rounded monthly rates.
Keep the summed net inflow and self-stake change alongside the rates, including negative movements. Also record which months contributed, their opening and closing boundaries, and whether any interval used the validator's individual account following an identity change. The historical Asset Hub and People Chain block numbers identify the underlying states for anyone repeating the measurements from chain data.
These details make it possible to check both the arithmetic and the scope of a result. Two rates can only be compared meaningfully when their periods, coverage and identity histories are understood.
Reading the longer view
The monthly figure shows the latest measured interval. The rolling figure places that result alongside up to two preceding months, with influence proportional to rewards. Reading them together helps distinguish a recent change from behaviour observed over several intervals.
The longer view retains the limits of the monthly measurement. Balance changes do not trace individual DOT, unrelated deposits can influence the result, and public identity relationships may omit accounts an operator controls. A low rate does not establish that rewards were sold.
For nominators, the useful comparison includes the rate, the period and the coverage. For researchers and other applications, the reproducible result includes the contributing months, their amounts and the rules used to combine them. Together, the monthly and rolling views make validator reward behaviour easier to inspect across time.
