Portfolio Conditional Value at Risk (CVaR)
curl --request POST \
--url https://api.fincept.in/quantlib/portfolio/risk/cvar \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"weights": [
0.3,
0.25,
0.25,
0.2
],
"covariance_matrix": [
[
0.04,
0.006,
0.008,
0.01
],
[
0.006,
0.09,
0.012,
0.015
],
[
0.008,
0.012,
0.0625,
0.018
],
[
0.01,
0.015,
0.018,
0.16
]
],
"confidence": 0.95,
"horizon": 0.00396825,
"portfolio_value": 1000000
}
'import requests
url = "https://api.fincept.in/quantlib/portfolio/risk/cvar"
payload = {
"weights": [0.3, 0.25, 0.25, 0.2],
"covariance_matrix": [[0.04, 0.006, 0.008, 0.01], [0.006, 0.09, 0.012, 0.015], [0.008, 0.012, 0.0625, 0.018], [0.01, 0.015, 0.018, 0.16]],
"confidence": 0.95,
"horizon": 0.00396825,
"portfolio_value": 1000000
}
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({
weights: [0.3, 0.25, 0.25, 0.2],
covariance_matrix: [
[0.04, 0.006, 0.008, 0.01],
[0.006, 0.09, 0.012, 0.015],
[0.008, 0.012, 0.0625, 0.018],
[0.01, 0.015, 0.018, 0.16]
],
confidence: 0.95,
horizon: 0.00396825,
portfolio_value: 1000000
})
};
fetch('https://api.fincept.in/quantlib/portfolio/risk/cvar', 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/portfolio/risk/cvar",
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([
'weights' => [
0.3,
0.25,
0.25,
0.2
],
'covariance_matrix' => [
[
0.04,
0.006,
0.008,
0.01
],
[
0.006,
0.09,
0.012,
0.015
],
[
0.008,
0.012,
0.0625,
0.018
],
[
0.01,
0.015,
0.018,
0.16
]
],
'confidence' => 0.95,
'horizon' => 0.00396825,
'portfolio_value' => 1000000
]),
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/portfolio/risk/cvar"
payload := strings.NewReader("{\n \"weights\": [\n 0.3,\n 0.25,\n 0.25,\n 0.2\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"confidence\": 0.95,\n \"horizon\": 0.00396825,\n \"portfolio_value\": 1000000\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/portfolio/risk/cvar")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"weights\": [\n 0.3,\n 0.25,\n 0.25,\n 0.2\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"confidence\": 0.95,\n \"horizon\": 0.00396825,\n \"portfolio_value\": 1000000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/portfolio/risk/cvar")
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 \"weights\": [\n 0.3,\n 0.25,\n 0.25,\n 0.2\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"confidence\": 0.95,\n \"horizon\": 0.00396825,\n \"portfolio_value\": 1000000\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"cvar": 68234.12,
"confidence": 0.95
}
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient credits. This endpoint requires 5 credits."
}{
"detail": [
{
"loc": [
"body",
"expected_returns"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}quantlib-portfolio
Portfolio Conditional Value at Risk (CVaR)
Calculates portfolio Conditional Value at Risk (CVaR), also known as Expected Shortfall (ES). CVaR measures the expected loss given that the loss exceeds the VaR threshold.
Use Cases:
- Tail risk assessment
- Risk management for extreme events
- Coherent risk measure (superior to VaR)
- Optimization objective for conservative portfolios
Advantages over VaR:
- Captures tail risk beyond the VaR threshold
- Coherent risk measure (sub-additive)
- Better for portfolio optimization
Interpretation: CVaR of 75,000at9575,000.
Credits: 5 per request [Tier: PRO, Credits: 5]
POST
/
quantlib
/
portfolio
/
risk
/
cvar
Portfolio Conditional Value at Risk (CVaR)
curl --request POST \
--url https://api.fincept.in/quantlib/portfolio/risk/cvar \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"weights": [
0.3,
0.25,
0.25,
0.2
],
"covariance_matrix": [
[
0.04,
0.006,
0.008,
0.01
],
[
0.006,
0.09,
0.012,
0.015
],
[
0.008,
0.012,
0.0625,
0.018
],
[
0.01,
0.015,
0.018,
0.16
]
],
"confidence": 0.95,
"horizon": 0.00396825,
"portfolio_value": 1000000
}
'import requests
url = "https://api.fincept.in/quantlib/portfolio/risk/cvar"
payload = {
"weights": [0.3, 0.25, 0.25, 0.2],
"covariance_matrix": [[0.04, 0.006, 0.008, 0.01], [0.006, 0.09, 0.012, 0.015], [0.008, 0.012, 0.0625, 0.018], [0.01, 0.015, 0.018, 0.16]],
"confidence": 0.95,
"horizon": 0.00396825,
"portfolio_value": 1000000
}
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({
weights: [0.3, 0.25, 0.25, 0.2],
covariance_matrix: [
[0.04, 0.006, 0.008, 0.01],
[0.006, 0.09, 0.012, 0.015],
[0.008, 0.012, 0.0625, 0.018],
[0.01, 0.015, 0.018, 0.16]
],
confidence: 0.95,
horizon: 0.00396825,
portfolio_value: 1000000
})
};
fetch('https://api.fincept.in/quantlib/portfolio/risk/cvar', 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/portfolio/risk/cvar",
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([
'weights' => [
0.3,
0.25,
0.25,
0.2
],
'covariance_matrix' => [
[
0.04,
0.006,
0.008,
0.01
],
[
0.006,
0.09,
0.012,
0.015
],
[
0.008,
0.012,
0.0625,
0.018
],
[
0.01,
0.015,
0.018,
0.16
]
],
'confidence' => 0.95,
'horizon' => 0.00396825,
'portfolio_value' => 1000000
]),
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/portfolio/risk/cvar"
payload := strings.NewReader("{\n \"weights\": [\n 0.3,\n 0.25,\n 0.25,\n 0.2\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"confidence\": 0.95,\n \"horizon\": 0.00396825,\n \"portfolio_value\": 1000000\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/portfolio/risk/cvar")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"weights\": [\n 0.3,\n 0.25,\n 0.25,\n 0.2\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"confidence\": 0.95,\n \"horizon\": 0.00396825,\n \"portfolio_value\": 1000000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/portfolio/risk/cvar")
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 \"weights\": [\n 0.3,\n 0.25,\n 0.25,\n 0.2\n ],\n \"covariance_matrix\": [\n [\n 0.04,\n 0.006,\n 0.008,\n 0.01\n ],\n [\n 0.006,\n 0.09,\n 0.012,\n 0.015\n ],\n [\n 0.008,\n 0.012,\n 0.0625,\n 0.018\n ],\n [\n 0.01,\n 0.015,\n 0.018,\n 0.16\n ]\n ],\n \"confidence\": 0.95,\n \"horizon\": 0.00396825,\n \"portfolio_value\": 1000000\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"cvar": 68234.12,
"confidence": 0.95
}
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient credits. This endpoint requires 5 credits."
}{
"detail": [
{
"loc": [
"body",
"expected_returns"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}Authorizations
API key for authentication. Get your key at https://api.fincept.in/auth/register
Body
application/json
Portfolio weights (should sum to 1.0)
Example:
[0.3, 0.25, 0.25, 0.2]
Asset covariance matrix (annualized)
Example:
[
[0.04, 0.006, 0.008, 0.01],
[0.006, 0.09, 0.012, 0.015],
[0.008, 0.012, 0.0625, 0.018],
[0.01, 0.015, 0.018, 0.16]
]
Confidence level (e.g., 0.95 for 95% CVaR)
Required range:
0.5 <= x <= 0.999Example:
0.95
Time horizon in years
Required range:
0.001 <= x <= 10Example:
0.00396825
Current portfolio value in currency units
Required range:
x >= 0Example:
1000000
⌘I
