書評:Shocks, Crises, and False Alarms: How to Assess True Macroeconomic Risk

2025/4/20

Shocks, Crises, and False Alarms: How to Assess True Macroeconomic Risk Philipp Carlsson-Szlezak, Paul Swartz Shocks, Crises, and False Alarms: How to Assess True Macroeconomic Risk  本書はマクロ経済における近年見られたような、ショック、危機などのリスクを案内します。  マクロ経済のリスクを判断するとき、リスクが実際のショック ...

ReadMore

合衆国の新関税の税率と貿易収支

2025/4/17

2025年4月2日に合衆国の新しい関税の税率が公表されました。現在の貿易収支の状況と導入される関税の税率をまとめます。 合衆国の貿易収支 図1 合衆国の貿易収支2023年(単位:USD million)  図1は、左側が輸出国、右側が輸入国です。マウスポインタを領域の上に置くと、輸出入額(単位:100万USドル)を表示します。 データソースはJETROがまとめている貿易投資年報より参照。 新関税の税率と各国の対米貿易収支 図2 関税税率と対米貿易収支 対米貿易収支は、輸出額から輸入額を減算した値(単位:1 ...

ReadMore

強化学習による因果探索 gCastle因果探索アルゴリズムの検証(3)

2025/3/18

gCastleに実装された探索アルゴリズムの中で、強化学習を使ったアルゴリズムが高い性能を示しています。本稿ではこの探索のための強化学習アルゴリズムを解説します。 強化学習を使った探索  強化学習は一般的にポリシーを学習することを目的に用いられますが、彼らはこれをDAGの探索に使っています。  巡回セールスマンの問題と同様に、d次元のnシーケンスでベストスコアを導くことで、入力データからバイナリの隣接行列の生成を考えます。  隣接行列を出力するためにエンコーダ/デコーダ・モデルを作りますが、エンコーダ自己 ...

ReadMore

CastleBoardの使い方 gCastle因果探索アルゴリズムの検証(2)

2025/3/2

中国のAI技術動向の調査を兼ねて、gCastleに実装された因果探索アルゴリズムを検証しました。gCastleはGUIツールCastleBoardを含んでいますが、パッケージにツールのマニュアル類は添付されていません。そのため、本稿では実際にアルゴリズムを検証するためのCastleBoardの使い方について解説します。 CastleBoardの操作  GUIツールはいくつかの設定項目への入力でテストデータを生成できるため、テストプログラムを組むより簡単にアルゴリズムを検証できます。ツールの機能は主に二つの ...

ReadMore

マイニング・セクターのリスク許容度、関税の影響 (DoubleMLの推論)

2025/3/14

 2025年2月に合衆国の新政権の政策として、鉄鋼とアルミニウムに25%の関税が課されることが決定されました。一方で、ウクライナへのこれまでの支援の対価として、ウクライナの鉱物資源などの天然資源の権益取得が交渉されています。  この関税政策が、原料である鉄鉱石やボーキサイトなどの鉱物資源の採掘を行なっている企業に与える影響について分析します。  分析手段として機械学習を使った推論手法、DoubleML(Double Machine Learning)を用います。このDoubleMLという推論手法と同じ名称 ...

ReadMore

gCastle 因果探索アルゴリズムの検証

2025/2/28

gCastleは、因果探索アルゴリズムが実装された因果の構造を学習するツールチェインです。パッケージは、Webアプリを含んでおり、因果探索アルゴリズムがGUIベースの操作で検証できるようになっています。 gCastle 概要  Huawei社のリサーチラボから提供されています。因果探索アルゴリズムが実装されており、Webアプリを使用してアルゴリズムの動作が検証できます。  GCastleの名称は、Gradient-based Causal Structure Learning pipeline. の頭文字 ...

ReadMore

クレジット・カードの種別と利用額の最適化 YLearnによる因果推論(2)

2025/2/20

YLearn因果推論パッケージを使ったケース・スタディを使ってYLearnの機能を解説します。YLearnの因果推論パイプラインを使ったマーケティング上の分析の一つになります。クレジット・カードのグレードを更新した場合の効果の推論です。 機能と仕様  以下、簡単に機能をまとめ、最後にケーススタディを使って動作を確認します。ケース・スタディでは、Kaggleの実際のデータセットを使います。 DAG グラフと交絡因子  観測されていない変数はconfounding arcとして定義し、下の図1では(黒の点線) ...

ReadMore

YLearnによる因果推論(1) 概要とセットアップ

2025/2/20

 因果推論はAIシステムが、イベント間の真の因果関係をよりよく理解する助けになります。中国製のLLMが最近、話題(注1)になっていたので、データサイエンス分野で中国の因果推論に関する取り組みとツールについて評価します。  因果推論や因果探索のツールとして、Huaweiが提供しているgCastleと、因果探索・因果推論ツール、ylearnを使います。gCastleはPyTorchで実装された因果探索パッケージです。因果関係に関連した代表的なアルゴリズムが実装されて、検証ツールが提供されています。Huawei ...

ReadMore

Jupyter-notebookがAnaconda Navigatorから起動できない問題

2025/2/6

新しいAnaconda Navigatorをインストールしたところ、jupyter-notebook(7.3.2)がNavigatorから起動できない問題がありました。 Navigatorのエラーメッセージは、次のようになっています。 【The file /Users/xxx/anaconda3/bin/Jupyter_mac.command does not exist.】 jupyter_mac.command does not exist.  問題は、インストールまたはNavigatorが参照してい ...

ReadMore

Apple Silicon Mac 用 Anacondaバージョン更新・インストール

2025/2/5

Apple Silicon用に新しいバージョンのAnacondaがリリースされていたので、Navigatorの更新を兼ねてインストールします。 (Mac OSの更新(Sequoia15.3)によって、使用中のNavigatorが起動しなくなったため) Anaconda Navigatorのインストール  以下のAnacondaのサイトにアクセスします。最近のAIに対する、人と資本、計算リソースの流れを反映した画面に様変わりしています。 https://www.anaconda.com  【1】画面左上のP ...

ReadMore

slide ファイナンス リスクモデル

コピュラ、相関、従属性、分布

 

ブラックスワン

 ナシーム・タレブ氏はブラックスワンで非常に稀な頻度で発生するインパクトの高い事象について著しています。

 彼がブラックスワンの概念を世に広めてから、テイルリスクという言葉もよく知られるようになりました。

 テイルは確率分布の裾の部分、正規分布のベルカーブという釣鐘型の分布曲線の両端のことを指しています。この部分の意味するところは、非常に頻度が低いことで、分布の中心部分が発生頻度が高い事象になります。多くの金融市場の期待収益は、この分布を前提にモデル化されています。ランダムウォークモデルによる効率的市場仮説(EMH)というものです。

 タレブ氏は、”そうとばかりは言えないよ。ブラックスワンは分布より高い頻度で起きたりする。”と説いています。そのことを、彼の固有のアフォリズムを用いて教えてくれます。

 分布のテイルにあるリスクは、もっと分厚い頻度の分布になっています。ファットテイル、あるいはヘヴィテイルというものです。

コピュラ

 コプラは英語やラテン系の言語などで、二つのワードを連結して主語と述語の関係を作り出す動詞のことを言います。英語のbe動詞などを指しますが、数学の世界では接合関数と呼ばれています。

 コピュラ(接合関数)という概念は、複数の対象間の従属性をフレームワークとしたモデルです。同時分布関数は、個々のリスク要因の周辺的挙動とそれらの要因間の従属構造を説明します。コピュラは二つ以上の対象のそれぞれの挙動とその従属性、極端な結果の従属性を説明するのに役立ちます。

 いくつかの金融危機や経済変動において、一つの市場の挙動が他の市場に伝搬するような現象が見られます。

 両者の関係は、因果推論などのフレームワークで解析することもできます。その因果性については別の機会に記すことにします。

 ここではコピュラの従属性というフレームワークを用いてリスク管理に役立てます。

テイルの非対称性

ポイント

テイルの非対称性

 コピュラはテイルの非対称性を示すケースで従属構造を記述するのに向いています。

 テイルの非対称性というのは、正規分布が示すベルカーブの外形と比較して、平均値から離れた裾野の部分でプラス側とマイナス側における厚みの相違のことです。

infobar

非対称性は「ブラックスワン」の著者タレブ氏の他の著作でもよく強調される概念の一つです。

 

 ベルカーブで示す期待収益の確率分布の曲線が、左の裾野で厚くなっているケースをテイルリスクと呼んだりします。

 ベルカーブの裾野の相違、期待リターンの分布が左サイドに盛り上がった分布は、ファットテイルまたはヘヴィテイル現象です。

 これは、期待収益(損失)が正規分布に比べて大きい事象の確率を示しています。

テイル従属性

 テイルリスクは、下落局面での相関リスクとして捉えることができます。

 ファットテイル部分での各株式、あるいは他の金融商品の価格変動でも同様の現象が見て取れます。

 この現象は金融市場で取引される商品の価格変動に共通した特徴の一つです。

method:Kendall

ケンダールの順位相関は、データの順位だけから計算できる計算できるスカラー値の従属性尺度です。

線形相関より

(x1 - X~1)(x2 - X~2) > 0 のとき  協和

          < 0 のとき  不協和

 価格変動に関する従属性のある時系列データは、正規分布に比べて裾野の厚い(ファットテイル)な挙動を示します。

 これをテイル従属性という概念で捉えてみます。

 非常に低い確率で発生する挙動である市場Aの価格変動が、同時に低い確率で発生する別な市場Bの挙動として与えられます。

 この条件での確率分布は、以下の式で示され、テイル従属性はこの確率分布で与えられます。

λ (p)  = ( C(p,p)) / p

ケンダールの手法によりVaRを計算してみます。

 ケンダールのVivariate 分布

P(C (U ,V))< t) = t - φ(t) /φ+(t) ->Kc(t)

