暗号通貨トレーディングライブラリEnigma Catalyst入門

  • このエントリーをはてなブックマークに追加
  • Pocket
         

はじめに

誰でも簡単に暗号通貨トレーディングプログラムを作成できるEnigma Catalystについて、環境構築から導入までやってみます。

動作環境

  • macOS High Sierra 10.13.3
  • Python 3.6.4
  • conda 4.4.10
  • catalyst 0.5.5

Enigmaとは?

Ethereum(イーサリアム)のセカンドレイヤープロジェクトであり、スマートコントラクトの課題であったプライバシー問題のソリューションとして注目されています。

ENGというERC20ベースのトークンを発行している暗号通貨プロジェクトでもあります。

暗号化されたままデータを取引できるデータマーケットプロトコルを提供しています。

Enigma
White paper

Enigma Catalystとは?

CatalystはEnigmaプロトコルを使った最初のアプリケーションとして公式から提供されているものです。

具体的には暗号通貨トレードのためのPythonライブラリです。

過去のデータを使ってアルゴリズムをテストすることで、独自のトレーディング戦略を構築出来るようになっています。(あくまでシミュレーション用のデータを提供しているだけでアルゴリズムは自分で実装する必要がある)

現在サポートしている取引所は限定されていますが、今後開発が進めばあらゆる取引所に対して実際にトレーディングすることも出来るようになります。

対応している取引所リスト

Catalystインストール

Catalystを使用するには一般的なデータ分析ライブラリ群が必要になります。まずは実行環境を整えるために、必要なライブラリ郡がインストールされた仮想環境を準備します。

  1. MiniCondaをダウンロード

    MiniCondaからインストーラーのシェルをダウンロードします。

    Enigma Data MarketplaceにはPython3が必要なため、Python 3.6をダウンロードしましょう。

    シェルをダウンロードしたディレクトリに移動し、インストーラーを実行します。

    設定は後から変えられるので、基本的にインストーラーの通りで進みます。

    conda listでパッケージリストが表示されればインストールは完了しています。

  1. 実行環境準備

    公式で提供されている設定ファイルから仮想環境を作成します。

    python3.6-environment.yml

    任意のディレクトリに設定ファイルをダウンロードします。

    次にcondaコマンドで設定ファイルから仮想環境を作成します。

    これでCatalystが動作する環境が整いました。

    仮想環境をアクティベートして、catalystのバージョンを確認します。catalystのバージョンが確認できれば成功しています。

    仮想環境を非アクティブにする場合は次のコマンドを実行します。

    これで必要なライブラリが全て含まれた仮想環境の準備が整いました。

Pycharm設定

Catalystの実行にIDEは必須ではありませんが、せっかくなのでPyCharmを導入します。

ここからMac用のPyCharm Communityをダウンロードして、PCにインストールします。

インストール出来たら、Pycharmを起動して新しいプロジェクトを作成します。

“Existing interpreter”を選択し、詳細設定から”Add Local”に進みます。

“Conda Environment”タブから先程作成した仮想環境のPythonバイナリファイルを指定します。

専用の仮想環境で実行するPythonプロジェクトが作成されました。

バックテスティングの実行

バックテストとは

Catalystでは、バックテスト、ペーパートレーディング、ライブトレーディングの3つのモードを実行することが出来ます。

ライブトレーディングでは作成したアルゴリズムを用いて実際にトレードを行います。それに対して、ペーパートレーディングでは、リアルタイムのデータを使ってシミュレーションを実行することが出来ます。

今回は、過去のデータを対象としてシミュレーションを実行することが出来るバックテストというものをやってみます。

バックテストを実行するためには、プログラムの実装→テスト用データの取得→プログラムの実行という流れで進めます。

トレーディングプログラムの実装

Catalystを用いたトレーディングプログラムでは2つの関数を実装する必要があります。

  • initialize(context)
    まず最初に呼び出されるのがinitialize()関数で、プログラムの実行に必要な値をはcontextにセットします。contextはアルゴリズム実行時に使用する変数を格納しておくための名前空間です。

  • handle_data(context, data)
    初期化が完了するとイテレーション毎にhandle_data()が呼ばれます。イテレーションはデータによって日毎や分毎で実行されます。
    イテレーション毎にcontextと、始値/高値/低値/終値を含むdataを受け取ります。
    通常ここで独自のアルゴリズムを適用してトレードします。

    ここでは公式で提供されているサンプルを参考に進めていきます。

まずは1BTCを注文するだけのシンプルなトレードアルゴリズムを実装します。

order()は暗号通貨のアセットオブジェクトと、取引する量を引数として受け取り、トレード処理を実行する関数です。

record()は各イテレーションにおける値を記録しておく関数です。

テスト用データを取得

トレーディングアルゴリズムを実行するためには、適用するデータセットを取得する必要があります。

ingest-exchangeコマンドを使って、指定した取引所や期間などで絞り込んだデータセットを取得します。

その他の引数についてはhelpオプションで調べてみてください。

プログラムの実行

それではシンプルなトレーディングを実行してみます。

実行の際に、-oオプションで出力先のファイルを指定することで解析用の結果ファイルを生成することが出来ます。

結果ファイルが出力できたら、後はpandasなどの分析ツールを使って色々な分析を試すことが出来ます。

matplotlibで可視化

analyze()関数内でデータの可視化処理を実装することが出来ます。

ここではmatplotlibを使って可視化する例を紹介します。
matplotlibは構築した仮想環境ならそのまま使えるはずですが、自分の環境だとそのまま動かなかったので、もしmatplotlib絡みのエラーが出たら最新バージョンをインストールし直してみてください。

先程のプログラムにanalyze()を追加して可視化処理を実装します。

先ほどと同じ条件でプログラムを実行します。

毎回1BTCを買っているだけの単純なアルゴリズムなので、BTCの価格チャートに連動していることがグラフから読み取れます。

最後に

最初はデータマーケットからEnigmaプロトコルに興味を持って、実際にプロトコル使ったアプリが動くのをやってみてすげえwってなりました笑

実際裏側でどう動いているのか分かっていないので、もう少しその辺も調べたいなと思ってます。

データ分析ごりごりやる人なら中々楽しめると思います。

次はJupyter Notebook使って色々試してみようかな。

それでは。

参考

Enigma | Catalyst

enigmampc/catalyst

スポンサーリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*