グラフィカル・モデルを基にした因果探索

2025/1/21

Rによるベイジアンネットワークを用いた因果探索。 有向グラフ因果モデル(DGCMs)、またはDAGは、因果関係を説明し、データから真の因果の関係を探索するために計算に用いる方法です。 causal-learnやcausalpyというpythonの因果探索ライブラリを評価しました、Rにも同様のライブラリが提供されています。ここでは、CRANに登録されているRのライブラリpcalgとbnlearnに実装されているいくつかの因果探索アルゴリズムを評価します。 2025年の10大リスク  ユーラシア・グループは、 ...

ReadMore

JupyterノートブックでRを使う方法

2025/1/20

Pythonの開発環境としてJupyter notebookがよく使われています。RでもPython同様にJupyter によるコードの編集、実行環境が利用できます。データサイエンスでは、主にJulia, Python, Rという言語が使用されますが、このイニシャルを繋げるとJupyterになります。 Jupyter notebook  R環境設定  JupyterからRを使うには、Rを起動したコマンドプロンプトから以下のコマンドを使います。  使用しているバージョンのR環境にJupyterのカーネルのパ ...

ReadMore

ドル円為替レートと物価上昇の関係:非線形モデル

2024/12/29

【マネーサプライと物価上昇の因果推論】で、線形モデルを適用して因果関係を調べてみました。物価上昇がドル円為替レートと因果関係があり、国内の金融政策には影響を受けていないことを示しました。ここでは、このドル円為替レートと物価上昇の関係に非線形なモデルを適用した例を示します。 USDJPY為替レートと物価上昇  最初に、【マネーサプライと物価上昇の因果推論】で使った同じデータセットを読み込みます。 図1 CPIーUSDJPY為替レートのデータセット  このデータセット(期間2001年12月〜2023年11月の ...

ReadMore

Apple Silicon Mac の R バージョン更新・インストール

2024/12/25

ARM Mac(Apple silicon)用の新しいバージョンの R バイナリパッケージがリリースされていたので(R4.4.2 released on 2024/10/31) 更新します。 CRANから Rバイナリパッケージをインストール 以下のCRANのサイトにアクセスしてダウンロードします。 https://cran.rstudio.com "Download R for macOS" をクリックします。  Linux(Debian, Fedora/Redhat, Ubuntu) またはWindow ...

ReadMore

書評:Essential Math for AI

2024/12/23

Essential Math for AI:Next-Level Mathematics for Efficient and Successful AI Systems Hala Nelson Essential Math for AI:Next-Level Mathematics for Efficient and Successful AI Systems  本書は、機械学習に関してトピックごとに関連する数学が挿入してあります。数学の理論や証明、プラミングコードは記述してありません。  読者として、数 ...

ReadMore

書評:Supremacy

2024/12/20

Supremacy: AI, ChatGPT and the race that will change the world Parmy Olson Supremacy - AI, ChatGPT and the race that will change the world  ジェフリー・ヒントン氏のチームがGPUにCNNを実装したAlexNetを使って画像認識でブレークスルーを起こしたのが2012年です。  5年後の2017年にGoogleのチームがAttentionモデルを使ったTransforme ...

ReadMore

R統合開発環境 RStudioのインストール

2024/12/10

 ARMネイティブなRStudioがリリースされていたのでインストールしました。  AppleSilcon版(ARMコアのMシリーズプロセッサ) Mac用のAnacondaをインストールしたときに、RStudioはバンドルされていませんでした。  Rの統合開発環境(IDE) RStudioは、公益法人RStudioが開発元でしたが、2022年に法人形態が変更され、Positという名称になっています。また、Positは、Rの開発、メンテナンスを行なっているR ファウンデーションとは無関係です。 RStudi ...

ReadMore

書評:Why Machines Learn

2024/11/25

Why Machines Learn: The Elegant Math Behind Modern AI Anil Ananthaswamy Why Machines Learn: The Elegant Math Behind Modern AI  本書は1950年代のローゼンブラットのパーセプトロンから現代の深層機械学習までの物語を記述してあります。  今年、2024年のノーベル物理学賞を授与された、ホップフィールド氏(John Hopfield)とヒントン氏(Geoffey Hinton)の仕事も ...

ReadMore

書評:The Model Thinker

2024/11/18

The Model Thinker: What You Need to Know to Make Data Work for You Scott E. Page The Model Thinker: What You Need to Know to Make Data Work for You  本書のサンプルを目を通してみると、本文がチャーリー・マンガー氏の言葉の引用から始まっています。  ー賢明になるためには、頭の中にモデルを持つことだ。このモデルの格子の中に、直接の経験と、代行による間接的な経験の両 ...

ReadMore

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

2024/12/26

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

ReadMore

ファイナンス

LSTMで株価予測

LSTMはRNNの一つですが、言語処理向けに開発されてきました。

Pythonのコンファレンスで、いくつかLSTMを用いた株価予測に関してプレゼンがあったので検討してみました。

LSTM

金融市場の多くのモデルは、効率的市場仮説(以下 EMH)を前提にしています。

株価の時系列データはランダムであり、ドリフトフォース(トレンド項)にランダムな要素を加味してモデル化されています。

ブラウン運動と同じモデルです。

一方、言語の時系列データは、自然発生的に法則性を内在して形成されています。

言語のワードの順序は、プレフィックス、ポストフィックスなどに決まったパターンがあり、言語の文法として体系化されています。

これは、ニューラルネットワークによって学習することができます。LSTMはそうした文法の学習など、言語処理系のアプリケーション向けに作られています。

LSTMに正弦波を学習させた例があります。

正弦波は明確に規則性のあるデータです。

LSTMに学習させて出力した例では、振幅が徐々に現象する点はあるのですが、正弦波を再現しています。

では、果たして株価の時系列データをLSTMに学習させた場合、LSTMは何らかの法則性をデータから抽出できるでしょうか。

これは株価の時系列データに私たちの知らない何らかのパターンが存在しており、それを機械学習によって抽出してみようという試みです。

時系列データのパターンが既知であれば、LSTMにそのパターンを学習させることは可能です。

機械翻訳では、翻訳の誤りを外部から訂正することで翻訳の精度を上げていきます。

モデル

以下のモデルを検討してみましょう。

N日後の株価の上昇、下落を予測させるモデルです。

ここでは先物価格の時系列データを使って、翌日の株価を予測させます。

LSTMの実装には、tensorflowをバックエンドにしたKerasを用います。

学習モデルは、一定の期間単位の株価を読み込み、翌日の株価が上昇したか、下降したかを学習させます。

予測精度が50%を超えるようであれば、データから法則性を抽出していると言えます。

取引コストを差し引いて、取引回数を重ねると、実際の運用に有効であるとみなせます。

Kerasのインターフェイスを使ってPythonで組んでみます。

トレーニングエポック数:32
バッチサイズ:32

に設定してネットワークを学習します。

入力層 ドロップアウト0.2  lstm  lstm  dropout   dense
model = Sequence()
model.add()
model.add(Dropout(0.2))
...
model.add(Dense(1))
....

上記のように、Kerasではモデルに層を追加していくことで、多層ニューラルネットワークを簡単に組むことができます。

損失関数に mse, 最適化アルゴリズムには adam を使用してモデルをコンパイルします。

学習データにはTopixの先物データを使います。

では実行してみましょう。

以下は、Jupyter上で実行した結果のスクリーンショットです。

予測結果

今回の学習データの中で、そのカテゴリー(次のN日後の価格の上下変動)に分類できる特徴量の抽出は見られません。

学習データを変えて、様々な条件下で試してみると、季節要因やその他の要因による規則性を見出す可能性はあります。

特定のデータから市場の特異点を抽出することができるかもしれません。

多くのデータを用いて、詳細に検討してみるのも良いでしょう。

他のモデルを用いた手法で、より良い結果をもたらす候補がいくつかあります。

そちらの手法を洗練させることにしますが、機械学習は発展途上の分野で様々な手法と応用例があります。

他の様々な手法を検討しても良いでしょう。

-ファイナンス
-