FIP-72: Peg FEI to DAI

Summary

Fix the DAI PSM and provide a better peg.

Motivation

The PriceBoundPSM was deployed by Fei Protocol with Fei v2. The target was to stabilize the price of FEI.

The matter was already discussed here. Since then the fees were reduced to 25bps on January 2nd. The situation improved but FEI remains significantly the most volatile stablecoin (of the main DeFi ones).

Moreover, as it was explained, the Chainlink price is not good enough for such kind of use. What matters is the price of DAI on Ethereum, not on some Cex places. This can be proven easily by comparing the Chainlink DAI and USDC price over time. They should be the same as you can convert from DAI to USDC without fees through the MakerDAO PSM. They are not showing that Chainlink is not accurate for a world limited to Ethereum.

This transaction is an example of the failure of the PSM. The user minted 13,465,508 FEI with only 13,429,396 DAI (as displayed below). This transaction alone resulted in a net loss of $36k for the Fei Protocol ($64k with other similar transactions around the same time).

It should be noted that such a loss was made with fees (25bps) and a depressed FEI price (which limited the possible profit within 1-block). With smaller fees and/or a more robust peg (which I assume is the target) it would have become much worse. Therefore it should be fixed by narrowing the allowed price range.

Most of the time the DAI price from Chainlink fall within this narrow range. Obviously, flashbots are exploiting mainly then the price is not in the range.

Specification

  1. Set the DAI PSM ceiling parameter to 1.001 (10bps max deviation from the peg allowed for price validity)
  2. Set the DAI PSM floor parameter to 0.999 (10bps max deviation from the peg allowed for price validity)
  3. Set the DAI PSM mintFeebasisPoints parameter to 10bps (from 25bps)
  4. Set the DAI PSM redeemFeebasisPoints parameter to 10bps (from 25bps)

Voting Options

  1. YES, update the DAI PriceBoundPSM contract with the specification parameters
  2. NO, leave mandate unchanged
1 Like

I think you have a good point about the Chainlink DAI-USD feed being suboptimal for the currently deployed version of this mechanism

I don’t think it’s quite as simple as narrowing the parameter ranges though. the FEI peg needs to have PCV backing when the DAI Chainlink oracle falls outside of the narrow parameter range. times of high volatility is when this backing is most important and also when DAI oracle is most likely to leave the narrow range

a few possible solutions:

  1. have either a second PSM or a second set of PSM parameters that are conditionally activated when DAI oracle falls outside of acceptable range
  2. have a second PSM that is always active but backs FEI with a wider parameter range
  3. peg 1 FEI == 1 DAI and remove Chainlink oracle
  4. use an FEI-DAI AMM pair for a better balance between price stability and demand-based price elasticity
1 Like

I think this is a timely proposal and we should explore some options as storm mentioned.

I particularly like option 3 in the short term, where we use the chainlink oracle as the condition for halting the PSM but peg FEI to DAI.

Option 4 would require a bit more dev effort but is something we have on our radar longer term and is the most elegant solution

I am in favor of this proposal. Since storm list option #3 as a viable path and joey is in favor, let’s go for it.

I think we should also consider a making the LUSD PSM 1:1, as DAI’s acceptance of USDC collateral places them at a higher centralization risk than LUSD. I think ideally we should be moving to remove DAI from our system as long as they deal in centralized assets.

LUSD has lower centralization risk but has a variety of other risks. this might change in the future but right now I am still a big fan of DAI. DAI’s stability is unmatched for decentralized stables so I am much more comfortable leaning into DAI for FEI’s stability mechanism

Thanks for those comments. I chose to deal only with parameters changes as it is easier. So any better solution is welcome as well.

The ideal solution is to have min(DAI price, 1) when minting FEI and max(DAI price, 1) when redeeming FEI. It’s a bit more smart contract work tho. So when DAI is 1.02 on Chainlink, you can still only mint 1 DAI = 1 FEI but if the price of DAI is down a good reason it is taken.

