IV 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://us.market-api.kaiko.io/v2/data/analytics.v2/implied_volatility_smile
Parameters
Fields
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"e=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"e=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"e=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
import http.client
import json
# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/analytics.v2/implied_volatility_smile"
# Start of mandatory parameter configuration
mandatory_params = {
"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",
}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
"exchanges": "drbt"
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
"X-Api-Key": api_key,
"Accept": "application/json"
}
all_params = {**mandatory_params, **optional_params}
url_params = []
for param, value in all_params.items():
url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)
endpoint_with_params = f"{api_base_endpoint}?{url_params}"
# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
conn.request("GET", next_url, headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode("utf-8"))
all_data.extend(data.get("data", []))
print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
if not next_url:
break
conn.close()
print(f" datapoints fetched: {(all_data)}")
Use this example to calculate IV using forward log moneyness
import http.client
import json
# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/analytics.v2/implied_volatility_smile"
# Start of mandatory parameter configuration
mandatory_params = {
"base": "btc",
"quote": "usd",
"value_time": "2024-06-07T12:00:00.000Z",
"expiry": "2024-06-28T00:00:00.000Z",
"forward_log_moneynesses": "1,-0.5,0,0.5,1",
}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
"exchanges": "drbt"
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
"X-Api-Key": api_key,
"Accept": "application/json"
}
all_params = {**mandatory_params, **optional_params}
url_params = []
for param, value in all_params.items():
url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)
endpoint_with_params = f"{api_base_endpoint}?{url_params}"
# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
conn.request("GET", next_url, headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode("utf-8"))
all_data.extend(data.get("data", []))
print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
if not next_url:
break
conn.close()
print(f" datapoints fetched: {(all_data)}")
Use this example to calculate IV using forward log moneyness
import http.client
import json
# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/analytics.v2/implied_volatility_smile"
# Start of mandatory parameter configuration
mandatory_params = {
"base": "btc",
"quote": "usd",
"value_time": "2024-06-07T12:00:00.000Z",
"expiry": "2024-06-28T00:00:00.000Z",
"strikes": "30000,50000,60000,70000,90000",
}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
"exchanges": "drbt"
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
"X-Api-Key": api_key,
"Accept": "application/json"
}
all_params = {**mandatory_params, **optional_params}
url_params = []
for param, value in all_params.items():
url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)
endpoint_with_params = f"{api_base_endpoint}?{url_params}"
# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
conn.request("GET", next_url, headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode("utf-8"))
all_data.extend(data.get("data", []))
print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
if not next_url:
break
conn.close()
print(f" datapoints fetched: {(all_data)}")
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
Last updated