見出し画像

【Python】【経済指標】FRBバランスシート、M2、流通貨幣データを取得して描画する

FRBバランスシート(Total Assets)マネーストックM2)、および流通貨幣のデータは、株式市場や経済の動向を理解する上で参考となる要素です。

FRBバランスシートは、FRB(米連邦準備制度理事会)の資産と負債の状況を示す財務報告書です。FRBは、米国の中央銀行であり、金融政策の策定や銀行業務の監督などを担当しています。FRBは金融政策でバランスシートを拡大させたり縮小させたりしますが、バランスシート拡大局面は株価上昇要因、縮小している局面は株価下落要因と捉えられやすいようです。

マネーストックは、金融機関から世の中に供給されている通貨量で金融の流動性の指標です。マネーストックの増加は、銀行の貸出の増加を示しますので、景気にとってはプラス要因となります。ただし、物価が上昇しやすくなり、インフレの要因ともなります。マネーストックの減少は、銀行の貸出の減少を示しますので、経済全体の通貨量減少を示します。よって、景気にとってはマイナス要因となります。物価が低下しやすくなり、デフレの要因ともなります。

流通貨幣(Currency in Circulation)とは、市場で一般的に使用されている現金の量を示す指標です。流通貨幣の増減は、消費行動や需要の変化などを反映することがありますので、企業の業績や収益に影響を与える可能性があります。したがって、流通貨幣の動向を把握することは、市場の需給バランスや消費動向の理解に役立つかもしれません。

ここでは、FRBバランスシート(Total Assets)マネーストック(M2)流通貨幣(Currency in Circulation)データの取得と描画を学んでいきます。

なお、最低限のポイントのみの説明にするため、Pythonライブラリ、モジュール等のインストール方法については割愛させて頂きます。お使いのPC環境等に合わせてインストールしてもらえればと思います。




1.FRBバランスシート(総資産)とは

FRBバランスシート(Total Assets)は、FRB(米連邦準備制度理事会)が保有している証券(多くは国債とエージェンシー債)です。どちらもともに債券ですので、それぞれ償還があり償還されればバランスシートは縮小します。FRBは金融政策によって、資金供給策が必要になった場合、債券を買いバランスシートを拡大させます。

バランスシートの拡大・縮小は株価との連動性が高いとの見方が多く、バランスシートの拡大局面では株価上昇要因、バランスシートの縮小局面では株価下落要因と見るのが一般的ですが、縮小局面でも株価上昇はあるようです。

ここでは、総資産(Total Assets)のデータを取得しています。

2.M2とは

ここでは、マネーストックの統計として、M2(Money Supply)の指標データを取得します。

M2(Money Supply)は、流通している通貨および預金などの貨幣供給量を示す指標です。これには現金、預金通貨、定期預金、定期積金、外貨預金、譲渡性預金などが含まれます。

M2の増加は、一般的に経済の流動性や購買力の拡大を示し、需要や投資の刺激となる可能性があります。

投資家はM2の動向をモニタリングし、経済の流動性やマクロ経済の動向を把握することで、投資判断やリスク管理に役立てることができると思われます。ただし、M2だけでなく他の経済指標や情報との関連性や相互作用を考慮することが重要です。

3.流通貨幣とは

流通貨幣とは、経済活動や商品の取引において一般的に使用される通貨のことを指します。具体的には、現金(紙幣や硬貨)や銀行預金口座に入金された通貨を指します。

流通貨幣は、市場での取引や商品の購入などの経済活動に必要な交換手段として使用されます。人々は流通貨幣を受け取り、それを別の商品やサービスと交換することで経済活動が行われます。

流通貨幣は経済の流動性や貨幣供給量の一部を示す重要な指標となります。貨幣供給量の増減は、経済活動や物価水準に影響を与えることがあります。中央銀行や金融機関は貨幣供給の管理を通じて経済の安定や通貨政策の実施を行います。

投資家や経済の関係者は流通貨幣の動向をモニタリングし、経済の健全性や金融市場の活気などを把握することで、投資判断や経済予測に役立てることができると思われます。ただし、流通貨幣の分析は他の経済指標や情報との関連性や相互作用を考慮することが重要です。


