Pricing
Previously, an offchain pricing module was used for cover products. This model has been sunset and pricing has now moved onchain, with a dynamic pricing model that determines the price of cover products.
When a cover product is added to a staking pool, the price starts at the initial price and decreases over time toward the target price set by each staking pool. The initial price for each cover product is determined by the Advisory Board and the target price is set by members running staking pools, who are referred to as staking pool managers.
With this approach, the price - per pool per risk - starts high and decreases to the minimum a staking pool is willing to accept, like a Dutch auction. This allows for price discovery; should risk be mispriced, demand at a given price will signal the willingness of members to buy cover at that price floor.
The dynamic pricing mechanism is reviewed in detail below.
Spot price
The spot price decreases linearly from bumpedPrice
to targetPrice
, depending on the Speed(PRICE_CHANGE_PER_DAY)
and the time passed since the last cover buy
.
Spot price formula
spotPrice = MAX(bumpedPrice - priceDrop, targetPrice)
Where:
bump = 0.2% addition to the spot price per 1% of pool capacity used
Bumped price = spotPrice + capacity% of the pool to be used / 1% x 0.2
priceDrop = timeSinceLastCoverBuy * speed
speed = PRICE_CHANGE_PER_DAY / 1 dayInSeconds
targetPrice
is set by the staking pool manager and can be updated at any time
Bumped price
The Bumped Price gets updated after each cover buy and is used to calculate the spot price of the NEXT cover.
Example
spotPrice = 2.5%
capacity % of the pool to be used = 15%
bumpedPrice = 2.5 + 15% / 1% x 0.2 = 5.5 price per annum
Note: when a cover product is first added to a staking pool, the BumpedPrice
is equal to the InitialPrice
set by the Advisory Board.
Price drop
This is determined by taking the timeSinceLastCoverBuy
and multiplying by the Speed
, which moves at 2.0% per day. The price drop is subtracted from spot price.
Example
speed = 2.0% per day
timeSinceLastCoverBuy = 3 days
priceDrop = 3 * 2.0% = 6.0%
Calculating spot price
You can see an example of the variables being used to calculate the price of an individual cover product within a staking pool:
Example
speed = 2.0% per day
timeSinceLastCoverBuy = 3 days
priceDrop = 3 * 2.0% = 6.0%
bumpedPrice = 6.5%
targetPrice = 4%
spotPrice = MAX(6.5% - 6.0%, 3%) = 3.0%
Surge loading
When the capacity for a cover product falls between 90% to 100%, surge pricing, referred to as loading, is applied to a cover product’s price.
- If the cover product has 0% to 90% of capacity reserved for existing covers, then no loading applies
- If the cover product has 90% to 100% of capacity reserved for existing covers, then loading is applied, where loading is a linear function related to capacity used post cover purchase
- For loading of 2% per 1% of capacity used above 90%
Price formula including surge loading
premium = basePremium + surgePremium
basePremium = cover amount * spotPrice
surgePremium = cover amount * surgeLoading / 2
- Where
surgeLoading
is referred to as the surge loading factor in the examples below
- Where
Example: capacity starts at 88% and goes to 95%
used capacity % before = 88%
used capacity % after = 95%
loading = 0.02 for every 1% of capacity over 90%
surge loading factor at 95% = (95% - 90%) / 1% * 0.02 = 5 * 0.02 = 0.1
Example: capacity starts at 91% and goes to 95%
used capacity % before = 91%
used capacity % after = 95%
surge loading factor at 95% = (95% - 90%) / 1% * 0.02 = 5 * 0.02 = 0.1
surge loading factor at 91% = (91% - 90%) / 1% * 0.02 = 1 * 0.02 = 0.02
and
premium = basePremium + surgePremium
Where:
basePremium = cover amount * spotPrice
surgePremium = surgePremium 90% to 95% - surgePremium 90% to 91%
surgePremium 90% to 95% = amount * surge loading factor at 95% / 2 =
surgePremium 90% to 91% = amount * surge loading factor at 91% / 2 =
Benefits
Dynamic pricing adjusts based on changes in demand and utilization. This allows for reactive pricing without the need for immediate action by staking pool managers.
The dynamic pricing model allows a staking pool to diversify risk across cover products no matter if demand is high or low. In each instance, the price will increase or decrease to reflect the market rate.
High utilization, high price to signal demand
Should the perceived risk associated with a single cover product increase in a short period of time, the increase in cover buys will shift the cover price higher. When this happens, the Mutual captures more revenue as exposure to any single risk increases. If the utilization for one cover product rises above 90%, then surge pricing is applied to the cover product’s price.
Rising prices and surge pricing can serve as a signal to staking pool managers that the risk needs to be re-evaluated to determine:
- If more staked NXM should be allocated to open up additional capacity for that cover product; or
- If the pool should reduce exposure to that risk over time by adjusting the staking parameters
Low utilization, low price
Cover products in a staking pool with ample capacity but infrequent cover buys will decrease in price toward the target price set by the staking pool manager. If a smaller amount of staked NXM is allocated to a cover product, the target price can still be achieved, though when additional cover is purchased, the cost of cover will move up in price faster than a pool with a larger number of staked NXM allocated to the same risk.
Managing exposure to risk
As the cost of cover increases, demand will begin to decrease once the price reaches a certain level and continues to rise. This can limit exposure to risk, while generating more revenue for the Mutual and members participating as NXM stakers.
Dynamic pricing plays an important role in risk management, though it’s not the only way the protocol manages exposure to risk.