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
  • Fixed rate markets
  • Flash swaps
  1. PROTOCOL

Borrowing and lending

PreviousPrice improvementNextYield protocol

Last updated 2 years ago

Fixed rate markets

Each time the protocol opens an expirable position for a user, borrowing and lending at a occur on other DeFi protocols. At a high level:

  • lending at a fixed rate is equivalent to buying a discounted zero-coupon bond

  • borrowing at a fixed rate is equivalent to selling a discounted zero-coupon bond.

The maturity of the expirable needs to match the maturity of the zero-coupon bonds.

Contango uses different protocols to borrow and lend at a fixed rate. In this section, you would find more information about our integration with:

Flash swaps

Contango uses the concept of to make the protocol capital efficient. Let's say a trader wants to buy 1 ETH with 100 DAI. Without using flash swaps the trader would need to first give DAI before receiving ETH. With flash swaps the trader could get 1 ETH first as long as the 100 DAI are given back in the same block. If that's not the case the transaction is reversed. This allows the trader, or a protocol such as Contango, to perform some actions between receiving the 1 ETH, at the start of the transaction, and giving 100 DAI at the end of the transaction.

Position opening

Let's start by taking the example in the section, where a trader buys 1 expirable at 100.59 DAI100.59 \: DAI100.59DAIwith SL=100.10 DAIS_{L}=100.10 \: DAISL​=100.10DAI. The protocol owes a debt D=50.59 DAID=50.59 \: DAID=50.59DAI. Let's say the borrowing requires a minimum collaterization ratio (CR) of 140% margin, i.e. the equivalent of 50.59∗140%=70.83 DAI50.59*140\%=70.83 \:DAI50.59∗140%=70.83DAI. The trader has only posted 50 DAI50 \: DAI50DAIas margin, i.e. CRborrow=50/50.59=98.83%CR_{borrow}={50}/{50.59}=98.83 \% CRborrow​=50/50.59=98.83%, there is clearly not enough money to do the borrowing with over-collaterisation.

Using flash swaps on the spot market, e.g. on Uniswap, the protocol is now able to meet the collaterisation ratio requirement by:

  1. first getting the ETHETHETH to be lent

  2. lending ETHETHETH by buying its zero-coupon version zcETHzcETHzcETH, worth 0.9929∗99.90=99.19 DAI0.9929 *99.90 = 99.19 \:DAI0.9929∗99.90=99.19DAI

  3. using this zero-coupon as margin to borrow the required fund. The collaterisation ratio for borrowing would be CRborrow=99.19/50.59=196.07%CR_{borrow}={99.19}/{50.59}=196.07 \% CRborrow​=99.19/50.59=196.07% which is above the required 140%.

  4. Swap the borrowed zcDAIzcDAIzcDAI for DAIDAIDAI.

  5. use the borrowed DAIDAIDAI plus margin to pay for the initial 0.9929 ETH0.9929 \: ETH0.9929ETH.

Position closing

  1. 0.9924 ETH0.9924 \:ETH0.9924ETH is repaid back from lending and swapped for 99.14 DAI99.14 \:DAI99.14DAI.

  2. DAIDAIDAI is exchanged for its zero-coupon bond version, zcDAIzcDAIzcDAI.

  3. zcDAIzcDAIzcDAI is then used to reimburse the debt and retrieve zcETHzcETHzcETH which is worth 49.41 DAI49.41 \:DAI49.41DAI.

  4. The margin is swapped for ETHETHETH.

  5. ETHETHETH is given back to close the flashswap.

Contango closes a position by reverting the above steps. In the long example in the section, the protocol follows these steps:​

🔁
position closing
Yield
Notional
position opening
fixed rate
flash swaps
Flashswap steps to open a long position
Flashswap steps to close a long position