Correlation Stress Testing
curl --request POST \
--url https://api.fincept.in/quantlib/risk/correlation-stress \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"correlation_matrix": [
[
1,
0.6,
0.4,
0.2
],
[
0.6,
1,
0.5,
0.3
],
[
0.4,
0.5,
1,
0.35
],
[
0.2,
0.3,
0.35,
1
]
],
"stress_type": "crisis"
}
'import requests
url = "https://api.fincept.in/quantlib/risk/correlation-stress"
payload = {
"correlation_matrix": [[1, 0.6, 0.4, 0.2], [0.6, 1, 0.5, 0.3], [0.4, 0.5, 1, 0.35], [0.2, 0.3, 0.35, 1]],
"stress_type": "crisis"
}
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({
correlation_matrix: [
[1, 0.6, 0.4, 0.2],
[0.6, 1, 0.5, 0.3],
[0.4, 0.5, 1, 0.35],
[0.2, 0.3, 0.35, 1]
],
stress_type: 'crisis'
})
};
fetch('https://api.fincept.in/quantlib/risk/correlation-stress', 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/correlation-stress",
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([
'correlation_matrix' => [
[
1,
0.6,
0.4,
0.2
],
[
0.6,
1,
0.5,
0.3
],
[
0.4,
0.5,
1,
0.35
],
[
0.2,
0.3,
0.35,
1
]
],
'stress_type' => 'crisis'
]),
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/correlation-stress"
payload := strings.NewReader("{\n \"correlation_matrix\": [\n [\n 1,\n 0.6,\n 0.4,\n 0.2\n ],\n [\n 0.6,\n 1,\n 0.5,\n 0.3\n ],\n [\n 0.4,\n 0.5,\n 1,\n 0.35\n ],\n [\n 0.2,\n 0.3,\n 0.35,\n 1\n ]\n ],\n \"stress_type\": \"crisis\"\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/correlation-stress")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"correlation_matrix\": [\n [\n 1,\n 0.6,\n 0.4,\n 0.2\n ],\n [\n 0.6,\n 1,\n 0.5,\n 0.3\n ],\n [\n 0.4,\n 0.5,\n 1,\n 0.35\n ],\n [\n 0.2,\n 0.3,\n 0.35,\n 1\n ]\n ],\n \"stress_type\": \"crisis\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/risk/correlation-stress")
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 \"correlation_matrix\": [\n [\n 1,\n 0.6,\n 0.4,\n 0.2\n ],\n [\n 0.6,\n 1,\n 0.5,\n 0.3\n ],\n [\n 0.4,\n 0.5,\n 1,\n 0.35\n ],\n [\n 0.2,\n 0.3,\n 0.35,\n 1\n ]\n ],\n \"stress_type\": \"crisis\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"stress_type": "crisis",
"stressed_matrix": [
[
1,
0.85,
0.78,
0.65
],
[
0.85,
1,
0.82,
0.7
],
[
0.78,
0.82,
1,
0.72
],
[
0.65,
0.7,
0.72,
1
]
]
}
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient credits. This endpoint requires 5 credits."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}quantlib-risk
Correlation Stress Testing
Stress tests correlation matrices under extreme scenarios. Models correlation breakdown (crisis), decorrelation (relationships weaken), or correlation sign flips. Critical for understanding portfolio behavior during market dislocations when historical correlations fail. Used in FRTB, CCAR stress testing, and risk scenario analysis. [Tier: PRO, Credits: 5]
POST
/
quantlib
/
risk
/
correlation-stress
Correlation Stress Testing
curl --request POST \
--url https://api.fincept.in/quantlib/risk/correlation-stress \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"correlation_matrix": [
[
1,
0.6,
0.4,
0.2
],
[
0.6,
1,
0.5,
0.3
],
[
0.4,
0.5,
1,
0.35
],
[
0.2,
0.3,
0.35,
1
]
],
"stress_type": "crisis"
}
'import requests
url = "https://api.fincept.in/quantlib/risk/correlation-stress"
payload = {
"correlation_matrix": [[1, 0.6, 0.4, 0.2], [0.6, 1, 0.5, 0.3], [0.4, 0.5, 1, 0.35], [0.2, 0.3, 0.35, 1]],
"stress_type": "crisis"
}
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({
correlation_matrix: [
[1, 0.6, 0.4, 0.2],
[0.6, 1, 0.5, 0.3],
[0.4, 0.5, 1, 0.35],
[0.2, 0.3, 0.35, 1]
],
stress_type: 'crisis'
})
};
fetch('https://api.fincept.in/quantlib/risk/correlation-stress', 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/correlation-stress",
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([
'correlation_matrix' => [
[
1,
0.6,
0.4,
0.2
],
[
0.6,
1,
0.5,
0.3
],
[
0.4,
0.5,
1,
0.35
],
[
0.2,
0.3,
0.35,
1
]
],
'stress_type' => 'crisis'
]),
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/correlation-stress"
payload := strings.NewReader("{\n \"correlation_matrix\": [\n [\n 1,\n 0.6,\n 0.4,\n 0.2\n ],\n [\n 0.6,\n 1,\n 0.5,\n 0.3\n ],\n [\n 0.4,\n 0.5,\n 1,\n 0.35\n ],\n [\n 0.2,\n 0.3,\n 0.35,\n 1\n ]\n ],\n \"stress_type\": \"crisis\"\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/correlation-stress")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"correlation_matrix\": [\n [\n 1,\n 0.6,\n 0.4,\n 0.2\n ],\n [\n 0.6,\n 1,\n 0.5,\n 0.3\n ],\n [\n 0.4,\n 0.5,\n 1,\n 0.35\n ],\n [\n 0.2,\n 0.3,\n 0.35,\n 1\n ]\n ],\n \"stress_type\": \"crisis\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/risk/correlation-stress")
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 \"correlation_matrix\": [\n [\n 1,\n 0.6,\n 0.4,\n 0.2\n ],\n [\n 0.6,\n 1,\n 0.5,\n 0.3\n ],\n [\n 0.4,\n 0.5,\n 1,\n 0.35\n ],\n [\n 0.2,\n 0.3,\n 0.35,\n 1\n ]\n ],\n \"stress_type\": \"crisis\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"stress_type": "crisis",
"stressed_matrix": [
[
1,
0.85,
0.78,
0.65
],
[
0.85,
1,
0.82,
0.7
],
[
0.78,
0.82,
1,
0.72
],
[
0.65,
0.7,
0.72,
1
]
]
}
}{
"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
Baseline correlation matrix (must be symmetric positive semi-definite)
Example:
[[1, 0.5, 0.3], [0.5, 1, 0.4], [0.3, 0.4, 1]]
Type of correlation stress scenario
Available options:
crisis, decorrelation, sign_flip Example:
"crisis"
⌘I
