Ozone Insurance Mechanism v2.1

I’m inclined to agree with @roger and @WMoon that burning Luna to the benefit of Anchor is “irresponsible” IF Ozone only protects Anchor deposits. However, if Ozone has more applications beyond just Anchor deposits, it is a Luna product and it may be justified burning this to develop the ecosystem.

Are there any other use cases for Ozone beyond just securing Anchor deposits?

Maybe Nebula can call on Ozone to provide a “no loss” provision on a special share class of ETFs.

  • Nebula pays cover_fee which accrues in a pool
  • Investors in this new share class are locked in for 3 years
  • Assuming the ETF has a reasonable investment objective & risk controls, it SHOULD produce positive returns almost 100% of the time when held for >3Y
  • In the odd event where the investment loses money after 3 years, the insurance pool kicks in to make up for this loss
  • Governance gets to decide what strategies are approved for this investment insurance (this means we’re drifting away from Ozone just protecting against technical risk - but why not!)
  • The entire insurance pool is invested in Anchor which allows it to accrue a healthy buffer
3 Likes

Great points @Gresham.

This is an example of smart contract risk.

Would you say this is some sort of market risk - where Terra stablecoin supply and demand breaks peg, when the user wishes to withdraw?

@roger also mentioned Mar 12 2020, MakerDAO type events - those are black swan events.

Maybe some sort of guiding principle can be agreed upon by governance; like:
Smart contract risk - yes
Market risk - no
Black swan events - no

1 Like

Anish - Thanks for the thoughtful reply.

Yes I also did consider the risk of both smart contracts being exploited at the same time, and intuitively you would think this greatly lowers risk.

However - I think it will be the same Developers and same Auditors who write / audit Anchor who will write / audit Ozone and therefore I think there will be some risk of a day zero exploit being found in both smart contracts by the same person.

I would suggest at a minimum to have different auditor teams looking at each, or multiple different audit teams looking at both.

Great initiative and progress. I’m wondering from an app developer’s perspective - what is the insurance premium level that is targeted here? Nexus Mutual at least tends towards 2.6% of the claimable amount, which is fairly steep.

1 Like

@kamilryszkowski I agree, a 2.6% premium is fairly steep. That will put Anchor yields at a competitive disadvantage in the DeFi space (Stablecoin competitors are innovating). If we’re going to use subsidies from $O3 for insurance providers we might as well make the target rate of insurance premium as negligible as possible. Somewhere in the ranks of .5% or less.

1 Like

Lots of great feedback and questions - I tried to be selective of the most pertinent to respond here - let me know if I missed anything important, emphasis on important.

10 Likes

Thanks for all this great feedback. @dokwon covered most of the questions and things covered here but I would like to add a bit more on a few points:

-Firstly, as Do states, this is binary, up until a certain level. I default back to stating 250k should be that level to incentivize smaller funds and pool diversity of funds
-I also believe that we should still apply the idea from my original plan which is a deductible tax applied to claims of 5-10%. This will help reward Gov stakers to approve claims and help lower users trying to game the system for free.

Correct, but remember we now have diversity of funds here which is more stable than just ANC of OZ.

I think this will eventually move towards Gov vote. As the project evolves it would be great to see it more capital efficient by using a model that sets the leveraged ratio at covering everything within a 3 standard deviation move (99.7%). Similar to insurance industry 1:200 MCR and SCRs or some type of tail risk measure.

Thanks for the update and revisions. A few other questions for me

  1. I’m assuming this means that the cover_fee is a percentage of the yield and not an absolute number? e.g. for Anchor at 20%, if the cover_fee=max_cover_fee=0.5, this means that insurees will be left with 10%, and insurers get (10%-climate_tax) * target_leverage_ratio?

  2. If oUST deposited is subject to a 1 year lockup (which is necessary to encourage good behavior), I would think a significantly higher liquidity premium would be demanded by insurers. While this may be easily addressed by the insurer incentives for the first 4 years, beyond that, there is a chance that new CVs (without a high enough yield target to “share”) will find it difficult get off the ground. No illiquidity premium = no insurers; no large oUST pool = expensive insurance (because cover_fee = max_cover_fee=0.5).
    We may need extra incentives to encourage oUST deposits for the first X million or when val(oUST in CV) < 2*val(UST deposit in the CV) (using newly minted $OZ).
    As a side point, it might be worthwhile putting a process in place to use a fixed amount of the $OZ community pool to support new protocols seeking Ozone coverage - this might also help mitigate the illiqudity premium problem.

  3. After 1 year, what happens when insurers start withdrawing their oUST to a point where val(UST deposit in the CV) > val(oUST in CV)? Yes, insurees will be barred from depositing more UST but this will essentially become a “dead CV” as there are no more incentives (cover_fee is already maxed out) for new insurers to enter the system to provide oUST. This is a likely scenario if there has been a claim event on a CV and insurers exit for safer CVs.
    Put another way, the price of risk is capped by the max_cover_fee which works quite well under normal circumstances. However, this mechanism may not be flexible enough when the price of risk spikes for good reason. (e.g. insurees willing to give up more than 50% of the yield in a very high yielding protocol that’s able to generate 100% yield)

  1. Does this mean that the Rerouting of fees is completely removed in v2.1 and the only way the protocol can recover target leverage is by waiting/new minting of oUST? The danger of this moving too slowly is if claims happen in larger than expected frequencies and/or magnitudes - the system might face the problem of liabilities > assets (especially if target_leverage_ratio is too high).
    Would it make sense to have a defined “capital injection” event where $OZ tokens are automatically minted and sold to raise capital if real_leverage_ratio falls below a certain number? Current $OZ token holders effectively bear the cost of this bailout due to the dilution - while $OZ holders will get rekt, this might be the lesser evil compared to the entire Ozone protocol failing.
