シンプソンズ_title

VPINによるパンプ検出と仮想通貨トレードへの応用(第二回)

こんにちは、Hohetoです。
前回のnoteでは、相場の暴騰・暴落を検出する「VPIN」という指標について解説しました。

第二回目となる今回のnoteでは、VPINの具体的な計算方法や特徴について詳しく解説します。

VPINの計算方法

画像1

図1.VPINの考え方

前回のおさらいです。VPINは以下の流れで計算します。

①約定量を、Buy約定とSell約定を判別できる状態でリアルタイムに
 ウォッチする。
②バケツのような入れ物を用意し、約定が起こるたびにこのバケツを
 約定情報で満たしていく。
 (原論文では「Volume Buckets」と表現されている)
③バケツがいっぱいになった時点で、次の空のバケツを用意して次々に
 空バケツをいっぱいにしていく。
④直近でいっぱいになった幾つかのバケツについて、Buy約定とSell約定
 それぞれの量にどの程度偏り(Imbalance)があるか?を計算する。
 (実際に利用する際は、この累積分布をとる)

数式にすると、このようになります。

画像2

各バケツにおいて、Buy約定とSell約定の差分の絶対値(Volume Imbalance)を総和し、バケツサイズで正規化して平均を取ります。
非常に簡単に計算できるため、リアルタイムでの運用に適していますし、高頻度取引のロジックの中で利用することも可能です。

パラメータの決定方法

ここで、VPINを計算するためには以下のパラメータを決める必要があります。

1)バケツサイズ(b)
まずは、バケツ1つあたりの出来高(=バケツサイズ)を決めます。このバケツサイズの大きさは、その取引所の24時間出来高を考慮に入れる必要があります。
その上で、以下の特徴を加味しながら決めます。

①バケツを大きめに設定する
大きめのバケツを用意することで、その中に入る約定のBuy・Sellの偏りが出にくくなります。つまり、VPINの反応感度が鈍くなります。
局所的に大きな単発の約定などに影響を受けにくくなりますが、その一方で、実際に暴騰や暴落が起こったときの反応が遅くなり、値幅を確保しづらくなります。

②バケツを小さめに設定する
逆にバケツを小さくすると、VPINの反応感度が鋭くなります。暴騰や暴落の際に反応しやすく、動きの初動段階でエントリーできる可能性が増えますが、その分ダマシに引っかかりやすくなります。

多くのシステム・トレードにおけるパラメータ同様、これらはトレード・オフの関係となります。

2)計算用のバケツを直近何杯分にするか(n:バケツ数)
VPINの値は、直近のバケツの約定サイズの差分について、n個分の移動平均をとって計算されます。
バケツ数とは、移動平均の期間長と同じことです。

①バケツの個数を多くする
移動平均の期間を長くとることで、ダマシに引っかかりにくくなりますが、急変時の反応は遅れがちになります。

②バケツの個数を少なくする
移動平均の期間を短くとることで、急変時に素早く反応しますが、ダマシにひっかかりやすくなります。

1)と同様、これらはトレード・オフの関係となります。
移動平均の種類をSMAからEMAに変更するような工夫が考えられますが、基本的には反応のしやすさとダマシのひっかかりやすさのトレード・オフになることには変わりません。

特定期間にフィットさせすぎないように、できるだけ長期のバックテストを行いつつ、パラメータを前後にずらしてロバストかどうかを確認しながら調整していきます。

VPINの特徴

それでは導出方法を基に、改めてVPINの特徴を整理してそのメリットとデメリットをまとめてみましょう。

特徴1.Volume軸(Volume Time)による計算

VPINでは、一般的なテクニカル指標が利用している「時間軸」ではなく、一定の約定サイズを単位とした「Volume軸」(論文中ではVolume Timeと記載されています)を利用しています。

時間軸
「時間軸」を用いた指標では、例えば「分足」や「時間足」などを利用します。一定の時間ごとに指標が計算されるため、シンプルで分かりやすく、データが入手しやすいというメリットがあります。

一方、例えば分足を利用している最中に急変が起こったような場合でも、その足の終了時刻までは指標が確定しません(ブレイクアウトなど、足の最中でもエントリーできるような指標はあります)。

また、時間あたりの代表値での表現になるため、肝心な情報が欠落する場合があります(例えば、一般的なローソク足では、約定が10回起ころうが100回起ころうが「始め値・安値・高値・終値・Volume(OHLCV)」という代表値に丸められます)。

