ドテンくん(18期間チャネルブレイクアウト)の直近の成績を題材に考えるビットコインのリターンの確率分布とトレンドフォロー戦略

こんにちは.スナフキンです.10/20(土)に人工知能学会金融情報学研究会(SigFin)に参加してきました.面白い発表がたくさんありましたが,中でも印象に残っているのはNT倍率取引における深層強化学習を用いた投資戦略の構築 (常井祥太,穴田一(東京都市大学))やテクニカル指標による金融取引の戦略木構築(加藤旺樹, 穴田一(東京都市大学)),高頻度注文情報の時系列性考慮による短期市場動向予測(前田巌, 松島裕康, 坂地泰紀, 和泉潔(東京大学), David deGraw, 富岡博和(大和証券), 加藤惇雄(大和総研))などの研究でした.比較的単純な手法を用いた場合でも株式指数市場に裁定機会が存在することが分かったことや,ぼく自身が考えたことのある話題が議論に登っていたためだと思われます.その他には,FX業者がカバー先銀行のレート更新を少しでも早めることで,業者間裁定取引のカモにならないようにするための手法の研究などもとても興味深かったです.

イントロ

さて,そのSigFinの発表の1つにビットコイン価格時系列の統計的性質(高石哲弥(広島経済大学))というものがありました.

