日経平均が史上最高値を更新しましたが本当にこれからも日本経済は成長するの?
日経平均が過去最高値を更新しました。過去データを持ち家1971年~の日経平均を振り返り今後について考察してみます。
日経平均の過去データはStooqから取得しました。これらを加工して下記データを作成しました。1971年1月から2024年2月23日までのデータが含まれています。
上記ファイルには以下の列が含まれています:
Date:日付
Close_nikkei_jpy:日経平均の終値(円建て)
USDJPY_Exchange_Rate:ドル円為替レート
Close_nikkei_usd:日経平均の終値(ドル建て)
Close_S&P500:S&P500の終値
今回はGoogle Colaboratoryを使用してPythonを実行してみます。まずは下記コードでmerged_maeket_data.csvを読み込みます。
from google.colab import files
uploaded = files.upload()
まずは日経平均のチャートを描いてみます。
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
# ファイルのパス(このパスはColaboratory上でのパスに置き換えてください)
file_path = '/content/merged_market_data.csv' # Colaboratoryにアップロードしたファイルのパスに変更してください
# CSVファイルの読み込み
data = pd.read_csv(file_path)
# 日付列をdatetime型に変換
data['Date'] = pd.to_datetime(data['Date'])
# グラフの描画
plt.figure(figsize=(14, 7)) # グラフのサイズを設定
plt.plot(data['Date'], data['Close_nikkei_jpy'], color='blue') # 日経平均(円建て)のプロット
plt.title('Nikkei 225 (JPY) Over Time') # グラフのタイトル
plt.xlabel('Date') # X軸のラベル
plt.ylabel('Nikkei 225 Close (JPY)') # Y軸のラベル
plt.grid(True) # グリッドの表示
plt.show() # グラフの表示
確かに2024年2月に史上最高値を更新しています。しかしこれは円建てチャートです。ドル建てで見てみたらどうでしょうか?ドル建て日経平均チャートを赤線グラフで描いてみます。
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
# ファイルのパス(このパスはColaboratory上でのパスに置き換えてください)
file_path = '/content/merged_market_data.csv' # Colaboratoryにアップロードしたファイルのパスに変更してください
# CSVファイルの読み込み
data = pd.read_csv(file_path)
# 日付列をdatetime型に変換
data['Date'] = pd.to_datetime(data['Date'])
# グラフの描画
plt.figure(figsize=(14, 7)) # グラフのサイズを設定
plt.plot(data['Date'], data['Close_nikkei_usd'], color='red') # 日経平均(ドル建て)のプロット
plt.title('Nikkei 225 (USD) Over Time') # グラフのタイトル
plt.xlabel('Date') # X軸のラベル
plt.ylabel('Nikkei 225 Close (USD)') # Y軸のラベル
plt.grid(True) # グリッドの表示
plt.show() # グラフの表示
ドル建てでみると実は2024年2月が最高値ではなく2021年1月に最高値であったことがわかります。ドル円チャートを書いてみます。
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
# ファイルのパス(このパスはColaboratory上でのパスに置き換えてください)
file_path = '/content/merged_market_data.csv' # Colaboratoryにアップロードしたファイルのパスに変更してください
# CSVファイルの読み込み
data = pd.read_csv(file_path)
# 日付列をdatetime型に変換
data['Date'] = pd.to_datetime(data['Date'])
# グラフの描画
plt.figure(figsize=(14, 7)) # グラフのサイズを設定
plt.plot(data['Date'], data['USDJPY_Exchange_Rate'], color='green') # ドル円為替レートのプロット
plt.title('USD/JPY Exchange Rate Over Time') # グラフのタイトル
plt.xlabel('Date') # X軸のラベル
plt.ylabel('USD/JPY Exchange Rate') # Y軸のラベル
plt.grid(True) # グリッドの表示
plt.show() # グラフの表示
2021年から円安が進んだためにドル建てで見た場合には2021年の水準をまだ超えていないことがわかります。わかりやすくするために2020年以降のデータで日経平均円建て(青)、日経平均ドル建て(赤)、ドル円チャート(緑)をプロットしてみます。
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import AutoMinorLocator
# ファイルのパス
file_path = '/content/merged_market_data.csv' # Colaboratoryにアップロードしたファイルのパスに変更してください
# CSVファイルの読み込み
data = pd.read_csv(file_path)
# 日付列をdatetime型に変換し、2020年1月以降のデータに絞る
data['Date'] = pd.to_datetime(data['Date'])
data = data[data['Date'] >= '2020-01-01']
# グラフの描画のための準備
fig, ax1 = plt.subplots(figsize=(14, 7))
# 日経平均(円建て)を青色でプロット
ax1.plot(data['Date'], data['Close_nikkei_jpy'], color='blue', label='Nikkei 225 (JPY)')
ax1.set_xlabel('Date')
ax1.set_ylabel('Nikkei 225 Close (JPY)', color='blue')
ax1.tick_params(axis='y', labelcolor='blue')
# ドル円為替レートを緑色でプロット(第二軸)
ax2 = ax1.twinx()
ax2.plot(data['Date'], data['USDJPY_Exchange_Rate'], color='green', label='USD/JPY Exchange Rate')
ax2.set_ylabel('USD/JPY Exchange Rate', color='green')
ax2.tick_params(axis='y', labelcolor='green')
# 日経平均(ドル建て)を赤色でプロット(第三軸)
ax3 = ax1.twinx() # ax2と同じ方法でax3を作成
ax3.spines['right'].set_position(('outward', 60)) # ax2から右に60ポイント移動
ax3.plot(data['Date'], data['Close_nikkei_usd'], color='red', label='Nikkei 225 (USD)')
ax3.set_ylabel('Nikkei 225 Close (USD)', color='red')
ax3.tick_params(axis='y', labelcolor='red')
# グラフのタイトルとグリッドの表示
plt.title('Nikkei 225, USD/JPY Exchange Rate, and Nikkei 225 (USD) Over Time (Since 2020)')
fig.tight_layout() # レイアウトの調整
plt.grid(True) # グリッドの表示
plt.show()
2020年からの円安の進行によりドル建てで見た場合は2021年よりも2024年の現在のほうがむしろ下落していることがわかります。
S&P500との比較
日経平均だけ見ているよりも比較対象があったほうが良いのでS&P500と比較してみます。どちらもドル建てです。
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
# CSVファイルのパス
file_path = 'your_file_path_here.csv' # 実際のファイルパスに置き換えてください
# ファイルの読み込み
data = pd.read_csv(file_path)
# 日付列をdatetime型に変換
data['Date'] = pd.to_datetime(data['Date'])
# グラフの描画設定
plt.figure(figsize=(14, 7))
# 日経平均(ドル建て)を赤色でプロット
plt.plot(data['Date'], data['Close_nikkei_usd'], color='red', label='Nikkei 225 (USD)')
# S&P500をオレンジ色でプロット
plt.plot(data['Date'], data['Close_S&P500'], color='orange', label='S&P 500')
# グラフのタイトル、軸ラベル、凡例の設定
plt.title('Nikkei 225 (USD) vs S&P 500 (1971 - Present)')
plt.xlabel('Year')
plt.ylabel('Index Value')
plt.legend()
# グリッドの表示
plt.grid(True)
# グラフの表示
plt.show()
比較しやすいように1971年の株価を100として割合でグラフにしてみましょう。
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
# CSVファイルのパス
file_path = '/content/merged_market_data.csv'
# ファイルの読み込み
data = pd.read_csv(file_path)
# 日付列をdatetime型に変換
data['Date'] = pd.to_datetime(data['Date'])
# 1971年の初めの株価を基準値100として、その後の株価を割合で表示するための処理
# 日経平均(ドル建て)とS&P500の1971年の初めの値を取得
nikkei_1971_base = data.loc[data['Date'].dt.year == 1971, 'Close_nikkei_usd'].iloc[0]
sp500_1971_base = data.loc[data['Date'].dt.year == 1971, 'Close_S&P500'].iloc[0]
# 基準値100に対する割合を計算
data['Nikkei_Indexed'] = data['Close_nikkei_usd'] / nikkei_1971_base * 100
data['SP500_Indexed'] = data['Close_S&P500'] / sp500_1971_base * 100
# グラフの描画
plt.figure(figsize=(14, 7))
# 日経平均(ドル建て)を赤色でプロット
plt.plot(data['Date'], data['Nikkei_Indexed'], color='red', label='Nikkei 225 (USD) Indexed to 1971')
# S&P500をオレンジ色でプロット
plt.plot(data['Date'], data['SP500_Indexed'], color='orange', label='S&P 500 Indexed to 1971')
# グラフのタイトル、軸ラベル、凡例の設定
plt.title('Nikkei 225 (USD) vs S&P 500 Indexed to 1971')
plt.xlabel('Date')
plt.ylabel('Indexed Value (1971 = 100)')
plt.legend()
plt.grid(True)
# グラフの表示
plt.show()
1971年からのデータでみると意外と日経平均は検討しています、S&P500とそれほど遜色がないように見えます。
1971年から1989年までのデータで比較(高度成長期)
期間別にみるとこの両者の違いがはっきりします。まずは1971年~1989年、日本が高度経済成長期を迎え、プラザ合意を経てバブルの頂点に駆け上るまでの期間です。
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
# CSVファイルのパス
file_path = '/content/merged_market_data.csv'
# ファイルの読み込み
data = pd.read_csv(file_path)
# 日付列をdatetime型に変換
data['Date'] = pd.to_datetime(data['Date'])
# 1971年から1989年末までのデータに絞る
data = data[(data['Date'] >= '1971-01-01') & (data['Date'] <= '1989-12-31')]
# 1971年の初めの株価を基準値100として、その後の株価を割合で表示するための処理
# 日経平均(ドル建て)とS&P500の1971年の初めの値を取得
nikkei_1971_base = data.loc[data['Date'].dt.year == 1971, 'Close_nikkei_usd'].iloc[0]
sp500_1971_base = data.loc[data['Date'].dt.year == 1971, 'Close_S&P500'].iloc[0]
# 基準値100に対する割合を計算
data['Nikkei_Indexed'] = data['Close_nikkei_usd'] / nikkei_1971_base * 100
data['SP500_Indexed'] = data['Close_S&P500'] / sp500_1971_base * 100
# グラフの描画
plt.figure(figsize=(14, 7))
# 日経平均(ドル建て)を赤色でプロット
plt.plot(data['Date'], data['Nikkei_Indexed'], color='red', label='Nikkei 225 (USD) Indexed to 1971')
# S&P500をオレンジ色でプロット
plt.plot(data['Date'], data['SP500_Indexed'], color='orange', label='S&P 500 Indexed to 1971')
# グラフのタイトル、軸ラベル、凡例の設定
plt.title('Nikkei 225 (USD) vs S&P 500 Indexed to 1971 (1971-1989)')
plt.xlabel('Date')
plt.ylabel('Indexed Value (1971 = 100)')
plt.legend()
plt.grid(True)
# グラフの表示
plt.show()
この期間では日経平均が完全にS&P500をアウトパフォームしています。
1990年から2010年までのデータで比較(失われた20年)
この期間は失われた20年、米国もITバブル崩壊やリーマンショックを迎えています。
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
# CSVファイルのパス
file_path = '/content/merged_market_data.csv'
# ファイルの読み込み
data = pd.read_csv(file_path)
# 日付列をdatetime型に変換
data['Date'] = pd.to_datetime(data['Date'])
# 1990年から2010年までのデータに絞る
data_1990_2010 = data[(data['Date'] >= '1990-01-01') & (data['Date'] <= '2010-12-31')]
# 1990年の最初の有効な日経平均(ドル建て)の株価を基準値として使用
nikkei_1990_base = data_1990_2010.loc[data_1990_2010['Date'].dt.year == 1990, 'Close_nikkei_usd'].dropna().iloc[0]
sp500_1990_base = data_1990_2010.loc[data_1990_2010['Date'].dt.year == 1990, 'Close_S&P500'].iloc[0]
# 基準値100に対する割合を計算
data_1990_2010['Nikkei_Indexed'] = data_1990_2010['Close_nikkei_usd'] / nikkei_1990_base * 100
data_1990_2010['SP500_Indexed'] = data_1990_2010['Close_S&P500'] / sp500_1990_base * 100
# グラフの描画
plt.figure(figsize=(14, 7))
# 日経平均(ドル建て)を赤色でプロット
plt.plot(data_1990_2010['Date'], data_1990_2010['Nikkei_Indexed'], color='red', label='Nikkei 225 (USD) Indexed to 1990')
# S&P500をオレンジ色でプロット
plt.plot(data_1990_2010['Date'], data_1990_2010['SP500_Indexed'], color='orange', label='S&P 500 Indexed to 1990')
# グラフのタイトル、軸ラベル、凡例の設定
plt.title('Nikkei 225 (USD) vs S&P 500 Indexed to 1990 (1990-2010)')
plt.xlabel('Date')
plt.ylabel('Indexed Value (1990 = 100)')
plt.legend()
plt.grid(True)
# グラフの表示
plt.show()
この期間ではS&P500はITバブル崩壊、リーマンショックと2つの大きな下落がありますが最終的には300%以上と大きく上昇していますが日経平均は約半分まで下落しています。
2011年から現在まで (アベノミクス以降)
2012年から日本ではアベノミクスが始まります、そして現在の史上最高値に到達するわけですがこの期間はどうでしょうか?
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
# CSVファイルのパス
file_path = '/content/merged_market_data.csv'
# ファイルの読み込み
data = pd.read_csv(file_path)
# 日付列をdatetime型に変換
data['Date'] = pd.to_datetime(data['Date'])
# 2011年以降のデータに絞り込み
data_2011_present = data[data['Date'] >= '2011-01-01']
# 2011年の初めの株価を基準値100として、その後の株価を割合で表示するための処理
# 日経平均(ドル建て)とS&P500の2011年の初めの値を取得
nikkei_2011_base = data_2011_present.loc[data_2011_present['Date'].dt.year == 2011, 'Close_nikkei_usd'].dropna().iloc[0]
sp500_2011_base = data_2011_present.loc[data_2011_present['Date'].dt.year == 2011, 'Close_S&P500'].dropna().iloc[0]
# 基準値100に対する割合を計算
data_2011_present['Nikkei_Indexed'] = data_2011_present['Close_nikkei_usd'] / nikkei_2011_base * 100
data_2011_present['SP500_Indexed'] = data_2011_present['Close_S&P500'] / sp500_2011_base * 100
# グラフの描画
plt.figure(figsize=(14, 7))
# 日経平均(ドル建て)を赤色でプロット
plt.plot(data_2011_present['Date'], data_2011_present['Nikkei_Indexed'], color='red', label='Nikkei 225 (USD) Indexed to 2011')
# S&P500をオレンジ色でプロット
plt.plot(data_2011_present['Date'], data_2011_present['SP500_Indexed'], color='orange', label='S&P 500 Indexed to 2011')
# グラフのタイトル、軸ラベル、凡例の設定
plt.title('Nikkei 225 (USD) vs S&P 500 Indexed to 2011 (2011-Present)')
plt.xlabel('Date')
plt.ylabel('Indexed Value (2011 = 100)')
plt.legend()
plt.grid(True)
# グラフの表示
plt.show()
アベノミクス以降は日本株も頑張っていますがS&P500と比べると成長が鈍いことがわかります。
まとめると下記のことがわかります
日経平均はドル建てでみると2021年1月に史上最高値を更新していた
1971年から現在までの比較では日経平均の成長率はS&P500と遜色ない
長期間で見た時の日経平均の上昇は1980年代の高度成長期によるところが大きい
1990年~2011年までの失われた20年間は本当に失われている
2012年以降は日経平均は成長しているがS&P500と比べると半分程度
これからも日本経済は成長するのか?
これは誰にもわからないと思います。史上最高値をつけた日経平均ですがS&P500と比べるとPERもまだ低く割安という声もあります。
結局のところ予測は外れることも考えておく必要があり、そうするとやはり分散投資、株式で言えばオールカントリーなどのインデックスファンドを積み立てていくのが一番良いように思います。
この記事が気に入ったらサポートをしてみませんか?