Risk Stress

Run stress test on portfolios

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-11-21
market
Optional
Market environment Id to use for calculation - either choose from options or specify market uploaded using MarketLoad service Clarus ASX , ASX IM , BHF , CME , CME IM , CME RT , Clarus , EUREX , HKEX , JSCC , LCH , LCH IM , LCH RT , LCH RT2 , RART , RASPER , RASPER_FF , SDR , SIMM , WP
scenarios
Optional
List of market scenarios to use. User can choose scenarios provided by Clarus or load their own scenarios Either user scenarios uploaded via ScenarioLoad service or predefined scenarios.
import clarus

response = clarus.risk.stress(portfolios='USD 10Y 100m pay 1.1%')
print (response)
import com.clarusft.api.model.risk.StressRequest
import com.clarusft.api.model.risk.StressResponse

ApiClient clarus = ApiClient.getDefault();
StressResponse response = clarus.request(new StressRequest().withPortfolios("USD 10Y 100m pay 1.1%"));
System.out.println(response);
import Clarus

response = Clarus.Risk.stress(portfolios="USD 10Y 100m pay 1.1%")
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', 'Stress', portfolios='USD 10Y 100m pay 1.1%')
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', 'Stress', portfolios='USD 10Y 100m pay 1.1%')
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 = ('portfolios' => 'USD 10Y 100m pay 1.1%');

my $urlBase = 'https://apieval.clarusft.com/api/rest/v1/';
my $category = 'risk/';
my $name = 'Stress';
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 = {'portfolios', 'USD 10Y 100m pay 1.1%'}

r = request('risk', 'Stress', params)
ca = toCellArray(r);

ca

Request Body

Submit to generate...
Response

Submit to generate...

{
  "portfolios" : "USD 10Y 100m pay 1.1%"
}