1 Like

I dont understand why the formula cover_fee = min(cover_fee_max, 1 / u(CV)) makes sense.

Why not simply set a cover_fee per CV and then simply distribute the yield collected prorata to the oUST staked there? Market forces should balance things nicely from there.

Also this might make the two constraints for insurees being able to deposit UST not needed anymore. The two constraints are not very satisfactory as they seem to ensure CV are sufficiently well insured but don’t really suffice as insurers could withdraw their money. Better leave that to market forces.

@unkn0wn6 Good catch on your first point. Really hoping the cover fee maximum is an absolute number, only .5% yield cut instead of a 50% yield cut which is absurdly high.

I’d think that having a fixed cover fee would make it even more difficult for market forces to balance things out. You’ll essentially have a “take it or leave it” situation where the outcome will be very binary. There will either be an oversupply of insurers (when the cover_fee is too high), or an excess demand from insurees (when the cover_fee is too low). Either situation will result in an impasse as “price discovery” (in this case price being the cost of insurance) is hindered.

The flexibility is particularly important for a new insurance like Ozone as nobody really knows how to price the risk it is insuring due to a lack of “track record”. As @roger is pointing out, a 50% yield cut is absurdly high, but I could argue that giving up 10% of your anchor yield is perfectly fair if we start to realize that there is a real risk that you could lose 30% of your capital every 3 weeks (of course this is purely hypothetical).

That being said, I actually agree with you that cover_fee = min(cover_fee_max, 1 / u(CV)) doesn’t really make sense. In my head I’ve always read it as cover_fee = min(cover_fee_max, u(CV)).

For example, if a CV is “over collateralized” [val(UST deposit in the CV) = 1 and val(oUST in CV) = 3]

  • u(CV) = 1/3 and 1/u(CV) = 3
  • The fee would be min(0.5, 3) = 0.5

However, if the CV is “under collateralized” [val(UST deposit in the CV) = 3 and val(oUST in CV) = 1]

  • u(CV) = 3/1 and 1/u(CV) = 0.33
  • The fee would be min(0.5, 0.33) = 0.33

It seems odd that when a CV is under collateralized it gives a lower yield. The protocol should be working to attract more people into that CV.

If you read it as cover_fee = min(cover_fee_max, u(CV)), the best outcome for insurers occurs when u(CV) = max_cover_fee = 0.5. that’s when val(UST deposit in the CV) = 1 and val(oUST in CV) = 2.
This would mean that as a pool gets over-collateralized, the cover_fee will drop accordingly (e.g. 10x overcollateralization = fees of 0.1). Of course, all this is based on my previous assumption and I might be totally wrong about the mechanics.

To your last comment,

I believe the 1 year lock-up will mitigate this problem at the start, but we’ll probably need another mechanism to keep rewards sufficiently high to ensure that insurers do not pull money out immediately after 1 year. For now, $OZ incentives will likely do the job for the first 4 years.

Beyond that, the underlying price of risk will determine whether this is a feasible model and I believe there is a market clearing price for this (different risk tolerance of insurers/insurees). We just need to be sure that the structure put in place is flexible enough to facilitate this risk transfer, and build trust and confidence that the protocol is able to do this efficiently.

2 Likes

What’s the reason of there not being a supply-cap?
10b, I couldn’t find a way to calculate the maximum inflation possible.

