LogoLogo
  • Kaiko Knowledge Hub
  • General
    • 👋Introduction
    • 🏎️Getting Started
      • API input
      • API output
        • "taker_side_sell" Explained
        • Market open and close
        • Timestamp
      • Authentication
      • Data versioning
      • Envelope
      • Error codes
      • Pagination
      • Rate limiting
  • Data Feeds
    • Introduction
    • Level 1 & Level 2 Data
      • Level 1 Aggregations
        • Trade Count, OHLCV, & VWAP
          • OHLCV only
          • VWAP only
      • Level 1 Tick-Level
        • All trades
        • Derivative liquidation events
        • Borrows, repayments, liquidations, and withdrawals
      • Level 2 Aggregations
        • Market depth (snapshot)
        • Market depth (aggregation)
        • Price slippage (snapshot)
        • Price slippage (aggregation)
        • Bid-ask spread (aggregation)
        • Tokens in a liquidity pool
          • Tokens in a liquidity pool (Uniswap v3)
        • Interest rates, borrowed and deposited amounts
        • Raw order book snapshot
          • Raw order book snapshot + market depth, bid/ask spread & price slippage
      • Level 2 Tick-Level
        • Mints and burns
    • Reference Data
      • Free tier
        • Asset codes
        • Exchange codes
        • Exchange trading pair codes (instruments)
        • Lending protocol codes
        • Blockchain codes
      • Advanced tier
        • Derivatives contract details
        • Derivatives price details
      • Premium tier
        • Market capitalization and circulating supply (BETA)
  • ANALYTICS Solutions
    • Introduction
    • Kaiko Fair Market Value
      • Kaiko Fair Market Value (Direct prices for high liquidity pairs)
      • Kaiko Fair Market Value (Synthetic prices for low liquidity pairs)
        • Convert with Oanda FX Rates
    • Kaiko Derivatives Risk Indicators
      • Exchange-provided metrics
      • Token-level liquidation volumes
      • Implied volatility calculation - smile
      • Implied volatility calculation - surface
    • Kaiko Portfolio Risk & Performance
      • Value at risk calculation
      • Custom valuation
  • Monitoring Solutions
    • Kaiko Market Explorer
      • Assets
      • Exchanges
    • Kaiko Blockchain Monitoring
      • Ethereum Wallets
        • Balances and transactions
      • Bitcoin Wallets
        • Balances
        • Transaction
      • Solana Wallets
        • Balances and transactions
      • Provenance Wallets
        • Balances and transactions
  • Misc & Legacy endpoints
    • CME
Powered by GitBook
On this page
  • What is this endpoint for?
  • Endpoint
  • Path Parameters
  • Query Parameters
  • Fields
  • Request examples
  • Response examples

Was this helpful?

Export as PDF
  1. ANALYTICS Solutions
  2. Kaiko Derivatives Risk Indicators

Implied volatility calculation - smile

If you need implied volatilities for expiry dates that are not listed, you can use the "implied volatility surface" endpoint to calculate this.

What is this endpoint for?

The IV Smile endpoint lets you calculate volatility on a minute-by-minute basis from options market prices. The endpoint returns a volatility curve for a specific expiry date.

You can get volatility estimates by providing the following information:

  • Strikes

  • Forward-log-moneyness

  • Deltas

The calculation methodology leverages space interpolation.

Currently supported assets and exchanges:

  • BTC, ETH, SOL, MATIC, XRP on Deribit.

  • BTC, ETH on OKX.

  • BTC, ETH on Deribit & OKX (aggregated).

If you need data from other exchanges, we can add them on request.

Short listed-maturities (e.g. 7 days time-to-maturity) are only available for individual exchanges.

Endpoint

https://{eu/us}.market-api.kaiko.io/v2/data/analytics.v2/implied_volatility_smile

Path Parameters

Parameter
Required?
Example

region

Yes

Choose between eu and us.

Query Parameters

Parameter
Required
Description
Example

base

Yes

The desired base as the underlying of the options. See supported assets above.

btc, eth

quote

Yes

The desired quote as the underlying of the options. usd or usdc

