Pythonで投資のチャート分析をしよう【ゴールドvsマネーサプライ】
2023-03-05 by 内田裕之
- 「Pythonで投資のチャート分析をしたい」
- 「プログラミングを使って効率よく稼ぎたい」
この記事はそんな方へ向けて書いています。
こんにちは。
Pythonで投資のチャート分析をしているうっちゃんです。
私は最低限の投資で最大の利益を目指して投資分析をしています。
今回はゴールドとマネーサプライの関係を分析したので紹介します。
投資とプログラミング学習に役立つと嬉しいです。
この記事は内容に広告・プロモーションを含みます。
チャート分析ならPythonがおすすめ
よい投資先を見つけるためにエクセルを編集してグラフ作成するのは大変ですよね。
プログラミングを活用して簡単に分析できればいいなあと思ったのは私だけではないと思います。
書店で見かけた一冊の本をきっかけにこの悩みは解消されました。
これはプログラミング言語Pythonを使ってデータ系列の扱い、グラフ作成、自動売買、ポートフォリオ分析まで多岐にわたる分析を可能とする本です。
今回はゴールドとマネーサプライの関係を分析するのに活躍しました。
ゴールドとマネーサプライの関係
マネーサプライとは世の中に出回っているお金の供給量を指します。
各国の中央銀行はマネーサプライを調整することで景気をコントロールしています。
例えば景気が過熱すればマネーサプライを減らして景気を下げようとします。
逆に不景気になればマネーサプライを増やして景気を下支えします。
マネーサプライを増やすということはお金の供給量が増えるので、お金の価値が下がります。
つまりインフレリスクにつながるのでゴールドの値上がりが期待されます。
詳しい解説記事はこちら
(参考:金(ゴールド)投資の魅力を新発見!非常識な資産形成)
ゴールドは世界のどこでも使えるお金であり有限の資産であることから、米ドルのヘッジ資産としても扱われます。
米ドルの価値低下に備えてゴールドが保有されるイメージです。
インフレと聞くと「ものの値段が上がること」と言われますが、正確には「お金の価値が下がること」が原因です。
なぜお金の価値が下がるかといえば、供給量を増やせるからです。
世の中に出回る供給量を表すのがマネーサプライであり、下図になります。
マネーサプライは一貫して増えており、2020年のコロナショックから急増しています。
つまり私たちはお金の価値が下がる時代に生きているのです。
では、マネーサプライに対するゴールドの価格を見てみましょう。
指数はゴールドの価格をマネーサプライで割って作成しています。
緑色が指数、青色は50日移動平均線、赤色は200日移動平均線です。
指数は上昇すると金価格が上昇していることを意味します。
2011年に最高値をつけたあと、下落傾向にあります。
しかし、2016年から横ばいになり、2023年には200日移動平均線を試す展開になっています。
200日移動平均線を上にブレイクアウトすればゴールドの値上がりが期待されますし、反落すればゴールドは値下がりするでしょう。
今後の動向が気になるところですね!
分析に使用したコード
チャート分析に使用したPythonコードをまとめます。
なお、開発環境はJupyter Notebookを使用しています。
ゴールドはYahoo!Fiananceから、マネーサプライM2はFREDから取得しました。
#ライブラリーのインポート
from pandas_datareader import data
import pandas as pd
from pylab import mpl, plt
import numpy as np
import datetime
plt.style.use('seaborn')
mpl.rcParams['font.family'] = 'serif'
%matplotlib inline
yf.pdr_override()
#データの期間
start = '2000-01-01'
end = datetime.date.today()
#Yahoo!Financeからデータ取得
def yahoo(symbol,start,end):
df = data.get_data_yahoo(symbol, start, end)
date = df.index
price = df['Close']
return date, price
#FREDからデータ取得
def fred(symbol,start,end):
df = data.FredReader(symbol, start, end)
date = df.read().index
value = df.read()[symbol]
return date, value
#ゴールド
gold_date, gold_price = yahoo('GC=F', start, end)
#マネーサプライM2、Billions USD単位
m2_date, m2_value = fred('WM2NS', start, end)
#マージデータの作成
merge_df = pd.DataFrame()
merge_df['gold'] = gold_price
merge_df['m2'] = m2_value
merge_df.dropna(inplace=True)
#金価格をM2で割った指標を作成
merge_df['ratio'] = merge_df['gold'] / merge_df['m2']
merge_df.dropna(inplace=True)
#移動平均を計算
merge_df['SMA1'] = merge_df['ratio'].rolling(window=50).mean()
merge_df['SMA2'] = merge_df['ratio'].rolling(window=200).mean()
#グラフに使用するデータ
date = merge_df.index
ratio = merge_df['ratio']
ratio_sma1 = merge_df['SMA1']
ratio_sma2 = merge_df['SMA2']
#グラフの作成
plt.figure(figsize=(20, 10))
plt.plot(date, ratio, lw=2,label = 'Gold to M2', color='g')
plt.plot(date, ratio_sma1, lw=2, label = 'SMA50', color='b')
plt.plot(date, ratio_sma2, lw=2, label = 'SMA200', color='r')
plt.legend(loc=2, fontsize=18)
plt.xlabel('year', fontsize=18)
plt.ylabel('Gold price(USD)/M2(Billions USD)', fontsize=18)
plt.tick_params(labelsize=18)
plt.savefig("goldm2_ratio20230305.png")
読み込むシンボルを変えれば色んな種類のチャート分析ができます。
引き続きいろんなチャート分析を紹介したいと思います。
まとめ
今回はPythonで投資のチャート分析をする方法を紹介しました。
コーディングは以下の本を参考にしています。
この記事が面白いと思ったらTwitterやブログで紹介していただけますと嬉しいです。
おすすめ記事
ロバートキヨサキが「2023年に金(ゴールド)は2倍に値上がりする」と予想した理由とは?