uLABS: Building Call Options on UMA (Part 1)

UMA can be used to build call options on any ERC20 token.

In recent weeks UMA introduced the idea of KPI options and uLABS discussed the construction of structured notes on the UMA protocol. In this article we step back and take a deeper look at a building block of derivatives — the call option. The options markets for Bitcoin and Ethereum on centralized crypto exchanges such as Deribit have grown immensely over the last couple of years. However, there are few viable alternatives for these options on DeFi and liquidity remains extremely thin in comparison. We will show how a call option on almost any asset can be built on UMA and explore different ways for crypto investors and DeFi projects to use them.

A call option gives the buyer the right, but not the obligation to buy an asset at a specified price (strike) and a specific time period (expiry). Deribit provides a detailed explanation and information on their docs site. We will use these specifications and examples to explain how a call option on ETH works on a centralized exchange and later show how we can build similar call options in a decentralized way on UMA.


  • European style options — the call options can only be exercised at expiry — in other words the owner of the call option can exercise his right to buy ETH at expiry and not before
  • Cash settlement — at expiry, the writer of the options contract will pay any profit due to the holder, rather than transfer ETH
  • The options are priced in ETH.
  • A call option is the right to buy 1 ETH at a specific price (the strike price)

Example of ETH Call Option when Market Rallies

  • A trader buys a call option with a strike price of 2,000 USD for 0.05 ETH. Now he has the right to buy 1 ETH for 2,000 USD.
  • At the expiry, ETH/USD is at 2,500 USD, and the delivery price is 2,500 USD.
  • In this case, the option is settled for 500 USD per 1 ETH. At the expiry, the trader’s account is credited with 0.2 ETH (500/2,500), and the seller’s account is debited with 0.2 ETH. The initial purchase price was 0.05 ETH; therefore, the trader’s profit is 0.15 ETH.
  • Any call option with an exercise price (strike price) above 2,500 USD will expire worthless.

Example of ETH Call Option when Market Does Not Rally

  • A trader sells a call option with a strike price of 2,000 USD for 0.05 ETH.
  • The delivery price at the expiry is 1,999 USD.
  • The call option expires worthless. The buyer lost 0.05 ETH, and the seller gained 0.05 ETH.

Building a Decentralized Call Option on UMA

Now let’s replicate the call option above using UMA’s expiring synthetic token contract (EMP). We will use the same specifications as Deribit — European style, cash settlement, priced in ETH, and 1 token is the right to buy 1 ETH. We will call this token ETHc2000 which represents a 2000 strike call on ETH.

  • Token sponsor deposits 1 ETH* as collateral and mints 1 ETHc2000 (call option token) *In practice we actually use WETH (Wrapped ETH).
  • Token holder pays 0.05 ETH for the token

At expiry the token contract calls UMA’s oracle for a final settlement price of ETH/USD and the token sponsor transfers the following payout to the token holder:

*Note the payout will always be 0 or greater.

This will create the same results as the centralized options on Deribit described above.

  • If ETH/USD settles at 2,500 USD, the token sponsor transfers 0.2 ETH [(2500–2000) / 2500)] to the token holder. The token holder therefore has a profit of 0.15 ETH (0.2–0.05)
  • As a technicality, what actually happens is the 1 ETH of collateral gets divided so that the token sponsor has 0.8 ETH and the token holder has 0.2 ETH. The token sponsor and token holder would redeem their position at expiry to retrieve the collateral.
  • If ETH/USD settles at 1,999 USD, nothing transfers. (1,999–2000) / 1,999 is negative; therefore, the payout function returns 0 instead.

Things to note:

  • From a contract design and position management perspective this is very clean. The 1 ETH covers all payout scenarios. Unlike for other products on UMA, token sponsors do not need to manage collateral ratios. All you need is the 1 ETH to mint and there is only one price request needed at expiry to settle the token. UMA’s oracle works beautifully for an application like this where a precise price right at the moment of expiry is given and can be disputed and resolved by UMA token holders if needed.
  • This is not as capital efficient for the token sponsor as it would be for an option writer on a centralized exchange. In our decentralized call option design we require the token sponsor to deposit 1 ETH to mint 1 call option token. However, in the centralized exchanges you would only need to deposit a fraction of an ETH in your margin account to back your short call position. The decentralized design could be optimized in the future where we aim to replicate this margining, but it would require maintenance and liquidation bots. At the end of the day there is a tradeoff between having less capital efficiency in order to be decentralized and not having to worry about counterparty risk.
  • The token sponsor position is similar to a covered call — which is effectively a long ETH position and a short call position combined together. However, at expiry the call option is cash settled which means the token sponsor does not actually sell his entire ETH position. If he would like to replicate a covered call in this scenario he could sell the remaining ETH collateral he has at the exact price at the time of expiry.

