VIX先物ETFを2007年からバックテストするためのPythonコード。

VIX先物ショートは、SPXのロングと違い、相場の上げ下げにかかわらずシステマチックな利益をもたらす手法です。実際、2012年に設定されたVIX先物ETFであるVIXYをみると、その減価が非常にコンシステントで信用できるものであることがわかると思います。

なぜVIX先物にこのような大きな減価があるのか、に関しては下の記事を参考にしてください。

VIXショートは上記記事のように、基本的には非常に利益が出る「正しい」方法なのです。しかし、VIXはたまに急激な暴騰があるため、VIXショートの運用は簡単ではありません。たまにある暴騰に耐えられずにマージンコールで損切りになってしまえば、その後の急激な減価から得られる利益が失われてしまいます。また、VIXショートETFを使うと比較的安全に運用できるのですが、VIX暴騰時の強烈な減価により、きちんとマネージしない限り利益がでないことを、上記2番目の記事で説明しました。

VIX先物ETFの設定は2012年ですが、先物そのものは2007年あたりから取引されています。そこで、これらの記事でも使った、VIXショートETFの長期のバックテストができる環境を作るPythonコードを紹介しようと思います。コードもあるフォルダには、「CBOE」というデータ用のフォルダも作っておいてください。

特殊ライブラリとして、SeleniumとChromeDriverManagerが必要ですので、イントールしてください。テストはWindowsのみでしていますが、マックでも変更なしに動くのではないかと思います。

pip install selenium
pip install ChromeDriverManager

初回だけは、むっちゃ時間がかかります。これは、プログラムがVIXセントラルからデータを取ってくるからです。まあ一晩動かしておけばいいかと思います。

出力は、以下のようになります。

VIXYは1月満期と2月満期のVIX先物を毎日ロールしていくETF、VIXMは4か月満期と7か月満期のVIX先物を毎日ロールしていくETFです。それぞれぴったり一致していますね!

コードはすみませんが有料です。かなり巨大なコードなので、頑張って読んでみてください!

レバレッジETFのシミュレーション

レバレッジETFやインバースETFである、UVXY(レバ1.5倍), SVXY(レバ-0.5倍), SVIX(レバ-1倍)、UVIX(レバ2倍)は、次のようにできます。プログラムを走らせると自動的にすべてのシミュレーションをします。なお、SVXYとUVXYは、2018年2月にレバレッジが変更になっているので、それ以降をリファレンスとして載せるようにしています。

    UVXY_sim = simulate_leverage(1.5, 'UVXY', initial_day = datetime(2018,2,15))
    SVXY_sim = simulate_leverage(-0.5, 'SVXY', initial_day = datetime(2018,2,15))
    SVIX_sim = simulate_leverage(-1, 'SVIX', initial_day = None)
    UVIX_sim = simulate_leverage(2, 'UVIX', initial_day = None)

出力

UVXYのシミュレーションと実際のチャート
SVXYのシミュレーションと実際のチャート
UVIXのシミュレーションと実際のチャート


SVIXのシミュレーションと実際のチャート


Pythonコード

ここから先は

23,593字

¥ 4,000

期間限定!PayPayで支払うと抽選でお得

この記事が気に入ったらチップで応援してみませんか?