市場創造型のイノベーション 書評:The Prosperity Paradox

2024/10/20

ノーベル物理学賞の対象としての機械学習  今年のストックホルムの物理学賞に、機械学習の分野への貢献に対してジョン・ホップフィールド氏と以前グーグルにいたトロントのジェフリー・ヒントン氏が選出された。  ACM、チューリング賞なら自然なのだが、コンピュータサイエンスの分野から物理学賞として選ばれるのは珍しい。ストックホルムの賞は物理学と化学と生理学の3種類しかないので、物理学的な考えがアルゴリズムに導入されているので物理学という枠組みが適用されるのであろう。それだけ機械学習の社会へのインパクトが大きいという ...

ReadMore

外国為替平衡操作のパラドックス

2024/9/20

 経済や金融の分野で、統計的な手法を使って市場を分析していると、実際の経済現象と一般に認識されている経済状況の間でパラドックスに出会うことがあります。  大規模金融緩和や長期間の金融緩和が経済活動の縮小を招くことや、通貨当局の外国為替市場介入により当局の意図とは逆方向に為替レートが推移することなどは、このサイトでも紹介しています。  ここでは以前、データの因果性を解析するツールの一つとしてcausal-learnや、CausalPyを紹介しました。パラドックスのように映る経済現象を正しく認知する上で因果性 ...

ReadMore

世界株式市場の混乱:外国為替市場介入による資金供与と相場操縦

2024/8/30

 2024年8月初旬、金融市場を揺るがす株式市場の乱高下が発生し、世界の主要な金融市場で混乱が見られました。東京市場では、8月5日に日経平均株価が12%を超える下落を記録しました。主要な原因と見られる背景が見過ごされているため、本稿でまとめておきます。  これは、端的に言えば犯罪収益によるドル円為替レートの相場操縦がもたらした株式市場の混乱です。 外為市場介入のリスク  前月の7月に財務省がドル売り市場介入を通じて、投機グループに資金を供与しました。建て玉余力を増加させた同グループがドル円の相場操縦を実施 ...

ReadMore

ヒューリスティックス:マーコヴィッツ・ポートフォリオ理論 対 不確実性

2024/8/22

 合理性の限界について検討を重ねていたハーバート・A・サイモンの時代は、ダニエル・カーネマン氏等の行動ファイナンスは経済学の主要な流れとはなっていませんでした。  サイモンは複雑系経済学の起源の一つとみなせますが、その時は複雑系という用語もありませんでした。 サイモンは人工的な現象(経済現象を含む)は、環境に従順であるという点で”環境依存性”を持っているとみなしていました。  サイモンの仕事を継承するような、現在、複雑系や行動心理学の分野で活動している人々は、不確実な状況での認知や予測に関して新しい知見を ...

ReadMore

マイナス金利 : ニューケインジアンの視点

2024/8/13

 多くのニューケインジアンのモデルでは、外因によりゼロ金利が想定されることで経済が流動性の罠に陥ることがあります。スウェーデン、デンマーク、スイス、ユーロ圏、日本で、深刻な不況に対応する非伝統的な金融政策として、金利を負の領域に導く政策が取られました。  欧州、米国ではコロナ・パンデミックからの回復と東欧での軍事侵攻を契機にしたグローバルなインフレーションに対応して、政策金利を引き上げました。日本は、最近マイナス金利政策を解除し、現在も量的緩和を継続しています。  量的緩和の効果に対しては、多数の研究報告 ...

ReadMore

書評:May Contain Lies -嘘を含んでいるかもしれない

2024/7/15

May Contain Lies: How stories, statistics and studies exploit our biases - and what we can do about it. Alex Edmans 嘘を含んでいるかもしれない:どのようにストーリー、統計、調査研究が私たちのバイアスにつけ込むか、私たちがそれについてできること。 嘘を含んでいるかもしれない  著者は、私たちの日々の生活に影響する誤った情報が氾濫している複雑な現代社会において、より賢明に考え、正しい判断を行う上 ...

ReadMore

現代のプロパガンダと量的緩和の陰影

2024/5/27

 ロシアが侵攻した地域で、老婆に物資を支給している映像を撮るロシア人を、ウクライナの現地の市民が動画撮影してSNSに投稿していました。ロシア兵は老婆に食料品を支給していましたが、その老婆は、解放している様子を演出するためにロシアから連れてきたエキストラでした。SNS動画には現地の市民がブーイングをしている様子が映されていました。  ロシアの国営放送では、そうしたエキストラを使った映像が放映され、ブチャでの惨状は放映されません。ロシア国内の市民が知るロシア語の報道は、現地を圧政から解放するロシア兵の映像です ...

