見出し画像

Pythonで検証!マネーサプライ(M2)と金価格の関係を可視化してみた

「お金が刷られると金価格は上昇する」

投資の世界ではよく聞く話です。

実際、金融緩和や量的緩和が行われると、法定通貨の価値が相対的に下がり、金価格が上昇しやすいと言われています。

では、本当にそうなのでしょうか。

今回はPythonを使って、

  • 米国M2(マネーサプライ)

  • 金価格

を組み合わせ、

「M2 ÷ 金価格」

という独自の指標を作成して分析してみました。


使用したデータ

今回は2種類のデータを利用しました。

M2(マネーサプライ)

M2はFRED(Federal Reserve Economic Data)から取得しました。

Pythonではpandas_datareaderを使うだけで簡単に取得できます。

#FREDからデータ取得
def fred(symbol,start,end):
    df = data.FredReader(symbol, start, end) 
    date = df.read().index
    value = df.read()[symbol]
    return date, value

m2_date, m2_price = fred("M2NS", start, end)

毎月更新されるため、最新データまで自動取得できます。


金価格

一方、金価格はCSVファイルを利用しました。

gold_history = pd.read_csv('chart_20260625T044248.csv')

CSVの日付は

01/01/1915 #month/day/year

のように文字列(object型)になっているため、

gold_history["Date"] = pd.to_datetime(
    gold_history["Date"],
    format="%m/%d/%Y"
)

としてdatetime型へ変換しています。

その後、

gold_history = gold_history.set_index("Date")
gold_value = gold_history['Value']

で時系列データとして扱えるようにしました。


M2と金価格を結合する

両方とも日時をインデックスにしているので、

merge_df = pd.DataFrame()

merge_df["gold"] = gold_value
merge_df["m2"] = m2_price

merge_df.dropna(inplace=True)

だけで簡単に結合できます。

Pandasは日時が一致するデータだけを自動で揃えてくれるため、とても便利です。


独自指標「M2 to Gold Ratio」

今回作成した指標はこちらです。

merge_df["ratio"] = (
    merge_df["m2"] /
    merge_df["gold"]
)

つまり、

市場に存在するお金の量を、金価格で割った指標

になります。

この値が大きいほど

  • マネーサプライに対して金価格が割安

小さいほど

  • マネーサプライに対して金価格が割高

と考えることができます。

もちろん、これは私が分析のために作成した指標であり、金の適正価格を示すものではありません。しかし、長期的なトレンドを見るための一つの物差しとして活用できます。


移動平均線も追加

トレンドを把握しやすくするために、

  • 50か月移動平均

  • 100か月移動平均

  • 200か月移動平均

も計算しました。

merge_df["SMA50"] = (
    merge_df["ratio"]
    .rolling(50)
    .mean()
)

merge_df["SMA100"] = (
    merge_df["ratio"]
    .rolling(100)
    .mean()
)

merge_df["SMA200"] = (
    merge_df["ratio"]
    .rolling(200)
    .mean()
)

長期的な流れを見るには、移動平均線を重ねると変化が分かりやすくなります。


グラフを作成

図1 マネーサプライM2と金の比率

緑色がM2と金価格の比率です。

さらに、

  • 青:50か月移動平均

  • 赤:100か月移動平均

  • 黄:200か月移動平均

を重ねています。

こうすることで短期・中期・長期のトレンドを同時に確認できます。


グラフから読み取れること

グラフを見ると、M2と金価格の比率は一定ではなく、大きなサイクルを描いていることが分かります。

1970年代には金価格の急騰によって比率が大きく低下しました。

2000年代前半には比率が高まりましたが、その後は金融危機や量的緩和、コロナ禍などを経て再び低下しています。

また、直近では比率が過去と比較して低い水準にあり、マネーサプライの増加に対して金価格が相対的に高い状態が続いていることが読み取れます。

もちろん、この比率だけで投資判断を行うことはできません。
しかし、金価格をマネーサプライという視点から眺めることで、ニュースだけでは気付きにくい長期的な変化を把握できるのは興味深い点です。


Pythonで分析する面白さ

今回の分析では、Pythonを使うことで異なるデータソースを組み合わせ、自分だけの指標を作ることができました。

既存のテクニカル指標を使うだけでなく、

「このデータとこのデータを組み合わせたらどうなるだろう?」

という発想で分析できるのがPythonの魅力です。

データを取得し、加工し、可視化する一連の流れを自動化できるため、一度プログラムを作ってしまえば、最新データでも同じ分析を簡単に再現できます。


まとめ

今回は、Pythonを使ってマネーサプライ(M2)と金価格の比率を計算し、長期的な推移を可視化しました。

今回の分析で学べたことは次の3点です。

  • FREDとCSVを組み合わせて異なるデータを扱える

  • Pandasで時系列データを簡単に結合できる

  • 独自の指標を作ることで、新しい視点から市場を分析できる

Pythonは、既存のデータを見るだけでなく、「自分だけの分析」を実現できる強力なツールです。

この記事は noteマネー にピックアップされました

noteマネーのバナー