For the past few weeks we have been testing the contracts and optimizing their gas usage. In the process of this, we noticed that by reorganizing the logic in the exercise function, we can enable flash exercises.
Vanilla options are often never exercised because it uses the option. The option had extrinsic time value, which is effectively burned when it’s used. It’s often the case options are sold to close, rather than exercised to close.
Why build in flash exercises then? There is a case where an option is exercised: when the option expires in the money. At this point in time, the option’s value is almost 100% of its intrinsic value, the difference between the execution price of buying the underlying tokens and the market value of the underlying tokens. Therefore, a flash exercise will give us the underlying token first which we can then sell and use the proceeds to pay the strike price of the option. The flash exerciser then walks away with the profit without using any capital.
Another benefit to flash exercises is that they implicitly enable flash loans to be taken out on the underlying tokens. These underlying tokens MUST remain in the option contract so option holders can exercise. Underlying tokens sit in the contract as dead assets, but flash loans enable them to be utilized. These flash loans work now because the flash exercise will check the net output of underlying tokens, and if it is zero it means the underlying tokens were returned. If the net output of underlying tokens is greater than zero, the contract will require the payment, the strike price.
This is a feature that has been added to the final design specification of the vanilla option primitive. The ability to flash exercise these options introduces new ways to manage continuous option positions. The flash exercise can be abstracted away so that a user can exercise an option and receive just the net profit. Going a step further, rolling an option position could be done using the proceeds of flash exercised options. Therefore, exiting an old position and entering a new position requires zero upfront capital, as long as the profit from the old pays for the new.
Developer Update
Primitive has been working on the final specification of the protocol. We are working towards a model of permissionless options which can be created by anyone.
The code is being prepared and scoped for an audit to be done. The audit will give us insight into the security of the protocol, but it will not be a final measure which determines a V1 release. Ultimately, the first official launch of the protocol will come when the Primitive team determines the smart contracts have been thoroughly tested and reviewed.
In the meantime, we are working on solving two problems: (1) allowing anyone to create an option on a token and (2) an option market that uses a pooled liquidity model as a medium of exchange.
The next immediate steps will be deploying the protocol to a testnet like Kovan, which will be done in June.
What options do you want to create?