Backtest VaR Model
curl --request POST \
--url https://api.fincept.in/quantlib/risk/backtest \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"actual_returns": [
-0.008,
0.012,
-0.018,
0.005,
-0.032,
0.009,
-0.015
],
"var_estimates": [
0.025,
0.025,
0.025,
0.025,
0.025,
0.025,
0.025
],
"confidence": 0.95
}
'import requests
url = "https://api.fincept.in/quantlib/risk/backtest"
payload = {
"actual_returns": [-0.008, 0.012, -0.018, 0.005, -0.032, 0.009, -0.015],
"var_estimates": [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025],
"confidence": 0.95
}
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({
actual_returns: [-0.008, 0.012, -0.018, 0.005, -0.032, 0.009, -0.015],
var_estimates: [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025],
confidence: 0.95
})
};
fetch('https://api.fincept.in/quantlib/risk/backtest', 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/backtest",
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([
'actual_returns' => [
-0.008,
0.012,
-0.018,
0.005,
-0.032,
0.009,
-0.015
],
'var_estimates' => [
0.025,
0.025,
0.025,
0.025,
0.025,
0.025,
0.025
],
'confidence' => 0.95
]),
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/backtest"
payload := strings.NewReader("{\n \"actual_returns\": [\n -0.008,\n 0.012,\n -0.018,\n 0.005,\n -0.032,\n 0.009,\n -0.015\n ],\n \"var_estimates\": [\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025\n ],\n \"confidence\": 0.95\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/backtest")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"actual_returns\": [\n -0.008,\n 0.012,\n -0.018,\n 0.005,\n -0.032,\n 0.009,\n -0.015\n ],\n \"var_estimates\": [\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025\n ],\n \"confidence\": 0.95\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/risk/backtest")
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 \"actual_returns\": [\n -0.008,\n 0.012,\n -0.018,\n 0.005,\n -0.032,\n 0.009,\n -0.015\n ],\n \"var_estimates\": [\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025\n ],\n \"confidence\": 0.95\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"exceptions": 12,
"total_observations": 252,
"exception_rate": 0.0476,
"expected_exceptions": 12.6,
"kupiec_lr_stat": 0.342,
"kupiec_p_value": 0.558,
"christoffersen_stat": 1.234,
"christoffersen_p_value": 0.266,
"traffic_light": "green"
}
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient credits. This endpoint requires 5 credits."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}quantlib-risk
Backtest VaR Model
Validates VaR model accuracy by comparing VaR estimates against actual realized losses. Performs Kupiec POF test, Christoffersen independence test, and Basel traffic light test. Essential for model validation, regulatory compliance, and ensuring risk models remain accurate over time. [Tier: PRO, Credits: 5]
POST
/
quantlib
/
risk
/
backtest
Backtest VaR Model
curl --request POST \
--url https://api.fincept.in/quantlib/risk/backtest \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"actual_returns": [
-0.008,
0.012,
-0.018,
0.005,
-0.032,
0.009,
-0.015
],
"var_estimates": [
0.025,
0.025,
0.025,
0.025,
0.025,
0.025,
0.025
],
"confidence": 0.95
}
'import requests
url = "https://api.fincept.in/quantlib/risk/backtest"
payload = {
"actual_returns": [-0.008, 0.012, -0.018, 0.005, -0.032, 0.009, -0.015],
"var_estimates": [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025],
"confidence": 0.95
}
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({
actual_returns: [-0.008, 0.012, -0.018, 0.005, -0.032, 0.009, -0.015],
var_estimates: [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025],
confidence: 0.95
})
};
fetch('https://api.fincept.in/quantlib/risk/backtest', 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/backtest",
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([
'actual_returns' => [
-0.008,
0.012,
-0.018,
0.005,
-0.032,
0.009,
-0.015
],
'var_estimates' => [
0.025,
0.025,
0.025,
0.025,
0.025,
0.025,
0.025
],
'confidence' => 0.95
]),
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/backtest"
payload := strings.NewReader("{\n \"actual_returns\": [\n -0.008,\n 0.012,\n -0.018,\n 0.005,\n -0.032,\n 0.009,\n -0.015\n ],\n \"var_estimates\": [\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025\n ],\n \"confidence\": 0.95\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/backtest")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"actual_returns\": [\n -0.008,\n 0.012,\n -0.018,\n 0.005,\n -0.032,\n 0.009,\n -0.015\n ],\n \"var_estimates\": [\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025\n ],\n \"confidence\": 0.95\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/risk/backtest")
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 \"actual_returns\": [\n -0.008,\n 0.012,\n -0.018,\n 0.005,\n -0.032,\n 0.009,\n -0.015\n ],\n \"var_estimates\": [\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025,\n 0.025\n ],\n \"confidence\": 0.95\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"exceptions": 12,
"total_observations": 252,
"exception_rate": 0.0476,
"expected_exceptions": 12.6,
"kupiec_lr_stat": 0.342,
"kupiec_p_value": 0.558,
"christoffersen_stat": 1.234,
"christoffersen_p_value": 0.266,
"traffic_light": "green"
}
}{
"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
Historical actual portfolio returns
Minimum array length:
250Example:
[-0.02, 0.01, -0.015]
Corresponding VaR estimates (positive values representing losses)
Example:
[0.025, 0.025, 0.025]
Confidence level used for VaR estimates
Example:
0.99
⌘I
