Draft Proposal: Compounding Maturity
Following the Medium post from Dominic Williams, and the subsequent discussion on this forum, a new draft proposal has been written with an approach to implementing these new maturity features for Governance. I welcome everyone to contribute their thoughts to this thread, as this will be very helpful to further refining the changes under consideration. Thank you!
John Wiegley
Principal Engineer
Objective
The Problem
Those with ICP staked in neurons face two main challenges when dealing with the maturity they earn as a result of voting rewards:
- How to avoid incurring a tax burden;
- How to compound maturity with the least manual effort.
Proposed Changes
The objective of this proposal is to address these concerns by making several changes to the way maturity is handled by the NNS governance canister:
-
There will be two types of maturity:
a. staked maturity, which contributes to voting power, but no ICP is produced from this maturity until the neuron is dissolved; and
b. maturity, which can be staked, used to produce ICP, or “traded in for stake” (see below) once it is received. -
Daily voting rewards may be received either as staked maturity or maturity, and this choice can be changed for future rewards at any time. Note that if rewards are received as staked maturity, this has the same effect as compounding rewards daily.
-
When ICP is produced from maturity, this can take place in one of two ways:
a. If there is sufficient staked ICP in the neuron, maturity can be “traded in” by exchanging an equal amount of staked ICP for staked maturity. For example: If a neuron has 100 staked ICP, 0 staked maturity and 10 maturity, the result of a “trade in” would yield 10 ICP and leave the neuron with 90 staked ICP, 10 staked maturity and 0 maturity. Note that this has may have tokenomics implications described in more detail in the “Impact on Tokenomecs” section.
b. If there is not sufficient staked ICP in the neuron, newly minted ICP is produced.
-
ICP is produced from staked maturity only when the neuron is disbursed, at which point it is subject the “modulation” described below.
-
Whenever ICP is produced from maturity by minting, it is subject to a mandatory 7 day waiting period followed by a modulation of the amount received, up to +/- 5%, based on the recent market price of ICP. How this is calculated is described in the section “Modulated production of ICP from maturity” below.
Rationale
It is hoped that these changes will improve the tax situation for neuron holders based on the fact that, when ICP is produced from maturity, it is unknown how much ICP will result; and also because this process may be change in the future based on governance proposals. A neuron with compounding maturity will have no definite future value.
Neuron management changes
It may be helpful to explain how management of neurons will be changed by this proposal, using a set of examples.
merge_maturity
→ stake_maturity
Merge maturity is now called “stake maturity”, and simply converts maturity
into staked_maturity
.
Before proposed change:
- Before
merge_maturity
: Neuron has 100 ICP stake and 10 maturity. - After
merge_maturity
: Neuron has 110 ICP stake and 0 maturity.
After proposed change
- Before
stake_maturity
: Neuron has 100 ICP stake, 0 staked maturity and 10 maturity. - After
stake_maturity
: Neuron has 100 ICP stake 10 staked maturity and 0 maturity.
spawn_maturity
→ disburse_maturity
Spawn maturity is now called “disburse maturity”. This operation begins a 7 day clock that completes with a modulation of the amount to be received (see below). This final amount of newly minted ICP may then be transferred into the neuron holder’s account.
Before proposed change:
- Before
spawn_maturity
: Neuron has 100 ICP stake and 10 maturity. - After
spawn_maturity
: Neuron has 100 ICP stake and 0 maturity, while a newly created reward neuron has 10 ICP stake and 0 maturity.
After proposed change
- Before
disburse_maturity
: Neuron has 100 ICP stake, 0 staked maturity and 10 maturity. - After
disburse_maturity
: Neuron has 100 ICP stake 0 staked maturity and 0 maturity. After 7 days, between 9.5 and 10.5 ICP is transferred to the user’s account.
exchange_maturity
If there is sufficient staked ICP in the neuron, this operation exchanges maturity for staked ICP in the neuron, while converting that maturity into staked maturity.
Example
- Before
exchange_maturity
: Neuron has 100 ICP stake, 0 staked maturity and 10 maturity. - After
exchange_maturity
: Neuron has 90 ICP stake 10 staked maturity and 0 maturity. 10 ICP is immediately transferred to the user’s account.
split_neuron
The meaning of this operation is more accurately “split neuron stake”.
When a neuron is split, its staked maturity is also split according to the same percentage. Any maturity, or currently disbursing maturity, remains in the parent neuron.
merge_neurons
When neurons are merged, all stake is merged, all staked maturity is merged, and all maturity is merged. Any maturity in the source neuron that is waiting to produce ICP (meaning, completing its 7 day waiting period) will remain, and be transferred to the user’s account when the waiting period ends, according to the modulation factor described below.
Proposed changes to the governance canister
To meet the objectives stated above, the followed changes will be made to governance.
Change 1: Staked maturity
Each neuron presently has an amount of ICP staked and an amount of maturity earned. In order to introduce the idea of “staked maturity” as separate from “maturity”, the two amounts will be tracked separately.
Change 2: Auto-compounding
Once there are two separate kind of maturity, a flag is provided to decide which is increased when rewards are granted. This flag may be changed at any time.
Change 3: Disburse directly from the neuron
In the past a separate reward neuron was used to manage the “7 day delay” required when spawning. Instead, we would like to find a mechanism that allows for disbursing actions to take place within a single neuron only. The exact mechanics are still being designed.
Change 4: Trading-in staked ICP
While a neuron contains staked ICP, maturity may be traded in without any minting and thus no new income. To compensate the loss of staked ICP, the same amount is added to the staked_maturity
so that no voting power is lost. See the example above for exchange_maturity
.
This means that if rewards are harvested regularly from a neuron, it will eventually contain only stake maturity – which behaves exactly like the original staked ICP in terms of voting power and future rewards. The primary difference is when the neuron is finally dissolved and disbursed, the amount of ICP received is subject to modulation according to change 5.
Change 5: Modulated production of ICP
Whenever newly minted ICP is produced from maturity, the amount actually
minted is modulated to take recent price movements into account. The algorithm
used to do this is as follows:
-
Determine the 30 day moving average for each of the last 28 days. Label these
a₁
(today) througha₂₈
. -
Compute the average price delta for each of the last four weeks. Thus,
d₁ = (a₁ - a₇) / a₇
, etc. This value is bounded from-0.05
to0.05
by clipping values to the limits of this range. -
Take the average of these adjusted deltas:
(d₁ + d₂ + d₃ + d₄) / 4
.
The resulting value is a number between -0.05
to 0.05
that determines the percentage change of the modulation. This is multiplied by the maturity to determine the amount of ICP that should be minted.
Impact on security
There should be no security implications from this change.
Impact on simplicity
There are a few ways in which this proposal affects the simplicity of staking ICP in a neuron:
-
Reward neurons are no longer needed to disburse maturity. This is managed within each neuron itself.
-
There are now two kinds of maturity to be aware of: staked maturity and regular maturity.
-
There is a new flag (a checkbox in the UI) to decide which type of maturity rewards are received as. Choosing “staked maturity” is equivalent to a neuron that automatically compounds daily.
-
The modulation of maturity that occurs before minting is the largest source of complexity in this proposal. It remains to be seen what effect this will actually have on tax authorities, and whether the algorithm employed should be refined in the future.
Impact on tokenomics
This proposal will impact tokenomics in several ways.
Deferring inflation
The most immediate effect is that over the next several years the minting rate, or increase in supply, will drop to much lower numbers, as the majority of disbursed maturity is transferred out of neurons’ staked ICP rather than minting new ICP. This also means that when these neurons finally dissolve, the minting that was deferred will happen then. The intent is that this will happen at a time when burn rates are established and can better absorb the increase in supply.
Less forced selling
At present, tax authorities may consider maturity to be income the moment it is received. In such situations, there is a constant pressure to frequently realize maturity as ICP and to sell some part of it on the open market. This is both inflationary and increases selling pressure. By removing the need to constantly produce ICP from maturity there is less forced selling on the market and more freedom to wait until market conditions are favorable and better able to absorb the incoming ICP.
Improved return in the initial years
If a neuron is staked for multiple years, any income generated by that neuron, at the beginning of its dissolve delay, will be in the form of staked maturity and not newly minted ICP. This happens because stake is paid out in exchange for staked maturity, as described above. What this means for stake holders is that they will not need to sell for taxes during this initial phase, so all of that ICP can be re-staked to increase voting power, which increases overall returns.
Further price stability
The next effect is that neuron holders with available maturity could be incentivized to produce and sell ICP when prices have been trending upward, and not when the market for ICP has been recently falling. The potential lifting of tax burden due to this uncertainty is what would permit this freedom of choice.
Alternatives considered
Several alternative modulation algorithms were considered, including a more simple price delta algorithm, one based on a 30-day linear regression slope, and even one using price/volume trends. The algorithm chosen above was analyzed by calculating the modulation it would have yielded over the current history of ICP prices.
The choice of algorithm, and the bounding factor of +/- 5%, should at present be regarded as an experiment. Without real market experience to observe the economic impact, it is impossible to foreknow the perfect algorithm for inducing uncertainty while at the same time reflecting overall market trends.
Community conversation & Timeline
The NNS team is ready to work on this feature! To get the design approved by the community, we followed the following schedule:
- Jan 27: Initial post by Dominic Williams on Medium.
- Jan 27-…: Discussion on the Forums.
What we are asking the community
- Participate in technical discussions as the motion is developed
Previous thread: Dominic’s Proposal To Improve ICP Governance Staking Re : Tax and Tokenomics - #108 by jwiegley