ReadMore

causal-learnによる因果探索

2024/4/25

 【マネーサプライと物価上昇の因果推論】で、二つの時系列データ間のGranger因果性を調べました。ベクター自己回帰モデル(Vector Auto-Regression:VAR)を適用したものです。他にも、近年、新しい因果推論、因果探索アルゴリズムが提案されています。PythonやR上に実装された因果推論パッケージがAI関連技術に投資している企業や機関からリリースされています。  causalQueries, causalml, causal-learn等、【為替レートと地政学的リスク-割り込まれた時系列 ...

ReadMore

書評:Statistical Consequences of Fat Tails

2024/3/27

Statistical Consequences of Fat Tails Real World Preasymptotics, Epistemology, and Applications Nassim Nicholas Taleb Statistical Consequences of Fat Tails  タレブ氏の著書は、ビジネス書と一般向けの啓蒙書の印象がありますが、本書は統計の専門書になっています。  この著書は、不確実で複雑な現実社会をどのように生きるかという、著者のIncertoプロジェク ...

ReadMore

書評:BATTLEGROUND

2024/3/21

BATTLEGROUND Ten conflicts that explain the new Middle East. Christopher Phillips BATTLEGROUND - Ten conflicts that explain the new middle east  本書で示す中東は、14の異なる独立した国と地域からなります。著者は北アフリカのリビア、トルコも中東に拡張(モロッコ、アルジェリア、チェニジア)して論じています。イラン、イスラエル、トルコ、クルド等を除いて、多くの地域はア ...

ReadMore

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

為替レートと地政学的リスク- 割り込まれた時系列データのCausalPyによる分析

 R版の因果推論パッケージCausalImpactの評価のために、軍事侵攻が外国為替レートに与えた影響を、counterfactual推論(注1)の例として紹介しました。このCausalImpactのPython実装版がgoogleから提供されました。これはTensorFlow Probabilityの上に実装されています。その他、Python用の因果推論パッケージが多くリリースされています。その中でPyMCの因果推論ライブラリCausalPyを取り上げ、前述のR版CausalImpactで用いたデータセットを使ってこの実装を評価してみます。

注1:Counterfactual

実際の観測値に反する推論。もしその割り込み(intervention)が発生していなければ、観測データはどうなっていたかを実際とは異なる状況を想定して推論します。ここでは、ツールの評価用に入手が容易な時系列データのサンプルとして為替レートを用います。

因果推論ライブラリ

 ここで評価するツール以外にもPythonの因果推論パッケージが多くリリースされいます。西海岸の企業だけでなく、ハイテク企業やコンピュータサイエンスに力を入れている大学などが、最近、AIへの投資を増加させているので、Googleの他、複数の企業や研究機関からベイジアンと機械学習に関連した因果推論ライブラリが提供されています。別の機会にいくつか紹介したいと思います。

tfCausalImpact

 TensorFlow Probabilityは、当初、EdwordとしてTensorFlowを使って実装されていたPythonのベイジアンライブラリをTensorFlowが本体に取り込んで、機能を追加したものです。TensorFlowがKerasを内部に取り込んで本体のAPIとして提供しているのと同様です。以前のKerasやEdwordは外部ライブラリでなくTensorFlow内のAPIとして提供されています。

  • インストール
pip install tfCausalimpact

 APIの引数の仕様はR版を踏襲しており、ほぼ同じ仕様です。結果の出力も以下の記事で解説しているR版のCαusalImpactと同一の仕様になっています。

CausalPy

 CausalPyはPyMCをベースにした因果推論パッケージです。

 APIの引数の仕様は以下の”割り込まれた時系列データの例”を参照してください。結果の表示におけるHDIはHighest Density Intervalsを意味し0を含む、94%の信頼区間として定義してあります。

  • インストール
pip install CausalPy

割り込まれた時系列データの例

 R版のCausalImpactの評価で用いたデータセット(期間2021-05-12 ~ 2023-03-17のドル円為替レート)を使って、CausalPyの時系列データに対する割り込み(intervention)を評価します。最初にCausalPyをインポートします。

import arviz as az
import pandas as pd

import causalpy as cp
%load_ext autoreload
%autoreload 2
%config InlineBackend.figure_format = 'retina'
seed = 42
The autoreload extension is already loaded. To reload it, use:
  %reload_ext autoreload

 CausalImpactで用いた為替レートのデータ(USDJPY.csv)を読み込みます。

 pd.readcsv(index_colum = 0)でインデックスカラムを指定して読み込んだ場合、dateがindexとして認識されますがデータ型が文字列になります。このままCausalPyのAPIに渡すとindexがTimestamp型でないため、エラーになります。そのため、index_columを設定せずにcsvを読み込み、データフレームのインデックスをTimestamp型に設定します。