4.FRBバランスシート(総資産)、M2、流通貨幣データを取得する


FRBバランスシート(総資産)、M2、流通貨幣データをFREDから取得していきます。pandas_datareaderのライブラリを使うことでデータを取得できます。データの取得期間は、2018年1月1日から現在の日付までです。

流通貨幣については、FREDから取得した流通貨幣データのデータフレームdf_cuに対してpct_change(12)メソッドを適用し、×100とすることで前年同月比(%)としています。

import pandas_datareader.data as web
import datetime

# 2018/1/1から現在まで
start = '2018-01-01'
end = datetime.date.today()

# FRB バランスシート
df_bs = web.DataReader(["WALCL"], "fred", start, end)
df_bs = df_bs.dropna() # 空データ削除

# M2
df_m2 = web.DataReader(["WM2NS"], "fred", start, end)
df_m2 = df_m2.dropna() # 空データ削除

# 流通貨幣
df_cu = web.DataReader(["CURRCIR"], "fred", start, end)
df_cu = df_cu.pct_change(12)*100 #12ヶ月前と比較

WALCL:FRB Balance sheet Total Assets(Weekly, As of Wednesday)
https://fred.stlouisfed.org/series/WALCL

WM2NS:M2 (Weekly)
https://fred.stlouisfed.org/series/WM2NS

CURRCIR:Currency in Circulation (Monthly)
https://fred.stlouisfed.org/series/CURRCIR

FRED

5.FRBバランスシート(総資産)、M2、流通貨幣データを描画


5-1.FRBバランスシート(総資産)を描画

# グラフィック系ライブラリ
import matplotlib.pyplot as plt
from matplotlib import gridspec
import japanize_matplotlib
%matplotlib inline

# グラフの描画
plt.plot(df_bs['WALCL'], label='balance sheet')

plt.title('balance sheet')
plt.xlabel('Date')
plt.ylabel('Millions of U.S.Dollars')
plt.legend()
plt.grid(True)
plt.show()

5-2.M2を描画

plt.figure(figsize=(10,8))

# グラフの描画
plt.plot(df_m2['WM2NS'], label='M2')

plt.title('M2')
plt.xlabel('Date')
plt.ylabel('Billions of Dollars')
plt.legend()
plt.grid(True)
plt.show()


5-3.流通貨幣を描画

plt.figure(figsize=(10,8))

# グラフの描画
plt.plot(df_cu['CURRCIR'], label='流通貨幣')

plt.title('流通貨幣')
plt.xlabel('Date')
plt.ylabel('前年同月比(%)')
plt.legend()
plt.grid(True)
plt.show()


次に、plotlyを使って描画していきます。plotlyについては、以前に描画方法と見た目に関わる設定について投稿しているので参考にしてもらえればと思います。


import plotly.graph_objects as go  # グラフ表示関連ライブラリ
import plotly.io as pio  # 入出力関連ライブラリ
pio.renderers.default = 'iframe'

# subplot
from plotly.subplots import make_subplots


# グラフの実体となる trace オブジェクトを生成
bs_trace = go.Scatter(
    x=df_bs.index,
    y=df_bs['WALCL'],
    mode='lines',
    line={'color':'red', 'width':4},
    name='FRBバランスシート(総資産)'
    )

m2_trace = go.Scatter(
    x=df_m2.index,
    y=df_m2['WM2NS'],
    mode='lines',
    line={'color':'red', 'width':4},
    name='M2'
    )

cu_trace = go.Scatter(
    x=df_cu.index,
    y=df_cu['CURRCIR'],
    mode='lines',
    line={'color':'red', 'width':4},
    name='流通貨幣'
    )



subplots_fig = make_subplots(
    rows=3,
    cols=1,
    start_cell='top-left',
    subplot_titles=[
        'FRBバランスシート(総資産)',
        'M2',
        '流通貨幣',
    ],
    horizontal_spacing=0.15,
    vertical_spacing=0.10,

)


