書評: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

ファイナンス 経済・産業

マネーサプライと物価上昇の因果推論

「流動性の罠 再考」で示したようにマネタリーベースの増加が期待物価上昇率に影響する経路はあるのでしょうか。消費者物価(CPI)の過去20年間のデータに注目すると、ドル円為替レートと連動して推移しているのがわかります。金融緩和が日米の金利差の変動をドル円為替レートに反映して、間接的にCPIに影響にする経路はあります。CPIとドル円為替レートの関係を分析してモデルを構築してみます。

CPI - USDJPY為替レートの因果関係

 日本の食料自給率はおよそ4割です。主食の米以外の多くの食品が輸入されています。国際的な貿易取引量(注1)は拡大して、その他の消費財についても輸入品の占める割合は多くなってきています。このことからCPIと外国為替レートには因果関係があることが推測されます。二つの指標の過去20年の時系列データを用いて両者の因果関係について調べてみます。

(注1)図9を参照してください

 CPIとUSDJPY為替レート、二つの時系列データに関してGranger因果律(注2)を計算します。二つの時系列データの因果律はベクター自己回帰 (Vector Auto Regression:VAR)モデルを適用して、帰無仮説が棄却できるかどうかで因果性を識別できます。Granger因果律を計算し、帰無仮説が棄却できない場合、両者には因果関係がないとみなせます。

(注2):Granger 因果性

以下のベクター自己回帰モデルを考えます。

Xt = c + Σαi Xt-l + Σ βj Yt-j + εt
Yt = c' + Σα'i Yt-l + Σ β'j Xt-j + ηt
   εt、ηt:ホワイトノイズ

{Yt} が{Xt}のGranger因果性がない場合、全てのj=1,2,....Lyについて、帰無仮説

H0: β1 = β2 = .... = βLy = 0
H0: Yt -\-> Xt

が成立します。

因果推定で、p値が0.05より大きい場合、帰無仮説が棄却できないため、Yt は Xt のGranger因果性はないとみなします。

 CPIと外国為替レートの関係についてGranger因果性を推定します。CPIのデータは総務省が公表しているWebサイト等から取得できます。USDJPY為替レートは民間の金融機関やデータ提供サイトから取得可能です。二つの時系列データは2002年01月〜2023年11月までの月次データを用います。

 以下のデータ系列を使用します。

図1 CPI , USDJPY為替レートのデータ系列

 Granger因果律のp-値が0.05より大きい場合に帰無仮説が棄却できないとみなします。帰無仮説が棄却できない場合、二つの時系列データ間での因果性は認められません。つまりCPIと為替レートの時系列な変動に因果関係はありません。

 計算にはVARモデルを使用します。上の図で示したcsv形式のデータをpythonのpandasデータフレームに読み込んで、モデルのAPIの引数のnumpy形式に変換します。以下モデルの構築と検証のソースコードはpython で作成します。

 

df_x = pd.read_csv(ファイルのパス,index_col=0)
df = pd.DataFrame({'x':df_x['Cpi-pctchg-cum'],'y':df_x['Usdjpy-pct-cum']})
# データフレームを配列へ変換
data = df.to_numpy()

 最大ラグを10(10ヶ月)に設定し、AICを用いて最適なラグを探索します。計算結果を示します。

図2 VARモデルの計算結果

 該当期間についてp-値を計算してみると、p-値は0.008413083698398213、つまり0.05以下となり帰無仮説が棄却できました。

 この期間のCPIと為替レートの間に明確な因果関係があるとみなせます。

因果性 スキャッターと密度の図示

 二つの指標の時系列データの依存性を調べるために、pythonの因果推論のライブラリtigramiteを使ってみます。Granger因果律の計算に用いた図1のデータの系列を用います。

 因果推論に必要なパッケージをインポートします。

# Imports
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
%matplotlib inline     
## use `%matplotlib notebook` for interactive figures
# plt.style.use('ggplot')
import sklearn

import tigramite
from tigramite import data_processing as pp
from tigramite.toymodels import structural_causal_processes as toys

from tigramite import plotting as tp
from tigramite.pcmci import PCMCI

from tigramite.independence_tests.parcorr import ParCorr
from tigramite.independence_tests.robust_parcorr import RobustParCorr
from tigramite.independence_tests.parcorr_wls import ParCorrWLS
from tigramite.independence_tests.gpdc import GPDC
from tigramite.independence_tests.cmiknn import CMIknn
from tigramite.independence_tests.cmisymb import CMIsymb
from tigramite.independence_tests.gsquared import Gsquared
from tigramite.independence_tests.regressionCI import RegressionCI

 データを図示してみましょう。

var_names = [r'$CPI$', r'$USD-JPY$']

dataframe = pp.DataFrame(data, var_names=var_names)
tp.plot_timeseries(dataframe); plt.show()

図3 CPI、USD-JPY為替レートの推移 (2002年1月ー2023年11月)

 CPIとUSDJPY為替レートの間の依存性を調べるために、従属性が線形であるかどうかをみてみます。スキャッタープロットと密度プロットを使います。

matrix_lags = None #np.argmax(np.abs(correlations), axis=2)
tp.plot_scatterplots(dataframe=dataframe, add_scatterplot_args={'matrix_lags':matrix_lags}); plt.show()

図4 CPI, USD-JPY為替レートのスキャッタープロット

 密度を表示します。

tp.plot_densityplots(dataframe=dataframe, add_densityplot_args={'matrix_lags':matrix_lags})
plt.show()

図5 CPI、USD-JPY為替レートの密度

CPI-為替レートモデル

 上で図示したように、両者には線形的な因果関係があることを前提にCPIのモデルを作ります。

 Grangerテストによって該当期間に二つの時系列データに因果関係があるとみなせるので、USDJPY為替レートの変動からCPIの値を導出するモデルが作れます。

