[Proposal] $IBSI, a yield-bearing stablecoin index

The Interest-Bearing Stablecoin Index [IBSI]

Summary: a formal proposal to the DAO for a Indexed V2 index of stablecoins that earn interest through Nirn vaults, weighted by weekly average interest rates.

This is a forward-facing proposal, as it will only be possible once our Balancer V2 upgrade is complete and Nirn can be fully integrated with our pools through an asset manager. Nonetheless, it’s worth entering this into the ring.

Note: I’m not married to this name at all, but I can’t work out a backronym for GAIN or EARN. Suggestions very much welcome!


Introduction

The idea of an interest-bearing stablecoin instrument by Indexed has been thrown around in Discord (and on the roadmap) for a while now, ever since Core started working on Nirn. Competitors in the space have their own takes on this sector, either existing or proposed: YLA, USD++, PAY and BMI.

With the exception of USD++, these are all instruments that have as their constituent assets interest-bearing variants of stablecoins that are tied to a specific protocol, such as aDAI (Aave-interest bearing DAI), yUSDC (Yearn USDC) or more exotic variants such as crvALUSD (Curve Alchemix USD).

The ‘problem’ (such as it is) with doing things this way is that you are married to a protocol for each particular base asset that you select. You may have started off with great rates for aDAI and yUSDC, but they could (and frequently do) rapidly get knocked off their top spots in favour of - for example, cDAI and aUSDC.

The ‘best’ rate for a given token is dependent - and I’m vastly oversimplifying here - on a protocols available capital to lend and its utilisation ratio, and these change every couple of days. If you’re not willing - or able - to constantly rebalance your Token Set or Balancer pool to take advantage of these shifts, you’re missing out.

If you’re using a Balancer V1-based index, this also requires you to have that specific variant of a token (i.e. aDAI instead of DAI) in order to mint the index token: that’s extra gas and a bit of a hassle. If you’re using a Token Set, you’re bound to the Set Labs integrations and can’t take advantage of other markets/protocols that pop up without relying on their engineers for the appropriate technical lifts.

Over at Indexed, we can do something quite a bit more sophisticated.

Enter the IBSI.


Justification

The IBSI - as I envision it - will be created as an index pool of base stablecoins such as DAI and USDC, allowing interested parties to easily enter or exit with stables that they already have to hand.

The way that our proposed Balancer V2/Nirn integration works is that the assets within the IBSI are then deposited into their appropriate Nirn vaults, which then rotates them across several lending platforms depending on yield rates.

Any interested party is capable of running an optimiser that we have open-sourced that scans the available rates for these vaults, and triggers a shift between lending markets if a rate exists elsewhere that is at least 5% better than the currently utilised market. If the pool is large enough that it is optimal to split the assets across multiple lending protocols at once, this is also possible.

This means that the IBSI could theoretically have every single one of its assets moved between Compound, Aave, Cream, Iron Bank and Fulcrum every hour (to say nothing of our upcoming support for Rari, dYdX and probably Yearn), without affecting the composition or weightings of the index itself.

To lean into a forced metaphor, while all this threshing is happening under the surface, to outside observers the IBSI is just a boring duck: an index pool of vanilla stablecoins that you can enter into with DAI, exit into USDC and earns for you.

I don’t think I need to belabour the point of how valued such an asset would be in the Indexed arsenal: other parties do that regularly when discussing the sheer size of the market for DAO treasury management, and they’re not wrong.


Assets

For candidacy, I had a look at the current top ten assets yield-wise that Nirn can currently support that I would classify as stables. They are:

Asset Rate Protocol
USDT 9.76% Fulcrum
HUSD 8.33% Cream
USDC 7.86% Fulcrum
DAI 7.67% Aave V2
RAI 6.64% Cream
BUSD 6.59% Cream
sUSD 6.22% Iron Bank
USDP 4.58% Aave V2
GUSD 3.81% Aave V2
TUSD 3.47% Aave V2

There are a fair few others, and others still which aren’t supported yet due to the set of protocol adapters that Nirn utilises. “Where FRAX/FEI/MIM/UST/ALUSD”: I’m aware, I promise, and they’re probably all going to end up on Rari when they open up their pools, if they’re not already: once we’ve deployed the Rari protocol adapter, they’ll all be fair game.

It’s worth saying here that the underlying mechanism for yield here is currently pure lending out of conservatism: there is a lot to be said for engaging in complex strategies that produce far better returns on stables (i.e. those supported by Yearn).

We can - as a DAO - choose to go down this road if/when Nirn integrates these more ‘advanced’ protocol adapters, which will - I suspect - vastly increase the interest-earning potential of the IBSI, at the cost of “additional smart contract risk” (places like Curve and Yearn are industry-standard at this point though, so I don’t see this being a reckless gamble).

Note: some of these tokens may have centralisation or regulatory concerns, or may be very infrequently used compared to others: this is merely a sample drawn from what I can see from my analytics script.


