šŸ¤ÆTheoretical pricing

The formulas presented below are theoretical and used for forward pricing. Contango protocol uses similar but different formulas by taking advantage of the trader's margin to make expirables in DeFi capital-efficient (see the protocol pricing section).

Theory

In TradFi, forwards on currencies are priced using the well-known interest rate parity relationship. Given the quote currency can be borrowed or lent at the yearly fixed rate rQr_{Q} , the base currency at the yearly rate rBr_{B} and given a spot price SS then the theoretical price PthP_{th} to buy or sell 1 forward expiring in a time TT is given by:

Pth=Sāˆ—(1+rQ1+rB)TP_{th}=S*{ \bigg( \dfrac{1+r_{Q}}{1+r_{B}} \bigg) }^T

The pricing formula above is adapted from from "Options, futures and other derivatives", 6th edition, John C. Hull, Chapter 5 on futures pricing.

Example

Let's consider a contract on ETHDAI expiring in 3 months (T=0.25T=0.25) where the spot price is S=100ā€…DAIS=100 \: DAI. Given the yearly fixed interest rate on the quote currency DAIDAI is rQ=10%r_{Q}=10\% and on the base currency ETHETH is rQ=3%r_{Q}=3\% then the theoretical price to buy or sell 1 forwards would be:

Pth=100āˆ—(1+0.11+0.03)0.25=101.66ā€…DAIP_{th}=100*{ \bigg( \dfrac{1+0.1}{1+0.03} \bigg) }^{0.25}=101.66\: DAI

Derived formula

In the section, a more realistic formula is derived. Taking the example of the currency pair ETHDAI, it is supposed that:

  • the quote currency is borrowed at the yearly fixed rate rQ,br_{Q,b}, e.g. borrow DAIDAI

  • the quote currency is lent at the yearly fixed rate rQ,lr_{Q,l}, e.g. lend DAIDAI

  • the base currency is borrowed at the yearly fixed rate rB,br_{B,b} , e.g. borrow ETHETH

  • the base currency is lent at the yearly fixed rate rB,lr_{B,l} , e.g. lend ETHETH

  • the base currency is bought at the spot price SLS_{L} , e.g. buy ETHETH by selling DAIDAI

  • the base currency is sold at the spot price SSS_{S}, e.g. sell ETHETH to buy DAIDAI.

The table below provides the theoretical prices at which a trader can go long or short a forward:

Theoretical short priceTheoretical long price

Pth,S=SSāˆ—(1+rQ,l1+rB,b)TP_{th,S}=S_{S}*{ \bigg( \dfrac{1+r_{Q,l}}{1+r_{B,b}} \bigg) }^T

Pth,L=SLāˆ—(1+rQ,b1+rB,l)TP_{th,L}=S_{L}*{ \bigg( \dfrac{1+r_{Q,b}}{1+r_{B,l}} \bigg) }^Tā€‹

It could be noticed that, the tighter the spread between the borrowing and lending rates and the tighter the spread on the spot price then the tighter the spread between the forward prices to go long and short.

Example

Let's consider a contract on ETHDAI expiring in 3 months (T=0.25T=0.25) :

  • Given one could borrow DAI at a yearly fixed rate of rQ,b=10.10%r_{Q,b}=10.10\%ā€‹, lend ETH at a yearly fixed rate rB,l=2.90%r_{B,l}=2.90\%and buy ETH on the spot market at SL=100.10S_{L}=100.10, the price to go long on 1 forward would be:

Pth,L=100.10āˆ—(1+0.10101+0.0290)0.25=101.81ā€…DAIP_{th,L}=100.10*{ \bigg( \dfrac{1+0.1010}{1+0.0290} \bigg) }^{0.25}=101.81 \: DAI

  • Given one could borrow ETH at a yearly fixed rate of rB,b=3.10%r_{B,b}=3.10\%ā€‹, lend DAI at a yearly fixed rate of rQ,l=9.90%r_{Q,l}=9.90\% and sell ETH on the spot market at SS=99.90S_{S}=99.90, the price to go short would be:

Pth,S=99.90āˆ—(1+0.09901+0.0310)0.25=101.51ā€…DAIP_{th,S}=99.90*{ \bigg( \dfrac{1+0.0990}{1+0.0310} \bigg) }^{0.25}=101.51\: DAI

Price equilibrium

If the price of a forward is above or under the theoretical formula then an arbitrage condition arises. Since market participants can take advantage of this "free lunch", by using significant amounts of money, prices are brought back to their theoretical formulas. In the examples below, where the same numerical assumptions as in the example above are kept, the two arbitrages to bring the price at equilibrium are presented.

Forward price above Pth,SP_{th,S}

Let's say the price to sell 1 forward is 110.00ā€…DAI110.00 \: DAI instead of Pth,S=101.51ā€…DAIP_{th,S}=101.51 \: DAI. An arbitrageur could:

  • Borrow now 10000.00ā€…DAI10000.00 \: DAI. In 3 months 10000āˆ—(1.11)0.25=10243.46ā€…DAI10000*{(1.11)}^{0.25}=10243.46 \: DAI need to be given back.

  • Convert now those 10000ā€…DAI10000\: DAI to 10000/100.10=99.90ā€…ETH10000 /100.10=99.90\: ETH.

  • Invest now the 99.90ā€…ETH99.90\: ETH to receive 99.90āˆ—(1.029)0.25=100.62ā€…ETH99.90*{(1.029)}^{0.25}=100.62 \: ETHā€‹ in 3 months.

  • Sell now a forward contract for a quantity of 100.62ā€…ETH100.62 \: ETH for a price of100.62āˆ—110=11067.83ā€…DAI100.62*110=11067.83 \: DAI.ā€‹

  • Deliver the 100.62ā€…ETH100.62 \: ETH at expiry to get 11067.83ā€…DAI11067.83 \: DAI for a cost of 10243.46ā€…DAI10243.46 \: DAI, locking-in a risk-free profit of 824.37ā€…DAI824.37\:DAI.

This arbitrage could be done with much bigger amounts and would disappear when the forward price is brought back to its theoretical pricing.

Forward price under Pth,LP_{th,L}

Let's say the price to buy 1 forward is 90.00ā€…DAI90.00 \: DAI instead of Pth,L=101.81ā€…DAIP_{th,L}=101.81 \: DAI. An arbitrageur could:

  • Borrow now 100ā€…ETH100 \:ETH. In 3 months 100āˆ—(1.029)0.25=100.77ā€…ETH100*{(1.029)}^{0.25}=100.77 \: ETHā€‹ need to be given back.

  • Convert now those 100ā€…ETH100\: ETH to 100āˆ—99.9=9990ā€…DAI100*99.9=9990 \: DAI.

  • Invest now those DAIs to receive 100000āˆ—(1.099)0.25=10228.57ā€…DAI100000*{(1.099)}^{0.25}=10228.57\: DAI in 3 months.ā€‹

  • Buy now a forward contract for a quantity of 100.77ā€…ETH100.77 \: ETH for a price of 100.77āˆ—90=9975.85ā€…DAI100.77*90=9975.85 \:DAI.

  • At expiry, the trader would receive 10228.57ā€…DAI10228.57\: DAI from lending and use 9975.85ā€…DAI9975.85 \:DAIto buy the 100.77ā€…ETH100.77 \: ETHneeded to reimburse the debt, locking-in a risk-free profit of 252.72ā€…DAI252.72\:DAI.

This arbitrage could be done with much bigger amounts and would disappear when the forward price is brought back to its theoretical pricing.

Last updated