Yield tokens

Speculate on future variable-rate yields and strengthen the solvency of 88mph protocol.

Overview

Yield tokens or YTs are fungible ERC-20/ERC-1155 tokens that allow speculators to profit from the rise in the yield rate of variable-rate yield protocols (such as Compound, Aave, and Yearn) or hedge part of their borrowing costs of a loan (e.g. Dai borrower on Compound would purchase cDAI YTs on 88mph).

YTs can be purchased by users when a fixed yield rate deposit is made on 88mph, and each YT is tied to a deposit. YTs give holders the right to earn all the future variable-rate yields generated by the corresponding deposit + the purchase cost of the YTs.

YTs are more than an instrument for speculating on yields. When someone buys YTs, the insolvency risk of the fixed yield rate depositors is decreased, via decreasing the amount of promised fixed-rate yield that is not backed by real assets.

For instance, let's imagine that the 30-day EMA for the DAI-Compound fixed APR asset is at 10%. So, for a 12-month 100 DAI deposit, the fixed APR offered would be 2.5% (25% of the 30-day EMA) before fees. Cf Fixed interest rate model section.

The corresponding 102.5 YTs would cost 2.5 DAI to purchase (learn more about YT token pricing below). The YTs entitle the holders to the variable-rate yield earned by the 100 DAI principal + 2.5 DAI over the deposit's term. If the average Compound variable APY stays at 10% over the deposit duration, then the YT delivers 10.25 DAI to its holders.

Suppose you bought all 102.5 YTs. Your final balance will be 10.25 DAI. Thus, you earn a 7.75 DAI profit on your investment of 2.5 DAI, a 310.00% return on investment.

Yield token pricing

Given a deposit with term length tt, deposit amount dd, and fixed yield rate yy, the yield tokens of this deposit are offered at a cost of dtyd⋅t⋅y which is the fixed yield amount offered to the user. This equality is expected, since the point of selling yield tokens is to generate enough funds to pay out the promised fixed yield.

The buyer of the yield tokens would be earning the floating rate yield generated by the deposit amount dd for the term length tt, so the price for the yield generated by 1 money unit ×1 time unit1 \text{ money unit } \times 1 \text{ time unit} is dtydt=y\frac{d \cdot t \cdot y}{d \cdot t} = y (whose unit is time unit1 \text{time unit}^{-1}). This price remains fixed even as time passes, though the actual implementation is more capital efficient as it deducts the floating rate yield generated so far from the cost of the yield tokens.

This means that whenever a user makes a deposit, 88mph is essentially creating a sell order for the tokenized yield at a fixed price, which is equal to the fixed yield rate yy offered by the oracle. Suppose that there exists a market price for future yield yy'. If yy y' \gg y , then the sell order will be completely filled, ensuring 88mph’s ability to give the user the promised fixed yield upon maturity date. If yyy' \ll y, then the sell order will not be filled at all, meaning 88mph will be offering a kind of “naked” fixed yield on this deposit, which can only be realized by increased floating rate yield offered by the underlying yield protocol. From this, we can see that it’s better for 88mph to err on the side of security and offer a lower fixed yield rate than the expected market price for future yield, which is what 88mph currently does.

Yield payment

The yield payment to yield token holders is automatically triggered whenever part or all of the corresponding deposit is withdrawn, and it is also possible to manually trigger it by calling the contract functionDInterest.payInterestToFunders().

Yield token holder refund

When the underlying deposit of a set of yield tokens is withdrawn before maturity, the token holders will receive a refund, the amount of which is the minimum of an estimated lost yield calculated using the average floating yield rate and the fixed-rate yield offered on the withdrawn funds. If the deposit is withdrawn completely, the yield token holders will no longer receive interest payments, and a new yield token contract will be created when the user tops up the deposit in the future. The possibility of early withdrawal makes the return on yield tokens less certain, making it more difficult to price them.

Why ERC-20/ERC-1155?

As 88mph has multiple YTs tied to a single pool, ERC-1155 standard allows the protocol to easily map to a single 1155 contract with multiple token IDs each representing a YT.

YTs are also an ERC-20 because when a YT is minted for the first time, 88mph deploys a wrapper contract allowing users to interact with the YT through the ERC-20 interface, which makes it easy to trade it on DEXes, etc; since no major DEX supports trading 1155 tokens.