Weighting

My thinking here is that the scoring strategy for weighting assets in the IBSI should be an average of the previous weeks best available returns for a given asset, rather than observing a particular data point and assuming that it’s representative (the fact that HEGIC is currently getting 31.74% returns on Cream is instructive in that regard). There’s possibly some risk-factor weighting we could add in as well based on concerns or Lindyness of a particular asset, but I’d like us to have a wider conversation about that.

If we take the percentages above as being in this form, the example IBSI above would be weighted as follows, producing a diversified basket with a yield of 5.69%:

Asset Score Weight Base Yield Actual Yield
USDT 9.76 15.03% 1.45% 1.17%
HUSD 8.33 12.83% 1.06% 0.86%
USDC 7.86 12.1% 0.95% 0.77%
DAI 7.67 11.81% 0.9% 0.73%
RAI 6.64 10.22% 0.68% 0.55%
BUSD 6.59 10.15% 0.67% 0.54%
sUSD 6.22 9.58% 0.6% 0.48%
USDP 4.58 7.05% 0.32% 0.26%
GUSD 3.81 5.86% 0.22% 0.18%
TUSD 3.47 5.34% 0.18% 0.15%
Total 64.93 7.03% 5.69%

For those of you that like graphs:

image

A smaller variant (thanks for the idea @litocoen) that only contained the top five would look like this, with an actual yield of 6.6% - more concentrated yield but less diversification:

Asset Score Weight Base Yield Actual Yield
USDT 9.76 24.24% 2.36% 1.91%
HUSD 8.33 20.7% 1.72% 1.39%
USDC 7.86 19.52% 1.53% 1.24%
DAI 7.67 19.05% 1.46% 1.18%
RAI 6.64 16.49% 1.09% 0.88%
Total 40.26 8.16% 6.6%

image

The ‘true’ yield returned by a given Nirn vault is roughly 81% of the value reported by the maximum adapter rate (the difference between base and actual yields above). The reason for this is:

  • A vault aims to keep 10% of the deposited assets as a reserve - deposited but not utilised by the underlying protocol adapters, in order to facilitate lower-gas swaps and exits, and
  • 10% of the yield generated by the productive (non-reserve) assets is routed to the Indexed Finance DAO as protocol revenue.

The above parameters (reserve and fees) can be adjusted by the DAO, and the amount currently in reserve by a given vault constantly varies depending on interactions.

Of course, the rates for all of the above are constantly in flux, but there’s a sample.


Governance

As an instrument that we would very likely push quite hard as a very flexible, easy-to-enter option for DAOs as a unique, diverse option for Treasury stablecoin exposure and the general public alike, I’m of the personal opinion that the DAO should create (and potentially incentivise) a distinct committee/group - separate to the Sigma committee - that are responsible for analysing candidate assets for the IBSI in particular, modifying the candidate list and making the DAO aware of any concerns.

The above is fundamentally down to the will/availability of the wider DAO, and Sigma remains an option to act in this overseer role. It’s all up for discussion, but if you’d be interested in engaging on something like this, please make your voice heard!

A circuit breaker that has the power to deactivate the ability to swap within the pool should definitely be in place, especially if the IBSI contains algostables that have the potential to veer significantly off-peg. If we were to go down that road, we’d have to deploy another controller responsible only for the IBSI (the more I type this acronym the less I like it, please help).

As is the case for all of our existing products, reindexing to add and remove candidates from the active index would occur after three weekly reweightings (under the assumption that Indexed V2 follows the same rebalancing structure as present).


Technical

As I said at the start of this, this is a forward-facing proposal. There are a fair few things that we’d need to get in place infrastructure-wise first, which will take Core a couple of months to get ready. They are:

  • Complete the components of the Balancer V2 upgrade detailed here and have them audited: this is the work that’s currently getting Core out of bed in the mornings, and will be for a while.
  • Complete formal verification and a subsequent audit of Nirn. Core’s current thinking is to fully open up Nirn for all potential standalone vaults after the Certora formal verification process is completed (ETA November 2021), but we’d sleep a whole lot better if we had a firm like Quantstamp look at the code as well prior to utilising it within an asset manager for index liquidity.
  • Update the Nirn subgraph to record and aggregate rates for individual vaults.

All of the above is notwithstanding any/all discussions about how such a product should look/be weighted/be operated in practice. Full disclosure: we’re looking at at least four or five months before this would be live.


Conclusion

I’m quite excited about the idea of this: I’ve done the ‘rotate stables around every few days’ dance myself, and have the fees.wtf scars to prove it. I’d like to gauge the thoughts of the DAO (and the wider DeFi community, if you’re reading this!): everything’s on the table at this stage.

Let’s hear it!

7 Likes

Laurence you’re a madman! Amazing proposal.

