Charm is a decentralized options protocol. In this article, we present an improvement to the protocol that would vastly reduce slippage.
Current approach
The approach for v0.1 options was described in the litepaper. It consists of two steps:
- Take a pair of options whose payoffs sum up to a fixed amount — for example, a call and covered call with the same strike and expiry
- Use a prediction market AMM to create liquidity for this pair
This approach has two key benefits over other options platforms:
- Price is determined purely by supply and demand so a two-sided market with a narrow spread can be offered
- There’s less risk for LPs compared to options traded on constant-product markets like Uniswap
Improved approach
We’ve come up with a new approach that has the additional key advantage of reducing slippage. It works by allowing a single liquidity pool to provide liquidity for multiple options with different strike prices.
Instead of just a call and covered call, the prediction market AMM can be used to provide a range of bull/bear spreads that can be combined into various call/put options. For example, if we wanted to offer ETH call options with strike prices of 250, 400 and 500, the AMM could provide tokens with the following payoffs.
The payoffs of these four spreads sum up to 1 ETH as demonstrated by the stacked plot below. Therefore in terms of ETH, their prices sum up to 1 and the prediction market AMM can be used to trade them.
These four spreads can also be combined to form calls or covered calls with a strike price of 250, 400 or 500. For example:
- Call (400) = Bull spread (400, 500) + Call (500)
- Covered call (500) = Bull spread (0, 250) + Bull spread (250, 400) + Bull spread (400, 500)
Similarly, we can offer ETH put options with the following spreads. They sum up to a fixed amount and can be combined to form put options with strike prices of 250, 400 or 500.
Key benefit: lower slippage
Option markets suffer from the liquidity fragmentation problem. This means liquidity has to be split up across many markets with different expiries and strike prices.
Our improved approach solves this by allowing a single liquidity pool to provide multiple options with different strike prices. This is a lot more efficient and means there’ll be much more liquidity for each option.
For example, instead of 5 strike prices each with 20 ETH of liquidity, we could have a pool with 100 ETH of liquidity. This would significantly reduce slippage and make it cheaper for traders.
If you have any questions, feel free to ask us on Discord and if you want to stay updated, follow us on Twitter