FRTB ModellableRF

Apply FRTB Modellability test to a list of risk factors to determine which pass or fail based on actual transactions in the past 1 year reported to Swap Data Repositories

Parameter Description Default Options
riskFactors
Optional
Risk factors to be tested. See risk factors.
ticker
Optional
BBG Ticker or list of tickers, instead of or in addition to Risk Factors See Tickers.
endDate
Optional
The end date in YYYY-MM-DD format 2024-03-19
cleared
Optional
Cleared or uncleared trades. C,U C , U
sef
Optional
Swap Execution Facility, refers to whether the transaction was On SEF or Off SEF or both. On,Off,NA NA , Off , On
source
Optional
The Swap Data Repositories to use as the source of trades. BBG,CME,DTCC,ICE BBG , CME , DTCC , ICE
jan2019Method
Optional
Jan 2019 Method true
import clarus

response = clarus.frtb.modellablerf(riskFactors='AUD BBSW 6M')
print (response)
import com.clarusft.api.model.frtb.ModellableRFRequest
import com.clarusft.api.model.frtb.ModellableRFResponse

ApiClient clarus = ApiClient.getDefault();
ModellableRFResponse response = clarus.request(new ModellableRFRequest().withRiskFactors("AUD BBSW 6M"));
System.out.println(response);
import Clarus

response = Clarus.Frtb.modellablerf(riskFactors="AUD BBSW 6M")
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('frtb', 'ModellableRF', riskFactors='AUD BBSW 6M')
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('frtb', 'ModellableRF', riskFactors='AUD BBSW 6M')
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 = ('riskFactors' => 'AUD BBSW 6M');

my $urlBase = 'https://apieval.clarusft.com/api/rest/v1/';
my $category = 'frtb/';
my $name = 'ModellableRF';
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 = {'riskFactors', 'AUD BBSW 6M'}

r = request('frtb', 'ModellableRF', params)
ca = toCellArray(r);

ca

Request Body

Submit to generate...
Response

Submit to generate...

{
  "riskFactors" : "AUD BBSW 6M"
}