Volume軸
時間軸と比較し、Volume軸では図1.のように、ある一定の約定量がたまった時点で足が確定します。
閑散な相場では、バケツが貯まるのが遅いため、少ない本数の足しかできません。逆に急変相場ではすぐにバケツがいっぱいになり、多数の足が作られます。このため、相場環境に柔軟に反応する指標を作成することができます

一方、足を作るには自分でパラメータを定めて、プログラミングなどによって約定履歴から自前で足を生成する必要があります。
通常の時間足よりも、敷居の高い手法と言えるでしょう。また、パラメータをどう最適化するか、という問題も付きまといます。

このVolume軸による指標の導出方法は、従来のテクニカル手法と併せて使うことで、一ひねり効いた手法となります
テクニカルでよく使われる手法に移動平均がありますが、単なる移動平均でなく、Volume軸データの移動平均をとることで、反応しやすい指標を作成することが可能です。
Volume軸については、引き出しの一つにしまっておきましょう。

特徴2.累積分布

VPINは、指標として利用する際に累積分布をとります。累積分布は前回のnoteでも説明しました。

累積分布関数(CDF)とは?
今回のケースでは、過去に計算したVPINの値N個のうち、今回計算した値が上位何番目になるか?ということです。
・上位1番目であれば、CDFの値は1となります。
・上位N番目(=最下位)であれば、CDFの値は0となります。

つまり、これまでの指標の値と比べながら、0~1の範囲に正規化するようなイメージです。
これによって、相場の状況によらず、相対的に相場が過熱しているかどうかを判断することができます
VPINの場合、例えば一方向のトレンドが形成された際に継続して約定に偏りが生じることがあります。
原論文では累積分布を使用する明確な根拠が示されていませんが、このような状況で過剰に指標が反応するのを避けるために使われているものと思われます。

ただし、累積分布には弱点もあります。

弱点① 閾値を0.99に設定したとき、上位1%の状況で必ず反応してしまう
累積分布を利用すると、100個のデータがあればそのうち1個は必ず「上位1%」のデータとして扱うことになります。
このため、平常相場が長く続いている場合、少しの変動で指標が反応してしまうことがあります。

弱点② 暴騰・暴落の直後に再び暴騰・暴落したとき検出しづらい
①の逆のパターンとして、急激な変動が起こり、約定の偏りが大きいデータが長期間観測された後では、相対的にその次の変動が起こった際に指標が反応しにくくなります。
実際に、昨年の11月ごろに暴落が二度続いた際、1回目は良好に検出できましたが2回目は検出が正確にできなかった例があります。

以上のようなことから、原論文で累積分布が使われているのは恣意的である(つまり累積分布を使ったらよい結果が出たため、採用している)と主張する学説もあります。

特徴3.Volume Imbalanceだけでは上か下か分からない

上のVPINの数式を見れば分かりますが、VPINとはBuy・Sellの約定量の差分の絶対値を数値化したものです。
つまり、VPINの数値が上がった際、買いが増えている(上方向に抜けそう)のか、売りが増えている(下方向に抜けそう)のかが分かりません。
これはVPINがもともと「回避のための指標」であるからなのですが、VPINを利用して順方向にベットするストラテジーを作る場合、方向を示す別の指標が必要になります。

特徴4.Bulk Volume Classification

実は原論文では、Buy・Sell方向感を持たないTickデータから、売り手動または買い主導の取引に分類する方法として、「Bulk Classification」という手法が利用されています。
これは、各取引量について買い側のテイクか売り側のテイクかが分からない場合に有用な手法です。

ただし、暗号通貨の場合は、約定履歴にSide情報が含まれているので、このnoteで紹介するストラテジーでは使用しません。

・・・

今回のnoteでは、VPINの詳細を解説しました。指標の内側に入り込んだ内容だったため、少々難しいところがあったかもしれません。

実際にVPINを利用することにならない限り、ここまでの知識は必要ないかもしれません。
ですが、今回説明したVPINのエッセンスである「Volume軸」や「累積分布」については、他の既存の指標にうまく組み合わせて使用することで、独自性の強い指標を作ることが可能です。覚えておいて損はないと思います。

次回のnoteでは、VPINを利用したトレードとシミュレーション結果について解説したいと思います。どうぞお楽しみに。


この記事が気に入ったらサポートをしてみませんか?