プログラミングで金の投資分析をしてみよう

2024-07-30 by 内田裕之

こんにちは。

投資で老後資産づくりに励むうっちゃんです。

最近は金が大きく値上がりしていますね。

新聞でもよく最高値更新の記事を見かけます。

(参考:金の国内小売価格が最高値更新 円安加速と海外高値で

実はわたしは2021年から金が値上がりすることを見込んでよく買い付けていました。

記事もいくつか書いています。

(記事:金(ゴールド)投資の魅力を新発見

なぜならプログラミング言語Pythonを使って投資分析を行っていたからです。

今回はその分析方法を紹介します。

この記事は内容に広告・プロモーションを含みます。

プログラミングで投資先を探そう

プログラミング言語Python

よい投資先を見つけるためにエクセルを編集してグラフ作成するのは大変ですよね。

プログラミングを活用して一気に分析できればいいなあと思ったのは私だけではないと思います。

書店で見かけた一冊の本をきっかけにこの悩みは解消されました。


Pythonによるファイナンス データ駆動型アプローチに向けて

タイトルからして最高に役立つアイテムです。

これはPCへのインストールから文字入力、データ系列の扱い、グラフ作成、自動売買、ポートフォリオ分析まで多岐にわたる分析を可能とする本です。

過去の記事でもさまざまな投資分析に活用してきました。

(記事:リアルマネーから見た株価

(記事:Pythonで投資のチャート分析をしよう【先進国株式MSCI vs コモディティRICI】

わたしが金こそベストな投資先だと見いだしたのも、この本の恩恵です。

ベストな投資先を見いだしたコード

金こそベストな投資先

投資分析に使用したのは金価格をマネーサプライで割った指数です。

この指数が歴史的な割安水準にあるため、ベストな投資先だと考えました。

金価格とマネーサプライM2の比

このチャートを作ったコードを記載します。


#ライブラリをインポート
from pandas_datareader import data
import yfinance as yf
import pandas as pd
from pylab import mpl, plt
import numpy as np
import datetime
plt.style.use('ggplot')
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_ratio20240730.png")

金価格はYahoo!Fianance、マネーサプライはFREDから取得しました。

グラフはpng形式で保存されます。

移動平均線は、長期投資を前提にしているので、50日と200日にしました。

2021年〜2022年は指数が低くなっており、金が米ドルに対して割安であると判断しました。

そこで仕込み時だと考えてコツコツ積み立て投資を継続し、利益を上げることができました。

いまは移動平均線がゴールデンクロスを形成しており、上昇するトレンドが見えています。

これからの金に注目です。

まとめ

今回はプログラミング言語Pythonを使って金がベストな投資先と判断した話をしました。

金は上昇トレンドが見えているので、今後の価格に注目です。

この記事がおもしろいと感じた方はX(旧Twitter)やブログで紹介いただけますと嬉しいです。

おすすめ記事

PythonでFXのデータを取得する方法【ALPHA VANTAGE】

2023年iDeCoのベストな投資先は【コモディティ】Pythonで投資分析した話

【知らないと損】2023年にレバナスに投資してはいけない理由