[Discussion] Change the Stability Fee Structure

Motivation

Now that we have started onboarding more collateral types and SCD is shutting down, I believe we should start thinking about how to restructure the stability fee votes from their current form.

Currently we have the following governance fee polls:

Dai Stability Fee -> Sets the stability fee for both ETH-A and BAT-A.
USDC Stability Fee -> Sets the stability fee for USDC-A.

Presumably if wBTC is added that would be yet another separate, weekly stability fee vote.

This system made sense at the start of MCD as there was really only one type of collateral available (ETH). As we add more collateral types it will become unwieldy to vote on each collateral’s stability fee each week. I believe it’s time to refactor how we are voting on the fees before the flood gates of collateral are opened.

Proposal

I propose we refactor this legacy setup to the following:

  1. The weekly “Dai Stability Fee” vote becomes the “Base Rate” vote. The base rate will remain a weekly vote to control for peg stability. The Dai Savings Rate Spread poll will continue to be a delta from the Base Rate poll.

  2. All vault types (ETH-A, BAT-A, etc) get a “Vault Fee” that is voted on only when needed. The vault “Stability Fee” is calculated as Base Rate + Vault Fee. I want to call this a more general “Vault Fee” instead of “Risk Premium” because it may consist of more factors then just the Risk Premium in the future. Terminology is not a big deal though if more people prefer the term “Risk Premium” or something else.

  3. The Base Rate can be negative to allow for MKR subsidization of peg support (such as what we are doing now).

  4. Encoding of these governance parameters into the Maker system variables works as follows:

If Base Rate is positive:

base = Base Rate
duty = Vault Fee

If Base Rate is negative:

base = 0
duty = max(Vault Fee + Base Rate, 0)

This conditional is only because both base and duty can only be positive.

For example to encode the current setup of ETH-A = 0%, BAT-A = 0% and USDC-A = 6% we can do this:

Base Rate = -2% (MKR is subsidizing the risk premium in exchange for peg stability)
ETH-A Vault Fee = 2% (Risk Premium of 2%)
BAT-A Vault Fee = 2%
USDC-A Vault Fee = 8%

If wBTC is added with a target Stability Fee of 1% (as per the governance poll currently up), then it would get a Vault Fee of 3%.

This allows us to set the relative risks between collateral types once and move all the fees up and down in tandem to control overall Dai supply (and thus peg stability). It should not matter which collateral type is used to generate Dai. The only thing that matters is that moving the Base Rate down pushes Dai supply up on average and moving the Base Rate up pushes supply down on average.

I will leave about a week or so for some feedback before moving to a signalling thread.

11 Likes

100% on board with this proposal (unless anyone points out any flaws). Seems like it’s a lot clearer and I belive also minimises the risk of the fee on any particular Collateral type going rogue.

I think the DSR vote structure has had success so far and paves the way for this similar system being utilised for collateral.

1 Like

I’m not exactly sure if it’s more clear when people vote for a -2% base rate which means a 0% sf on ETH. Seems very confusing.

ETH-A should just have a vault fee of 0%.

So I can appreciate at face value these changes may seem more convoluted than what we have right now. Similar to when we adopted a DSR spread instead of a direct vote on the DSR. It seems more complex so why do it? We do it because by switching to the DSR Spread we were able to reduce the number of governance votes required per week. Similarly I am proposing this change to the fee structure to decrease our collective cognitive load and sharpen the votes to particular questions. There is really only one control that we need to be voting on every week and that is the peg stability control. Does it make sense to tweak 10 stability fees every week once we reach 10 collateral types? I’m of the opinion this is an inefficient way to think about the problem. So if our goal is to ideally have one peg stability control then what does it look like? To me this looks like a base rate, but different vaults have different risk profiles so you need some way to add that on top. If we take this approach then the negative base rate falls out of this if you want the ability to bring the stability fees to 0% like what we have now. We haven’t explicitly pointed it out but in fact MKR is subsidizing the risk premium for ETH right now. The negative base rate is nice because it makes the decision to start this subsidy an explicit choice. I welcome criticism, but would prefer an alternative implemenation rather than just saying this sounds confusing we should stick with the status quo. The status quo will not scale.

Yes, a base rate makes a lot of sense to reduce cognitive load. I disagree though on the DSR spread being more complex, I think it’s quite straightforward.

Changing the governance cadence for the stablecoin rate premium is another matter not for this thread.

It’s an interesting idea to bake in a 2% risk premium on ETH-A, making a subsidy an explicit choice. Yes this trick could have a strong psychological effect. But my point still stands that it makes it needlessly complicated, increasing cognitive load. A 2% risk premium is also arbitrary, and if the ETH-A risk premium can be adjusted, it brings question to what actually the ‘base rate’ means.

Also, the same change could be applied to the DSR spread vote. A 0% DSR spread is a subsidy in the current form. Is the DSR spread going to be connected to the base rate or the ETH-A rate? Does this bake in a 2% risk premium on the DSR spread? (Base rate 0%, ETH-A 2% risk premium, 0% DSR spread = 0% DSR) That’s definitely interesting.

We don’t explicitly point out that a 0% DSR spread is a subsidy, but MKR holders can be smart enough to understand that a 0% ETH-A sf is a subsidy and a 0% DSR spread is a subsidy. We don’t need to bake in risk premiums. It’s also opens a can of worms to argue about. Is a 1% ETH-A SF a subsidy? Is a 0.5% DSR spread a subsidy? And all the arguing is a bit pointless because you’re just deciding on a psychological value.

Yes, this is criticism but I am not suggesting the status quo.

My suggestion:

Base Rate = 0%
ETH-A Vault Rate Premium = 0%
BAT-A Vault Rate Premium = 0%
WBTC-A Vault Rate Premium = 1%
USDC-A Vault Rate Premium = 6%

