バックテストとは何ですか?暗号取引戦略をバックテストする方法

>

バックテストの概要

バックテストは、トレーダーがトレーディング戦略のパフォーマンスを評価するために使用する数学的シミュレーションです。シミュレーションは、過去の市場データを活用して、取引戦略が過去にどれだけうまくいったかを計算しようとします.

本質的に、バックテストは、トレーダーが実際の資本で実装されたときに戦略が有益であるかどうかを予測しようとする方法です。トレーダーはバックテストを使用して、これまで利益を上げていなかった戦略を除外します.

過去のパフォーマンスは将来の結果を保証するものではありませんが、バックテストは依然として堅牢な戦略を特定するための最も信頼できる方法です。これらのシミュレーションを研究して、明らかにパフォーマンスが低い戦略を除外する必要があります。そうすれば、私たちはお金を稼ぐための最高のチャンスがあり、実際の資金で戦略をテストする必要はありません.

暗号通貨取引ツールの人気が高まるにつれ、バックテストも普及しています。今日、トレーダーは、野生の暗号市場にリリースする前に、すべての戦略を徹底的にバックテストすることをお勧めします。そうすることで、戦略が最適に実行される可能性があるという確信を得ることができます。.

リバランスのためのバックテスト研究

この調査では、さまざまなリバランス戦略の有効性を評価して、過去の最良の構成を決定します.

データ要件のバックテスト

バックテスト戦略を開始する前に、開発者がバックテストツールを構築するために使用するさまざまなデータ型と、それぞれが実際の市場をどのように表すかを理解する必要があります。.

ローソク足データ

バックテストツールを実装する最も一般的な方法は、開発者がOHLCVローソク足データを使用することです。ほとんどの開発者がこのデータを使用する理由は、すぐに利用できるためです.

残念ながら、これらのツールを構築するためにアクセスするのが最も簡単なデータですが、最も信頼性の低いデータです。実際、OHLCVローソク足データを使用してバックテストを実行することは、収益性の高い戦略を構築することとお金を失うことの違いになる可能性があります.

トレーダーがCoinMarketCapなどのソースから集約されたローソク足データを使用すると、状況はさらに悪化します。集計データは、その時点で特定の取引所で利用可能だった実際の注文の有効な表現ではありません.

ローソク足データを使用してバックテストツールを構築しないでください.

ティックバイティックトレードデータ

ティックごとの取引データは、過去のバックテストツールにとって有用なコンポーネントになる可能性があります。個々のティックトレードは、各瞬間に取引所で実行された正確なトレードです。これらの個々の取引は、約定された実際の注文を表しているため、取引所でその価格で利用可能な未決済注文があったに違いないことは確かです。.

ティックトレードデータはバックテストサービスの強力な側面になる可能性がありますが、それでもOHLCVローソク足データよりもわずかに正確です。個々の取引データポイントは、取引時の注文書の状態に関する情報を提供しません。その結果、開発者は、シミュレートされた取引が実行されたその瞬間に取引所で利用可能だったであろう注文を正確に評価することができません。.

バックテストツールにティックごとの取引データを使用することはお勧めしません.

オーダーブックスナップショットデータ

バックテストツールで一般的な最後のタイプのデータは、オーダーブックのスナップショットです。オーダーブックのスナップショットは、スナップショットの時点での市場の正確な状態を提供します。その意図は、特定の時間に取引所で利用可能だった注文を完全に表すことです。.

バックテストツールを構築する場合、これは使用する最も強力なタイプのデータです。データには、取引がシミュレートされたときに利用可能だった正確な注文が含まれているため、取得できる正確な取引とそれらの各取引の価格を計算できます。.

オーダーブックのスナップショットにより、開発者はビッドアスクスプレッド、スリッページ、流動性の影響をシミュレートできます。.

バックテストツールのデータ型として、オーダーブックのスナップショットを強くお勧めします.

