クオント・アット・リスクの仮想通貨分析 -スタットアーブ-

皆さま、こんにちは。クリプトトレーダーです。本日のテーマは「クオント・アット・リスクの仮想通貨分析 -スタットアーブ-」です。以前、仮想通貨のアービトラージ・プログラムの記事で少しだけ紹介したQuant At Risk(クオント・アット・リスク)について、もう少し詳しく解説してみます。

クオント・アット・リスクはクオンツ向けの情報発信サイトです。(クオンツ=金融工学等の手法でマーケット分析や予測を行う専門家)

記事は複数ありますが、Python&仮想通貨に関する記事がその中でも3つありましたので、1つずつ紹介したいと思っています。

自動売買、アルゴトレードを展開する上でのベースとなるモデル構築の基礎がしっかりと書かれていますので皆さまもぜひ目を通してみて下さい。

Pythonでの時系列・仮想通貨ポートフォリオ分析

元記事はこちらです。
Cryptocurrency Time-Series for N-CryptoAsset Portfolio Analysis in Python

仮想通貨の時系列分析を行う上で重要な最初のステップはデータを取得することです。データの取得方法についてが本記事に書かれてあります。

  1. 仮想通貨についてCryptoCompare(クリプトコンペア)のAPIを使ってデータを取得します。Python(パイソン)のコードでは、仮想通貨のリストを取得します。
  2. Python(パイソン)での時価総額の取得コードを紹介しています。リアルタイムで時価総額の取得ができるところが便利です。
  3. 時系列でのデータ取得が可能なPython(パイソン)コードを紹介しています。関数を作成してデータ取得をするのですが、時系列データと共にグラフ化もしています。

仮想通貨ポートフォリオの主成分分析を用いた高相関分類

元記事はこちらです。
N-CryptoAsset Portfolios: Identifying Highly Correlated Cryptocurrencies using PCA

データを取得し、主成分分析を使って相関を見つける方法が記載されています。

  1. パイソンでの仮想通貨ポートフォリオ群
    分析する仮想通貨を選択し、時系列でデータを取得しておきます。
  2. 相関が見つかった仮想通貨の主成分分析

スタットアーブの収益機会による仮想通貨市場で儲ける方法

元記事はこちらです。
Earning Money in Cryptocurrency Markets by Spotting Statistical Arbitrage Opportunities

仮想通貨が同じであっても別々の交換所で取引されている仮想通貨は、取引される価格の相違によって収益機会が生まれます。この収益機会を捉える手法のことを、ここではスタットアーブ手法(統計的なアービトラージ手法)としています。一昔前に猛威を振るったヘッジファンドの一つの手法でもありますが、仮想通貨市場では今も有効であることを示しています。

仮想通貨のアービトラージ・プログラムの記事で紹介したもので、3本ある記事の中で最も内容が濃いものです。この記事をおかずにしてご飯が食えると言ってもいいでしょう。

  1. 交換所の選定
    ひとつの仮想通貨に着目し、その仮想通貨が取引可能な交換所の選定をしています。これまでと同様、CryptoCompare(クリプトコンペア)のAPIを使います。
  2. 直近24時間の出来高
    流動性リスクを最小限にとどめるため、取引量の多い交換所を選定します。上位10の交換所を選定します。
  3. 上位10の交換所の時系列データを取得します。
  4. 価格差の平均を算出して、比較検討をします。

以下のようなフォーマットのアウトプットが得られます。

例、

Coin1 Coin2 Mean Std Dev
Quoine Poloniex 30.22300 40.33

理論上、平均値(Mean)が最も高く、標準偏差(Std Dev)が最も低い交換所2つに的を絞ります。(※価格差が大きく、かつ価格差の上下変動が激しくないものを選ぶという意味)

スタットアーブ手法のルール整理

スタットアーブ手法では境界線(しきい値)を決める必要があり、コーディングの前にルールを整理しておきます。

  1. アルゴ戦略: スタットアーブ ETH/USD
  2. 交換所: エクスモ、クラーケン
  3. 初期投下資金: 1万ドルを2つの口座で分ける。
  4. トレーディングルール:

    1. エクスモの終値価格>クラーケンの終値価格であれば、エクスモで売ってクラーケンで買う。
    2. エクスモの終値価格<クラーケンの終値価格であれば、エクスモで買ってクラーケンで売る。
    3. 新規建の際は、2,500ドルの固定資金でエントリーをする。
    4. 条件が発生した際、同値で手仕舞い&新規とする。
    5. スリッページを考慮しない。
    6. 空売りが可能とする。
    7. 手数料を考慮しない。
    8. 追加証拠金を考慮しない。

※コードサンプルが掲載されており、プログラムを実行すると取引のバックテストと、パフォーマンス評価が得られますので是非アクセスしてみて下さい。

スタットアーブの収益機会による仮想通貨市場で儲ける方法
Earning Money in Cryptocurrency Markets by Spotting Statistical Arbitrage Opportunities

さて、ここからは「自分で分析をやってみた」のコーナーです。BTCJPYの24時間出来高の順位リストです。

2018年の5/1~8/27のデータにて分析をしてみます。BTC/JPYのビットフライヤーとQUOINEで検証しています。

手数料やスリッページを考慮していません。理想的な損益曲線が得られていますが、実際には一回の取引には当然ながらコストが発生しますので、そこまでおいしいトレードとは言えませんのでご注意下さい。

まとめ

システムでの自動売買を継続して執行するのにはモデル構築段階での定量的な分析というのが不可欠です。ベースのモデル構築と執行プロセスの重要性は8:2くらいではないかと個人的に思っていますが、皆さまはどのようにお考えでしょうか。

モデルが不安定であればトレードをする意味がありません。しっかり儲けられるというモデルの前提条件があるからこそトレードをする意味が出てくるのです。モデルがしっかりできていれば、あとはそれを実行するだけです。それではよい一日を!

ABOUTこの記事をかいた人

農耕型・堅実派のアルゴリズムトレーダー。夢はヘッジファンドを自動で運用することです。簡単なプログラミングからパソコンの組み立てまで全て一人でできるバランス感覚の持ち主です。 DeFi(分散金融)をわかりやすくお伝えすべく「クリプト訪ねて三千里」に挑戦しています。