Curious: what is the reasoning for including so many stablecoins especially given some only yield like 3.5%. Why not narrovwing it down to e.g the 5 most popular?

1 Like

Theoretically, nothing stopping it at all. That might even be best!

I guess it becomes an issue of diversification versus yield-concentration, and that’s one that I’ll want to dig into a bit more [with the help of others!].

This is as exciting as a stablecoin index could be! I think it should certainly be developed.

Lovely. Seems like a no brainer to me!

Great proposal and write-up.

I’m not familiar with all the underlying components and how good a job they all do keeping the peg to USD, so was wondering if it would make sense to consider volatility/deviation off-peg as part of the weighting strategy in combination with the average of the previous weeks best available yields? I.e. weight assigned inversely proportional to deviation off-peg?

A tongue-in-cheek suggestion for the name is the Nirn-Optimised Boring Lending ($NOBL) Index. NOBL as in noble … gases … which are … stable. Get it? :sunglasses:

1 Like

consider volatility/deviation off-peg as part of the weighting strategy in combination with the average of the previous weeks best available yields? I.e. weight assigned inversely proportional to deviation off-peg?

This is a really good idea, @fnery, and I’m almost annoyed I didn’t think to include it to start: this falls under my “risk factor based on concerns” umbrella, and it would be easy (and cheap, gas-wise) to acquire onchain from any decently rich data source.

Not all of the above candidates are pegged to the US dollar, mind (RAI is a counter example).

I’ll start collecting some historical data and tracking Nirn returns for the above assets just for a sample set. Want to work on some modeling with me?

[Aside: I’m absolutely here for the arcane naming jokes, but this is why I’m not good at names. Some suggestions in the interim have been INCM, PAI (we can’t take that for obvious reasons), STABL, PSI… they need sensible expansions though!]

1 Like

I’d like to quickly add here why Yearn wasn’t added to Nirn off the bat, and therefore why my example above doesn’t have the bonkers rates you could achieve by zapping, say, USDN into the Yearn crvUSDN vault.

There’s a fair chunk of code already written for a Yearn protocol adapter, but we’re yet to convince ourselves that - in contrast to the existing supported protocols where we can directly read APRs onchain as part of their infrastructure -, the APRs for Yearn vaults are equally as ‘reliable’, as they are instead based on historical performance over time. Just needs a bit of careful analysis.

Similarly “small but important” lines of thinking exist for the Rari and dYdX protocol adapters: for the former we need to look at their setup once they open up their lending pool creation to the public, and the latter simply needs the underlying token adapter to issue a wrapper token for deposits so that everything is internally consistent.

More importantly, we want to have formal verification completed for Nirn (which is still in a live-beta stage) before we bolt any additional protocol adapters on.

This sounds like an index that is going to see a lot of change; every reindex could see the majority of the stablecoins swapped out for new ones since the only factor is how much yield each token saw in the previous week. What does that mean for the costs to maintain the index?

1 Like

This is a good question!

The ‘costs’ insofar as index operation are concerned are exactly the same whether or not an index never sees its membership change or constantly rotates. Fundamentally the maintainance cost is -

cost_to_update_oracle * number_assets_to_update + cost_to_write_new_weights

- which is the same as our existing set of products.

With that said, that cost to update an oracle depends on what strategy is ultimately chosen to determine weights, as the complexity of retrieving/aggregating data varies depending on how a score is determined. It’s cheaper to just grab a FDV from a TWAP oracle than it is to query a Linkpool and read some Coingecko API data, for example.

A pool that constantly rotates bound members does have some pain points (you can’t quite get target allocations for everything that’s bound if there are additional members phasing in and out taking up space), and there’s a potential for IL with an excessively large pool: this is more of a concern for stablecoins because you can’t rely on price appreciation to make up the loss.

To that end, if it looks like we’d frequently see two, three or more stables rotating in and out on every rebalance [and we have time to grab data to analyse this], it might make more sense to keep a restricted list of assets (i.e. no additional candidates), and add/remove candidate assets based on community/monitoring committee judgement based on yield rates over time.

Awesome proposal.

About the name: SYG? From Stable Yield Garden?

USDY from Usd Yield?

Thanks for the writeup - I really like the idea.

You touched on it briefly in your write-up, but I think the biggest unanswered questions are asset selection and asset rotation. I see a distinct possibility that in the coming months, one or many of these stablecoins will fall out of favor due to regulatory concerns. Can you elaborate on why you would suggest a separate committee from the Sigma committee to handle this?

I think that @fnery’s idea regarding using stability to determine inclusion is a great one. Another thing worth considering is longevity. When it comes to stable coins, having a long track record is valuable. I know that for me, I’d like to see more DAI in the index than some newly created stable coin. What if we evaluated stability over multiple years, but considered stabliity over the last few months more seriously (Sounds like some logarithmic or sqrt root function)? That way, a stablecoin like DAI gets “bonus points”, in a sense. Would this be too gas intensive?