Contango v1
  • Basics
    • 💃What is Contango?
    • 🤔What are expirables?
    • 📅Why expirables?
    • 💰Use cases
  • PROTOCOL
    • 🤯Theoretical pricing
    • ⚙️How it works
    • 🤓Protocol pricing
      • Position opening
      • Position closing
      • Price improvement
    • 🔁Borrowing and lending
      • Yield protocol
      • Notional
    • 🎛️Equity management
    • 📋Types of contracts
    • 🤝Delivery
    • 🪙Tokenomics
    • ⚠️Risks
    • 📖Tutorials
  • Resources
    • 👌Official links
    • 📑Contracts
    • 👨‍🏫Educational links
    • 📖Glossary
Powered by GitBook
On this page
  • Theory
  • Example
  • Derived formula
  • Example
  • Price equilibrium
  • Forward price above
  • Forward price under
  1. PROTOCOL

Theoretical pricing

PreviousUse casesNextHow it works

Last updated 2 years ago

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 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}rQ​ , the base currency at the yearly rate rBr_{B}rB​ and given a spot price SSS then the theoretical price PthP_{th}Pth​ to buy or sell 1 forward expiring in a time TTT is given by:

Pth=S∗(1+rQ1+rB)TP_{th}=S*{ \bigg( \dfrac{1+r_{Q}}{1+r_{B}} \bigg) }^TPth​=S∗(1+rB​1+rQ​​)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.25T=0.25) where the spot price is S=100 DAIS=100 \: DAIS=100DAI. Given the yearly fixed interest rate on the quote currency DAIDAIDAI is rQ=10%r_{Q}=10\%rQ​=10% and on the base currency ETHETHETH is rQ=3%r_{Q}=3\%rQ​=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\: DAIPth​=100∗(1+0.031+0.1​)0.25=101.66DAI

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}rQ,b​, e.g. borrow DAIDAIDAI

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

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

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

  • the base currency is bought at the spot price SLS_{L}SL​ , e.g. buy ETHETHETH by selling DAIDAIDAI

  • the base currency is sold at the spot price SSS_{S}SS​, e.g. sell ETHETHETH to buy DAIDAIDAI.

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

Theoretical short price
Theoretical long price

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.25T=0.25) :

  • Given one could borrow DAI at a yearly fixed rate of rQ,b=10.10%r_{Q,b}=10.10\%rQ,b​=10.10%​, lend ETH at a yearly fixed rate rB,l=2.90%r_{B,l}=2.90\%rB,l​=2.90%and buy ETH on the spot market at SL=100.10S_{L}=100.10SL​=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 \: DAIPth,L​=100.10∗(1+0.02901+0.1010​)0.25=101.81DAI

  • Given one could borrow ETH at a yearly fixed rate of rB,b=3.10%r_{B,b}=3.10\%rB,b​=3.10%​, lend DAI at a yearly fixed rate of rQ,l=9.90%r_{Q,l}=9.90\%rQ,l​=9.90% and sell ETH on the spot market at SS=99.90S_{S}=99.90SS​=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\: DAIPth,S​=99.90∗(1+0.03101+0.0990​)0.25=101.51DAI

Price equilibrium

Forward price above Pth,SP_{th,S}Pth,S​

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

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

  • Convert now those 10000 DAI10000\: DAI10000DAI to 10000/100.10=99.90 ETH10000 /100.10=99.90\: ETH10000/100.10=99.90ETH.

  • Invest now the 99.90 ETH99.90\: ETH99.90ETH to receive 99.90∗(1.029)0.25=100.62 ETH99.90*{(1.029)}^{0.25}=100.62 \: ETH99.90∗(1.029)0.25=100.62ETH​ in 3 months.

  • Sell now a forward contract for a quantity of 100.62 ETH100.62 \: ETH100.62ETH for a price of100.62∗110=11067.83 DAI100.62*110=11067.83 \: DAI100.62∗110=11067.83DAI.​

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

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}Pth,L​

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

  • Borrow now 100 ETH100 \:ETH100ETH. In 3 months 100∗(1.029)0.25=100.77 ETH100*{(1.029)}^{0.25}=100.77 \: ETH100∗(1.029)0.25=100.77ETH​ need to be given back.

  • Convert now those 100 ETH100\: ETH100ETH to 100∗99.9=9990 DAI100*99.9=9990 \: DAI100∗99.9=9990DAI.

  • Invest now those DAIs to receive 100000∗(1.099)0.25=10228.57 DAI100000*{(1.099)}^{0.25}=10228.57\: DAI100000∗(1.099)0.25=10228.57DAI in 3 months.​

  • Buy now a forward contract for a quantity of 100.77 ETH100.77 \: ETH100.77ETH for a price of 100.77∗90=9975.85 DAI100.77*90=9975.85 \:DAI100.77∗90=9975.85DAI.

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

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

​

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 above are kept, the two arbitrages to bring the price at equilibrium are presented.

🤯
Pth,S=SS∗(1+rQ,l1+rB,b)TP_{th,S}=S_{S}*{ \bigg( \dfrac{1+r_{Q,l}}{1+r_{B,b}} \bigg) }^TPth,S​=SS​∗(1+rB,b​1+rQ,l​​)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) }^TPth,L​=SL​∗(1+rB,l​1+rQ,b​​)T
protocol pricing
example