Use Cases For Call Option Tokens

Leveraged Speculation — The simplest use for a long call position is the ability to speculate on the appreciation of an asset with leverage while also limiting your downside. To obtain the right to be long 1 ETH at a price of 2000 in our example above, the token holder only needs to pay 5% of an ETH. However, the flip side to that is the value of the option will depreciate or decay very quickly to zero if it does not trade above the strike price.

Income or Yield Enhancement — Token sponsors or writers of call options can earn income by collecting the premiums through the sale of their options. In our example above, if the token sponsor believes ETH will not rally above the strike or more specifically if he believes buyers are paying too much for the value of this option then it would make sense for him to sell it. Most options participants would look at an implied volatility of an option as a gauge to compare how “rich” or “cheap” an option is. A simple strategy an option seller may have is a covered call where a person who is long ETH, and looking to sell at 2000 in the above example, could sell the call option and collect the premium. If the market does rally — he would have effectively sold at 2100 (2000 + 0.05*2000), after accounting for the premium he had collected. If the market does not rally and the call option expires worthless, he would have simply earned extra income.

Strategic DeFi Project Uses — Many DeFi projects have distributed their governance tokens either via air drops or through liquidity mining or developer mining programs. The one downside is many recipients of the tokens may not be long term community members and instead are just looking to sell (or dump) the tokens which cause a depression in the token price. Distributing a mix of governance tokens and call options tokens instead could help prevent that immediate selling and also incentivize holders of the options to become a member of the community and help support the project. There are other benefits of a call option as well that we will discuss in our follow up article.

Distribution and Liquidity Providing Challenges

Building a liquid market for decentralized options has many challenges. A recent article written by FinNexus provides a great summary of some obstacles and highlights some of the approaches that other DeFi projects have taken to try and tackle this problem. Synthetic assets built on UMA have all been traded on AMMs (Automated Market Maker). AMMs are one of the greatest innovations in DeFi; however, in its currently used form they have limitations. Specifically to expiring options, one of the biggest issues is impermanent loss especially when an option decays to zero into an expiry. For example, in our ETH call option token example, we could provide liquidity by putting this call option and some ETH in a standard 50/50 weighted AMM liquidity pool. However, if the option were to become worthless, then the entire pool should become worthless and arbitrageurs would take all the ETH paired with the option. Net result, the liquidity provider would suffer a substantial impermanent loss.

The DeFi community is still working on a solution to this problem. Some projects building options have completely moved away from using an AMM and instead are working with limit order books, which can be costly in a high gas environment, or with pooled liquidity for option writers, which require clever risk management and incentive tools, but could expose the entire system to tail risks. If we stick to the idea of using an AMM there are some possible solutions. For example, one could tinker with the construction of the bonding curve so that it limits liquidity providing to a certain range in order to contain the amount of impermanent loss a liquidity provider takes. As shown below in the impermanent loss graph, if we can cut off the scenario where the price of an asset approaches zero we can mitigate a significant portion of the impermanent loss.


Without modifying the bonding curve, one could consider a few quick and dirty workarounds. If the value of the option is out of the money ahead of expiry, liquidity providers could manually exit the liquidity pool some time before expiry which would avoid the significant impermanent loss as the option decays to zero. Another approach to consider is forcing the option to always settle with some positive value. This could be accomplished by essentially attaching a small piece of the underlying asset to the option so there is always some residual value. One can do this by creating a portfolio using the TokenSet protocol. Liquidity providers can use this portfolio as an asset in an AMM to mitigate impermanent loss, and token option buyers and sellers can unwrap this portfolio to take out the actual option. Alternatively one can accomplish this by modifying the payout function of the token option so that the token holder always receives some amount of the underlying asset at expiry. The token sponsors can increase the amount of collateral it initially deposits to account for this. Again this would always result in a positive value for the token option at expiry and would avoid the significant impermanent loss scenario of approaching zero.


Building options on the UMA infrastructure is relatively simple and token builders can easily custom tailor an option for any asset with any strike and expiry. There are still challenges in terms of how to provide liquidity for these decentralized options, but possible solutions and workarounds already exist. We would love to hear what the community thinks about this and what ideas they have on solving some of the issues and inefficiencies. There are many advantages for DeFi projects to create their own call option tokens and use them as a clever way to distribute governance tokens to their community. In our follow up article we plan to put this design to use and launch our own call options for the DeFi community to trade.

uLABS: Building Call Options on UMA (Part 1) was originally published in UMA Project on Medium, where people are continuing the conversation by highlighting and responding to this story.

Publication date: 
03/04/2021 - 13:11

The views and opinions expressed in this article are solely those of the authors and do not reflect the views of Bitcoin Insider. Every investment and trading move involves risk - this is especially true for cryptocurrencies given their volatility. We strongly advise our readers to conduct their own research when making a decision.