昨年、米国株価は特にハイテク株を中心に調子が良かったけど、S&P500とオルカンの比較をしてみました。
最後に、比較に使ったプログラムも掲載するのでお試しあれ。
よく使われる、年間リターンという言葉で言うと、オルカン29%、S&P500 34%
数値で比較すると、下記の通り
2014-1-1に100万預けて、塩漬けにしておくと、2023年末には
S&P500は349万
オルカンは240万
福利で増えるから、大きいよね
かのアインシュタインも言ってるよ、「人生最大の発明」ってね。 笑
ここで、直近10年間の年平均リターンを求めます。
先ず、結論から言うと
オルカンは、10年間の年平均リターン 9.17%
S&P500は、10年間の年平均リターン 13.33%
つまり、米国インデックス、昨年は調子良かったけど、直近10年間をならしたら、こんなもの。
やはり、オルカンがここ10年で比較してもS&Pより4%近く低いね。
何度も言うように、これはマザーファンドの結果で、投資信託の場合、証券会社の管理手数料が加わるので、最終桁はアテになりません。
根拠は、以下の計算結果
ここででてきた、2.405と、3.496は正規化した、オルカンと、S&P500の10年後(つまり昨年年末)の株価。
式の中で、X**Yとは、Pythonの記法なんだけど、EXCELで書くと、x^y となります。
これは、”XのYべき乗”の意味
X^(1/Y)とした場合、XのYべき根ともいいます。
この数値(1.09xxと、1.133yy)入れて電卓で掛け算10回、叩いてごらん(この数値を10回、掛け算ね)
各々、2.40と3.49になるから
さて、ここからが、Pythonの実行環境、Google Colabのアピールです。
下記ページは、WEB上に実行環境があるので、パソコンにPythonをインストールする必要がありません。
ページに入ると、使い方の説明があるからすぐに分かるよ。
今回使用したプログラムは以下の通り
import文から最後まで、コピペして上記Colaboratoryのページで実行すると、貴方のPCでも同じ結果が得られます。
スマホでできんのかって?
できるのかな?
コピペはスマホでもできるけど、
実行させるための指示は、シフト+ENTER なんだけど、スマホでどうやるんだろ。
#-------------------------------
import pandas as pd
import matplotlib.pyplot as plt
import yfinance as yf
from datetime import datetime
# データ取得期間の設定
start_date = "2014-01-01"
end_date = "2023-12-31"
# Yahoo Financeからデータを取得
acwi = yf.download("ACWI", start=start_date, end=end_date)['Close']
sp500 = yf.download("^GSPC", start=start_date, end=end_date)['Close']
# USD/JPY 為替レートの取得
usdjpy = yf.download("JPY=X", start=start_date, end=end_date)['Close']
# 為替レートで調整
acwi_adj = acwi * usdjpy
sp500_adj = sp500 * usdjpy
# 欠損データの前方補完
acwi_adj.ffill(inplace=True)
sp500_adj.ffill(inplace=True)
usdjpy.ffill(inplace=True)
# NaNではない最初のデータポイントを見つける
first_valid_index_acwi = acwi_adj.first_valid_index()
first_valid_index_sp500 = sp500_adj.first_valid_index()
# データの正規化
acwi_norm = acwi_adj / acwi_adj.loc[first_valid_index_acwi]
sp500_norm = sp500_adj / sp500_adj.loc[first_valid_index_sp500]
# チャートの描画
plt.figure(figsize=(12, 6))
plt.plot(acwi_norm, label="ACWI (Yen Adjusted)")
plt.plot(sp500_norm, label="S&P 500 (Yen Adjusted)")
plt.title("ACWI vs S&P 500 (Yen Adjusted) - Normalized")
plt.xlabel("Date")
plt.ylabel("Normalized Price")
plt.legend()
plt.show()
#-------------------------------