データソース

オーダーブックデータの主なソースは、個々の暗号交換自体です。ほとんどの場合、このデータは取引所のWebSocketを介してライブストリーミングされます。ただし、膨大な量のデータがあるため、取引所は通常、このデータを長期間保存しません。つまり、データがExchange WebSocketを介して送信されると、データは永久に失われます.

もちろん、誰かが取引所からデータを収集し、サードパーティのサービスを通じて利用できるようにしない限り。ここで、データプロバイダーが全体像を把握します。データプロバイダーは基本的に、各取引所全体でデータを集約して保存し、他の人が後でアクセスできるようにする企業です。.

過去の注文書のスナップショットのデータプロバイダーはほとんどありません。このデータの供給が限られているため、開発者はOHCLVローソク足などの代替データセットに頼ってきました。これは、バックテストの不正確さを引き起こす可能性があります。その結果、今日の市場で入手可能なほとんどのバックテストツールは、戦略のパフォーマンスを誤って伝えています.

間の最近のパートナーシップの後 エビ そして カイコ, Shrimpyは、すべての主要な取引所で注文書のスナップショットの完全な履歴カタログを提供できるようになりました。カイコは2014年にさかのぼり、ティックごとの取引データ、注文書のスナップショット、OHLCVローソク足を綿密に収集してきました。.

開発者は、 Shrimpy Developer API. シンプルなオンデマンド価格設定モデルを使用して、顧客はさまざまな時間枠、取引ペア、および取引所にわたるスナップショットを照会できます。.

カイコは市場で最も正確なデータを提供します。これで、すべての開発者がKaikoのデータにアクセスして、ShrimpyAPIを介してバックテストを正確にシミュレートできます。.

歴史的な注文書のためのPythonスクリプト

ザ・ Shrimpy Developer API 過去の交換注文書へのアクセスを提供します。各オーダーブックのスナップショットは1分間隔で取得されます。を使用して ShrimpyPythonライブラリ, 開発者がわずか数行のコードで履歴データにアクセスする方法の例を提供します.

バックテストのシミュレーション

図1:ENJ-USDT取引ペアの注文書の例.

戦略の実行方法を正確に計算するには、バックテストで可能な限り正確な数値が必要です。バックテスト中に考慮しなければならないいくつかの要因は次のとおりです。

  • 取引所の取引手数料

  • トレーディングペアのビッドアスクスプレッド

  • オーダーブックの市場スリッページ

  • 個々の取引のタイミング

資産の購入をシミュレートするときは、オーダーブックの提示価格を使用する必要があります。取引所にいる場合、最良の提示価格は、取引所の誰もが資産を売却する意思がある最低価格です。取引手数料とスリッページも考慮することを忘れないでください.

図1のオーダーブックを例として使用して、1,500USDT相当のENJを購入したいとします。この例のために、このオーダーブックがBinance用であり、基本取引手数料が0.1%であると仮定します。.

希望する1,500USDT相当のENJを購入するまで、注文書よりも注文価格を段階的に上げることで、1,500USDT相当のENJの購入をシミュレートできます。私たちが実行する連続した取引には、以下が含まれます。

  1. 1151.74904126ENJをそれぞれ0.20559424USDTで購入 = 236.97296881 USDT + 0.2369729 USDTの手数料(残り1262.79005829 USDT)

  2. それぞれ0.20640294USDTで2559.954ENJを購入する = 528.38203186 USDT + 0.52838203 USDTの手数料(残り733.8796444 USDT)

  3. 1992.51418976ENJをそれぞれ0.20659518USDTで購入 = 411.64382769 USDT + 0.41164382 USDTの手数料(残り321.82417288 USDT)

  4. 1555.85587451ENJをそれぞれ0.20663894USDTで購入 = 321.50267164 USDT + 0.32150267 USDTの手数料(残り0 USDT)

