RでレバレッジETFをシミュレーションしてみよう。

Finance

モメンタム戦略っぽいシミュレーションで数日を費やしてしまったので成果は明日以降のブログにまとめようと思います。
モメンタム戦略はリスクを抑えて最終的なリターンをあげる手法なので、リスクが高めの手法に突っ込むには検討の価値有りかな、と思いました。
通常のS&P500連動のETFではなく、レバレッジETFとよばれる、S&P500の日足の3倍に連動する商品での検討もガッツリやっています。

レバレッジETFとは

上手くまとまっているサイトが多いのでリンク先をお読みください。

レバレッジ型ETFの落とし穴 | ニッセイ基礎研究所
レバレッジ型ETFの投資で知っておくべき特徴やリスクをまとめました | マネーの手帳
レバレッジETFを考える

長期的にみたリターンの話になるとややこしいですが、S&P500に連動するレバレッジETFのSPXLでは、「S&Pが1%上がったらSPXLは3%上がる」、「S&P500が1%下がったらSPXLは3%下がる」です。S&P500が20%下がればSPXLは60%下がり40の価格になります。その後S&Pが元の値段に1日で戻っても(25%上がる)、SPXLは70%までしか戻りません(40から75%上昇しても70)。これ繰り返すと長期的に思ったように3倍にならないじゃん!というのはありますが、今回の主題とは関係ありません。

本記事では「解析に使うレバレッジETFの値動きをどうやってシミュレーションするか?」を解説します
金融商品の解析をやりたいものの、SPXLは2008年からのデータしか無く、長期的な値動きを再現するにはシミュレーションが必要です。

 

線形回帰でやってみよう。

1日の値動き(リターン)が分かればETFは再現できます。今回は線形回帰という統計の手法を利用してリターンを推定します。

y = ax + b

この式で、SPXLの1日の値動き(y)を、S&P500の1日の値動き(x)から表すために必要な(a, b)という値を求めます。
yはぴったりxの3倍になっていてほしいのでa=3、b=0と期待して解析を始めます。x=0.01のときS&P500は+1%という意味です。

SPXLとS&P500の指標を2008年から2018年まで読み込んで、日足リターンを求めます。
毎日の価格変動を比べることでRはさっきのy=ax+bに当てはまる最適なaとbを求めてくれます。
解析に使うソースはこんな感じ。

library(quantmod)
start = "2008-11-05"
end = "2018-03-31"
sp500 <- getSymbols("^GSPC", src = 'yahoo', auto.assign = FALSE, warnings = FALSE, from=start, to=end)
spxl <- getSymbols("SPXL", src = 'yahoo', auto.assign = FALSE, warnings = FALSE, from=start, to=end)
return_asset <- list(sp500 = dailyReturn(sp500),
spxl = dailyReturn(spxl))
lm(return_asset$spxl~return_asset$sp500)
scatter.smooth(return_asset$spxl~return_asset$sp500, xlab = "S&P500", ylab = "SPXL")

結果

このようなコードを読み込ませると

> lm(return_asset$spxl~return_asset$sp500)

Call:
lm(formula = return_asset$spxl ~ return_asset$sp500)

Coefficients:
(Intercept) return_asset$sp500
9.876e-05 2.902e+00

scatter.smooth(return_asset$spxl~return_asset$sp500, xlab = "S&P500", ylab = "SPXL")

f:id:drkernel:20180508234207j:plain

Interceptはいわゆる切片(残差)です。0.00009876と限りなく0に近い数字です。aにあたる係数は2.90と3.00までは行きませんが大体それくらいの動きをすることが分かりました。プロットはたまに乖離している○がありますが、多くの○はちゃんと直線上に載っていて良い近似ができていることが分かります。

y = ax + b

に当てはめると、

(SPXLの1日の値動き) = 2.902 * (S&P500の1日の値動き) + 0.00009876

で求められることが分かりました。
当サイトでの解析ではレバレッジETFのリターンを求める際は本ページの手法にもとづいて行うこととします。
(実際の解析では月足リターンで同様のことを行って係数を求めています。)

コメント