Ribbon has grown the adoption of on-chain option markets almost entirely by themselves, using the assumption that set-and-forget strategies which rely on sustainable yield (theta) will capture more users than the prospect of active participation in these option markets.
Perpetual-izing time-based option strategies has made the Theta vaults a competitive place for capital, even when compared against massive apy (misleading...) yield farms.
This ethos and strategy is certainly the best way to grow adoption of crypto structured products, so how can we make it even better?
Right now, Ribbon matches vault depositors to call option buyers. Therefore:
More Deposits = More Problems
The vault can only support the capacity of buyers, so as vault deposits grow, it gets more difficult to maximize utilization unless buyer capacity grows with it.
A $1b Ribbon Theta Vault is possible using Primitive RMM pools.
This is because of a fundamental property of RMM pools, the same with any AMM:
More Deposits = More Yield
As the pool grows in size the arbitrage opportunities grow along with it, meaning the fee income to keep the pool rebalanced also grows.
The sell options to buyer model is also limited by buyer's capacity for different tokens! RMM protocol makes Theta Vaults for any token possible since pools can be created for any token pair.
Theta Vaults built using RMM can scale to massive TVL and more markets, all while relying on decentralized architecture.
A Theta Vault that deposits to selected RMM-01 pools will give Ribbon users access to higher yields and structured products for more tokens.
Here is how in three steps.
Right now, the process for Ribbon's Theta Vault strategy is 3 steps.
Using Primitive's RMM protocol, a constant function market maker, this can be reduced to 1 step:
The net result of this process is that the Vaults should receive swap fees over time, expected to be equal to the option premium. This will mean the Vault's balance will expand over time as swap fees of RMM are generated and compounded into the LP token.
RMM protocol is a two-token Constant Function Market Maker. This means the two tokens of the pool can be swapped, generating trading fees for liquidity providers. Therefore, Ribbon Theta Vault depositors would be the liquidity providers.
More liquidity in RMM = More Trading Fees
As a pool's liquidity grows, large trades have lower price impact, therefore capturing more trading flow and thus trading fees.
The trading function of RMM is designed to capture theta through swap fees. Read the whitepaper to learn more: whitepaper.
Theta vaults follow the strategy of selling one-week call options that are deep out of the money (OTM). Here is a concrete example for a prospective RMM pool as a place to put Theta vault deposits:
The current price of ETH is about $4000. With these parameters, this particular RMM LPT is currently valued at ~0.913 ETH * 4000 + 275 = $3,927. In one week (expiration), there are two different payoff scenarios for Theta Vault depositors:
Using RMM protocol, the IV and swap fee parameters can also be managed by the Theta Vault. This has the potential to generate higher yields than selling to buyers in an auction setting, because the market of buyers in RMM protocol is any spot trader or arbitrageur.
Both the chosen IV and swap fee parameters affect the probability and degree of arbitrage happening, thus impacting fee revenue for LPs. If you'd like to read more on how swap fees of RMM can be optimized check out this tweet by experience.
Since liquidity is provided to a static Implied Volatility, it alters the Ribbon Theta Vault model from price rebalancing to volatility rebalancing. This will require the vault manager to view where realized volatility is and adjust the vault's deposits closer to it. Optimizing this will be optimizing yield for depositors, as it improves the chances for fees to be generated.
One concern is the need to rebalance between the underlying and cash asset. We'll need to find a solution for that.
The RMM pool's payoffs can be modeled using rmms-py.
Any token pair can be deployed permissionless from the Primitive Factory contract, allowing any pools on that pair to be created.
The consequence of using RMM protocol to deploy pools for any token pair is that users can access theta products for any token.
RMM protocol works by incentivizing arbitrageurs to rebalance positions such that by expiration the liquidity pool token (LPT) is redeemable for
1 underlying token or
strike price of stable tokens.
Theta Vaults manage all user deposits which means whatever RMM pool the vault chooses, that pool will become instantly liquid. This is important, as it will create enough profit opportunities to incentivize the needed arbitrageurs and thus yield for depositors.
As described in the first action point, more vault deposits will attract more outside trading flow (from not only arbitrage), therefore increasing trading fee revenue to vault depositors.
This is because liquidity in RMM protocol creates its own counter-party, but on-chain.
Using the RMM protocol does not come riskless.
A pool's swap fee affects an arbitrageur's window of profit. An optimal fee can be chosen, as modeled in the rmms-py repository.
Without arbitrage at the least, or any swapping, fees will not be generated. This means no revenue is earned for liquidity providers (vault depositors).
The RMM protocol is audited by four professional audit firms, has extensive testing, and an active $1m bug bounty. There is no guarantee of being bug free, as such there is a risk of total loss for user deposits. In this scenario, there is a $10m coverage pool provided by Sherlock which will be claimable by all RMM protocol users on pro-rata basis.
Ribbon is innovating on the way users interact with complicated financial instruments, and more tools should be made available to vault managers to do this. Using RMM protocol, Vaults can be built on a scalable foundation to bring these novel crypto structured products to any token and of unlimited capacity.
The RMM core contract does not tokenize liquidity. This allows any higher level smart contract (i.e. Theta Vault) to implement tokenized liquidity in any way.
Most transactions that interact in financial protocols generate gas expense from simply transferring tokens. For every token pair contract of RMM, called "PrimitiveEngine", an internal balance can be stored. This balance can be debited against whenever an action by the balance holder is taken, e.g. allocating liquidity or swapping. This reduces the gas expense by ~70k, (two token transfers).
If Ribbon users need to swap between tokens, you can direct them to use the pools which Ribbon Theta Vaults are depositors to.
Pools must be created with an argument to initialize the underlying, "risky", token reserves. The risky reserves of a pool should always match the covered call delta, per unit of liquidity. Therefore, when creating a new pool the vault manager would need to compute the delta of the covered call, equal to 1 - delta of call, which requires the current spot price of the asset.
There are a couple solutions to this: use an RMM TWAP oracle from one of the other pools, use an external TWAP oracle, or have the vault keeper manually enter it on their own. Keep in mind, with an incorrectly set risky token reserve, the pool might be mis-priced, causing losses to depositors.
When a pool (e.g. for an ETH-USDC pair) expires OTM, there will be a balance only denominated in ETH. To roll this position to a new expiry, or strike, there will be a need for some of that position to be converted to USDC, in order to allocate liquidity to the pool. This ETH to USDC swap can happen on another DEX, or in another RMM pool of the same pair.