usd

value_time

Yes

The time at which to compute implied volatilities The time t should be smaller than the expiry T

2022-09-20T16:15:00.000Z

expiry

Yes

The expiry for which the implied volatilities are to be computed Must be an existing expiry on the selected exchange and tradable at the time of the computation.

2022-12-30T08:00:00.000Z

strikes

Yes, if neither forward_log_moneynesses nor deltas parameters are used.

The strike prices for which the implied volatilities are to be computed. Strike prices can be existing or non-existing ones (space interpolation included) Either strikes or forward_log_moneynesses or deltas should be filled.

singular: 10000 plural: 10000,15000,20000

forward_log_moneynesses

Yes, if neither strikes nor deltas parameters are used.

The forward log moneyness for which the implied volatilities are to be computed. Either strikes, forward_log_moneynesses or deltas should be filled.

singular: 1 plural: -1,-0.5,0,0.5,1

deltas

Yes, if neither forward_log_moneynesses nor strikes parameters are used.

The delta levels (of a Call option) for which the implied volatilities are to be computed. Either strikes, forward_log_moneynesses or deltas should be filled.

exchanges

No

The desired exchange as source of options data. See supported exchanges above.

drbt

Fields

Field
Description
Example

value_time

The time in parameter

2022-09-20T16:15:00.000Z

expiry

The expiry in parameter

2022-12-30T00:00:00.000Z

time_to_expiry

The associated time to expiry in year

0.27580868156450355

implied_volatilities

The list of requested implied volatilities

[{"strike": 40000, "forward_log_moneyness": 0.7348555803648208, "implied_volatility": 0.7341747093260883, "delta": 0.04334612697660922, "gamma": 0.000012437991693543254}, {"strike": 20000, "forward_log_moneyness": 0.041708399804875465, "implied_volatility": 0.6670092468551713, "delta": 0.5223606946028295, "gamma": 0.00005929353471794603}, ... ]

delta

The first derivative of the price with regards to the underlying price.

2.8863019124747424e-7

gamma

The second derivative of the price with regards to the underlying price.

2.416523346501216e-10

current_spot

The underlying spot price at the value timestamp.

71717

interest_rate

The implied interest rate.

0.14954983972466698

Request examples

Use this example to calculate IV using deltas.

curl --compressed -H 'Accept: application/json' -H 'X-Api-Key: <client-api-key>' \
'https://us.market-api.kaiko.io/v2/data/analytics.v2/implied_volatility_smile?base=btc&quote=usd&value_time=2024-06-07T12:00:00.000Z&expiry=2024-06-28T00:00:00.000Z&exchanges=drbt&deltas=0.25,0.5,0.75'

Use this example to calculate IV using forward log moneyness.

https://us.market-api.kaiko.io/v2/data/analytics.v2/implied_volatility_smile?base=btc&quote=usd&exchanges=drbt,okex&value_time=2024-09-12T10:00:00.000Z&expiry=2024-09-27T08:00:00.000Z&forward_log_moneynesses=-1,-0.5,0,0.5,1

Use this example to calculate IV using strikes.

https://us.market-api.kaiko.io/v2/data/analytics.v2/implied_volatility_smile?base=btc&quote=usd&exchanges=drbt&value_time=2024-09-12T10:00:00.000Z&expiry=2024-09-27T08:00:00.000Z&strikes=30000,50000,60000,70000,90000

Use this example to calculate IV using deltas

##### 1. Import dependencies #####
import requests
import pandas as pd

##### 2. Choose the value of the query's parameters #####
# ---- Required parameters ---- #
base = "btc"
quote = "usd"
value_time = "2024-06-07T12:00:00.000Z"
expiry = "2024-06-28T00:00:00.000Z"
deltas = "0.25,0.5,0.75"

# ---- Optional parameters ---- #
exchanges = "drbt"

# ---- API key configuration ---- #
api_key = "YOUR_API_KEY"

##### 3. Get the data #####
# ---- Function to run an API call ---- # 
# Get the data in a dataframe --------- # 

