インデックスと金の最適バランスをPythonで分析

2023年6月28日

私は会社の制度でIDECO投資をしています。IDECOは金とインデックスを半々で買った方が良いと聞き、それから購入金額の半分をダウ、半分を金にしています。

これは株式と金の価格が逆に動くことが多いため、相場が大きく動いたときにリスクヘッジになるからです。

まあ、半々で買いながらずっと持ち続けるのでもよいと思うのですが、相場がどちらかに大きく偏ったらリバランスをした方が、相場の上下で利益を重ねられます。

でもリバランスのタイミングはいつ来るんでしょうか。この記事ではインデックスと金の比が今までどのように変わってどのタイミングでリバランスすればよかったのか、Pythonでデータ分析をする方法を紹介します。

Google Colabを使って分析する

Google ColabはGoogleが提供するWEBベースのPython開発ツールです。投資データのダウンロードや分析が簡単にできるので私のHPではよく使っています。

Googleのアカウントを持っている人はこちらのアドレスを開くとすぐに始めることができます。

上のリンクからは「ようこそ」ページが開かれるので、左上のファイルメニューから新規作成を選んでください。空白のページが表示されるので、次にコードをコピペして三角印を押してください。特に出力はありませんが、エラーが出なければとりあえず準備完了です。

import matplotlib.pyplot as plt 
%matplotlib inline
from pandas_datareader import data  as pdr
import datetime
import yfinance as yf 
yf.pdr_override() 

上のコードはPythonで投資データを分析するためのツールを準備しています。matplotはグラフ関連、pandasはデータ処理関連、yfinanceはヤフーファイナンスのツールです。

データをダウンロードして表示

さらに新しいブロックを追加して投資データをダウンロードしてみましょう。ここではダウの日脚と金の日脚をダウンロードします。

price = {
'gold' : pdr.get_data_yahoo('GLD',  datetime.datetime(2013,5,1), datetime.date.today() ).loc[:,'Adj Close'],
'djx' : pdr.get_data_yahoo('^DJX',  datetime.datetime(2013,5,1), datetime.date.today() ).loc[:,'Adj Close'],
 }

一応グラフで見てみます。plot()のかっこの中にlebelを書いて最後にplt.legend()を書くと凡例を記載してくれます。

価格が200倍違うので金の方に200を掛けます。200を掛けるとだいたい同じくらいのレンジになります。

(price['gold']*200).plot(label="gold")
price['dji'].plot(label="dji")
plt.legend()

両方とも、データとれているのが分かります。ではダウを金で割って表示させてみます。

平均が分かるように、ダウ/金のデータをzscore関数で正規化します。正規化されると平均が0、分散が1のデータになります。

import scipy

scipy.stats.zscore(price['dji'] / price['gold']).plot()

表示されたグラフはダウと金の強さを比較したグラフです。ここ10年の平均になりますが、2014年ごろは金が強く、2018年ころはダウが強くなっています。

2016年と2020年に下向きのピークがありますが、2016年はアメリカが9年ぶりの利上げ、2020年はご存じのコロナ禍があった時でした。

金が強いときにダウに、ダウが強いときに金に換えるのが良いでしょうから2016年に金を売ってダウに、2018年にダウを売って金に、2020年にダウを売って金に、2022年に金を売ってダウにするのが正解のようです。

こうしてみるとダウ―金の入れ替えは2年置きになり、次にダウを売って金にするのは2024年になるという事になります。

最後に

この記事ではGoogle ColabのPython言語を使ってインデックスと金の関係を分析する手法を紹介しましたが、分かったでしょうか。

ここで使ったコードは私のGoogle Colabで共有しておきます。で興味のある人は下のリンクをたどってください。Googleにログインすれば最新のデータを使って結果を見られます。