FIP 15 - Update Protocol Buyback Function

Thanks to Dennis and Sam for feedback and input. Credit to Dennis for recently suggesting a similar approach.


Change the Frax protocol buyback function to preserve collateral within the protocol.

Background & Motivation:

The Frax protocol buyback function is a mechanism to match the protocol’s target collateralization ratio (CR) with the actual CR. When the amount of collateral in the system exceeds the target amount (actual CR > target CR), the buyback function becomes available. Currently, the buyback function uses existing collateral (USDC at this time) to create a limit order to buy FXS that equals the amount of excess collateral in the protocol. The protocol is essentially removing excess collateral by purchasing FXS.

While this approach has been successful to date, the downside is that it balances the CR by removing collateral from the system. There is an alternate approach, which now appears to be the better path forward: instead of removing collateral from the protocol, the protocol can mint additional FRAX such that the new total balance of FRAX divided by the existing collateral equals the target CR rate. This additional amount of FRAX minted to balance the CR would then be used to purchase FXS on the open market, likely in a similar manner to FXS-1559 (though 100% would be used to buy and burn FXS).

There are three obvious benefits to the change. Long term it encourages the growth of Frax’s balance sheet by adding liabilities (additional FRAX) rather than shrinking the balance sheet by removing assets (removing collateral). The additional FRAX ultimately boosts the total FRAX supply.

It is now obvious that protocol collateral is incredibly valuable to Frax. Frax is currently on pace to earn 8 figures of protocol revenue in 2021 primarily driven by the effective use of idle protocol collateral. Reducing collateral leads to a reduction in revenue. This change will preserve protocol collateral within the protocol and increase protocol revenue compared with the current buyback function.

The final benefit is that it shifts the protocol from a passive to an active buyer for buybacks. So rather than have a sitting limit order for FXS at the oracle price, the protocol will actively conduct buybacks on the open market in the same manner that FXS-1559 currently operates. While the size of the buyback in FXS terms may be less due to slippage, the ability to execute it on demand may offset any slippage (2% slippage doesn’t matter if the order sits for a day and the price of FXS increases by 5% in that time). It is important that 100% of the FRAX generated for the buyback be used for the buyback and not allocated via the FXS-1559 fee split (that would significantly unbalance the protocol in my opinion).

Technically, I understand this proposal to be a straight forward change but am happy to adjust if it becomes extremely complicated. I also believe there are merits for creating symmetry with the recollateralization function (e.g. also making that function operate similar to FXS-1559 where the protoocl would become an active seller on the market to recollateralize) but that appears to be more involved technically and out of scope at this time. We can address that at a later date.

Please let me know if you have any input or feedback.

For: Change the buyback function to preserve collateral within the protocol

Against: Do nothing


so let me get this right,
rather then using USDC profits to buy …
50% to buy FXS for veFXS stakers
25% to buy FXS and ETH for the liquidity pool
25% to buy FXS to burn

you want to change this to.
50% to buy FXS for veFXS stakers
25% to buy FXS and ETH for the liquidity pool
25% to be used as collateral to mint new FRAX, then sell the FRAX for FXS and burn it ?

or would the 50% (for the veFXs rewards) and the 25% (for the ETH pair) also be changed ?

Hi @sparkes25 -

This is actually a separate from the FXS-1559 allocation. Currently 100% of protocol collateral buybacks go towards purchasing FXS. This will not change that. It’s very important that we don’t change that allocatin because it will lead to a protocol imbalance where recollateralizations mint FXS but buybacks no longer burn FXS and would likely create inflationary conditions for FXS.

This proposal also does not change the FXS-1559 allocation in any way. We should make it more clear what the current 1559 allocation is - it appears to be 50% veFXS stakers, 25% to purchase ETH to stake in FXS-ETH LP, 25% buyburn FXS. So this proposal does not change that in any way. It just changes the buyback mechanism so that instead of removing USDC collateral to make a buyback, the protocol mints additional FRAX and then buys FXS on the market and burns it. By preserving the collateral, the protocol also preserves it’s earning potential on that collateral while increasing the overall FRAX supply.

Edited to fix FXS-1559 burn amounts.

i think thats a very long way to say yes to my 2 questions.

It’s a long way to say no to your questions (if I understand them correctly).

It does not change the use of any USDC profits. So it does not change this:

so let me get this right,
rather then using USDC profits to buy …
50% to buy FXS for veFXS stakers
25% to buy FXS and ETH for the liquidity pool
25% to buy FXS to burn

It simply changes the way that protocol collateral buybacks take place. The confusing part is that the term buyback refers to a few different things within the Frax universe. I’m specifically talking about buybacks using protocol collateral ( more info is here: Buybacks & Recollateralization - Frax ¤ Finance). This does not impact FXS-1559 buybacks or buybacks from fees.

As Hameed said, FXS1559 and the buyback function are 2 different things. The only similarity between them is that they buy/burn FXS.

The buyback function activates only when the CR changes or extra fees accumulate in the system contract. Not any other time.

FXS1559 activates when AMO profits build up across a bunch of different AMO contracts through a lot of integrations across the ecosystem.

They both activate at totally different times. Buyback() buys and burns all FXS for collateral. FXS1559 mints FRAX with AMO profits to buy 50% FXS for veFXS and 50% to burn FXS.

Hameed is saying that the buyback() function should mint FRAX to burn all its FXS instead of using the raw USDC to do it. That way the protocol keeps ownership of its USDC collateral.

I actually agree with this approach and think it makes FXS more valuable since it keeps value within the protocol and burns even more FXS than a normal buyback() would.

Snapshot will be live this afternoon: