Quandlを利用して先物ロングオンリー系列を作成する

概要

・Quandlから各限月の先物価格を取得し、月末ローリングでのリターン系列を作成する
・Quandlのデフォルト期近系列そのものは実現可能なリターンではない

Quandlの先物ロール方法について

Quandlには期近の価格系列がすでにあるのですが、それを用いて分析する場合少し問題があります。

Continuous Contracts – Data from Quandl
https://www.quandl.com/c/futures/continuous

Quandl’s continuous contracts are created using the simplest possible roll algorithm: “end-to-end concatenation”. That is to say, CL1 is always the crude oil contract with the shortest time to expiry; CL2 is the second shortest contract, and so on. On expiry date, CL1 starts to point to the next future in line, and so on all the way down the strip. There’s no price adjustment, and the roll dates are simply the last trading dates.

上記サイトには期近(ここではCL1)のローリング方法について記載されています。満期日ローリングなのはまあ良いとして、満期日のCL1はnext futureを参照するとなっております。
つまり、満期日の価格と、満期日の1日前の価格は別の限月を参照しており、単純にCL1の系列のみからリターンを計算すると、実際には実現不可能なリターンを計算することになってしまいます。

今回作成したロール方法

今回は月末ローリングとします。つまり、月末になった時点で期近を売却し、期先を購入します。
ちなみに月末にした特に深い意味はなく、単純にコードが書きやすいと思ったからです。
月末(t)とした場合、t日のリターンは期近(t)と期近(t-1)から、t+1日のリターンは期先(t+1)と期先(t)から計算します。
こうすることで理屈上は全ての日のリターンは実現可能な値となります。

Pythonコード

結構な数のクエリを実行しますのでトークン取得が必要になるかと思います。
self.retに最終的なリターン系列が格納されるようになっています。

結果

適当に指数化してプロットしてみたのが以下

日経平均

150329_NK

SP500

150329_SP

EuroStoxx

150329_EuroStoxx

FTSE

150329_FTSE

全体(y軸は対数表示)

150329_all_log

こうしてみると1987年のブラックマンデーってかなりシャープに落ちていることが分かりますね笑
また日経平均はスタート地点が1990年とバブル崩壊直後だったこともあり未だに100を割っています。エクイティリスクプレミアムとは何だったのか。

ということで今後は株式先物を使っても分析ができそうですね。
また同じコードを流用することでコモディティなども分析できそうです。実際に個人が取引できるのかは知りませんが。。。