0.20663894の価格で購入できなかった注文書が残っていることに注意してください。私たちが購入しなかった金額は、別の市場参加者が受け取る交換に残ります.

合計で、正確に購入しました 7260.08410553 ENJ すべての取引が完了した後。 OHLCVローソク足データのみを使用した場合、推定値はおそらく 7319.76112984. これはほとんどの違いです 60 ENJまたはほぼ1%. それほど多くはないように思われるかもしれませんが、数百または数千の取引をシミュレートしている場合、この小さな割合は信じられないほど急速に悪化します.

取引シミュレーションが完了したら、注文の結果を記録して、バックテストの後半でそれらの資金を使用して別の資産に取引できるようにします。この詳細な取引記録を使用して、バックテスト中に行われたすべての取引の詳細なログを保持できます。これらのログを使用して、実行する取引量、実行した取引の数、特定の資産の売買頻度などの追加の統計を計算できます。.

パフォーマンス結果

戦略のパフォーマンスの計算は簡単です。私たちがする必要があるのは、バックテストの開始時にポートフォリオの価値を計算し、それをバックテストの終了時にポートフォリオの価値と比較することです。.

ポートフォリオの価値は、保有する各資産の金額にその資産の価格を掛け、ポートフォリオ内のすべての資産の価値を合計することによって計算されます。.

バックテストの開始時にこの計算を実行し、バックテストの終了時にもう一度この計算を実行することにより、バックテストの過程でポートフォリオの価値の変化を取得できます。.

パフォーマンスの計算は、次の式を使用して実行できます。

パフォーマンス= [(Vf-Vi)/ Vi] x 100

どこ,

  • Vf ポートフォリオの最終的な価値です

  • Vi ポートフォリオの初期値です

  • 100を掛ける 小数からパーセンテージに変換する

バックテストの目的は、パフォーマンスを最適化することだけではないことに注意してください。基本的に、特定の戦略がバックテスト条件下でうまく機能するからといって、それが自動的に優れた戦略であるとは限りません。戦略の一貫性と堅牢性も考慮する必要があります.

一貫性のバックテスト – さまざまな歴史的期間およびさまざまな市況にわたって同様の結果を生み出す能力.

バックテストの堅牢性 – 戦略パラメータに小さな変更が加えられた場合でも同様の結果を生成する機能.

堅牢性のない戦略では、戦略のパラメータにわずかな変更を加えただけでも、パフォーマンスが大幅に変動する可能性があります。同様に、一貫性のない戦略では、過去のさまざまな期間をテストすると、結果が大きく異なる可能性があります。.

理想的なケースでは、任意の履歴期間でバックテストして同様の結果を生成できる戦略を使用する必要があります。同様に、戦略に小さな変更が加えられたときに、戦略のパフォーマンスが大きく変動することはありません。.

一貫性や堅牢性のない戦略は、広く予測できない将来のパフォーマンスにつながる可能性があります。戦略のさまざまな履歴期間と構成をバックテストすると、さまざまな結果が得られる場合は、戦略が予測できないことを示している可能性があります。その場合、評価する構成またはバックテスト期間を1つだけ選択すると、基本的に特定の状況に戦略を適合させることになります。過剰適合バックテストの結果は、戦略の一般的な表現ではありません.

私たちが見つけた一貫した戦略の例は、リバランスです。ほとんどの場合、リバランスはホドリングを上回りました。リバランス期間を1時間から1日から1ヶ月に調整しても.

バックテストの危険信号

