AIとファイナンス

AIとファイナンスの架け橋、それがこのブログの目指すところです。兼業投資家向けに、Pythonを駆使して株やFXの分析を「自分で」行えるようになるための情報を提供します。ニューラルネットワークを活用した市場予測から、実証済みの金融理論まで、全てのコードを公開し、誰もが活用できるように!是非色々なコードで遊んでみてください!

【Python】米国CPIと日経平均株価の関係とは?【実践編】

今回の記事は前回の続き日経平均株価とCPIの関連性を調べていきます。

みんかぶの記事にもあるように米国CPIは月に一度、対象月の翌月の15日前後に発表されます。CPIの値と日経平均株価との関連を調べたいので前処理で工夫しています。

 

1. ライブラリのインポート: このコードブロックでは、データ分析に必要なライブラリをインポートします。主にyfinanceを使用して金融データを取得し、pandasでデータ操作を行うために必要です。

import yfinance as yf
import pandas as pd

2. データのダウンロードとインポート: ここではyfinanceを使って、日経平均株価のデータを取得します。yfinanceは株価情報を簡単にダウンロードできる強力なライブラリです。またCPIのデータは前回ご紹介した方法で手に入れたcsvデータを使用します。まずはcsvデータをDataframeの形でインポートしましょう。

nikkei_data = yf.download("^N225", start="2010-01-01", end="2024-01-15")
# CSVファイルのパス
cpi_csv_path = '/content/CPIAUCSL.csv'  # CSVファイルのパスを指定してください

# CSVファイルを読み込み、データフレームとして格納
cpi_data = pd.read_csv(cpi_csv_path)

# データフレームの先頭部分を表示して確認
print(cpi_data.head())
print(nikkei_data.head())

アップロードしたファイルのパスのコピー方法

3. 前処理と分析の準備: データを分析する前に、データを清掃し、必要な変換を行います。今回知りたいのはCPIが発表された後の日経平均の一か月の動きです。なので日足でのデータを月足にリサンプリングします。またCPIの発表日は大体15日前後なので各月の10日時点の日経平均株価の差を見ることでCPIの発表がその後の一か月間の日経平均株価にどのように影響を及ぼすかを調べることします。

# 終値の列のみを取得
nikkei_close = nikkei_data['Close']

# 日経平均株価データのリサンプリング(毎月10日、またはその次の利用可能な日)
# 'MS'は月の開始を意味し、'10D'は月初から10日後を指す
# bfill()は、NaN値を次の有効な値で埋める(後ろ向き穴埋め)
nikkei_resampled = nikkei_close.resample('MS').ffill().shift(9).bfill()

# 次に、取得したデータの日付を月初に変更する
nikkei_resampled.index = nikkei_resampled.index.to_period('M').to_timestamp()

# 日経データに前月比と前年同月比の列を追加
N_MonthOverMonth = nikkei_resampled.pct_change() * 100
N_YearOverYear = nikkei_resampled.pct_change(periods=12) * 100
N_MonthOverMonth.name = 'N_MonthOverMonth'
N_YearOverYear.name = 'N_YearOverYear'

# CPIデータに前月比と前年同月比の列を追加
cpi_data['MonthOverMonth'] = cpi_data['CPIAUCSL'].pct_change() * 100  # 前月比(パーセンテージ変化)
cpi_data['YearOverYear'] = cpi_data['CPIAUCSL'].pct_change(periods=12) * 100  # 前年同月比(パーセンテージ変化)

# リサンプリングした日経平均株価データとCPIデータを結合
cpi_data['DATE'] = pd.to_datetime(cpi_data['DATE'])  # 'Date'列をdatetimeオブジェクトに変換
cpi_data.set_index('DATE', inplace=True)  # 'Date'列をインデックスに設定
combined_data = pd.merge(cpi_data, nikkei_resampled, left_index=True, right_index=True, how='left')
combined_data = pd.merge(combined_data, N_MonthOverMonth, left_index=True, right_index=True, how='left')
combined_data = pd.merge(combined_data, N_YearOverYear, left_index=True, right_index=True, how='left')

5. 相関分析: 次に、CPIデータと日経平均株価データの相関を分析します。これにはpandasの組み込み関数を使用して、相関係数を計算します。

# 相関係数を計算する
correlation = combined_data.corr()
print(correlation)

6. 結果: 今回は日経平均株価とCPIの前年同月比と前月比の相関係数を調べてみました。やはりCPIと日経平均株価自体は相関係数は0.9超えなのでかなり高いと言えます。その一方で日経平均株価の月ベースや年ベースでの変化率(N_MonthOverMonth, N_YearOverYear)はそこまで反応しているものはないですね。このことからCPIでいい数字が出たからと言ってすぐに日経をロングすればいいか、というとそういことでもない、というのがよくわかります。必勝法なんてものは中々見つからないわけですね、、、

日経平均株価とCPIの相関係数




 

参考サイト

アメリカ・消費者物価指数|経済指標|みんかぶ FX/為替