def get_kaiko_data(api_key: str, base: str, quote: str, value_time: str, expiry: str, deltas: str, exchanges: str = None):
    headers = {'Accept': 'application/json', 'X-Api-Key': api_key}
    
    url = f'https://us.market-api.kaiko.io/v2/data/analytics.v2/implied_volatility_smile'
    params = {
        "base": base,
        "quote": quote,
        "value_time": value_time,
        "expiry": expiry,
        "deltas": deltas,
        "exchanges": exchanges
    }

    try:
        res = requests.get(url, headers=headers, params=params)
        res.raise_for_status() 
        data = res.json()
        if 'data' not in data:
            print("No data returned.")
            return pd.DataFrame() 
        df = pd.DataFrame(data['data'])

        # Handle pagination with continuation token
        while 'next_url' in data:
            next_url = data['next_url']
            if next_url is None:
                break
            res = requests.get(next_url, headers=headers)
            res.raise_for_status()
            data = res.json()
            if 'data' in data:
                df = pd.concat([df, pd.DataFrame(data['data'])], ignore_index=True)
        return df

    except requests.exceptions.RequestException as e:
        print(f"API request error: {e}")
        return pd.DataFrame() 

# ---- Get the data ---- #
df = get_kaiko_data(api_key=api_key, base=base, quote=quote, value_time=value_time, expiry=expiry, deltas=deltas, exchanges=exchanges)
print (df)

Use this example to calculate IV using forward log moneyness

##### 1. Import dependencies #####
import requests
import pandas as pd

##### 2. Choose the value of the query's parameters #####
# ---- Required parameters ---- #
base = "btc"
quote = "usd"
value_time = "2022-09-20T16:15:00.000Z"
expiry = "2022-12-30T08:00:00.000Z"
forward_log_moneynesses = "-1,-0.5,0,0.5,1"

# ---- Optional parameters ---- #
exchanges = "drbt"

# ---- API key configuration ---- #
api_key = "YOUR_API_KEY"

##### 3. Get the data #####
# ---- Function to run an API call ---- # 
# Get the data in a dataframe --------- # 

def get_kaiko_data(api_key: str, base: str, quote: str, value_time: str, expiry: str, forward_log_moneynesses: str, exchanges: str = None):
    headers = {'Accept': 'application/json', 'X-Api-Key': api_key}
    
    url = f'https://us.market-api.kaiko.io/v2/data/analytics.v2/implied_volatility_smile'
    params = {
        "base": base,
        "quote": quote,
        "value_time": value_time,
        "expiry": expiry,
        "forward_log_moneynesses": forward_log_moneynesses,
        "exchanges": exchanges
    }

    try:
        res = requests.get(url, headers=headers, params=params)
        res.raise_for_status() 
        data = res.json()
        if 'data' not in data:
            print("No data returned.")
            return pd.DataFrame() 
        df = pd.DataFrame(data['data'])

        # Handle pagination with continuation token
        while 'next_url' in data:
            next_url = data['next_url']
            if next_url is None:
                break
            res = requests.get(next_url, headers=headers)
            res.raise_for_status()
            data = res.json()
            if 'data' in data:
                df = pd.concat([df, pd.DataFrame(data['data'])], ignore_index=True)
        return df

    except requests.exceptions.RequestException as e:
        print(f"API request error: {e}")
        return pd.DataFrame() 

# ---- Get the data ---- #
df = get_kaiko_data(api_key=api_key, base=base, quote=quote, value_time=value_time, expiry=expiry, forward_log_moneynesses=forward_log_moneynesses, exchanges=exchanges)
print (df)

Use this example to calculate IV using forward log moneyness

##### 1. Import dependencies #####
import requests
import pandas as pd

##### 2. Choose the value of the query's parameters #####
# ---- Required parameters ---- #
base = "btc"
quote = "usd"
value_time = "2022-09-20T16:15:00.000Z"
expiry = "2022-12-30T08:00:00.000Z"
strikes = "10000,15000,20000"

# ---- Optional parameters ---- #
exchanges = "drbt"

# ---- API key configuration ---- #
api_key = "YOUR_API_KEY"

