Description

EVIX is a protocol for trading ETH volatility futures & perpetual swaps using AMM pools as the trading mechanism. By calculating an underlying volatility index from on chain sources and amassing funding payments based on that index, we have a contract that is continuously pegged to the underlying volatility level and allows for direct exposure to ETH volatility fluctuations. As DeFi markets continue to evolve, it will be more important that the ecosystem has all of the necessary trading and hedging building blocks of a mature derivatives market. Volumes of both on and off chain options on crypto underliers continue to grow massively, rising over 400% in 2021 to $387bn notional across BTC and ETH as more sophisticated players enter the space and retail traders continue to seek more complex products. One of the key building blocks that is missing currently is a product to directly trade volatility exposure. With EVIX, we have built a protocol to offer just that, with a funding & settlement mechanism to keep the products pegged to the underlying index values. Traders will be able to buy or sell the product, allowing for long or short exposure to implied volatility levels, opening up a new realm of trading possibility and yield generation strategies. For v0 of the protocol and the perpetual contract, calculation is made simple by the fact that we can pull a perpetual implied volatility level from other ”option-like” perpetual contracts, such as Opyn’s Squeeth where IV is the square root of 365*Daily Funding Rate, which will be used for the EVIX index value. In the future, the underlying EVIX index will be calculated in a manner similar to the VIX index in traditional equity markets, taking a weighted average of values across listed options to find a 30 day implied volatility level. Users are also able to provide liquidity in the EVIX pool, "borrowing" EVIX positions from the protocol and earning fees on volume that is traded. In the future, we plan to expand to different underliers, allow for different collateral deposits, and explore retail-focused vault strategies. Currently the demo site is pointing to a localhost Hardhat network; however, there is a draft whitepaper if interested in more detail on the future of the protocol located under FAQ -> whitepaper

EVIX showcase

How it's made

There are three key features & contracts involved in the protocol. First is the Oracle, this contract maintains the current EVIX Index level and allows for updating that level via triggering a call to the Squeeth contract, pulling current Squeeth funding levels, and backing out the implied volatility level. It also allows for manual updating of the index level in case of emergency or bad data from the Squeeth contract. In the future, this is where we will implement our secondary EVIX calculation, likely pulling a combination of on chain option prices (ie. Hegic, Opyn), and using a third party Oracle such as Chainlink to pull pricing from CEXs such as Deribit. The second piece is the virtual AMM pool used for pricing and trading of the EVIX perpetual swap. In the future, I plan to use a Uniswap Pool; however, for this V0 I implemented a basic constant product market maker I built myself. The AMM Pool handles the buy/sell operations of EVIX, keeps track of the current amount of assets that are in the pool (USDC on one side, EVIX on the other), the current price of the pool, and current LP positions that users have created and associated accrued trading fees. The third and final piece on the contract side is the MarginPool contract, where all interactions with the protocol are done. The contract manages deposited user collateral, any open trade or LP positions the user has put on, current margin levels and liquidation process, and settlement of funding based on the current pool and index levels. The contracts were all built in Solidity, making use of OZ's ERC20 library as well as the ABDKMath64x64 library, and otherwise all built for this project. The front end was built using Hardhat's Typescript & React template and the ethers.js library to interact with the contracts.