1:1 with the ability to pause it is probably a good option.

I’m in agreement that we should fix this as we want to hold as tight a peg as possible. I’m in favor of using a fixed price oracle valuing DAI at 1 dollar, and then using the PriceBoundPSM logic so that if DAI ever trades outside of an acceptable price band, the PSM halts so that it doesn’t buy a stablecoin that has lost its peg.

This would require some slight code changes, but it feels like the optimal solution as it allows us to peg FEI to 1 dollar, reduce our mint and redeem fees, and shield ourselves from downside risk in case DAI loses its peg.

Summary

Peg FEI to DAI in the PCV DAI redeemer

Motivation

An oracle-based solution is not optimal for the current FEI-DAI redeemer. Making FEI redeemable 1:1 with DAI would resolve this issue by not directly relying on an oracle during regular operation.

Specification

  • Create a new Peg Stability Module that uses a fixed price oracle and reverts if the DAI chainlink oracle price is outside of the acceptable bounds.
  • Lower Bound: $0.985
  • Upper Bound: $1.015
  • Keep mint fee basis points at 25
  • Keep redeem fee basis points at 25
  • Deprecate DAI PriceBoundPSM
  • Keep all other DAI PSM parameters the same in this new contract

sounds good to me if thats feasible on the smart contract side of things

1 Like

FIP: 72

Status: Last Call

Summary

Peg FEI to DAI in the PCV DAI redeemer

Motivation

An oracle-based solution is not optimal for the current FEI-DAI redeemer. Making FEI redeemable 1:1 with DAI would resolve this issue by not directly relying on an oracle during regular operation.

Specification

  • Create a new Peg Stability Module that uses a fixed price oracle and reverts if the DAI chainlink oracle price is outside of the acceptable bounds.
  • Lower Bound: $0.985
  • Upper Bound: $1.015
  • Keep mint fee basis points at 25
  • Keep redeem fee basis points at 25
  • Deprecate DAI PriceBoundPSM
  • Keep all other DAI PSM parameters the same in this new contract

Voting Options

  1. YES, create this new redeemability module that allows DAI to be redeemable for FEI 1:1 and deprecate current FEI/DAI redeemability
  2. NO, leave DAI redeemability module as is

Voting Rules
If this vote passes, this will need custom smart contracts to be written and then submit an action to the DAO for an onchain vote.

The Gelato G-UNI has a spread of 30bps and 5bps fees. So a 25bps is not ideal as you provide an arb only when all the liquidity is used.

Fei is in a position where it can be at a top-level peg and it is not.

Posted snapshot with some parameter changes: Snapshot

Most notably, the mint fee would be 0bps until DAI reserves are filled

1 Like

So far the peg seems quite in order (it was more due to the contractionary movement ).

The “0bps until DAI reserves are filled” was a good call as we are now with 33M DAI in the PSM thanks to that. There is a flashbot at work to arb the price with the PSM.

2 Likes

Protocol is looking great after that move. Curious at what point you think it would make sense to re-approach MakerDAO about a PSM on the Maker side?

Even cooler would be exploring Turbo for DAI issuance (which is a longer conversation)

3 Likes

I’m unsure.

From FEI perspective, it brings PR and let’s say 100M of free capital to the PCV.

From a MakerDAO perspective, 100M FEI doesn’t move any needle and would already be challenging risk-wise (25% of the non-protocol FEI).

The DAI PSM (on FEI) isn’t actually all great for MakerDAO, as you provide those to money market, you limit the ability of MakerDAO to have his own D3M taking the fees.

A module to fund a Fuse pool seems more likely to me. But I’m not sure what would make sense for everyone. I see a world where FEI provides cheaper credit but goes above DAI when the peg is under attack. This let borrower with an option (swap FEI borrowing to DAI). Or a very specific DAI Fuse pool? I don’t know.