This is similar to the DSR spread argument of making things simpler to reduce votes. Vault Rate Premiums just make a lot more sense when the ETH-A vault premium is 0%. In your case, if you wanted to lower the ETH-A premium from 2%->1%, you might want to lower the WBTC premium from 3%-2% at the same time also.

I generally agree with proposal, I just think in that case I wouldn’t prefer to call it ETH-A Vault Fee because some people might think this is the actual cost to borrow. Maybe ETH-A Spread is a better term?

In reality this Vault Fee or Spread including Base Rate compensates peg stability, risk and other costs (DSR, etc). I think the idea is that changing Base rate just simplifies the process and makes it more clear that all assets are affected equally when changed. Also the Base Rate alone may not be enough to control peg stability. You may run into a situation where one asset generates too much DAI and you may need to raise only its Spread and don’t touch the Base Rate.

Thank you for the more detailed response @Jiecut. I made an assumption that you were arguing for the status quo because your answer was very short, critical and didn’t present an alternative. My apologies on that assumption.

I have some rebuttals:

A 0% DSR Spread is not a MKR subsidy. It is the opposite. A DSR Spread of anything above 0% is a tax on the system that goes to MKR holders instead of from them.

So this is basically the same, but you seem to be moving the subsidy into the risk premium / vault fee (which should be voted on infrequently). So my 2% number for ETH-A / BAT-A is an example of what the risk premium might be. Really this number should be provided by the risk team, set once and not adjusted unless the risk premium actually changes. This is why I don’t want to store the subsidy into risk premium as currently the subsidy is in place because of the peg and will probably need to be adjusted on a weekly basis. I also want to keep these votes separate. The real ETH-A risk premium is very likely to be above 0% and if we don’t allow for a negative Base Rate then the only way to get the total Stability Fee down to 0% is to have a bunch of risk premium votes which need to be initiated outside of the weekly Base Rate. This global subsidy only makes sense to me as a peg stabilizer hence why I think it should be included in the global Base Rate parameter.

For example let’s say in the future the ETH-A / BAT-A risk premiums are determined to be 1% (same as wBTC), and we have a regular weekly vote on the Base Rate which can’t be negative. All of a sudden a Black Thursday type event happens and we really need to get all collateral types as close to 0% borrow rate as possible. With your proposed alternative we would have initiate N (N = num collateral types) risk premium / vault fee votes to achieve this goal. With my proposal we can achieve this inside the weekly Base Rate vote by saying we want a negative Base Rate.

Completely agree, but I suspect this will be infrequent enough to be manageable on a monthly, ad-hoc timeframe instead of a week-to-week one. It may make sense to have a per-vault tax/subsidy as well as a risk premium portion with the Vault Fee / Vault Spread which is why I didn’t want to call the entire vault portion of the fee the Risk Premium. Really it should be Stability Fee = Base Rate (global) + Risk Premium (per-vault) + Collateral-specific Tax/Subsidy (per-vault), but I think that will be easy enough to add in later and don’t want to overcomplicate this initial change.

PS I like the term Vault Spread as well as it is sort of the opposite of the DSR Spread.

@hexonaut,

In general I like this proposal. With an increasing number of collateral types this is the way things are going anyway so we might as well implement your proposed system sooner rather than later.

Some comments:
2. “Vault fee” is a slightly misleading term as the fee you are proposing is collateral type specific, not vault specific. A more presice term could be “Collateral type fee” or something along that line. Also, in the future there could be a separate “Vault fee” depending on the collateralization level of each specific Vault, so let us save that term for that.
3. Negative base rate should be shunned almost at all cost. When negative base rates become attractive it means that something else is broken in the Maker system and needs fixing. Right now we need more collateral types so that more DAI can be made in order to ultimately get the peg fixed. Negative base rate is not a solution, just a band aid to improve how things look.

2 Likes

This fee is vault specific as it can differ between ETH-A and ETH-B. Although I’m actually starting to prefer Vault Spread now.

Whether we should go negative is definitely an important matter to consider. I just want to leave it available as an option in emergency situations such as what happened on Black Thursday. I agree with you that it should not be used after we diversify the collateral pool. I don’t think we are at that stage yet though.

It seems to me that we don’t really intend for the overall stability fee on a vault to ever actually go negative at this time, correct? I.E, BASE_RATE + VAULT_FEE >= 0%. I’m sure we may relax this requirement at some point in the future if the tech allowed it but that is my impression having read this.

So it stands to reason to me that we may want to just put a floor on base rate at 0% to avoid arguments around it going negative. If some black swan event happens where we want to send all vault stability fees to 0% we could just put up an executive that would set base rate to 0% and adjust vault fees accordingly.

P.S:

On the topic of language, I prefer the “risk premium” terminology. I understand that there are reasons that you might change the fee that would cause it to drift from the definition there, but it seems to me that on average that would be the idea. My 2 cents.

Correct.

Why would we want to have a one-off vote that has to go through the whole governance process when we can encapsulate it inside of a negative Base Rate? Just because it’s available doesn’t mean we have to use it.

I’m going back and forth myself on this. I’ll put up some language options in the poll next week.

The main reason that I see is that it avoids confusion. Additionally, though, as it appears to me black swan crisis management is sort of dealt with by one-off votes anyway, so we might be being a bit naive to say that this avoids doing that in the first place since we don’t really know what the next black swan will look like or how it will need to be managed.

1 Like

Another thing is that a flat risk premium may be too simplistic. It may work better in a ax + b form.

A 3% vault fee with a base rate of -2%, makes a big difference with a 3% vault fee with a base rate of 10%. (Assuming ETH-A has a 2% vault fee).

3 Likes

Could you elaborate on this ax + b form with some examples?

1 Like