積み立て投資の最適な積立日をデータ分析で求める
はじめに
投資信託やEFTでインデックスファンドに積み立て投資を始める際、「毎月決まった日に積み立てを行う」コースを選択すると、多くのネット証券や一部の支払い方法では、積立日を選択することができます。
では、最適な積立日はいつなのでしょうか。
ネットを検索すると、「『つみたてNISA』で月末・月初に積み立てると不利になる!?」という記事に行き着いたわけですが、この記事によれば、
とのこと。では実際に、月末や月初は株価が上がっている傾向が見られるのでしょうか。もしそうだとして、積立日としてはいつが最適なのでしょうか。
データ分析
この疑問に答えるために、S&P500の価格データを使って、非常に簡単な分析を行いました。データ分析にはStataを使って行っています。
1. データ
まず、S&P500の価格データとして、以下のサイトから10年分の価格データ(S&P 500 Index, 2012.7.1-2022.6.30)をダウンロードします。
10年分だと少なく感じるかもしれませんが、主に人々の投資の傾向によって特徴付けられる株価の日ごとの変動を観察し、最適な積立日を考えることが目的なので、比較的最近のデータの方が有用だと考え、10年分の株価を選択しました。
cd ""
import delimited "SP500.csv", varnames(1) clear
* 折れ線グラフの作成
gen time = _n // time変数の作成(2012.7-2022.6)
line sp500 time, xlabel(, nolabels) ///
xtitle("Time (2012.7-2022.6)") ytitle("S&P500 Index")
2. 各日の平均株価
積立投資を行う場合、積立日に購入を行うので、各日(1日から31日)の株価が平均的にいくらくらいだったのかを検証したいと思います。
株式市場が休みの場合、多くの投資信託やEFTでは主に前日(または前々日以前)の株価をもとに購入価格が決まることに注意する必要があります。例えば2022年6月25日(土)は市場が休みなので、この日に取引を行う場合は、2022年6月24日(金)の価格で取引を行うと仮定します。
また厳密に言えば、28日までしかない月などは、例えば積立日を30日としていても、28日ないしは翌月1日などに積立がされるわけですが、ここではそうした影響は考えない(=無視できる)ものとします。
以上の設定のもとで、S&P 500の日別平均指標(価格)を見ていきましょう。見やすいように、10年間の平均値と比べて、各日の平均値が何%乖離しているかを示しました。
* 売買価格 (ドル建て)
gsort year month day
gen price = sp500
replace price = sp500[_n-1] if sp500 == .
replace price = sp500[_n-2] if sp500 == .
replace price = sp500[_n-3] if sp500 == .
// 平均値との差を定義(%)
su price
gen price_adj = (price/r(mean) - 1)*100
// グラフ
graph bar price_adj, over(day) ///
ytitle("Relative Price of S&P500 in USD (%)") bar(1, color(dkorange))
// データの保管
tempfile sp500
save `sp500', replace
この結果を見ると、株価が平均的に下がる局面と、上がる局面とに明確に分かれていることがわかります。やはり月初や月末は株価が上がっていることが見て取れます。また15日前後や20日前後にも株価が上がっていますが、これは給料日と関係してのことなのでしょうか。
この結果から、例えば5日を積立日にすると、1日を積立日にした場合と比べて、1.3%ほど株価が安いため、同じ積立額でも1.3%ほど多くの株式を保有できることになります。
3. 為替の影響
しかし実際、私を含め多くの人は、円建てでS&P500などのインデックスファンドに投資すると思います。したがって、為替の日ごとの変動も考慮に入れる必要があります。
これを行うためにまず、以下から過去10年分の円とドルの為替レートのデータをダウンロードしました。
そして為替レートがどのように変動してきたのかを、S&P500指数の変動とともに見ていきましょう。
* 為替データ
import delimited "JPY=X.csv", varnames(1) clear
drop if year == 2012 & month == 7
drop if year == 2022 & month == 7
// make numeric variable
gen byte notnumeric = real(open) == . /*makes indicator for obs w/o numeric values*/
tab notnumeric /*==1 where nonnumeric characters*/
list open if notnumeric == 1 /*will show which have nonnumeric*/
replace open = "" if notnumeric == 1
destring open, gen(yen)
// 平均値との差を定義(%)
su yen
gen yen_adj = (yen/r(mean) - 1)*100
// データの結合
merge 1:1 date using `sp500'
// グラフ
graph bar price_adj yen_adj, over(day) ///
ytitle("Relative Price of JPY/USD (%)") ///
bar(1, color(dkorange)) bar(2, color(ltblue)) ///
legend(order(1 "SP500 Price" 2 "JPY/USD") pos(1))
上のグラフではオレンジ棒がS&P500指数の日別平均値を、青棒が為替レートの日別平均値を示しています。為替レートについては、日別平均値が低い時ほど円高を、すなわち買い時であることを示しています。S&P 500指標とある程度連動するようにして、ドルが買われている(円が売られている)ことがわかります。
4. 結論
最後に為替レートを考慮した、円建でのS&P500指標の日別平均値を見ていきましょう。
* 売買価格 (円建て)
// 円建て価格の定義
gen yprice = price*yen
// 平均値との差を定義(%)
su yprice
gen yprice_adj = (yprice/r(mean) - 1)*100
// グラフ
graph bar yprice_adj, over(day) ///
ytitle("Relative Price of SP500 in JPY (%)") bar(1, color(navy))
結論、積立日として最適なのは、過去10年のデータによれば5日または12日であることがわかります。データをリーマンショックのあった2009年以降に絞っての分析も行いましたが、同様の結果が得られました。
為替の変動を考慮すると、例えば5日を積立日にすると、1日を積立日にした場合と比べて、1.5%ほど株価が安いため、同じ積立額でも1.5%ほど多くの株式を保有できることがわかります。5日を23日と比べるとその差はさらに大きく、2.7%ほどになります。
時差なども考慮すると、S&P 500インデックスファンドの場合、最適な積立日は4日または11日あたりでしょうか。
おわりに
いかがだったでしょうか。今回は積立日はいつがいいのかという疑問に対して、比較的簡単なデータ分析で答えを出すことができました。これからもこうした素朴な疑問に対する、データ分析の記録を残していきたいと思います。
この記事が気に入ったらサポートをしてみませんか?