Algorithmic Strike Selection
One of the most significant improvements in Ribbon V2 is the automation of Strike Selection within the Ribbon vaults. In V1, each vault had a “manager” who would select which strike price the vault use for selling options every week. While this worked reasonably well for the 4 months that Ribbon’s vaults that have been live, we knew that the future Ribbon Vaults should strive to become fully automated, otherwise they are nothing more than a human-managed fund on-chain. This is for two main reasons:
- Decentralization: the best way to decentralize the vaults is by removing the need for human decision making, and delegating that responsibility to code instead.
- Scalability: to scale to hundreds or thousands of vaults, it is impossible to have humans manage every single one. By letting the vaults operate autonomously, creating new vaults is as trivial as deploying a new smart contract.
The first step we have taken to automate the vaults is through a new feature called Algorithmic Strike Selection.
How does it work?
The main goal for a vault that executes a systematic options selling strategy is to sell options that have a suitable strike price. If a vault is running a “low-risk” strategy, it does not want the options to get exercised and it should sell far out of the money options. If a vault is running a more aggressive strategy, it could sell closer to at the money options. The question is: how does a contract decide how far out of the money?
A simple strategy could be a function which says that the vault will sell some fixed % out of the money options. However, this approach is generally too crude — in times of low volatility, selling a 1-week +25% out of the money call may be worth close to $0. Instead, we can set the contract to use a fixed delta value when trying to decide which strike price to choose, because this takes into account the current market volatility as well. In the Ribbon V1 vaults, our team manually computed and selected the strike prices based on a delta value of 0.1 for the put and call vaults.
In V2, we are doing this entire computation on-chain! Users no longer need to trust the Ribbon team to set strike prices correctly, the contract does all of it internally. The contract takes in the current spot price from Chainlink, current market volatility, and the pre-defined delta value to compute which strike price it should choose.
For the curious, the full mechanics of the strike selection contract can be seen here.
Getting Market Volatility
One of the most important inputs in the strike selection algorithm is the current market volatility. Given a pre-defined delta value (e.g 0.1d), a higher volatility number would lead to the algorithm picking a strike price that is very far from spot, and vice versa if the volatility number is low.
To get the market volatility, the Ribbon team built an on-chain volatility oracle called RVOL which uses price data from Uniswap V3 to compute historical volatility. However, after testing RVOL for a few weeks in production, we decided to temporarily switch to using a manually updated volatility number first, while we make improvements to RVOL.
Instead of using on-chain volatility out of the gate, the Ribbon team will still be able to manually update the volatility parameter within each vault. We will be updating it every week using Deribit’s DVOL for BTC and ETH, and will transition to RVOL over time. For assets other than BTC and ETH, we will use RVOL, since Deribit does not have volatility indices for most long tail assets.
Changing the Strategy
As you can probably see, changing the fixed delta value within the contract changes the strategy the vault runs. The Ribbon team will initialize the delta value to 0.1, which is the current V1 vaults’ strategy, and let the community govern that parameter if we decide that a change of strategy is warranted.
Conclusion
Algorithmic Strike Selection will be able to remove human decision making from the weekly operations of the vaults, making them truly autonomous. Next week, we will release another blog post about the other key feature in our decentralization roadmap: Open Auctions. In the meantime, stay tuned and join our Discord if you have any questions!