Term Structure Volatility
curl --request POST \
--url https://api.fincept.in/quantlib/volatility/surface/term-structure \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"expiries": [
0.25,
0.5,
1,
2
],
"volatilities": [
0.22,
0.24,
0.25,
0.23
],
"query_expiry": 0.75
}
'import requests
url = "https://api.fincept.in/quantlib/volatility/surface/term-structure"
payload = {
"expiries": [0.25, 0.5, 1, 2],
"volatilities": [0.22, 0.24, 0.25, 0.23],
"query_expiry": 0.75
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
expiries: [0.25, 0.5, 1, 2],
volatilities: [0.22, 0.24, 0.25, 0.23],
query_expiry: 0.75
})
};
fetch('https://api.fincept.in/quantlib/volatility/surface/term-structure', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fincept.in/quantlib/volatility/surface/term-structure",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'expiries' => [
0.25,
0.5,
1,
2
],
'volatilities' => [
0.22,
0.24,
0.25,
0.23
],
'query_expiry' => 0.75
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fincept.in/quantlib/volatility/surface/term-structure"
payload := strings.NewReader("{\n \"expiries\": [\n 0.25,\n 0.5,\n 1,\n 2\n ],\n \"volatilities\": [\n 0.22,\n 0.24,\n 0.25,\n 0.23\n ],\n \"query_expiry\": 0.75\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fincept.in/quantlib/volatility/surface/term-structure")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expiries\": [\n 0.25,\n 0.5,\n 1,\n 2\n ],\n \"volatilities\": [\n 0.22,\n 0.24,\n 0.25,\n 0.23\n ],\n \"query_expiry\": 0.75\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/volatility/surface/term-structure")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expiries\": [\n 0.25,\n 0.5,\n 1,\n 2\n ],\n \"volatilities\": [\n 0.22,\n 0.24,\n 0.25,\n 0.23\n ],\n \"query_expiry\": 0.75\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"volatility": 0.245,
"total_variance": 0.04501875,
"query_expiry": 0.75
}
}{
"detail": "Invalid API key"
}{
"detail": "Endpoint requires Standard tier or higher"
}{
"detail": [
{
"loc": [
"body",
"volatility"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}quantlib-volatility
Term Structure Volatility
Query a term structure (expiry-dependent) volatility surface where volatility varies by expiry but is constant across strikes. Interpolates between provided expiry points. Useful for modeling volatility term structure for ATM options or when strike dependency is negligible. [Tier: PRO, Credits: 5]
POST
/
quantlib
/
volatility
/
surface
/
term-structure
Term Structure Volatility
curl --request POST \
--url https://api.fincept.in/quantlib/volatility/surface/term-structure \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"expiries": [
0.25,
0.5,
1,
2
],
"volatilities": [
0.22,
0.24,
0.25,
0.23
],
"query_expiry": 0.75
}
'import requests
url = "https://api.fincept.in/quantlib/volatility/surface/term-structure"
payload = {
"expiries": [0.25, 0.5, 1, 2],
"volatilities": [0.22, 0.24, 0.25, 0.23],
"query_expiry": 0.75
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
expiries: [0.25, 0.5, 1, 2],
volatilities: [0.22, 0.24, 0.25, 0.23],
query_expiry: 0.75
})
};
fetch('https://api.fincept.in/quantlib/volatility/surface/term-structure', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fincept.in/quantlib/volatility/surface/term-structure",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'expiries' => [
0.25,
0.5,
1,
2
],
'volatilities' => [
0.22,
0.24,
0.25,
0.23
],
'query_expiry' => 0.75
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fincept.in/quantlib/volatility/surface/term-structure"
payload := strings.NewReader("{\n \"expiries\": [\n 0.25,\n 0.5,\n 1,\n 2\n ],\n \"volatilities\": [\n 0.22,\n 0.24,\n 0.25,\n 0.23\n ],\n \"query_expiry\": 0.75\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fincept.in/quantlib/volatility/surface/term-structure")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expiries\": [\n 0.25,\n 0.5,\n 1,\n 2\n ],\n \"volatilities\": [\n 0.22,\n 0.24,\n 0.25,\n 0.23\n ],\n \"query_expiry\": 0.75\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/volatility/surface/term-structure")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expiries\": [\n 0.25,\n 0.5,\n 1,\n 2\n ],\n \"volatilities\": [\n 0.22,\n 0.24,\n 0.25,\n 0.23\n ],\n \"query_expiry\": 0.75\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"volatility": 0.245,
"total_variance": 0.04501875,
"query_expiry": 0.75
}
}{
"detail": "Invalid API key"
}{
"detail": "Endpoint requires Standard tier or higher"
}{
"detail": [
{
"loc": [
"body",
"volatility"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}Authorizations
API key for authentication. Get your key at https://api.fincept.in/auth/register
Body
application/json
Array of expiry times in years (must be strictly increasing)
Minimum array length:
2Example:
[0.25, 0.5, 1, 2]
Array of volatilities corresponding to each expiry
Minimum array length:
2Example:
[0.22, 0.24, 0.25, 0.23]
Expiry time in years for the query (will be interpolated)
Required range:
x >= 0Example:
0.75
⌘I
