(This is a japanese translation of the original article Microservices: A SIMM Sensitivities Calculator)
- ClarusのAPIにはSIMMのセンシティビティを計算する関数があり、FpMLやCSVトレード・リスト・ファイルを含む多くのフォーマットが利用可能だ。
- 計算結果はISDA SIMM CRIFファイル・フォーマットに出力される
- 関数は一般的な言語、すなわちPython、R、C++、Julia、Java等の言語で実行可能だ
- その他にもたくさんの関数が利用可能だ。詳細はAPI documentationを参照いただきたい。
ブラウザで直接実行
SIMMセンシティビティ計算関数がどのように実行できるのかを簡単に紹介するために、コードを書くことなくブラウザで直接実行させてみよう。
下記URLは関数を実行するのに十分になっている。結果を見てみよう。
https://eval.clarusft.com/api/rest/v1/simm/sensitivity.html?trades=USSN015
USドルの1x5のスワップションを表すBloombergのチッカーであるUSSN015にパラメーターを設定する。SIMMのセンシティビティは以下のとおりだ。ただし、初回は、ユーザーネームとパスワードを入力する必要がある。(登録はこちらで)
トレード・フォーマット
Financial Product Markup Language(FpML)はOTCデリバティブを取り扱うために、市場参加者の間で幅広く利用されているXMLのスタンダードだ。我々のAPIはFpMLだけでなく、その他にもCSVトレード・リスト・ファイルを含むいくつかのフォーマットを
利用できるようになっている。
下記の例では、CCPのトレード・リスト・ファイルを使うが、他のフォーマットでも全く同じことが可能だ。
Pythonでの実行
CSVトレード・リストを使ってSIMMのセンシティビティを計算するために、URLの中に全てのトレード・リストをタイプすることはできないが、その代わり、ファイルからトレード・リストをロードするためにPython を使い、トレード・パラメーターに割当てることで、Clarus SIMMセンシティビティ関数を実行する。ちなみに、フォーマットを明確に明示する必要はない。単にデータを渡すだけで、関数がそれを理解してくれる。非常に簡単で便利なアプローチだ。
APIはファイルに出力可能あるいはさらなる処理のためにプログラムの中に取り込み可能なかたちで答えを返す。
下記はコードの一部分だが、主要なステップを示している
my_csv_trade_list = open('IRSTR_Clarus_123_20170330.csv').read()
r = clarus.simm.sensitivity(trades=my_csv_trade_list)
print(r)
このコードで出力されるのは(紙面の都合で右端の列は削除している);
RiskType Qualifier Bucket Label1 Label2 Amount \
Risk_IRCurve USD 1 2w Libor3m -2.56
Risk_IRCurve USD 1 3m Libor3m -37.49
Risk_IRCurve USD 1 6m Libor3m -7.43
Risk_IRCurve USD 1 1y Libor3m -5000.42
Risk_IRCurve USD 1 2y Libor3m -18.61
Risk_IRCurve USD 1 3y Libor3m -117.22
Risk_IRCurve USD 1 5y Libor3m 18678.81
Risk_IRCurve USD 1 10y Libor3m 9520.8
Risk_IRVol USD 1 1y Libor3m 1613200.99
他の言語、RやJuliaなどでもよく似たアプローチをとることが可能だ。サンプルはSIMM sensitivity API Documentationで見ることができる。
上記の例で使われているコーディングを完了したものが下記である。これはClarus python module(”Requests”にある一般的なライブラリー)を利用している。秘密鍵等はここで登録後入手可能。
import clarus
# Example of REST API call to Clarus Microservices #
# Manually edit and set key/secret here #
clarus.ApiConfig.api_key = ''
clarus.ApiConfig.api_secret = ''
my_csv_trade_list = open(IRSTR_Clarus_123_20170330.csv').read()
print(my_csv_trade_list)
r = clarus.simm.sensitivity(trades=my_csv_trade_list)
print(r)
# Now save results to create ISDA SIMM CRIF file #
f = open('clarus/CRIF.csv', 'wt')
f.write(r.text)
f.close()
無料ニュースレターの入手は、こちらからです