バックテストの技術的な性質により、バックテストが信頼できるかどうかを識別するのが難しい場合があります。次の危険信号項目は、バックテストの結果が妥当かどうかを識別するのに役立ちます。これは広範なリストではありませんが、最も一般的なケースのいくつかです.

  1. 取引のたびにパフォーマンスが向上します. 特に各取引後にパフォーマンスが一貫して向上する場合、これは取引ロジックに計算エラーがあることを示している可能性があります.

  2. ファンドの一貫した指数関数的成長. バックテストのパフォーマンス結果が時間の経過とともに指数関数的に増加する場合、これは多くの場合、トレードシミュレーションにOHLCVローソク足を使用した結果であるか、パーセンテージオフの計算エラーを示しています。.

  3. 高頻度取引戦略は価値が下がらない. 一般的に、かなりの金額を取引する戦略は、取引手数料のために価値を失います。高頻度取引戦略が価値を失わない場合、バックテストは為替手数料を考慮していない可能性があります.

  4. 低流動性市場は高流動性市場と同じように機能します. バックテストツールがOHLCVローソク足データまたは集計データを使用しているかどうかを検出する簡単な方法は、通常はスプレッドが大きい低流動性市場で戦略を実行することです。低流動性市場での高頻度取引は、大きなポートフォリオ損失をもたらすはずです.

  5. 交換を変更しても結果には影響しません. 取引所ごとに流動性と取引手数料が異なります。異なる取引所で戦略をバックテストする場合、異なる結果が得られるはずです。異なる取引所で同じ結果が得られる場合は、バックテストツールが集計データを使用しており、個々の取引所ごとに正しい取引手数料を使用していないことを示しています。.

額面価格でバックテストの結果を受け入れる前に、これらの危険信号を使用して、シミュレートされた取引の問題を特定します.

結論

この記事全体を通して、いくつかの主要なテーマがあります。主に、堅牢なバックテストツールを構築することがいかに難しいかを示しました。ただし、同時に、戦略をライブで展開する前に、戦略をバックテストすることの重要性を説明することができました。.

バックテスト戦略を構築するための最初のステップは、常に高品質のデータを入手することでした。高品質のオーダーブックデータがないと、結果は非常に不正確になります。最終的に、欠陥のあるバックテストツールに基づいて意思決定を行うとコストがかかる可能性があります。それは私たちのポートフォリオを食いつぶす戦略に対して非現実的な期待を抱かせる可能性があります.

バックテストツールを構築するときは、取引手数料、スリッページ、ビッドアスクスプレッドをシミュレートすることを忘れないでください。バックテストのこれらの各側面は、大きな違いを生む可能性があります。これらのコンポーネントの1つでもバックテストから削除することは、収益性の高い戦略と収益性の低い戦略の違いになる可能性があります.

最後に、バックテストに基づく戦略を展開する前に、テストを続けます。テストが完了したと思ったら、もう一度テストします。 100回のテストの代わりに、100,000回のテストを実行します。バックテストは、戦略の振る舞いを理解するための最良の方法です。戦略の新しい仮説を立て、それらの仮説をテストして新しい戦略を特定してみてください。自分に合った戦略が見つかるまで、実験サイクルを続けます.

世界最高の貿易業者をコピーする

現在、Binanceでポートフォリオを管理しているアクティブなトレーダーは何千人もいます。これらのトレーダーは、業界で最も先進的なトレーダーの一部です.

追加のGoodReads

Pythonを使用して暗号取引ボットを作成する方法

暗号ローンのガイド—トップレンダーの比較

ビットコイン価格ライブティッカーのスクリプト(Websocketを使用)

暗号ポートフォリオ管理のためのしきい値のリバランス

DeFiとは何ですか?分散型ファイナンスへのガイド

私たちのソーシャルトレーディングプラットフォーム

エビ 暗号通貨のソーシャルトレーディングプラットフォームです。これは、プロと初心者の両方のトレーダーが成長する暗号業界について学びに来るように設計されています。 Shrimpyでは、ユーザーは他のトレーダーのポートフォリオと取引戦略をコピーできます.

フォローしてください ツイッター そして フェイスブック 更新のために、そして私たちの驚くべき、活発なコミュニティに質問をしてください 電報 & 不和.

立ち寄ってくれてありがとう!

シュリンピーチーム

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me