Create Custom Stress Scenario
curl --request POST \
--url https://api.fincept.in/quantlib/risk/stress/scenario \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "COVID-19 Pandemic Shock",
"description": "March 2020 market shock with equity selloff and flight to quality",
"factor_shocks": {
"SP500": -0.34,
"VIX": 3.5,
"USD_Index": 0.08,
"Oil_Price": -0.55,
"IG_Spreads": 0.85,
"HY_Spreads": 2.1
}
}
'import requests
url = "https://api.fincept.in/quantlib/risk/stress/scenario"
payload = {
"name": "COVID-19 Pandemic Shock",
"description": "March 2020 market shock with equity selloff and flight to quality",
"factor_shocks": {
"SP500": -0.34,
"VIX": 3.5,
"USD_Index": 0.08,
"Oil_Price": -0.55,
"IG_Spreads": 0.85,
"HY_Spreads": 2.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({
name: 'COVID-19 Pandemic Shock',
description: 'March 2020 market shock with equity selloff and flight to quality',
factor_shocks: {
SP500: -0.34,
VIX: 3.5,
USD_Index: 0.08,
Oil_Price: -0.55,
IG_Spreads: 0.85,
HY_Spreads: 2.1
}
})
};
fetch('https://api.fincept.in/quantlib/risk/stress/scenario', 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/stress/scenario",
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([
'name' => 'COVID-19 Pandemic Shock',
'description' => 'March 2020 market shock with equity selloff and flight to quality',
'factor_shocks' => [
'SP500' => -0.34,
'VIX' => 3.5,
'USD_Index' => 0.08,
'Oil_Price' => -0.55,
'IG_Spreads' => 0.85,
'HY_Spreads' => 2.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/stress/scenario"
payload := strings.NewReader("{\n \"name\": \"COVID-19 Pandemic Shock\",\n \"description\": \"March 2020 market shock with equity selloff and flight to quality\",\n \"factor_shocks\": {\n \"SP500\": -0.34,\n \"VIX\": 3.5,\n \"USD_Index\": 0.08,\n \"Oil_Price\": -0.55,\n \"IG_Spreads\": 0.85,\n \"HY_Spreads\": 2.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/stress/scenario")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"COVID-19 Pandemic Shock\",\n \"description\": \"March 2020 market shock with equity selloff and flight to quality\",\n \"factor_shocks\": {\n \"SP500\": -0.34,\n \"VIX\": 3.5,\n \"USD_Index\": 0.08,\n \"Oil_Price\": -0.55,\n \"IG_Spreads\": 0.85,\n \"HY_Spreads\": 2.1\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/risk/stress/scenario")
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 \"name\": \"COVID-19 Pandemic Shock\",\n \"description\": \"March 2020 market shock with equity selloff and flight to quality\",\n \"factor_shocks\": {\n \"SP500\": -0.34,\n \"VIX\": 3.5,\n \"USD_Index\": 0.08,\n \"Oil_Price\": -0.55,\n \"IG_Spreads\": 0.85,\n \"HY_Spreads\": 2.1\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"name": "COVID-19 Pandemic Shock",
"factor_shocks": {
"SP500": -0.34,
"VIX": 3.5,
"Oil_Price": -0.55
},
"severity": 4.82
}
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient credits. This endpoint requires 5 credits."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}quantlib-risk
Create Custom Stress Scenario
Builds a custom stress testing scenario by defining shocks to risk factors. Used to assess portfolio performance under extreme market conditions like crashes, rate spikes, or commodity shocks. Essential for regulatory stress testing (CCAR, FRTB) and internal risk management. [Tier: PRO, Credits: 5]
POST
/
quantlib
/
risk
/
stress
/
scenario
Create Custom Stress Scenario
curl --request POST \
--url https://api.fincept.in/quantlib/risk/stress/scenario \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "COVID-19 Pandemic Shock",
"description": "March 2020 market shock with equity selloff and flight to quality",
"factor_shocks": {
"SP500": -0.34,
"VIX": 3.5,
"USD_Index": 0.08,
"Oil_Price": -0.55,
"IG_Spreads": 0.85,
"HY_Spreads": 2.1
}
}
'import requests
url = "https://api.fincept.in/quantlib/risk/stress/scenario"
payload = {
"name": "COVID-19 Pandemic Shock",
"description": "March 2020 market shock with equity selloff and flight to quality",
"factor_shocks": {
"SP500": -0.34,
"VIX": 3.5,
"USD_Index": 0.08,
"Oil_Price": -0.55,
"IG_Spreads": 0.85,
"HY_Spreads": 2.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({
name: 'COVID-19 Pandemic Shock',
description: 'March 2020 market shock with equity selloff and flight to quality',
factor_shocks: {
SP500: -0.34,
VIX: 3.5,
USD_Index: 0.08,
Oil_Price: -0.55,
IG_Spreads: 0.85,
HY_Spreads: 2.1
}
})
};
fetch('https://api.fincept.in/quantlib/risk/stress/scenario', 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/stress/scenario",
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([
'name' => 'COVID-19 Pandemic Shock',
'description' => 'March 2020 market shock with equity selloff and flight to quality',
'factor_shocks' => [
'SP500' => -0.34,
'VIX' => 3.5,
'USD_Index' => 0.08,
'Oil_Price' => -0.55,
'IG_Spreads' => 0.85,
'HY_Spreads' => 2.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/stress/scenario"
payload := strings.NewReader("{\n \"name\": \"COVID-19 Pandemic Shock\",\n \"description\": \"March 2020 market shock with equity selloff and flight to quality\",\n \"factor_shocks\": {\n \"SP500\": -0.34,\n \"VIX\": 3.5,\n \"USD_Index\": 0.08,\n \"Oil_Price\": -0.55,\n \"IG_Spreads\": 0.85,\n \"HY_Spreads\": 2.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/stress/scenario")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"COVID-19 Pandemic Shock\",\n \"description\": \"March 2020 market shock with equity selloff and flight to quality\",\n \"factor_shocks\": {\n \"SP500\": -0.34,\n \"VIX\": 3.5,\n \"USD_Index\": 0.08,\n \"Oil_Price\": -0.55,\n \"IG_Spreads\": 0.85,\n \"HY_Spreads\": 2.1\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/risk/stress/scenario")
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 \"name\": \"COVID-19 Pandemic Shock\",\n \"description\": \"March 2020 market shock with equity selloff and flight to quality\",\n \"factor_shocks\": {\n \"SP500\": -0.34,\n \"VIX\": 3.5,\n \"USD_Index\": 0.08,\n \"Oil_Price\": -0.55,\n \"IG_Spreads\": 0.85,\n \"HY_Spreads\": 2.1\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"name": "COVID-19 Pandemic Shock",
"factor_shocks": {
"SP500": -0.34,
"VIX": 3.5,
"Oil_Price": -0.55
},
"severity": 4.82
}
}{
"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
Descriptive name for the stress scenario
Example:
"2008 Financial Crisis"
Dictionary mapping factor names to percentage shocks (e.g., -0.30 for -30%)
Show child attributes
Show child attributes
Example:
{
"equities": -0.4,
"credit_spreads": 0.5,
"volatility": 1
}
Detailed description of the scenario
Example:
"Severe market downturn with equity crash and credit spread widening"
⌘I