##### 3. Get the data #####
# ---- Function to run an API call ---- # 
# Get the data in a dataframe --------- # 

def get_kaiko_data(api_key: str, base: str, quote: str, value_time: str, expiry: str, strikes: str, exchanges: str = None):
    headers = {'Accept': 'application/json', 'X-Api-Key': api_key}
    
    url = f'https://us.market-api.kaiko.io/v2/data/analytics.v2/implied_volatility_smile'
    params = {
        "base": base,
        "quote": quote,
        "value_time": value_time,
        "expiry": expiry,
        "strikes": strikes,
        "exchanges": exchanges
    }

    try:
        res = requests.get(url, headers=headers, params=params)
        res.raise_for_status() 
        data = res.json()
        if 'data' not in data:
            print("No data returned.")
            return pd.DataFrame() 
        df = pd.DataFrame(data['data'])

        # Handle pagination with continuation token
        while 'next_url' in data:
            next_url = data['next_url']
            if next_url is None:
                break
            res = requests.get(next_url, headers=headers)
            res.raise_for_status()
            data = res.json()
            if 'data' in data:
                df = pd.concat([df, pd.DataFrame(data['data'])], ignore_index=True)
        return df

    except requests.exceptions.RequestException as e:
        print(f"API request error: {e}")
        return pd.DataFrame() 

# ---- Get the data ---- #
df = get_kaiko_data(api_key=api_key, base=base, quote=quote, value_time=value_time, expiry=expiry, strikes=strikes, exchanges=exchanges)
print (df)

Response examples

