Calculate Black76 Implied Volatility
curl --request POST \
--url https://api.fincept.in/quantlib/solver/finance/implied-vol-black76 \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"price": 3.5,
"forward": 50,
"strike": 52,
"time": 0.25,
"rate": 0.03,
"option_type": "call"
}
'import requests
url = "https://api.fincept.in/quantlib/solver/finance/implied-vol-black76"
payload = {
"price": 3.5,
"forward": 50,
"strike": 52,
"time": 0.25,
"rate": 0.03,
"option_type": "call"
}
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({
price: 3.5,
forward: 50,
strike: 52,
time: 0.25,
rate: 0.03,
option_type: 'call'
})
};
fetch('https://api.fincept.in/quantlib/solver/finance/implied-vol-black76', 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/solver/finance/implied-vol-black76",
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([
'price' => 3.5,
'forward' => 50,
'strike' => 52,
'time' => 0.25,
'rate' => 0.03,
'option_type' => 'call'
]),
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/solver/finance/implied-vol-black76"
payload := strings.NewReader("{\n \"price\": 3.5,\n \"forward\": 50,\n \"strike\": 52,\n \"time\": 0.25,\n \"rate\": 0.03,\n \"option_type\": \"call\"\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/solver/finance/implied-vol-black76")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"price\": 3.5,\n \"forward\": 50,\n \"strike\": 52,\n \"time\": 0.25,\n \"rate\": 0.03,\n \"option_type\": \"call\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/solver/finance/implied-vol-black76")
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 \"price\": 3.5,\n \"forward\": 50,\n \"strike\": 52,\n \"time\": 0.25,\n \"rate\": 0.03,\n \"option_type\": \"call\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"implied_volatility": 0.28,
"option_type": "call"
}
}{
"detail": "Invalid API key"
}{
"detail": "Endpoint requires Basic tier or higher"
}{
"detail": [
{}
]
}quantlib-solver
Calculate Black76 Implied Volatility
Solve for the implied volatility from a given option price using the Black76 model. Black76 is used for pricing options on futures, forwards, and in interest rate markets (caps, floors, swaptions). Unlike Black-Scholes which uses spot price, Black76 uses the forward price directly. This is the standard model for commodity options, Eurodollar options, and interest rate derivatives. The solver inverts the Black76 formula to extract implied volatility from market prices. [Tier: PRO, Credits: 5]
POST
/
quantlib
/
solver
/
finance
/
implied-vol-black76
Calculate Black76 Implied Volatility
curl --request POST \
--url https://api.fincept.in/quantlib/solver/finance/implied-vol-black76 \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"price": 3.5,
"forward": 50,
"strike": 52,
"time": 0.25,
"rate": 0.03,
"option_type": "call"
}
'import requests
url = "https://api.fincept.in/quantlib/solver/finance/implied-vol-black76"
payload = {
"price": 3.5,
"forward": 50,
"strike": 52,
"time": 0.25,
"rate": 0.03,
"option_type": "call"
}
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({
price: 3.5,
forward: 50,
strike: 52,
time: 0.25,
rate: 0.03,
option_type: 'call'
})
};
fetch('https://api.fincept.in/quantlib/solver/finance/implied-vol-black76', 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/solver/finance/implied-vol-black76",
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([
'price' => 3.5,
'forward' => 50,
'strike' => 52,
'time' => 0.25,
'rate' => 0.03,
'option_type' => 'call'
]),
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/solver/finance/implied-vol-black76"
payload := strings.NewReader("{\n \"price\": 3.5,\n \"forward\": 50,\n \"strike\": 52,\n \"time\": 0.25,\n \"rate\": 0.03,\n \"option_type\": \"call\"\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/solver/finance/implied-vol-black76")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"price\": 3.5,\n \"forward\": 50,\n \"strike\": 52,\n \"time\": 0.25,\n \"rate\": 0.03,\n \"option_type\": \"call\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/solver/finance/implied-vol-black76")
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 \"price\": 3.5,\n \"forward\": 50,\n \"strike\": 52,\n \"time\": 0.25,\n \"rate\": 0.03,\n \"option_type\": \"call\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"implied_volatility": 0.28,
"option_type": "call"
}
}{
"detail": "Invalid API key"
}{
"detail": "Endpoint requires Basic tier or higher"
}{
"detail": [
{}
]
}Authorizations
API key for authentication. Get your key at https://api.fincept.in/auth/register
Body
application/json
Market price of the option
Example:
3.5
Forward price of the underlying
Example:
50
Option strike price
Example:
52
Time to expiry in years
Example:
0.25
Risk-free interest rate as a decimal
Example:
0.03
Type of option
Available options:
call, put Example:
"call"
⌘I
