uLABS: Range Tokens in Detail

How To Build A Range Token

Kevin Chan
UMA Project
8 min readJun 21, 2021

--

In our previous article we introduced range tokens as a new treasury primitive for DAOs to access funds and diversify their treasury. In this article we provide a more technical explanation detailing the payout function and walk through how a range token is constructed and valued.

Review From First Article
The range token allows a DAO to use its native token as collateral to borrow funds. At maturity, if the debt is not paid, the range token holder is instead compensated with an equivalent amount of the collateral (the native token) using the settlement price of the native token to determine the number of tokens. This is similar to a yield dollar or a CDP (collateralized debt position); however, there are a couple of added features. A range token seller (the DAO in this case) cannot be liquidated and therefore, the number of tokens given to the range token holder is capped. The range token holder is effectively short a put and will have exposure to the downside of the native token below a certain price. To compensate the range token holder for taking on this “default” risk, the holder is rewarded a call option on the native token. A minimum number of native tokens is given to the range token holder no matter how much the native token rallies. The combination of the structure creates a tradeoff between the seller and the buyer.

Range Token = Yield Dollar — Put Option + Call option

Using the above generalized formula we can start to construct the payout function of a range token. We will start by looking at the payout of a Yield Dollar and add on the two options. We will use the Uniswap treasury example from the first article to put actual numbers in the equations to better illustrate the formulas as well.

Yield Dollar

We first show how a DAO can borrow USDC using a yield dollar with its native token as collateral. The payout function for a yield dollar both in terms of number of tokens (T) awarded to the holder at expiry and in USDC value (V) is shown below.

The below chart is an example of a $UNI yield dollar on a 100 USDC notional (N) loan. Notice that the value (V) at expiry is always 100 USDC by definition. Also notice the number of tokens (T) approaches infinity as the price of the token approaches 0.

Yield Dollar — Put Option

The yield dollar payout above highlights an undesirable scenario for the DAO where the token price drops significantly and the amount of tokens awarded to the yield dollar holder rises exponentially. This scenario can be avoided by capping the number of tokens the DAO is willing to reward the yield dollar holder. This also results in a floor price of the token where the yield dollar holder will be guaranteed the notional is returned. Effectively the yield dollar holder sells a put option to the DAO

We rewrite the payout for this new Yield Dollar — Put Option structure below which defines how many tokens (T) the holder would receive at settlement.

The below chart is an example of a $UNI yield dollar less a put option on a 100 USDC notional (N) loan and a low price range (R1) of 12.5 USDC on the price of $UNI. This Yield Dollar — Put Option holder is guaranteed a number of $UNI tokens at settlement that would return the notional of 100 USDC only to a floor price of 12.5 USDC on $UNI. Below 12.5 USDC, the Yield Dollar — Put Option holder is exposed to the price of $UNI. With this example, the formula is rewritten to be

This implies that the highest number of tokens a yield dollar — put option holder can receive is 8 UMA tokens. If the Uniswap treasury collateralized this structure with 8 $UNI tokens per 100 notional of debt then it would always be fully collateralized with no liquidation risk. Also, the payout chart clearly highlights the negatively convex position for the yield dollar — put option holder.

Range token = Yield Dollar — Put Option + Call Option

The yield dollar — put option structure above provides a valuable option to DAO treasury; however, if these lenders are reluctant to take on that risk it could be costly to the DAO as these lenders would demand very high yields to sell that put option. One way the DAO can incentivize these lenders is by rewarding a call option to allow them to participate in a significant rally. This creates the range token structure. Range token holders are returned a number of tokens equivalent to the notional debt in USDC for a specific price range; however, they participate on the downside below this range and on the upside above this range.

The payout below defines how many tokens (T) the range token would receive at settlement.

The below chart and table is an example of a $UNI range token with each token having 100 USDC notional (N) and a low price range of 12.5 USDC (R1) and a high price range of 40 USDC (R2) on the price of $UNI. With this example, the formula is rewritten to be

The example implies the range token holder will receive 100 USDC worth of $UNI tokens between a price of 12.5 to 40 USDC on $UNI. Below 12.5 USDC, the range token holder is long 8 $UNI tokens and above 40 USDC, the range token holder is long 2.5 $UNI tokens (or 100 USDC worth of $UNI tokens struck at a price of 40 USDC). Similar to the yield dollar — put option structure, Uniswap treasury needs to be collateralized with 8 $UNI tokens and does not worry about liquidations. Also, on a rally over 40 USDC, Uniswap treasury will always pay out 2.5 $UNI tokens which is the minimum.

How To Price The Range Token

The range token risk profile is very similar to a risk reversal in traditional finance. The typical risk reversal involves buying a put option and selling a call option to protect your long underlying position. This is effectively what the seller of the range token has done and the range token holder is actually holding the opposite position. With a liquid options market or with some assumptions made on the implied volatility of the underlying native token, one can attempt to price the range token with a Black-Scholes model. In the Uniswap example above, the range token can be broken down as selling 8 $UNI put options at a strike price of 12.5 USDC and buying 2.5 $UNI call options at a strike price of 40 USDC. Determining the fair implied volatility of these options is challenging given there are few if any liquid markets on DeFi tokens. One can use the implied volatility of ETH as a base and guide to help. Ultimately, the supply and demand drives the price of these options and consequently the price of a range token. With the expected price of the options we can again use the formula below to derive a price for the range token.

Range Token = Yield Dollar — Put Option + Call option

Below is an example of what the pricing would look like for the hypothetical $UNI range token if it expired in about 3 months and the current price of $UNI is 25 USDC. We use the implied volatility for similar ETH/USD options quoted on Deribit and make a “finger in the air” assumption that $UNI would be 1.5x higher. We use the current borrow rate for USDC on Aave to determine the discount for the Yield Dollar. With these assumptions and the use of the Black-Scholes model we compute the price of each component. The price of the range token can vary greatly depending on the comparative strikes of the put and call options. For example, a put option closer to the market price would be more expensive and drive a bigger discount on the price of the range token. We also want to emphasize that this is a new structure and what we propose here is just one approach in determining the price of a range token. For example, this pricing discussion does not reflect any preference the market may have for a particular project token being the collateral.

How To Build The Range Token On UMA

The range token will be built using UMA’s new financial contract template called the Long Short Pair (LSP). A recent article was released providing details of how it functions. It is a simple contract that allows a minter to deposit collateral and mint a long and short token. The minter can keep the token he/she wants and sell the other one to gain the desired risk exposure. At expiry the collateral is divided between the long and short token holders through a defined payout function using UMA’s Optimistic Oracle for settlement. The range token payout function will be included in the financial product library for any developer to use. This means a range token can be immediately built now without any governance vote for any ERC-20 token that is already approved by the UMA community. All that’s needed are the parameters highlighted above for the design of the range token. It’s really that easy!

In the coming days, UMA will mint and distribute its own range token to provide a live example of how a DeFi project can utilize this new treasury primitive. The UMA team encourages any DAOs interested in range tokens to contact us as we would be more than happy to answer any questions and help customize and build a range token that meets their needs. As usual, any questions and feedback are welcome.

Please join the discussion on discord.umaproject.org.

--

--