urlpath = "./../ファイルパス/USDJPY.csv"

#df_x = pd.read_csv(urlpath,index_col=0)
df_x = pd.read_csv(urlpath)
df_x.index = pd.to_datetime(df_x['date'])
df_x = df_x.drop('date',axis=1)

 割り込みの日時を設定し、新しいデータフレームを作ります。

treatment_time = pd.to_datetime("2022-02-25")
df = pd.DataFrame({ 'x':df_x['t'],'y':df_x['close']})
df.head()

データ系列は以下のようになります。

 モデルを定義し、PyMCのサンプラーを実行します。fomulaの定義"y ~ 1 + x"の最初の項の1は、線形回帰においてインターセプトを適合させるかどうか(0または1)を意味します。

result = cp.pymc_experiments.InterruptedTimeSeries(
    df,
    treatment_time,
    formula="y ~ 1 + x",
    model=cp.pymc_models.LinearRegression(sample_kwargs={"random_seed": seed}),
)

 サンプリングが終了しました。結果を表示します。

fig, ax = result.plot()

 R版CasalImpactと比較して,CausalPy版のCausalImpactも同じ三つのパネルを表示します。同様の結果を確認することができます。

result.summary()

総合的な影響による推論 - Synthetic controlの例

 CausalPyを使った複数のユニットの中の特定のユニットに処置を施す合成コントロール(Synthtic control)の例として、複数の通貨バスケットの中での出来事の影響によるJPYの推移を調べてみます。Synthetic controlのcounterfactualの例を外国為替レートに応用して検証してみましょう。

 日本円以外の主要国の通貨のクロスレートを用いて調べてみます。他通貨との比較をわかりやすくするために、円の為替レートはUSDJPYでなくJPYUSDを使います。通貨のクロスレートの単位を合わせるために、USD 1 : JPY 100でスケールを変換しています。ここで用いるJPYUSDの指標は、実際のJPYUSDレートを100倍しています。

 次の通貨、AUD,CHF,EUR,GBPを使います。counterfactual予測の前に、線形回帰と同様の考えで、これらの通貨を用いてJPYUSDを近似します。これらの通貨をdonor poolとみなし、JPYの結果を予測します。treatmentの時期は、前の割り込み時系列の例と同じ日程の2022年2月末日で設定します。シミュレーション後にtreatment以後のJPYのcounterfactual予測と実際のデータを比較します。

 主要通貨の対ドルレートのデータを’’crossUSD.csv"を読み込みます。

urlpath = "./ファイルパス/crossUSD.csv"

df_x = pd.read_csv(urlpath)
df_x.index = pd.to_datetime(df_x['date'])
df_x = df_x.drop('date',axis=1)
df2 = pd.DataFrame({ 'aud':df_x['Audusd'],'chf':df_x['Chfusd'],'eur':df_x['Eurusd'],'gbp':df_x['Gbpusd'],'y':df_x['Jpyusd']})
df2

 データフレームは以下のようになります。

 Synthetic control estimatorの予測には、pymc_modelsモジュールからWeightedSumFitter()を用います。

model2 = cp.pymc_models.WeightedSumFitter()

 formulaの構造は、以下の定義になります。interceptはfitさせません。

formula2 = 'y ~ 0 + aud + chf + gbp + eur'

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

treatment_time = pd.to_datetime("2022-02-28")
model2 = cp.pymc_models.WeightedSumFitter()
formula2 = 'y ~ 0 + aud + chf + gbp + eur'
results = cp.pymc_experiments.SyntheticControl(
    df2,
    treatment_time,
    formula = formula2,
    model = model2
)

 サンプリングが終了しました。結果を表示します。

fig, ax = results.plot()

results.summary()

 結果を見ると、図のSynthetic Controlとの間で幾らかの乖離があります。出来事の前まで、地域的に近いAUDとの連動の割合が大きかった分、実際の観測値は、AUDの推移より大きな変動をもたらしていることを意味しています。欧州通貨同様にエネルギー需給の影響を強く受けているため、乖離は大きくなってます。

 Synthetic controlの各通貨の重みの係数を表示します。

ax = az.plot_forest(results.idata, var_names="beta", figsize=(6, 3))
ax[0].set(title="Estimated weighting coefficients");

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