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 トレードシグナルを反転させる

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

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

Cross Entropy Minimisation

概要

  • エントロピー差が最小になるような最も近い分布を求める案件
  • 平均2.2の正規分布から平均2.3の分布を求める

Rコード

参考サイト1にMatlabコードがあるのでそれをR用に書き写した

結果

期待値2.2と2.3がそれぞれ求められているのであっているっぽい。

PDFをプロットすると以下の様な感じ。参考サイト1と同じに見えるっぽい?
150614

参考

Tutorial Demo on Cross Entropy minimization (I) [Matlab Octave]
http://www.quantcode.com/modules/mydownloads/singlefile.php?lid=478

Forecasting Using Relative Entropy
https://www.frbatlanta.org/-/media/Documents/filelegacydocs/wp0222.pdf
(元論文。あまり読んでいない。)

未知パラメータがある場合のパーティクルフィルタ

概要

  • 未知パラメータ(ノイズの分散など)を含む場合のパーティクルフィルタの実装
  • システムノイズが正規分布の場合とコーシー分布の場合の比較

システムノイズが正規分布の場合

詳しい理論に関しては参考文献のP.225辺りからを御覧ください。

対象データに関しては前回の記事と同様のものを使っております。前回との違いとしては、システムノイズと観測ノイズの分散が同時に推定されているという点ですね。
また、今回は重点遷移密度を得るためにAnxiliary Particle Filter(補助粒子フィルタ)を使っています。これは、未知パラメータを含んでいるからという理由と、他の分布への一般化も視野に入れているからという理由です。

また参考文献中では実装されていませんが、多項リサンプリングも行なっています。

状態の推定結果

粒子数は1万個です。以下のように、若干ずれる箇所はありますが、カルマンフィルタとほぼ同程度の推定を行なっていることが分かります。
150607_1

システム分散の推定結果

システム分散の真値は1ですが、まあまあという感じですかね。
赤の破線はそれぞれ25%タイル値、75%タイル値を表しています。
150607_2

観測分散の推定結果

こちらの真値は2ですが、まあこんな感じという感じなんですかね(― ―)
150607_3

システムノイズがコーシー分布の場合

ほとんど正規分布の場合と変わりません。正規分布のコードをコピーして再利用しているので、変数名などが適切ではないですがそこは目をつむってください(― ―)

今回推定対象としたデータ列は以下。コーシー分布に従う状態に、正規分布を上乗せしています。
状態がコーシー分布なので、正規分布よりもドラスティックなジャンプが時々発生します。
150607_0

状態の推定結果

粒子数は100万個。青線は状態の真値で、赤線がパーティクルフィルタで推定された状態です。
概ね推定されているような気がしなくもないですがやはり精度はかなり悪くなりますね。
100万個でこれですからね。MBPで走らせるとかなり時間がかかります(― ―)
150607_1

システムノイズのscaleの推定結果

真値は0.05ですがこんなもんなんですかね。時々ゼロに張り付いたりしていますが。
150607_2

観測分散の推定結果

こちらはまあいい感じですかね。真値は1.5です。
150607_3

参考文献

Amazon.co.jp: Rによるベイジアン動的線形モデル (統計ライブラリー): G.ペトリス, S.ペトローネ, P.カンパニョーリ, 和合 肇, 萩原 淳一郎: 本
http://www.amazon.co.jp/dp/4254127960

パーティクルフィルタ・平滑化の実装

概要

  • パーティクルフィルタ・平滑化を実装し、DLMパッケージによる結果との比較を行なう
  • 平滑化の計算が合っているのか微妙。教えて偉い人!

Rコード

サンプル時系列の生成

参考文献[1]のP.219を参考に、dlmパッケージを使って適当な時系列を作成します。コレに対してパーティクルフィルタ・平滑化を適用させます。
今回は単純な線形ガウシアンモデル。パラメータも特定させておきます。

答え合わせように、フィルタ、平滑化も先に計算しておきます(各々modFilt, modSmoothに格納)。

パーティクルフィルタ本体

重点遷移密度の選び方について、DLMであれば最適重点核として\( y_t \)が与えられたもとでの事後分布を選ぶのが良いのですが、今回は事前分布を使っています。
非ガウス分布の実装も視野に入れているのでこういう仕様にしています。パッと見た雰囲気では、この事後分布を一般的に書くのはできないんですよね?(たぶん)

さらに、参考文献[1]のP.216に紹介されている多項リサンプリングを入れています。
これは少数の粒子が大きい重みをしめてしまうことによるモンテカルロ近似の劣化を防ぐための措置です。

パーティクルフィルタのメインの実装に関しては参考文献[2]のP.214のアルゴリズムをなぞっているつもりです。

プロットなど

y.pfに上述のパーティクルフィルタ関数の実行結果を格納しています。

結果

上記のプロットを行なったものが以下

フィルタ分布

フィルタに関してはカルマンフィルタと同じような結果が出ていそう。
赤破線はパーティクルフィルタからもとめた1標準偏差です。
150530_1

フィルタ分布の標準偏差に関しては、パーティクルフィルタは精度が落ちていますね。参考文献[1]よりも明らかに悪そうです。これは重点遷移密度に事後分布を選んでいなからなのでしょうか…
150530_2

平滑化

平滑化ラグは2を使用。なんとなく近い分布が得られていそうな気がしますが、微妙に違う感じにも。。
150530_3

標準偏差は以下、フィルタ分布よりは精度が上がっているような気がしますがそれでもかなり暴れん坊将軍ですな。
150530_4

平滑化(ラグが20の場合)

参考文献[2]によると、ラグは20くらいを選ぶと良いと書いてあるのでそれを選んだ場合の結果。
ラグを含む分布の精度が極端に悪い。なぜでしょう。
150530_5

150530_6

今後の課題

  • そもそも平滑化あってるのか?
  • 非ガウス分布
  • 未知パラメータを含むパーティクルフィルタ

参考文献

Amazon.co.jp: Rによるベイジアン動的線形モデル (統計ライブラリー): G.ペトリス, S.ペトローネ, P.カンパニョーリ, 和合 肇, 萩原 淳一郎: 本
http://www.amazon.co.jp/dp/4254127960

Amazon.co.jp| 時系列解析入門| 北川 源四郎| 本| 微積分・解析
http://www.amazon.co.jp/dp/4000054554

モンテカルロ・フィルタおよび平滑化について
http://www.ism.ac.jp/editsec/toukei/pdf/44-1-031.pdf

逐次モンテカルロ/(粒子|パーティクル|モンテカルロ)フィルタを実装してみた – My Life as a Mock Quant
http://d.hatena.ne.jp/teramonagi/20140525/1400996808

Particle Filter
http://daweb.ism.ac.jp/koza/koza2008/PF_Nakano20081030.pdf