# 描画領域である figure オブジェクトの作成                  
subplots_fig.add_trace(bs_trace, row=1, col=1)
subplots_fig.add_trace(m2_trace, row=2, col=1)
subplots_fig.add_trace(cu_trace, row=3, col=1)


# レイアウトの更新
subplots_fig.update_layout(
    
    # 凡例は非表示
    showlegend=False,
    
    # 幅と高さの設定
    width=900,height=900,
    
    title='',
    plot_bgcolor='white', # 背景色を白に設定
    
),


# 軸の設定
subplots_fig.update_yaxes(title='Millions of U.S.Dollars', row=1, col=1)
subplots_fig.update_yaxes(title='Billions of U.S.Dollars', row=2, col=1)
subplots_fig.update_yaxes(title='前年同月比(%)', row=3, col=1)

# linecolorを設定して、ラインをミラーリング(mirror=True)して枠にする
subplots_fig.update_xaxes(linecolor='black', linewidth=1, mirror=True, row=1, col=1)
subplots_fig.update_yaxes(linecolor='black', linewidth=1, mirror=True, row=1, col=1)

subplots_fig.update_xaxes(linecolor='black', linewidth=1, mirror=True, row=2, col=1)
subplots_fig.update_yaxes(linecolor='black', linewidth=1, mirror=True, row=2, col=1)

subplots_fig.update_xaxes(linecolor='black', linewidth=1, mirror=True, row=3, col=1)
subplots_fig.update_yaxes(linecolor='black', linewidth=1, mirror=True, row=3, col=1)

# ticks='inside':目盛り内側, tickcolor:目盛りの色, tickwidth:目盛りの幅、ticklen:目盛りの長さ
subplots_fig.update_xaxes(ticks='inside', tickcolor='black', tickwidth=1, ticklen=5, row=1, col=1)
subplots_fig.update_yaxes(ticks='inside', tickcolor='black', tickwidth=1, ticklen=5, row=1, col=1)

subplots_fig.update_xaxes(ticks='inside', tickcolor='black', tickwidth=1, ticklen=5, row=2, col=1)
subplots_fig.update_yaxes(ticks='inside', tickcolor='black', tickwidth=1, ticklen=5, row=2, col=1)

subplots_fig.update_xaxes(ticks='inside', tickcolor='black', tickwidth=1, ticklen=5, row=3, col=1)
subplots_fig.update_yaxes(ticks='inside', tickcolor='black', tickwidth=1, ticklen=5, row=3, col=1)

# gridcolor:グリッドの色, gridwidth:グリッドの幅、griddash='dot':破線
subplots_fig.update_xaxes(gridcolor='lightgrey', gridwidth=1, griddash='dot', row=1, col=1)
subplots_fig.update_yaxes(gridcolor='lightgrey', gridwidth=1, griddash='dot', row=1, col=1)

subplots_fig.update_xaxes(gridcolor='lightgrey', gridwidth=1, griddash='dot', row=2, col=1)
subplots_fig.update_yaxes(gridcolor='lightgrey', gridwidth=1, griddash='dot', row=2, col=1)

subplots_fig.update_xaxes(gridcolor='lightgrey', gridwidth=1, griddash='dot', row=3, col=1)
subplots_fig.update_yaxes(gridcolor='lightgrey', gridwidth=1, griddash='dot', row=3, col=1)

# tick0:初期軸目盛り, dtick:軸目盛り間隔
subplots_fig.update_xaxes(dtick='M12')  # 12カ月ごと

# 軸の文字サイズ変更
subplots_fig.update_xaxes(tickfont=dict(size=14, color='grey'))
subplots_fig.update_yaxes(tickfont=dict(size=16, color='grey'))

# show()メソッドでグラフを描画
subplots_fig.show()



今回は、FRBバランスシート(総資産)、M2、流通貨幣データを取得して、データの可視化を行いました。今後は、他の経済指標と合わせた分析を行っていきたいと思います。



この記事が気に入ったらサポートをしてみませんか?