Calculate Modified Duration
curl --request POST \
--url https://api.fincept.in/quantlib/solver/finance/modified-duration \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"face": 100,
"coupon": 0.06,
"maturity": 10,
"ytm": 0.05,
"frequency": 2
}
'import requests
url = "https://api.fincept.in/quantlib/solver/finance/modified-duration"
payload = {
"face": 100,
"coupon": 0.06,
"maturity": 10,
"ytm": 0.05,
"frequency": 2
}
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({face: 100, coupon: 0.06, maturity: 10, ytm: 0.05, frequency: 2})
};
fetch('https://api.fincept.in/quantlib/solver/finance/modified-duration', 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/modified-duration",
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([
'face' => 100,
'coupon' => 0.06,
'maturity' => 10,
'ytm' => 0.05,
'frequency' => 2
]),
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/modified-duration"
payload := strings.NewReader("{\n \"face\": 100,\n \"coupon\": 0.06,\n \"maturity\": 10,\n \"ytm\": 0.05,\n \"frequency\": 2\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/modified-duration")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"face\": 100,\n \"coupon\": 0.06,\n \"maturity\": 10,\n \"ytm\": 0.05,\n \"frequency\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/solver/finance/modified-duration")
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 \"face\": 100,\n \"coupon\": 0.06,\n \"maturity\": 10,\n \"ytm\": 0.05,\n \"frequency\": 2\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"modified_duration": 7.66
}
}{
"detail": "Invalid API key"
}{
"detail": "Endpoint requires Basic tier or higher"
}{
"detail": [
{}
]
}quantlib-solver
Calculate Modified Duration
Calculate the modified duration of a bond - an approximation of the percentage price change for a 1% change in yield. Modified duration is derived from Macaulay duration and directly measures interest rate risk. Used extensively for hedging, DV01 calculations, and measuring portfolio sensitivity to parallel yield curve shifts. [Tier: STANDARD, Credits: 2]
POST
/
quantlib
/
solver
/
finance
/
modified-duration
Calculate Modified Duration
curl --request POST \
--url https://api.fincept.in/quantlib/solver/finance/modified-duration \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"face": 100,
"coupon": 0.06,
"maturity": 10,
"ytm": 0.05,
"frequency": 2
}
'import requests
url = "https://api.fincept.in/quantlib/solver/finance/modified-duration"
payload = {
"face": 100,
"coupon": 0.06,
"maturity": 10,
"ytm": 0.05,
"frequency": 2
}
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({face: 100, coupon: 0.06, maturity: 10, ytm: 0.05, frequency: 2})
};
fetch('https://api.fincept.in/quantlib/solver/finance/modified-duration', 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/modified-duration",
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([
'face' => 100,
'coupon' => 0.06,
'maturity' => 10,
'ytm' => 0.05,
'frequency' => 2
]),
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/modified-duration"
payload := strings.NewReader("{\n \"face\": 100,\n \"coupon\": 0.06,\n \"maturity\": 10,\n \"ytm\": 0.05,\n \"frequency\": 2\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/modified-duration")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"face\": 100,\n \"coupon\": 0.06,\n \"maturity\": 10,\n \"ytm\": 0.05,\n \"frequency\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/solver/finance/modified-duration")
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 \"face\": 100,\n \"coupon\": 0.06,\n \"maturity\": 10,\n \"ytm\": 0.05,\n \"frequency\": 2\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"modified_duration": 7.66
}
}{
"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
Annual coupon rate as a decimal
Example:
0.06
Time to maturity in years
Example:
10
Yield to maturity as a decimal
Example:
0.05
Face value of the bond
Example:
100
Coupon payment frequency per year
Available options:
1, 2, 4, 12 Example:
2
⌘I