If there isn’t $OZ could become practically worthless to hold for longer time periods.

  • Does having a Ozone disincentivzie other players from providing this insurance ?

  • What benefit does Ozone have compared to funding Nexus to perform this role (or to others so there is a insurance marketplace)

  • Does having Ozone as an ‘insurance for many protocols’ potentially make me lazier as a smart contract developer, and write sloppy code, knowing that if something happens Ozone would cover it?

  • Could a failure of a single contract drain all the funds collapsing the entire platform?

  • You mention a security audit. Would it possible to have a audit service on retainer, or in ‘active’ mode potentially identifying risks in real time

  • Can different contracts have different caps/rates? (ie… my BozoSwapDEFI contract with no security audit could be charged 25% of premiums to be insured up to a max of say 100M), where my PFC_deFi, which has been audited by a top-tier firm, run for 3 years without incident, be only charged 1% and have a insurance cap of 500M?

  • Will ozone be able to provide a “security score/reliability index” or a “certified by Ozone” checkmark/eTrust style thing so consumers can see the contract is in good standing?

  • Can Ozone act as some form of ‘blacklist’ where contracts with a security vulnerability could be disabled until rectified (protecting the assets underneath it)

  • IF Ozone gets a ‘seed’ fund, can it return the seed fund once it is boot-strapped so that the seed can be used for other community friendly projects later

2 Likes
  • It should not, just like how you can buy life insurance from multiple providers. Who covers what loss, at what price, and is able to communicate it well, will determine the relative attractiveness.
  • I believe this will be dynamically decided by insurers in deciding how much oUST to deposit in each CV. Less attractive = less oUST = higher utilization ratio u(CV) = more expensive insurance. Trust in the invisible hand. However as mentioned above, cover_fee_max may be a constraint to true price (premium) discovery

Going slightly off topic here - I’m surprised there isn’t more discussion/debate here as proposal 82 (to burn or bootstrap) is directly impacted by how successful Ozone is.

  • The creation of the bootstrap fund (“No” vote) essentially allows Ozone to “print” money in the event of a claim (money in the bootstrap fund is out of circulation until a claim happens). Whether or not the Luna in the community pool is burned will have little impact since it’s already out of circulation (like central banks removing M2 and then deciding to burn the physical dollar bills - the burning doesn’t matter).

  • The core of the matter is the shifting of “claim liability” to Luna holders. When there is a claim on Ozone, money is “printed” to cover the losses and Luna should decline in value. By voting “Yes” (to burn) = Do puts 100m of his money in, which should theoretically insulate Luna from a price drop in the event of a claim.

We’re effectively deciding if the net gain from the creation of Ozone protocol to the ecosystem will outweigh the potential losses of tying Luna to claim events. Getting the structure of Ozone correct (and avoiding catastrophic failure of Ozone protocol) will greatly impact whether Yes or No is the better choice.

3 Likes

Beautifully put! +1 on this analysis

This is important and needs attention. It has got to be a typo or bug because as presented now in the proposal, it looks wrong.

The mechanics of the cover_fee should be reworked. It shouldn’t be a fixed formula but pricing based on the what people are willing to pay. The risk of setting price by a formula is either a surplus of those willing to provide insurance and a deficit of those willing to buy it, or, a surplus of those willing to buy it and a deficit of those willing to provide it.

There are only two ways to allocate a scarce resource, price or volume of units. You can fix one or the other but not both and the test of time suggests it is better to not hard set either but let market forces work. Price fixing leads to surplus or scarcity of units. In this case, if the formula sets the price for insurance too low, no insurer will want to provide capital to participate. If the formula sets the price for insurance too high, plenty of of insurers will want to participate but few or no insurees will want to buy it.

Further, it isn’t only the ratio of UST to oUST that matters for the pricing of the insurance premium (here called cover_fee). The nature of the insured assets matter and no single formula can accommodate a potential diversity of risks across all CVs.

1 Like

Can someone explain what is the purpose of creating a new primitive called oUST?
As currently explained in the proposal, it seems that oUST is ment to provide leverage.

However, while the goal is leverage, it seems no different than a currency conversion with no change in economic substance, but just a change in the chosen unit of account.

As a point of reference, consider this line:

“The insurer deposits X UST into Ozone, which mints X * target_leverage_ratio oUST.”

If the target_leverage_ratio is 4, then 1 UST converts to 4 oUST. Ok. But isn’t that an exchange rate rather that a leverage ratio? An exchange rate changes how value is denominated but doesn’t enable leverage. If I convert $1 USD to 100 Japanese Yen, I have not gotten 100x leverage. The purchasing power has not changed, just the way the purchasing power is denominated has changed.

If you imagine, as a thought experiment, that fiatOzone is an insurance company. fiatOzone take USD from investors and converts it to oYen at 100 oYen per 1 USD. fiatOzone then deposits the oYen in covered vaults (for this example assume covered vaults are not leveraged) and gets a return. However when the returns and the original capital is redeemed by investors in USD, there was in fact no “leveraged” return despite the “100 to 1” conversion of USD to oYen. If the exchange rate between oYen and USD didn’t change, the percent return of oYen will be the same as the percent return in USD.

Whoever understands how and why oUST is important or adds value to the system, please explain. Right now it seems to add no value and simply adds complexity.

2 Likes

Something like a capital structure model could work.

1 Like

How is a No vote/result an automatic Yes vote to fund ozone for the full amount in the pool? Why doesn’t this have to be a separate prop community spend?

There does need to be another vote. If that fails, nothing will happen.

2 Likes