昨夜のビッグパイとツーパイの市場動向は実にタイムリーでした。これほどスムーズな傾向は久しぶりでした。

今回はBさんの過去の取引記録の活用方法についてお話しましょう。

B'anの当局者は多くの取引データを共有している。 Github ページでは、利用可能なデータのカテゴリとそのダウンロード方法を詳しく確認できます。ここでは主に、集約された取引記録 aggTrades のダウンロード、整理、使い方について紹介します。

aggTrades は、集計後のトランザクション レコードです。つまり、Binance は、同時に、同じ方向で、同じ価格で実行された複数の連続したトランザクションを 1 つのレコードに集計します。K ラインに似ていますが、価格は 1 つだけで、最高価格、最低価格など。たとえば、市場で大量の注文があり、それを食べるために多数の少量の注文があった場合、非常に短い時間 (ミリ秒) で同時に到着したこれらの注文は 1 つに集約されます。または、マッチング エンジンが一度にマッチングできる順序である可能性があります。

aggTrades データの利点は、ミリ秒レベルの取引記録を持つことができることですが、純粋な取引ほど大量のデータ (つまり、同じ価格で集計されていない最もオリジナルなデータ) を持たないことです。高頻度データのプランには適切な妥協点があります。

一般に、準高頻度戦略では、このような集約データが使用されます。これらの本当に高頻度のデータは通常、データ量が非常に大きいため、使用しない場合は必要がありません。リソースを消費するだけでなく、プログラミングの難易度も上がります。

aggTrades は、5、10、15 秒の短い K ラインなど、あらゆるレベルの短い K ラインを合成するために使用できます。一部の日中取引戦略では、このような K ラインを使用することも可能です。

例えば以下は以前投稿した1秒レベルのkラインです。

图片

高頻度のアービトラージもありますが、今は通常のアービトラージで稼ぐのは難しく、頻度が高ければチャンスもあるかもしれません。

この種のティックごとのデータは、等価バーなどの代替 k ラインを合成するためにも使用できます。この方法で作成された CTA 戦略は、aggTrades を使用するよりもはるかに正確です。通常の k-line 戦略と比較します。この種のバーを合成する方法については、次のいくつかの記事で書くかもしれません。

以下はコードの紹介です(コードの大部分は添付ファイルにありますが、あまりにも長くなりすぎるため、本文には掲載しません)。ダウンロード コードは Binance の例ですが、少し変更を加えたものと、私の処理コードです。

以下は月次データの例です (Binance は日次データも提供しています)。コードはすべてシングルスレッドであり、非同期またはマルチスレッドなしで同期的に実行されます。このようなダウンロードは月に1回またはn日に1回実行されるため、しばらく待つだけで済み、複雑な処理を行う必要はありません。

高頻度データのバックテストは主に分析的な役割を果たし、スリッページが大きい場合や指値注文が完了しない可能性があるため、主に実際の価格に依存するため、基本的なバックテストに古いデータを使用することに一般的に問題はありません。注文が届かなかった、交換が遅れたなどのフォローアップ

ただし、その後、リアルタイム データをダウンロードするコードも用意しました。これは、その日の aggTrades データをダウンロードして、見逃した市場価格を即座に確認することです。 Binance の毎日のデータは数日の遅れでしか入手できません。緊急に使用したい場合は、Exchange API を使用して自分でクロールする必要があります。

1 ダウンロード

コードの最初の部分は、agg.py とutility.py の 2 つのファイルであり、次に使用します。

python3 agg.py -y 2022 -m 6 -t um -folder /指定したパス

以下は、2022 年 6 月のすべての永久契約 aggTrades データをダウンロードするコマンドの例です。ダウンロードには通常 10 分ほどかかります。データは圧縮されてダウンロードされるため、次のステップではそれを解凍します。

2.解凍する

解凍するには、unzip.py ファイルを使用します。これは、月次データを解凍する機能と、日次データを解凍する機能の 2 つだけを備えた非常に短いコードです。

zipファイルを解凍するとcsvファイルになります。 CSV ファイルの問題は、ハードディスク上の占有スペースが多くなり、読み込みが遅くなることです。したがって、次のステップは、csv ファイルを pickle ファイルに変換することです。状況に応じて圧縮することも圧縮しないこともできます。ハード ドライブの容量が大きい場合は、圧縮しないことをお勧めします。一般に、持続可能なデータは 1 か月あたり約 50 GB であるため、状況によって異なります。現在、より高速な外付け SSD ハード ドライブは 1 TB だけで購入でき、バックテスト中の読み込みも非常に高速です。

3. 圧縮をピクルに変換する

変換コードは csv_to_pkl.py にあります。前述したように、変換後の保存と使用が容易になります。

変換後、CSV ファイルを手動で削除しました。そうしないと、ハードディスクが占有されてしまいます。このステップを実装するコードはありません。前述したように、これらは非常に低頻度の操作であり、完全に自動化する必要はありません。サンプル コードでは gzip レベル 2 圧縮を使用しています。通常、圧縮後の 1 か月分のデータは 10GB 未満になります。

CSV はスペースを占有するだけでなく、読み込みも遅くなります。 pickle 形式を使用することをお勧めします。全体的にパフォーマンスは良いですが、重要なのは互換性の良さです。クラウド サーバーやその他の多くのオープン ソース パッケージを使用したい場合は、Feather などよりも互換性が高くなります。

さて、データの準備ができたので、戦略の検討を開始できます。

4. インスタントデータダウンロード

前述したように、Binance のデータサーバー上のデータは 1 ~ 2 日遅れています。現在の市場状況で戦略がどのように機能するかを確認する必要があるが、特定の通貨の実際の価格を時間内にポストしていない場合は、次のコードを使用して、aggTrades を指定した時点までダウンロードできます。私は通常、これを使用して現在の 12 時間のデータをダウンロードし、戦略がどのように機能するかを確認します。

次のコードを使用する場合は、最新の開始時刻に変更する必要があります。

图片

ダウンロードしたデータはこんな感じです。それらの具体的な意味については、Binance のドキュメントと最近のトランザクション (累積) を参照してください。

图片

このような生データを使用すると、 df.resample(bar_size).agg() を使用して、必要な任意のレベルの k ラインに集約することができ、やりたいことが何でもできます。

やっと

基本的には、以前に使用した aggTrades データの準備です。今日の戦略はますます大量になっており、より詳細なデータを使用して、より多くのカテゴリの戦略を開発できます。戦略間の補完性がマルチ戦略の鍵となります。

上記のコードが必要な場合は、当社に連絡して入手してください。