(This is a japanese translation of the original article Microservices: FRTB Modellable Risk Factors)
- FRTB規制は、ノン・モデラブルなリスク・ファクターは、キャピタルチャージにおいて、ストレス時のアドオンを賦課することを明示している
- リスク・ファクターをモデラブルとするためには、持続的に利用可能であるリアル・プライスであるかどうかのテストにパスしなければならない
- CLARUSのAPIは、OTCデリバティブについて、リスク・ファクターがモデラブルかどうかをテストする関数を提供している
- このファンクションは、多くのプログラミング言語で作動し、それらには、Python、R、Julia、C++、Javaが含まれる
- また関連する多くの関数が利用可能となっている。詳細はAPI Documentationを参照願いたい
FRTBのモデラブル・テスト
持続的に利用可能である“リアル・プライス”であるかどうかのテストの定義は;
- リスク・ファクターは年間を通して最低でも24回の取引を観測できるリアル・プライスであること
- 連続する2つの取引の間隔は最大で1ヵ月であること
- 上記についての検証は毎月行われること
- 期待ショートフォールの期間(例えば12か月)に亘って測定されること
より詳細な説明は、FRTB モデラブルとノン・モデラブルなリスク・ファクター参照
ブラウザー上でダイレクトに実行する
関数が簡単に実行できるようになっている。最初の例では、ブラウザー上で直接実行できるのだが、コードを書くことすら不要としている。
下記のURLは関数を実行することが可能となっている;
https://eval.clarusft.com/api/rest/v1/frtb/modellablerf.html?riskfactors=USSW2,USSW3,USSW4,USSW5
説明を簡略化するために、リスク・ファクターをBloombergの10年米国ドル・スワップのチッカーにセットする。
ドル・スワップのチッカーにセットする。URLをクリックして関数を実行させるためには、ここで、ユーザー・ネームとパスワードを設定して登録が必要だ。結果は下記のとおりで、全てのリスク・ファクターがモデラブル・テストをパスしている。
RiskFactor Ticker Modellable Count Gap Comment USSW2 USSW2 TRUE 6029 USSW3 USSW3 TRUE 5764 USSW4 USSW4 TRUE 2177
USSW5 USSW5 TRUE 12264
Pythonで実行
import clarus
clarus.ApiConfig.api_key = '' clarus.ApiConfig.api_secret = '' mylist = open('riskfactors.txt').read() print (clarus.frtb.modellablerf(riskfactors=mylist))
コードは2,3行で、ClarusのPythonモジュールに依拠している(これはひろく使われているRequestsライブラリーに依拠している)。また秘密鍵等はここで登録後入手可能。結果は次の通り;
RiskFactor Ticker Modellable Count Gap Comment
USSW1 USSW1 TRUE 1112
USSW2 USSW2 TRUE 6029
USSW3 USSW3 TRUE 5764
USSW4 USSW4 TRUE 2177
USSW5 USSW5 TRUE 12264
USSW6 USSW6 TRUE 1410
USSW7 USSW7 TRUE 3132
USSW8 USSW8 TRUE 1142
USSW9 USSW9 TRUE 1273
USSW10 USSW10 TRUE 19281
USSW11 USSW11 TRUE 76
USSW12 USSW12 TRUE 1029
USSW13 USSW13 FALSE 25 81 First trade not within a month of start
USSW14 USSW14 FALSE 30 61 Gap of greater than a month found
USSW15 USSW15 TRUE 1877
USSW20 USSW20 TRUE 2098
USSW25 USSW25 TRUE 817
USSW30 USSW30 TRUE 8887
USSW40 USSW40 TRUE 97
上記は、ほとんどのリスク・ファクターがテストをパスしている(つまりモデラブルの列がTrueになっている)ことと、当該リスク・ファクターの過年度の観測数が示されている。
テナー13年と14年の2つのリスク・ファクターがテストをパスしなかった。これは、年間24回のトレードが観測できなかったからではなく、連続する2つのトレードの間隔が、それぞれ81日、61日と、1ヵ月を超えたからである。
モデリング・テストの検証
使用されたトレードのリストに戻ることで、モデラブル・テストを検証する関数もある。下記は1つのリスク・ファクターについて、実行のためのコードの1部である。
response = clarus.frtb.modellablerftrades(riskfactor='USSW11'))
print (response)
このコードによって作成された最初の数行の結果は、
TICKER TIMESTAMP STATUS VENUE PRICE NOTIONAL SDR
USSW11 2016-03-31 11:24:09.0 C On 1.74 5000000.0 BBG
USSW11 2016-04-07 08:27:25.0 C On 1.664 1.0E7 BBG
USSW11 2016-04-08 02:13:58.0 C On 1.648 1.0E7 BBG
USSW11 2016-04-11 15:28:58.0 C On 1.675 5000000.0 BBG
USSW11 2016-04-12 15:56:32.0 C On 1.7012 7000000.0 BBG
USSW11 2016-04-27 19:36:57.0 C On 1.822 2.5E7 BBG
USSW11 2016-04-29 12:20:28.0 C On 1.807 3.9E7 BBG
USSW11 2016-05-02 13:20:14.0 C On 1.7971 3.9E7 BBG
USSW11 2016-05-06 14:24:31.0 C On 1.685 1.2E8 DTCC
USSW11 2016-05-23 13:32:10.0 C On 1.7625 3000000.0 DTCC
....
上記は各トレードのタイム・スタンプが記載されていて、クリアーまたはアンクリアー、オンまたはオフSEFといった取引基盤のタイプ、プライス、想定元本、報告がなされた情報蓄積機関を示している。
その他のリスク・ファクター
次に、両サイド米国ドルの1ヵ月Libor vs 3ヵ月Liborのベーシス・スワップに関するファクターを、適切なチックによって関数を走らせることでトライしてみる。
RiskFactor Ticker Modellable Count Gap Comment
USBA1 USBA1 TRUE 251
USBA2 USBA2 TRUE 304
USBA3 USBA3 TRUE 466
USBA5 USBA5 TRUE 965
USBA10 USBA10 TRUE 710
USBA15 USBA15 TRUE 150
USBA20 USBA20 TRUE 102
USBA30 USBA30 TRUE 133
上記は、1年から30年までの間で、我々が使用するカーブだ。
他にもトライすべきカーブがある。例えば、3ヵ月Libor vs 6ヵ月またはフェッド・ファンド・レート等。
続いて、他通貨、またはクロス・カレンシー・スワップ。
続いて、スワップションのボラティリティ
それらは、金利デリバティブのトレーディング・デスクの相当部分のリスク・ファクターをカバーするだろう。
内部モデルで使われるリスク・ファクターを設定するための多くのデータが用意されている。そして重要なことは、これらは、コストとなるストレス期のアドオンとしての資本賦課ではないことを保証する。
もしこの試行に興味のある方はご連絡をお待ちしています。
無料ニュースレターの入手先は、こちらです