Carmine Options AMM
  • Intro
  • What we are aiming for
  • Audit
  • Carmine Academy
  • How to use the app
  • Use cases
  • Organization
    • Team
  • Mechanics - Basic Overview
    • Liquidity Pools
    • Initialization of new pairs and new options
    • Price Adjustments
    • Examples
  • Tokenomics
    • Tokenomics
    • Token Allocation
    • Distribution of Fees
    • Voting about Treasury and community projects
  • Usage
    • For Hedging
    • For Speculation
    • For Trading
    • Arbitraging the AMM
    • Future Use Cases Unlocked by the Composability of DeFi
      • Hedging Impermanent Loss
  • Mechanics - Deeper Look
    • Option Pricing Mechanics
    • Fees
    • Volatility Updates
    • Slippage
  • Tech docs
    • Mainnet addresses
    • Smart Contract Architecture
    • Deprecated Smart Contract v1 Endpoints
    • Smart Contract v2 Endpoints
Powered by GitBook
On this page
  1. Mechanics - Deeper Look

Option Pricing Mechanics

PreviousHedging Impermanent LossNextFees

Last updated 2 years ago

The option's prices are adjusted based on Black-Scholes model. The price (premium) changes because of updates of volatility. Where the volatility is market (trading) driven parameter. The price of underlying asset is taken from oracles.

User goes long (user pays following premia)
User goes short (user receives following premia)

Call option

C(St, t) + fees

C(St, t) - fees

Put option

P(St, t) + fees

P(St, t) - fees

The Black-Scholes formula and how it works is well described on which we currently use for the below description.

Call option

C(St,t)=N(d1)St−N(d2)Ke−r(T−t)C(S_t, t) = N(d_1)S_t - N(d_2)Ke^{-r(T-t)} C(St​,t)=N(d1​)St​−N(d2​)Ke−r(T−t)
d1=1σT−t[ln(StK)+(r+σ22)(T−t)]d_1 = \frac{1}{\sigma\sqrt{T-t}}[ln(\frac{S_t}{K})+(r+\frac{\sigma^2}{2})(T-t)]d1​=σT−t​1​[ln(KSt​​)+(r+2σ2​)(T−t)]
d2=d1−σT−td_2=d_1-\sigma\sqrt{T-t} d2​=d1​−σT−t​

Put option

P(St,t)=Ke−r(T−t)−St+C(St,t)P(S_t, t) = Ke^{-r(T-t)}-S_t+C(S_t, t) P(St​,t)=Ke−r(T−t)−St​+C(St​,t)
=N(−d2)Ke−r(T−t)−N(−d1)St=N(-d_2)Ke^{-r(T-t)}-N(-d_1)S_t =N(−d2​)Ke−r(T−t)−N(−d1​)St​

Where

  • N - Standard normal cumulative distribution function

  • N' - Standard normal distribution function

  • S_t - Price of the underlying asset at a time t

  • K - Strike price

  • r - Annualized risk free rate

  • T - Time of option expiration

  • t - Current time

  • 𝝈 - is an AVERAGE BETWEEN NEW AND AFTER THE TRADE VOLATILITIES

The sigma below is defined in a way that arbitrageurs can arbitrage upto the point of the true volatility. Alternative is to use the “after the trade” volatility, which would motivate arbitrageurs and traders to split their trades into small ones and not converge to the true volatility.

Volatility updates

VOLATILITY (SIGMA) OF PUT AND CALL OPTIONS WILL BE CALCULATED SEPARATELY! SAME GOES FOR DIFFERENT MATURITIES!

σ=σt−1+σt2\sigma = \frac{\sigma_{t-1}+\sigma_t}{2}σ=2σt−1​+σt​​
σt=f(σt−1,PSt,Qt)=σt−1+QtC\sigma_t = f(\sigma_{t-1}, PS_t, Q_t) = \sigma_{t-1} + \frac{Q_{t}}{C}σt​=f(σt−1​,PSt​,Qt​)=σt−1​+CQt​​

Where

  • C is a constant determining the speed at which the volatility changes

  • Q_t is size of trade at time t (denominated in the same currency as C)

    • Q_t is positive for long trade and negative for short trade

Alternatives (but problamatic) to this approach are:

  • Have a volatility oracle and price how far the market volatility is from the oracle as premia.finance is doing

  • Update volatility based on how much risk the liquidity pool is taking on

In an ideal world we would have an AMM where:

  • Splitting a trade between results in the same overall price

  • Splitting a trade results in the same final volatility parameter

wikipedia