Credit Valuation Adjustment (CVA)
curl --request POST \
--url https://api.fincept.in/quantlib/risk/xva/cva \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"exposure_paths": [
[
100000,
120000,
135000,
128000,
140000
],
[
100000,
95000,
110000,
125000,
130000
],
[
100000,
105000,
98000,
115000,
122000
]
],
"counterparty_spread": 300,
"recovery_rate": 0.35,
"time_points": [
0,
0.25,
0.5,
0.75,
1
]
}
'import requests
url = "https://api.fincept.in/quantlib/risk/xva/cva"
payload = {
"exposure_paths": [[100000, 120000, 135000, 128000, 140000], [100000, 95000, 110000, 125000, 130000], [100000, 105000, 98000, 115000, 122000]],
"counterparty_spread": 300,
"recovery_rate": 0.35,
"time_points": [0, 0.25, 0.5, 0.75, 1]
}
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({
exposure_paths: [
[100000, 120000, 135000, 128000, 140000],
[100000, 95000, 110000, 125000, 130000],
[100000, 105000, 98000, 115000, 122000]
],
counterparty_spread: 300,
recovery_rate: 0.35,
time_points: [0, 0.25, 0.5, 0.75, 1]
})
};
fetch('https://api.fincept.in/quantlib/risk/xva/cva', 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/risk/xva/cva",
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([
'exposure_paths' => [
[
100000,
120000,
135000,
128000,
140000
],
[
100000,
95000,
110000,
125000,
130000
],
[
100000,
105000,
98000,
115000,
122000
]
],
'counterparty_spread' => 300,
'recovery_rate' => 0.35,
'time_points' => [
0,
0.25,
0.5,
0.75,
1
]
]),
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/risk/xva/cva"
payload := strings.NewReader("{\n \"exposure_paths\": [\n [\n 100000,\n 120000,\n 135000,\n 128000,\n 140000\n ],\n [\n 100000,\n 95000,\n 110000,\n 125000,\n 130000\n ],\n [\n 100000,\n 105000,\n 98000,\n 115000,\n 122000\n ]\n ],\n \"counterparty_spread\": 300,\n \"recovery_rate\": 0.35,\n \"time_points\": [\n 0,\n 0.25,\n 0.5,\n 0.75,\n 1\n ]\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/risk/xva/cva")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"exposure_paths\": [\n [\n 100000,\n 120000,\n 135000,\n 128000,\n 140000\n ],\n [\n 100000,\n 95000,\n 110000,\n 125000,\n 130000\n ],\n [\n 100000,\n 105000,\n 98000,\n 115000,\n 122000\n ]\n ],\n \"counterparty_spread\": 300,\n \"recovery_rate\": 0.35,\n \"time_points\": [\n 0,\n 0.25,\n 0.5,\n 0.75,\n 1\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/risk/xva/cva")
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 \"exposure_paths\": [\n [\n 100000,\n 120000,\n 135000,\n 128000,\n 140000\n ],\n [\n 100000,\n 95000,\n 110000,\n 125000,\n 130000\n ],\n [\n 100000,\n 105000,\n 98000,\n 115000,\n 122000\n ]\n ],\n \"counterparty_spread\": 300,\n \"recovery_rate\": 0.35,\n \"time_points\": [\n 0,\n 0.25,\n 0.5,\n 0.75,\n 1\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"cva": 3250.75,
"epe_profile": [
100000,
106667,
114333,
122667,
130667
]
}
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient credits. This endpoint requires 5 credits."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}quantlib-risk
Credit Valuation Adjustment (CVA)
Calculates the Credit Valuation Adjustment - the market value of counterparty credit risk. CVA represents the expected loss from counterparty default on OTC derivatives. Includes Expected Positive Exposure (EPE) profile calculation. Required under Basel III and IFRS 13 for marking derivative books to market. [Tier: PRO, Credits: 5]
POST
/
quantlib
/
risk
/
xva
/
cva
Credit Valuation Adjustment (CVA)
curl --request POST \
--url https://api.fincept.in/quantlib/risk/xva/cva \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"exposure_paths": [
[
100000,
120000,
135000,
128000,
140000
],
[
100000,
95000,
110000,
125000,
130000
],
[
100000,
105000,
98000,
115000,
122000
]
],
"counterparty_spread": 300,
"recovery_rate": 0.35,
"time_points": [
0,
0.25,
0.5,
0.75,
1
]
}
'import requests
url = "https://api.fincept.in/quantlib/risk/xva/cva"
payload = {
"exposure_paths": [[100000, 120000, 135000, 128000, 140000], [100000, 95000, 110000, 125000, 130000], [100000, 105000, 98000, 115000, 122000]],
"counterparty_spread": 300,
"recovery_rate": 0.35,
"time_points": [0, 0.25, 0.5, 0.75, 1]
}
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({
exposure_paths: [
[100000, 120000, 135000, 128000, 140000],
[100000, 95000, 110000, 125000, 130000],
[100000, 105000, 98000, 115000, 122000]
],
counterparty_spread: 300,
recovery_rate: 0.35,
time_points: [0, 0.25, 0.5, 0.75, 1]
})
};
fetch('https://api.fincept.in/quantlib/risk/xva/cva', 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/risk/xva/cva",
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([
'exposure_paths' => [
[
100000,
120000,
135000,
128000,
140000
],
[
100000,
95000,
110000,
125000,
130000
],
[
100000,
105000,
98000,
115000,
122000
]
],
'counterparty_spread' => 300,
'recovery_rate' => 0.35,
'time_points' => [
0,
0.25,
0.5,
0.75,
1
]
]),
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/risk/xva/cva"
payload := strings.NewReader("{\n \"exposure_paths\": [\n [\n 100000,\n 120000,\n 135000,\n 128000,\n 140000\n ],\n [\n 100000,\n 95000,\n 110000,\n 125000,\n 130000\n ],\n [\n 100000,\n 105000,\n 98000,\n 115000,\n 122000\n ]\n ],\n \"counterparty_spread\": 300,\n \"recovery_rate\": 0.35,\n \"time_points\": [\n 0,\n 0.25,\n 0.5,\n 0.75,\n 1\n ]\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/risk/xva/cva")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"exposure_paths\": [\n [\n 100000,\n 120000,\n 135000,\n 128000,\n 140000\n ],\n [\n 100000,\n 95000,\n 110000,\n 125000,\n 130000\n ],\n [\n 100000,\n 105000,\n 98000,\n 115000,\n 122000\n ]\n ],\n \"counterparty_spread\": 300,\n \"recovery_rate\": 0.35,\n \"time_points\": [\n 0,\n 0.25,\n 0.5,\n 0.75,\n 1\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/risk/xva/cva")
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 \"exposure_paths\": [\n [\n 100000,\n 120000,\n 135000,\n 128000,\n 140000\n ],\n [\n 100000,\n 95000,\n 110000,\n 125000,\n 130000\n ],\n [\n 100000,\n 105000,\n 98000,\n 115000,\n 122000\n ]\n ],\n \"counterparty_spread\": 300,\n \"recovery_rate\": 0.35,\n \"time_points\": [\n 0,\n 0.25,\n 0.5,\n 0.75,\n 1\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"cva": 3250.75,
"epe_profile": [
100000,
106667,
114333,
122667,
130667
]
}
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient credits. This endpoint requires 5 credits."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
API key for authentication. Get your key at https://api.fincept.in/auth/register
Body
application/json
Simulated exposure paths (each path is array of exposures over time)
Example:
[
[100000, 105000, 98000],
[100000, 102000, 107000]
]
Counterparty credit spread in basis points
Required range:
x >= 0Example:
250
Recovery rate on counterparty default (0 to 1)
Required range:
0 <= x <= 1Example:
0.4
Own credit spread in basis points (for DVA calculation)
Example:
150
Own recovery rate
Example:
0.4
Funding spread in basis points (for FVA)
Example:
80
Time points in years corresponding to exposure paths
Example:
[0, 0.5, 1, 1.5, 2]
⌘I
