Time-series momentumに関するまとめ

概要

(9-Jul-2017) データ更新

  • Time-series momentumおよびMomentum全般に関するまとめ
  • 前回作成したロングオンリー系列をもとにTime-series momentumのバックテストを行なう

1. CTA

Automated Hedge Funds Make Millions in January’s Market Selloff – WSJ
The Quants Are Taking Over Wall Street

ここ数年(?)ですが、コンピュータードリブンの投資意思決定を行なうファンドがにわかに注目を集めています。その中でも特にヘッドラインを占めるのが俗にCTA(Commodity Trading Advisers)と呼ばれるヘッジファンドのグループではないでしょうか。CTAは、名前にこそCommodityとありますが、投資対象をコモディティに限定しているわけではなく、流動性の高い資産であれば何でも取引の対象とします。(個別株式、株式指数先物、金利先物、国債先物、金利スワップ、CDS、為替(フォワード)、コモディティ先物、オプションなどなど)

そんなCTAが用いる投資手法は、大まかに言えば、コンピューターを用いて各マーケットのトレンドを検知し、それをもとにロング・ショートのポジションを構築するMomentumと呼ばれるものです。このような戦略は、トレンドが発生しているときに収益が期待できるため、株のセルオフ時など、通常の資産クラスが苦戦する環境で、特に大きな収益を上げる傾向にあります。最近の例では、上述のリンクにもあるように、2016年1月のセルオフですかね。このときもCTAは大きなプラスのリターンを上げることに成功しています。

今回の記事ではいつものようなチラシの裏に書いたような適当な内容ではなく、自分の頭を整理する意味も含めて、Momentum戦略、特にTime-series momentumと呼ばれる投資戦略についてまとめてみたいと思います。

2. Momentum

2.1. 基本的な考え方

先程のセクションでも少し触れましたが、Momentumの考え方は非常にシンプルで、「直近価格が上がっているものを買い、直近価格が下がっているものを売る」というものです。価格経路の継続性にベットしているので、モメンタム、というわけですね。したがって、この考え方は、「いかにしてそのトレンドを検知するか」という問題へと帰着します。そこは各職人の腕の見せ所です。

さて、仮にトレンドを検知できる方法が見つかっているとして、実際に投資へと落とし込む場合、大きく2つの方法があります。1つ目がCross section momentumと呼ばれる方法で、2つ目が本記事のお題でもあるTime-series momentumとなります。

2.2. Cross section momentum

Cross section momentumはファーマ・フレンチを代表とする、株式ポートフォリオの構築方法に着想を得たものです。つまり、よくあるやり方としては株式銘柄ユニバースを、トレンドをもとに10分割し、トップ10%をロングし、ボトム10%をショートして額面ニュートラルにするという感じでしょうか(ベータニュートラルや他の方法も考えられますがそれはまた別のお話)。

このやり方は株式に限った話ではなく、例えばコモディティ先物18銘柄に関して、トレンドをもとに3分割し、上位6銘柄をロングし、下位6銘柄をショートする、というような形で他の資産クラスにも適用されることがあります。

2.3. Time-series momentum

Cross section momentumが同一ユニバース間の相対的なトレンドを元にポジションを構築するのに対し、Time-series momentumは名前の通り、自分自身の時系列データをもとに当該銘柄のポジションを決定します。

例えばある株式指数先物のt時点でのポジションを決定する場合、t時点から見て過去m期間のトレンドを元に今後n期間のポジションを決定する、というような具合です。各投資対象のポジションが各々独立に決定されるため、仮に全てのマーケットがブル相場だった場合には全ての銘柄をロングし得ます。一方でCross section momentumはあくまで相対的なトレンドをベースに、常にロング・ショートを行なうため、あるt時点において必ず何かしらをロングし、何かしらをショートしています。

3. 既存研究

Time-series momentumはCTAで実務的に用いられているだけではなく、アカデミックの世界でも活発な研究対象として扱われています。Momentum研究の草分けとなったのはJegadeesh (1990)、Jegadeesh and Titman (1993)で、米国株式を対象に比較的長期間(12ヶ月)のスパンでのMomentum効果を報告しています。

Jegadeeshを始めとする初期の研究はCross section momentumが主流でしたが、その後Time-series momentumに関しても研究が行なわれるようになります。その中でも外せないのがMoskowitz et al. (2012), Asness et al. (2013)でしょうか(この両者は現在AQRと呼ばれるヘッジファンドで働いているため、存分にポジショントークが含まれているかとは思いますが)。彼らは様々な資産クラスの先物を対象に、Time-series momenutm効果の存在を報告しており、その要因として先物リターン系列に対する正の自己共分散(positive auto-covariance)を挙げています。

また、Moskowitz et al. (2012)はTime-series momentumに対するパフォーマンスを計測するだけではなく、そのリターンが「payoffs similar to an option straddle on the market」のような形になるということにも言及しています。前述しましたが、Momentumはマーケットにトレンドが発生している期間に、特に大きな収益が期待できるため、結果としてオプションのストラドル戦略のようなペイオフになるという考え方ですね。