GARCH-Copula フレームワーク

 Rのパッケージでは、fGarchのパッケージを利用することができます。

 fGarch, QRMから 期待ショートフォール(CVaR)を計算してみましょう。

以下のパッケージを読み込みます。

libraray(QRM)
library(fGarch)
>library(QRM)
要求されたパッケージ gsl をロード中です
要求されたパッケージ Matrix をロード中です
次のパッケージを付け加えます: ‘Matrix’
以下のオブジェクトは ‘package:tidyr’ からマスクされています:
expand, pack, unpack
要求されたパッケージ mvtnorm をロード中です
要求されたパッケージ numDeriv をロード中です
要求されたパッケージ timeSeries をロード中です
要求されたパッケージ timeDate をロード中です
次のパッケージを付け加えます: ‘timeDate’
以下のオブジェクトは ‘package:xtable’ からマスクされています:
align
次のパッケージを付け加えます: ‘timeSeries’
以下のオブジェクトは ‘package:zoo’ からマスクされています:
time<-
次のパッケージを付け加えます: ‘QRM’
以下のオブジェクトは ‘.GlobalEnv’ によってマスクされています:
DJ
以下のオブジェクトは ‘package:ismev’ からマスクされています:
gamGPDboot, gamGPDfit, GPD.predict
以下のオブジェクトは ‘package:fExtremes’ からマスクされています:
hillPlot
以下のオブジェクトは ‘package:evir’ からマスクされています:
hill
以下のオブジェクトは ‘package:base’ からマスクされています:
lbeta