ぼく自身,最近スイングトレード戦略を考えていてビットコイン価格の分布を眺めることも多く,せっかくの機会なので自分の考えの整理と勉強のために,「ドテンくん(18期間チャネルブレイクアウト)の直近の成績を題材に考えるビットコインのリターンの確率分布とトレンドフォロー戦略」という題で記事にまとめてみようと思います.ところで,アセットの統計的な性質を用いた戦略についてはUKIさんの記事(https://note.mu/trading/m/md88fa4cd2fc1)やツイートが非常に参考になります.トレンドフォロー戦略については下記のツイートがすべてなのですが,本記事はより細かい考察や応用を考えていこうという記事になっています.

ドテンくんの直近の成績

早速ですが,ドテンくんの成績を見てみましょう.ドテンくんのロジックについては,18期間チャネルブレイクアウトで,この解説は色々な場所でされていると思うので省略します.ぼくのブログ記事にも少しですが,解説があります.

こんにちは!スナフキンです.先日チャネルブレイクアウト戦略を使ったbotを作成したのですが,そのコードを公開します.コードを全て解説する時間...

下図はビットコイン価格とドテンくんの利益(掛金は1BTC)をプロットしたもので,ボラティリティの減少とともに利益が減っていき,5月中旬ごろから利益がほぼ出なくなってしまったことがわかります.

もう少し拡大してみると,6月からは一応利益が出ているものの,かつてほどではないようです.ブレイクアウト手法はすべりが比較的大きいので,利益はもう少し減ると思われます.

なぜこれほどまでに利益が減ったのでしょうか.噂されていたドテンくん狩りがあったということでしょうか.結論から言うと,ぼくは「ドテンくん狩りはあったかもしれない(し,なかったかもしれず,真偽はわからない)が,仮にあったとしてもドテンくんが稼げなくなった理由の大部分はそこにはなく,ビットコインのリターンの確率分布が変化したことがもっとも大きな理由である」と考えています.

ビットコインのリターンの確率分布とドテンくんの収益悪化の理由の考察

ここで,ビットコインの1時間足から計算した1期間のリターンの確率分布のヒストグラムを見てみます.リターンの計算方法については,簡単に下に記しましたので読んでいただければ嬉しいです.

まず,ドテンくんが稼いでいる期間2月後半から4月後半の分布から見てみましょう.なお,データはbitfinexの1時間足で,リターンは終値で計算しています.

データ数は1427,平均は0.000003(ほぼゼロ),標準偏差0.0107で,中心に偏ったファットテールな分布になっています.

それでは収益率の落ちた最近の分布を見てみます.

最も大きなバー同士を比較してもわかる通り,2月-4月と比べてリターンの分布が圧倒的に中心に偏った分布に変化しています.データ数は1441,平均はほぼゼロ,標準偏差は0.007です.(ばらつきがかなり小さくなっている)つまり,2018年初頭からこれまでにかけてビットコイン価格の分布からテールの長さが失われてしまったわけです.そして,トレンドフォローという戦略の性質上,このテールの消失こそが収益性喪失の原因だと考えています.

ビットコインの統計的性質から考えるトレンドフォロー戦略

なぜリターンの分布のテール部分が失われると,ドテンくん(トレンドフォロー戦略)の収益性が失われるのでしょうか.これは,(アセットの統計的性質に基づいた)トレンドフォロー戦略全般の性質に起因しています.トレンドフォローする場合,ポジションを取るタイミングは(本当に真の意味で)どこでもよいのですが,わかりやすいように次のような確率分布を仮定しましょう.

  • リターンの絶対値>5%となる確率が10%で,5%を超えたときのリターンの絶対値の平均は6.5%
  • 2%=<リターンの絶対値<=5%となる確率が30%で,このときのリターンの絶対値の平均は3%
  • リターンの絶対値<2%となる確率が60%で,このときのリターンの絶対値の平均は0.5%

この分布を持つ金融商品に対して,リターンの絶対値が2%を超える瞬間に順方向にベットし,逆方向に0.5%動いたら損きりすると,期待値Eは次のように計算できます.

E = (順方向に行って平均6.5%-2%のリターンが得られる場合) + (順方向に行って平均3%-2%のリターンが得られる場合) + (逆方向に行って-0.5%で損きりする場合)

= (0.045 * 0.1 + 0.01 * 0.3 – 0.005* 0.6)

= 0.0073

ビットコインのリターンの確率分布のうちのテールの長さが失われるということは,この簡単なシミュレーションで計算したうちの,リターンが得られる部分が減るということであり,これが今年の途中からビットコインにおけるトレンドフォロー戦略の美味しい部分が減った理由だと考えます.なお,「ポジションをとるタイミングが真にどうでもいい」というのは「どのタイミングでもリターンの確率分布は変わらない(=上がる確率が高い,下がる確率が高いという瞬間はない=値動きの予測はできない)」という仮定に基づいており,仮に1時間足レベルでの価格の予測が可能なタイミングがあるとすれば,また変わってきます.

結論

  • ビットコインのリターンの確率分布のテールが失われたため,ドテンくんが儲からなくなった.
  • トレンドフォロー戦略において,未来の価格が予測不可能な場合にはポジションを取るタイミングは真にどうでも良い.

ここまで読んでいただきありがとうございました.何かおかしな点などあればご指摘いただければ助かります.また,これを題材に面白いアイデア,議論などもできれば嬉しいです.

参考:リターンの計算方法について

さて,金融商品の話をするときにリターン(収益率)という言葉はよく聞きますが,そもそもリターンとはなんなのでしょうか.この文脈で使われる場合のリターンとは,「時系列の価格データが与えられたときの,ある時間の価格と一定時間後の価格の差分をある時間の価格で割ったもの」で,式で表すと以下のようになります.(時刻tにおける価格をp(t)としたときのΔt後のリターン)

Rt=p(t+Δt)p(t)p(t)(1)

「収益」なら,p(t+Δt)p(t)で良いのに,なぜさらにp(t)で割っているかというと,「収益率」に直したいためです.収益率に直したい理由は,収益にしてしまうと掛金(日経先物やBTCで言うなら枚数)によって値が大きく変化してしまい,比較しづらいためです.

さて,単純にリターンという場合には(1)式で良いのですが,数理的な分析を行う場合にはしばしばリターンを表す際に価格の「対数差分への近似」というものが使われます.これは,単純に価格の対数をとって差分を求めたものをリターンに近似している(下記(2)式参照)のですが,なぜわざわざ対数を取るのでしょうか.そして,価格の対数差分をとって求めたリターンは,(1)式のリターンと一致すると言っても良いのでしょうか.

R(t)=log(p(t+Δt))log(p(t))=logp(t+Δt)p(t)(2)

まず,リターンを対数に近似する理由ですが,主に「計算上都合がいい」,「現実のデータと整合性が取れると言う意味で都合がいい」という2つがあります.まず,1番目の計算上の都合の良さですが,統計解析を行うときには基本的に分散や平均が一定であるという仮定のもとで行います.例として,リターンを計算してなんらかの指標との相関を求める際などに,線形回帰を行うことがありますが,データの分散が一定でないとなるとそもそも線形回帰という方法を取れないことになります.([2][3]より)さて,そもそも金融市場のデータが分散一定平均一定などあり得るのかと言うと,全くそんなわけはないということは普段取引をされている皆様ならよくわかると思います.(下図参照)

FXBTCJPYの1分足.明らかに分散一定ではないのがよくわかる.

これを解決するために考えられたのが,「一定期間後のアセットの価格1+Rtは,その期間を無限に細かく区切って,複利rt,mを無限に掛けて計算し,収束した極限.すなわち,

1+Rt=limm(1+rt,m/m)m=exp(rt)(3)

と表わされる.」という考え方で,無限に細かく区切った収益率は,平均・分散一定と考えていいだろうというものです.このrt,mを瞬間収益率と呼び,rtを連続複利収益率と呼びます.([4]より)

ここで,(3)式の両辺に対数をとると,

log(1+Rt)=rt(4)

となり,(1)式と合わせて,

rt=logp(t+Δt)p(t)(5)

と変形できます.

現実には無限に細かく時間を区切って計算を行うことはできないので,「ある程度短い期間の収益率ならrtRtは一致する」として計算を進めます.

すなわち,

Rtlog(1+Rt)=rt(6)

というわけです.この近似が成り立つ理由は,関数log(1+x)のx = 0近傍でのテイラー展開の1次の項がxだからです.(ここは難しい人もいるかもしれないので理解しなくてOK.)実際,金融商品のリターンは短期ではそれほど大きい値を取らないので,この近似は大抵の場合は機能するといってよいでしょう.下記のグラフからもその様子がよくわかります.

ゼロ近傍でグラフがほぼ一致しているのがわかる.

自然科学でも,このように「現実にはありえない状況だが,とりあえず単純な状況を仮定して考えてみる.」ということはよくあります.(簡単な例だと空気抵抗を考えない地球上の物体を対象とした力学の問題など.)「現実と違う状況を仮定しても意味ないではないか」という声が聞こえてきそうですが,単純化された状況での特定の対象の振る舞いを考察することは大いに役に立ち,例えば熱力学で準静的過程(限りなくゆっくりと変化を起こすこと)を考察することは,のちの熱力学の発展に貢献し,現在の自動車のエンジンをはじめとするあらゆる場面でその功績を見ることができます.

話は逸れましたが,金融データを統計モデリングする際はこのように仮定を置いた上で,実データが仮定から著しく外れていた場合はその理由を考える.というアプローチをとることが多いようです.

そして,2番目の「現実のデータとの整合性という意味で都合がいい」とはどういうことかというと,これは計算の話に比べると理解しやすいです.現実の株価や通貨の価格はその性質上,上には限りないが下はゼロという最小値を持ちます.そこで,価格の対数をとることで,リターンの分布を対称にできるというわけです.

参考文献

  1. 対数差分で求めたリターンと,元々の定義から求めたリターンの差分を数値的に比較している記事.(http://www.res.otaru-uc.ac.jp/~rwada/2016/2016ModernFT/LectureNotes/Lecture1107Ch04V2.pdf)
  2.   計算上の不都合についての説明(http://studysummary.hatenablog.com/entry/2016/02/26/110704)
  3.  定常過程と非定常過程について(https://ameblo.jp/hsf-systemtrading/entry-11251285290.html 
  4.  資産 (株価)の 収益率の分布について(谷重雄 安部昇)(https://ci.nii.ac.jp/els/contentscinii_20181021134213.pdf?id=ART0000406216