Risk VaRAttribution
Attribute VaR to specified groups e.g. currency, book, trading division, strategy etc
Parameter | Description | Default | Options |
---|---|---|---|
portfolios Required |
Input portfolios. Can be trades in QuickTrade, FPML5, LCH, CME or SDR format. Or risk sensitivities in CRIF, LCH or CME format. Or portfolioIds of previously loaded portfolios Or any combination of these | ||
whatif Optional |
Whatif portfolios. Can be trades in QuickTrade, FPML5, LCH, CME or SDR format. Or risk sensitivities in CRIF, LCH or CME format. Or portfolioIds of previously loaded portfolios Or any combination of these | ||
valueDate Optional |
The value date in YYYY-MM-DD format. | 2024-12-03 | |
shiftSet Optional |
The set of shifts to use specified by [observation period].[holding period],[base ccy] | LCH.1Y.1D.USD | Clarus.1Y.10D.USD,Clarus.1Y.1D.USD, Clarus.2Y.1D.USD |
VaRLossMethod Optional |
Loss Method to use in the historical VaR calculation | VaR | VaR , ExpectedShortFall , WorstCase |
Confidence Optional |
Confidence Level to use in the historical VaR calculation | 99.0 | |
attributeBy Optional |
The trade attribute to attribute by - can be an X attribute e.g. Book, Business, Strategy | Currency |
import clarus response = clarus.risk.varattribution(attributeBy='Book',portfolios='1H') print (response)
import com.clarusft.api.model.risk.VaRAttributionRequest import com.clarusft.api.model.risk.VaRAttributionResponse ApiClient clarus = ApiClient.getDefault(); VaRAttributionResponse response = clarus.request(new VaRAttributionRequest().withAttributeBy("Book").withPortfolios("1H")); System.out.println(response);
import Clarus response = Clarus.Risk.varattribution(attributeBy="Book",portfolios="1H") print(response)
##
##Need to install packages once, if not already installed
##install.packages('httr')
##install.packages('readr')
##
library('httr')
##library('readr')
## Manually edit and set key/secret here ##
apiKey <- '...'
apiSecret <-'...'
request <- function(category, functionName, ...){
restUrl = paste0('https://apieval.clarusft.com/api/rest/v1/', category, '/',functionName, '.csv')
response <- POST(url=restUrl, body=list(...), encode='json', authenticate(apiKey, apiSecret, type='basic'))
if (response$status_code!=200){
stop(paste0('Request to ', category, '/', functionName, ' failed with status code: ', response$status_code))
}
return (response)
}
dataframe <- function(response){
return (read.csv(text=content(response, 'text'), sep=',', head=TRUE))
}
## filename <- file.path('C:', 'Temp', 'myfile.csv')
## myvalue <- <- read_file(filename)
r <- request('risk', 'VaRAttribution', attributeBy='Book', portfolios='1H')
df <- dataframe(r)
print (df)
import requests
import sys
import pandas
import io
#import os
# Example of REST API call to Clarus Microservices #
# Manually edit and set key/secret here #
apiKey = ''
apiSecret = ''
print (sys.version)
def request(category, functionName, **params):
restUrl = 'https://apieval.clarusft.com/api/rest/v1/' + category + '/' + functionName + '.json'
r = requests.post(restUrl, json=params, auth=(apiKey, apiSecret))
r.raise_for_status()
return r.json()
def dataframe(results):
return pandas.DataFrame(results['results'])
# filename = os.path.join('C:\\', 'Temp', 'myfile.csv')
# myvalue = open(filename).read()
r = request('risk', 'VaRAttribution', attributeBy='Book', portfolios='1H')
df = dataframe(r)
print(pandas.DataFrame.head(df))
use strict;
use warnings;
use MIME::Base64;
use JSON;
use REST::Client;
# Example of REST API call to Clarus Microservices #
my $client = REST::Client->new();
$client->addHeader('Content-Type', 'application/json');
# Manually edit and set key/secret here
my $apiKey = '';
my $apiSecret = '';
my $encoded_auth = encode_base64("$apiKey:$apiSecret", '');
$client->addHeader('Authorization', "Basic $encoded_auth");
my %params = ('attributeBy' => 'Book','portfolios' => '1H');
my $urlBase = 'https://apieval.clarusft.com/api/rest/v1/';
my $category = 'risk/';
my $name = 'VaRAttribution';
my $outputFormat = '.csv'; #can also be '.json' or '.tsv'
my $fullRESTUrl = $urlBase . $category . $name . $outputFormat;
$client->POST($fullRESTUrl,encode_json(\%params));
print 'Response: ' . $client->responseContent() . "\n";
print 'Response status: ' . $client->responseCode() . "\n";
printf('Example of REST API call to Clarus Microservices\n');
function r = request(category, functionName, params)
# Manually edit and set key/secret here #
apiKey = ''
apiSecret = ''
restUrl = ['https://' apiKey ":" apiSecret "@" 'apieval.clarusft.com/api/rest/v1/' category '/' functionName '.csv'];
[r, status, message] = urlread (restUrl, 'get', params);
if (status!=1)
error(['Failed on ' category '/' functionName ': ' message]);
endif
end
function ca = toCellArray(csvStr)
header_row = textscan (csvStr, "%s", 1, 'delimiter','\n');
headers = strsplit(char(header_row), ",");
numCols = size(headers)(2);
format = repmat('%s ', [1 numCols]);
ca = textscan (csvStr, format, 'delimiter',',', 'endofline',"\n");
end
params = {'attributeBy', 'Book', ...
'portfolios', '1H'}
r = request('risk', 'VaRAttribution', params)
ca = toCellArray(r);
ca
Example of REST API query URL (GET)
CSV
https://apieval.clarusft.com/api/rest/v1/risk/varattribution.csv?attributeBy=Book&portfolios=1H&
TSV
https://apieval.clarusft.com/api/rest/v1/risk/varattribution.tsv?attributeBy=Book&portfolios=1H&
JSON
https://apieval.clarusft.com/api/rest/v1/risk/varattribution.json?attributeBy=Book&portfolios=1H&
HTML
https://apieval.clarusft.com/api/rest/v1/risk/varattribution.html?attributeBy=Book&portfolios=1H&
Request Body
Submit to generate...
Response
Submit to generate...
{
"attributeBy" : "Book",
"portfolios" : "1H"
}