Quandlを用いて先物ロングオンリーのパフォーマンスを計測する

概要

  • Quandlから主要な先物の各限月データが取得できるので、それを用いて先物ロングオンリーのパフォーマンスを計測する。(先物ロングオンリー = 期近の買い持ち)

データ概要

今回対象としたアセットクラスは

  • 株式指数先物
  • 国債先物
  • 金利先物
  • 為替先物
  • コモディティ先物

の合計82項目。あまりメジャーでないと思われる先物は省いています。またQuandlには全ての限月が掲載されているわけではなく、例えば日経平均先物は2013年12月限からしかデータがありません。

先物ロール方法

基本的にはDeliveryの3営業日前に期近から期先へとロールするようにしています。単純に各先物のパフォーマンスを見てみたいだけなので、取引コストは無視しています。

各統計量について

先物のリターンを計測しているので、パフォーマンスは無リスク金利に対する超過リターンベースとなっています。

結果

と言いつつjupyter notebookの直貼りです。

参考

Collections – Quandl
https://www.quandl.com/collections/futures

2015年の各資産パフォーマンスのまとめ(株・債券・FX・コモディティ)

概要

  • 今年ももう終わりなので、株式、債券、FX、コモディティの2015年の1年間のパフォーマンスをまとめておきます。
  • パフォーマンスが特に良かったのは日本株・欧州株。

対象資産

  • 株式:主要株式(米・日・欧州・英)、その他株式(独・仏・加・スイス)、米国ファクター(サイズ、バリュー、グロース)
  • 債券:主要債券(米・日・独・英)
  • FX:先進国通貨(G8)、新興国通貨(メキシコ・ロシア・ブラジル・南アフリカ・トルコ・中国)
  • コモディティ:エネルギー(WTI・天然ガス・ブレント)、金属(金・銀・銅)

主要株式

Equity Developed Markets 2015 Part 1

  • 日経平均がトップ(約+10% p.a.)、次いで欧州(Euro stoxx)、米英はフラット。
  • 8月はボラティリティ急上昇に伴い株式は大幅下落。

その他株式

Equity Developed Markets 2015 Part 2

  • 仏(CAC 40)、独(DAX)が堅調。スイス(SMI)は1月にCHFのペグが外れた際の影響で大幅下落。年初来ではフラット。

米国株式ファクター

Equity US Factors 2015

  • 今年はバリュー(Price to Book)が機能しない一年。Valueがアンダーパフォームする一方、グロースがマーケットをアウトパフォーム。

債券

Rates Developed Markets 2015

  • 総じて僅かながらキャッシュをアウトパフォーム。独(Bunds)は4-6月に金利が急上昇、一時はネガティブリターンとなったが、その後は金利も落ち着き大体+2% p.a.
  • JGBは全然動かない

先進国通貨

FX Developed Markets 2015

  • 少し見辛いかもしれませんが、XXXUSDのパフォーマンスを掲載しています。グラフ上で、上に行けば行くほどその通貨は米ドル対比で強くなっていたことを表しています。
  • AUD, NZD, CADはマイナスリターン。コモディティ関連と思われます。
  • EURもUSD対比で弱かった。
  • JPY, CHF, GBPはほぼフラット。

新興国通貨

FX Emerging Markets 2015

  • 基本的に新興国通貨は弱かった。一時的にはコモディティ価格上昇に伴いRUBは上昇したが、年後半では下落。
  • CNHは8月に大きく下げたが、相対的な下げ幅は小さかった。

コモディティ(エネルギー)

Commodities Energy 2015

  • エネルギー安、今年一年で40%下落。

コモディティ(金属)

Commodities Metals 2015

  • 金属も弱かった。コモディティは基本的にキャッシュをアンダーパフォームする一年だった。

計算方法補足

  • パフォーマンスはキャッシュに対する超過リターンベースで評価。為替ヘッジ後のリターンを掲載しています。
  • 株式は配当、債券はクーポン、通貨は金利差に該当する部分も再投資しています。
  • データは全てQuandlから。

対円為替レートに対するモメンタム戦略

概要

  • 簡単な自己相関を利用したモメンタム戦略の適用
  • 特にUSD, EUR, GBPに対しては良好
  • NZD, CHFに対しては微妙
  • 将来データは使ってない(はず)のだがトレードタイミングがシビアなのでもう少し検証が必要

設定

以下のスリッページを想定。トレードする際に以下の値がリターンからマイナスされるように処理。
個人がやる場合どのくらいが実勢なのか知りませんがとりあえずの仮置き

  • USDJPY: 1銭
  • EURJPY: 3銭
  • GBPJPY: 5銭
  • AUDJPY: 3銭
  • NZDJPY: 6銭
  • CADJPY: 6銭
  • CHFJPY: 9銭

為替レートはQuandlから拝借しています。

結果

各通貨に関して全期間と、2014年以降の結果を掲載

・USDJPY

直近は円安に進んでましたのでロングオンリーとそこまで違いはないですね。
USDJPY_whole

USDJPY_2014

・EURJPY

ユーロ円で見ると緩やかな円高となっているようですね。
あまりトレンドが無いときは戦略のPLもほぼ平らですが、為替が大きく動くときは戦略もそれに追従していることが分かります。結果的に累積PLは階段上になっていますね。
EURJPY_whole

EURJPY_2014

・GBPJPY

GBPJPY_whole

GBPJPY_2014

・AUDJPY

AUDJPY_whole

AUDJPY_2014

・NZDJPY

2006年あたりまでは戦略が効いてないですね。
NZDJPY_whole

NZDJPY_2014

・CADJPY

こちらも全体としてはワークしているように見えますが、2000年から2006年辺りは負け続けていますね。
CADJPY_whole

CADJPY_2014

・CHFJPY

スイスフラン円は全然効いてないですね。2009年辺りまでずっと負け越しています。
取引コストを高く設定している点もありますが、無駄なトレードが多そうですね。

ちなみに2015年始めのフランショックは運良く捉えています笑
CHFJPY_whole

CHFJPY_2014

今後の課題(備忘録)

・NZD, CHFはもう少し改良する余地がありそう
→自己相関が弱い or 負値の場合はトレードしない or トレードシグナルを反転させる

・トレードタイミング
ティックデータなりを使ってもう少し実勢に近いトレードラグを考慮させる。

・他の資産
ちなみに同じロジックを日経平均に適用してみましたが全然ダメでした。

Generating futures long-only return series using Quandl

Summary

– Generate futures(equity index and commodity) long-only return series using Quandl
– Each futures are rolled on month-end basis
– Returns using pre-populated near future price by Quandl are technically not tradable ones
– This post is translated/modified version of the previous post

Quandl roll mechanism

According to Quandl description, the near future series is populated as follows:

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.

So returns calculated only by CL1 series are not tradable because return on expiry date(time t) should refer to near future contract on time t, which is not included CL1 series. In other words, return on expiry date is referring different two contracts if you use only CL1.

Proposed roll mechanism

In this post, I will assume futures are rolled on month-end, i.e. near futures are unwound on month-end and next far futures are purchased on the same day. By doing this, all returns become theoretically tradable.

Python code

Note that you need to plug your Quandl token in self.token when you use this code.

Results

Equity index futures
150329_all_log

Commodity futures
150331_comdty

Next step

Since we could generate some benchmark indices, next step would be to come up with statistical investment strategy. Applying basic machine learning would be the first analysis.

Comments are welcome.

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を割っています。エクイティリスクプレミアムとは何だったのか。

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