CPI = f ( x )
 x:USDJPY為替レート

 簡単な線形モデルであれば、

CPI = α  x + η
x: USDJPY為替レート、η:ランダムノイズ

 このモデルを使ってCPIの確率分布を求めることができます。モンテカルロシミュレーションを用いてUSDJPY為替レートの推移データからCPIの事後分布を導出します。

 ベイジアン線形回帰モデルで予測したら、どうなるかみてみましょう。pymcを使って回帰モデルを作ります。

 最初にpymcのライブラリをインポートします。

%matplotlib inline

import arviz as az
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import pymc as pm
import pytensor
import pytensor.tensor as pt
import xarray as xr

 APIに渡す引数の形式にデータを変換します。

x_out = df['y'].to_numpy()
y_out = df['x'].to_numpy()

 モデルを定義してサンプラーを動かします。

with pm.Model() as model:
    xdata = pm.ConstantData("x", x_out, dims="obs_id")

    # 事前分布の定義
    intercept = pm.Normal("intercept", mu=0, sigma=1)
    alpha = pm.Normal("slope", mu=0, sigma=1)
    sigma = pm.HalfCauchy("sigma", beta=10)

    mu = pm.Deterministic("mu", intercept + alpha * xdata, dims="obs_id")

    # 尤度
    likelihood = pm.Normal("y", mu=mu, sigma=sigma, observed=y_out, dims="obs_id")

    # 推定
    trace = pm.sample(tune=2000)

 サンプリングが終了しました。

 以下のコードは、事後分布から回帰パラメータを得ることによって事後予測線形線を計算し、それら20の回帰線を図示します。

az.style.use("arviz-darkgrid")
post = az.extract(trace, num_samples=20)
x_plot = xr.DataArray(np.linspace(x_out.min(), x_out.max(), 100), dims="plot_id")
lines = post["intercept"] + post["slope"] * x_plot

plt.scatter(x_out, y_out, label="data")
plt.plot(x_plot, lines.transpose(), alpha=0.4, color="C1")
plt.legend(loc=0)
plt.title("Posterior predictive for normal likelihood");

図6 モデルの事後予測

az.plot_trace(trace, var_names=["slope","sigma", "intercept"]);

マネタリーベースの増加との関係

 このモデルでは、外国為替レートが変動すれば、それに応じて線形的にCPIが変動します。

 マネタリーベースの残高の増減との関係では、間接的に外国為替レートを経由して潜在変数である期待物価上昇率とCPIに影響を与えることができます。金融緩和が日米の金利差を生み、USDJPY為替レートに影響します。金利差がUSDJPY為替レートに影響するというモデルをCPIモデルとは別に作ります。

 Pearlのintervantionの概念(注3)を反映したモデルでは do(r:r=金利差)を使い、金融緩和のinterventionによる外国為替レートの分布はp(y| do(r=R_DIFF))

 政策金利の金利差を変数r=R_DIFFに強制し、外国為替レートに影響を与えます。外国為替レートは市場が決めるのが原則です。本来、外国為替レートに影響を与えるために政策金利を変えることは許容されませんが、金利差は外国為替レートに影響を与えるため、便宜上"rに強制してR_DIFFを与える"という表現を用います。

 これによってマネタリーベースの増加は、間接的に外国為替レートを経由してCPIに影響を与えることになります。

 ベイジアン階層モデルにPearlのdo-operatorを用いて、P(Y|do(r:r=R_DIFF))を導入し、外国為替レートの変動要因をパラメータ化することはできますが、ここでは単純化したCPIモデルの例を挙げています。

(注3)Judea Pearlは条件確率に対してinterventionとdo-calculusの概念を導入しました。観測値として条件を評価するのでなく、強制的にxに条件Xを与えます。Pearlの因果推論については以下の著作を参照してください。

"Causality Models,Reasoning, and Inference" Judea Pearl

現況と物価動向の予測

 ここで日本が直面しているのが、金利はゼロ以下には下げられないという問題です。

 日本ではマイナス金利が導入され、0以下で若干の政策余地がありますが、マイナス数%~10%に下げられるわけではありません。

 日本の金利はほぼゼロで一定なので、日米の金利差が変動するのはFRBの政策金利に依存するということになります。金利差が外国為替レートに影響するモデルでは、日本の金利が0以下に下げられないため、FRBの政策金利の増減で金利差が変わります。

 2022年以後、FRBはインフレ抑制のために金融引き締めを実施し日米の金利差は拡大していました。これはUSDJPY為替レートを円安方向にシフトさせました。これがCPIに反映して目に見える形で物価を上昇させる要因の一つとみなせます。

 このモデルでは日本のマネタリーベースの増加は日米金利差に影響しないため、円相場の対ドル為替レートに反映しません。そのためCPIには影響しないことになります。

 今後、インフレーションの抑制に成功したFRBが政策金利を下げてくると金利差は縮小し、USDJPYの為替取引のマネーフローは円高方向に逆転します。もちろん金利差だけでなく、地政学的な紛争も外国為替レートや財の価格に反映します。このモデルはそうした地政学的なリスクを考慮に入れていません。ランダムなノイズの項は組み入れてありますが、政治経済的にファットテイルな出来事も発生します。

 このモデルは2002年以後の20年間のドル円為替レートとCPIのデータをもとにしています。モデルは現実の近似ですが、ここで検討した外国為替レートだけに依存したCPIのモデルでは、この円の対ドルレートの上昇局面でCPIが再び0近辺から一定水準かそれ以下で推移することを示しています。

-ファイナンス, 経済・産業
-, , , , ,