{
    "query": {
        "base": "btc",
        "quote": "usd",
        "exchanges": [
            "drbt",
            "okex"
        ],
        "value_time": "2024-06-07T12:00:00.000Z",
        "expiry": "2024-06-28T00:00:00.000Z",
        "data_version": "v2",
        "commodity": "analytics",
        "request_time": "2024-06-24T12:30:09.700Z",
        "sources": "false"
    },
    "time": "2024-06-24T12:30:10.147Z",
    "data": [
        {
            "value_time": "2024-06-07T12:00:00.000Z",
            "expiry": "2024-06-28T00:00:00.000Z",
            "time_to_expiry": 0.056164383561643834,
            "implied_volatilities": [
                {
                    "strike": 72853.3324003775,
                    "forward_log_moneyness": 0.007321081822738051,
                    "implied_volatility": 0.5105897940662363,
                    "delta": 0.5,
                    "gamma": 0.000045971145294598765,
                    "current_spot": 71717,
                    "interest_rate": 0.14954983972466698
                },
                {
                    "strike": 79392.23132701412,
                    "forward_log_moneyness": 0.09327332815155387,
                    "implied_volatility": 0.5335098490669691,
                    "delta": 0.25,
                    "gamma": 0.00003504506121504308,
                    "current_spot": 71717,
                    "interest_rate": 0.14954983972466698
                },
                {
                    "strike": 67169.33106494324,
                    "forward_log_moneyness": -0.07391043269308284,
                    "implied_volatility": 0.5076566142080143,
                    "delta": 0.75,
                    "gamma": 0.000036829787686483384,
                    "current_spot": 71717,
                    "interest_rate": 0.14954983972466698
                }
            ]
        }
    ],
    "exchanges": [
        "drbt",
        "okex"
    ]
}
{
   "query": {
      "base": "btc",
      "quote": "usd",
      "exchanges": [
         "drbt",
         "okex"
      ],
      "value_time": "2024-09-12T10:00:00.000Z",
      "expiry": "2024-09-27T08:00:00.000Z",
      "data_version": "v2",
      "commodity": "analytics",
      "request_time": "2024-09-16T10:08:13.297Z",
      "sources": "false"
   },
   "time": "2024-09-16T10:08:13.510Z",
   "data": [
      {
         "value_time": "2024-09-12T10:00:00.000Z",
         "expiry": "2024-09-27T00:00:00.000Z",
         "time_to_expiry": 0.03995433789954338,
         "implied_volatilities": [
            {
               "strike": 21393.433382294108,
               "forward_log_moneyness": -1,
               "implied_volatility": 1.333640363610205,
               "delta": 0.9999487436462999,
               "gamma": 1.3636212810241294E-8,
               "current_spot": 58033.01112255454,
               "interest_rate": 0.051859643540835755
            },
            {
               "strike": 35271.80867069449,
               "forward_log_moneyness": -0.5,
               "implied_volatility": 0.9596570717413877,
               "delta": 0.9965589532046168,
               "gamma": 9.298329941261203E-7,
               "current_spot": 58033.01112255454,
               "interest_rate": 0.051859643540835755
            },
            {
               "strike": 58153.381211439206,
               "forward_log_moneyness": 0,
               "implied_volatility": 0.5101368982713104,
               "delta": 0.5203310896967671,
               "gamma": 6.732894295644585E-5,
               "current_spot": 58033.01112255454,
               "interest_rate": 0.051859643540835755
            },
            {
               "strike": 95878.71656643301,
               "forward_log_moneyness": 0.5,
               "implied_volatility": 0.8386751286583922,
               "delta": 0.0018731164887705876,
               "gamma": 6.140349526013891E-7,
               "current_spot": 58033.01112255454,
               "interest_rate": 0.051859643540835755
            },
            {
               "strike": 158077.27941050686,
               "forward_log_moneyness": 1,
               "implied_volatility": 1.1585659255535645,
               "delta": 1.3207614779298105E-5,
               "gamma": 4.342680303635139E-9,
               "current_spot": 58033.01112255454,
               "interest_rate": 0.051859643540835755
            }
         ]
      }
   ]
}
{
   "query": {
      "base": "btc",
      "quote": "usd",
      "exchanges": [
         "drbt"
      ],
      "value_time": "2024-09-12T10:00:00.000Z",
      "expiry": "2024-09-27T08:00:00.000Z",
      "data_version": "v2",
      "commodity": "analytics",
      "request_time": "2024-09-16T10:16:06.767Z",
      "sources": "false"
   },
   "time": "2024-09-16T10:16:07.109Z",
   "data": [
      {
         "value_time": "2024-09-12T10:00:00.000Z",
         "expiry": "2024-09-27T08:00:00.000Z",
         "time_to_expiry": 0.0408675799086758,
         "implied_volatilities": [
            {
               "strike": 30000,
               "forward_log_moneyness": -0.6621439523959698,
               "implied_volatility": 1.0918347265102102,
               "delta": 0.999065374274305,
               "gamma": 2.470728795941105E-7,
               "current_spot": 58026.01780838792,
               "interest_rate": 0.0599458347465653
            },
            {
               "strike": 50000,
               "forward_log_moneyness": -0.15131832862997915,
               "implied_volatility": 0.6151097548518855,
               "delta": 0.8995619045026346,
               "gamma": 2.4400231724112595E-5,
               "current_spot": 58026.01780838792,
               "interest_rate": 0.0599458347465653
            },
            {
               "strike": 60000,
               "forward_log_moneyness": 0.031003228163975546,
               "implied_volatility": 0.5087453039141314,
               "delta": 0.40128287640417803,
               "gamma": 6.479219462479912E-5,
               "current_spot": 58026.01780838792,
               "interest_rate": 0.0599458347465653
            },
            {
               "strike": 70000,
               "forward_log_moneyness": 0.18515390799123382,
               "implied_volatility": 0.5834792805075438,
               "delta": 0.06542894780360681,
               "gamma": 1.861991887220773E-5,
               "current_spot": 58026.01780838792,
               "interest_rate": 0.0599458347465653
            },
            {
               "strike": 90000,
               "forward_log_moneyness": 0.4364683362721398,
               "implied_volatility": 0.7752384746098042,
               "delta": 0.0033982150399509137,
               "gamma": 1.125492902360329E-6,
               "current_spot": 58026.01780838792,
               "interest_rate": 0.0599458347465653
            }
         ]
      }
   ]
}
Shared in
PreviousToken-level liquidation volumesNextImplied volatility calculation - surface

Last updated 2 months ago

Was this helpful?