メッセージが出力されることがあります。

R実行環境に多数パッケージがインストールされているため、バッティングする部分があるためです。

QRM以外のパッケージがインストールされていなければ、このメッセージは出力されません。

先に進めて次のパッケージ fGarch を読み込みます。

>
>library(fGarch)
NOTE: Packages 'fBasics', 'timeDate', and 'timeSeries' are no longer
attached to the search() path when 'fGarch' is attached.

If needed attach them yourself in your R script by e.g.,
require("timeSeries")

次のパッケージを付け加えます: ‘fGarch’
以下のオブジェクトは ‘package:TTR’ からマスクされています:
volatility

データとしてEUの市場データを使います。

data(EuStockMarkets)
loss <- as.data.frame(na.omit(-1.0 * diff(log(EuStockMarkets)) + * 100.0))
gfit <- lapply(loss,garchFit, formula = ~ garch(1,1), cond.dist = "std", trace=FALSE)
gprog <- unlist(lapply(gfit, function(x) predict(x,n.ahead=1)[3]))
gshape <- unlist(lapply(gfit, function(x) x@fit$coef[5]))
gresid <- as.matrix(data.frame(lapply(gfit, function(x) x@residuals / sqrt(x@h.t))))
U <-sapply(1:4, function(y) pt(gresid[,y], df=gshape[y]))
cop <- fit.tcopula(Udata = U, method = "Kendall")
rcop <-rcopula.t(100000, df=cop$nu,Sigma=cop$P)
qcop <- sapply(1:4, function(x) qstd(rcop[,x], nu=gshape[x]))
ht.mat <- matrix(gprog, nrow = 100000, ncol = ncol(loss), byrow = TRUE)
pf <- qcop * ht.mat
weights <- c(0.4,0.2,0.2,0.2)
pfall <- (qcop * ht.mat) %*% weights
pfall.es95 <- median(tail(sort(pfall), 5000))
pfall.es95
> data(EuStockMarkets)
> loss <- as.data.frame(na.omit(-1.0 * diff(log(EuStockMarkets))
+ * 100.0))
> 
> gfit <- lapply(loss,garchFit, formula = ~ garch(1,1),
+ cond.dist = "std", trace=FALSE)
> gprog <- unlist(lapply(gfit, function(x)
+ predict(x,n.ahead=1)[3]))
> gshape <- unlist(lapply(gfit, function(x) x@fit$coef[5]))
> gresid <- as.matrix(data.frame(lapply(gfit,
+ function(x) x@residuals / sqrt(x@h.t))))
> 
> U <-sapply(1:4, function(y) pt(gresid[,y], df=gshape[y]))
> cop <- fit.tcopula(Udata = U, method = "Kendall")
> rcop <-rcopula.t(100000, df=cop$nu,Sigma=cop$P)
> qcop <- sapply(1:4, function(x) qstd(rcop[,x], nu=gshape[x]))
> ht.mat <- matrix(gprog, nrow = 100000, ncol = ncol(loss),
+ byrow = TRUE)
> pf <- qcop * ht.mat
> 
> weights <- c(0.4,0.2,0.2,0.2)
> pfall <- (qcop * ht.mat) %*% weights
> pfall.es95 <- median(tail(sort(pfall), 5000))
> pfall.es95
[1] 2.590697
> 

-slide, ファイナンス, リスクモデル
-