近年では、そのTime-series momentumに対するリターンの分布特性にも注目が集まっており、例えばRichard (2013)ではMomentumの実装方法と、リターンの3次モーメント(歪度 or スキューネス)に関する関係性を見ています。この研究では、仮に資産価格のリターン分布が対象なiid過程であったとしても、Momentumにより正のスキューネスが獲得できるということを報告しています。Dao et al. (2016)では一般的なMomentum戦略に従うと、最終的なリターンは比較的長期のリターンに対するガンマロングのような形になると述べています(分散に対して正のエクスポージャーを持つ)。いずれの観点もMomentumがストラドルのようなポジションになるということをサポートしています。

正のリターンを獲得でき、かつストラドルロングの特性も兼ね備える美味しいとこどりのMomentumですが、なぜそもそもそんなに上手くいくのか、という点に疑問が残ります。良くある説明としては投資家の非合理性に着目するもので、例えば、何らかのニュースやイベントによりある資産のフェアバリューが変化した際に、投資家は瞬時に反応するわけではなく、徐々にそのフェアバリューの変化に適応していくため、その過程において価格に継続性が生じるというものです。Hamdan et al. (2016)では、リターンとスキューネスには負の関係があるべきだということを報告しており、その関係が成り立たないMomentum戦略はアノマリーであるということを述べています(資産価格にプライスされるリスクプレミアムではない)。一方で、Momentumは価格にプライスされているファクターであるという考えもあり、Liu and Zhang (2008)ではマクロ環境に対する正の感応度を要因として挙げています。

4. バックテスト

ここでは前回の記事で作成したロングオンリーのデータを元に、実際にTime-series momentumのパフォーマンスについて計測していみたいと思います。
以下に掲載されている結果に関してはこちらにJupyter notebookをアップロードしてあります。

ポジションの計算方法には様々な方法が考えられると思いますが、今回はBaz et al. (2015)にあるように簡単な指数加重平均を用いたものを採用します。

4.1. 個別銘柄

下図は各資産について同様のルールを適用して運用した場合のシャープレシオを計測しています。もともとのデータはQuandlから来ているため、資産によっては十分なサンプル数がありませんが、それを加味しても多くの資産、資産クラスでプラスのリターンを挙げています(債券はここ数十年ブル相場が続いているため、大きくサンプルバイアスが掛かってる点には注意すべきだと思いますが)。

4.2. ポートフォリオ

次に、上記の個別Time-series momentumをポートフォリオとして持った場合の結果を見てみます。各資産のウェイトに関してはボラティリティベースのリスクパリティで保有します。
Nick (2015)では、ボラティリティパリティではなく、リスク寄与度に基づくリスクパリティでポートフォリオを構築すべしという提案もありますが、それはまた別の機会ということで。

最後に、直近の各先物のポジションに関しては以下になっています。

5. おわりに

だらだらと書きましたが、本記事では

  • Time-series momentumおよびMomentum全般に関するまとめ
  • Time-series momentumのバックテスト

を見てみました。

個人的にはこのMomentumは、非常によく効く運用方法の1つであるだけではなく、数学的なバックグラウンドからの関連性から議論できる点も興味深いなと感じています。今回使用した手法は指数加重平均を用いた簡単なモデルでしたが、基本的にMomentumは過去の価格情報を使ってポジションを構築するため、より複雑な機械学習を用いてトレンドを検知するなど発展性もまだまだあるかと思います。

参考文献

Asness et al. (2013): Value and Momentum Everywhere
http://pages.stern.nyu.edu/~lpederse/papers/ValMomEverywhere.pdf

Baz et al. (2015): Dissecting Investment Strategies in the Cross Section and Time Series
http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2695101

Dao et al. (2016): Tail Protection for Long Investors: Trend Convexity at Work
http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2777657

Hamdan et al. (2016): A Primer on Alternative Risk Premia
http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2766850

Jegadeesh (1990): Evidence of Predictable Behaviour of Stock Returns
http://finance.martinsewell.com/stylized-facts/dependence/Jegadeesh1990.pdf

Jegadeesh and Titman (1993): Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency
http://www.e-m-h.org/JeTi93.pdf

Liu and Zhang (2008): Momentum profits, factor pricing, and macroeconomic risk.
https://fisher.osu.edu/~zhang.1868/LiuZhang08RFS.pdf

Moskowitz et al. (2012): Time Series Momentum
http://docs.lhpedersen.com/TimeSeriesMomentum.pdf

NBIM Discussion Note: Momentum in Futures Market
https://www.nbim.no/globalassets/documents/dicussion-paper/2014/discussionnote_time_series_momentum_latest.pdf

Nick (2015): Trend-Following, Risk-Parity and the influence of Correlations.
http://papers.ssrn.com/sol3/Papers.cfm?abstract_id=2673124

Richard (2013): Risk and Reward in Momentum Trading
https://www.newton.ac.uk/files/seminar/20130328140014451-153538.pdf

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

概要

(8-Jul-2017: データを更新。Jupyter notebookへのリンクを追加。)

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

データ概要

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

  • 株式指数先物 (ボラティリティ指数先物含む)
  • 国債先物
  • 金利先物
  • 為替先物
  • コモディティ先物

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

先物ロール方法

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

各統計量について

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

結果

オリジナルのデータはこちらにアップロードしてあります。

各先物のシャープレシオ

参考

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.