暗号資産ボットのバックテスト:時刻・コスト・過学習を点検する
収益性の高い仮想通貨取引ボットのバックテストはシミュレーションの説明であり、その戦略が実際に同じ結果を生み出すという証拠ではありません。リターンを比較する前に、シミュレーターが何を認識していたのか、いつ認識したのか、どの実行コストが請求されたのかを確認してください。
資産曲線ではなく、タイムスタンプから開始します
戦略がローソク足の終値を使用してエントリーを生成するとします。シミュレーションが現実的な決定や実行の遅延なしにその正確な終値で約定した場合、完了したローソク足を観察した後には取得できなかった価格をボットに与える可能性があります。信号のタイムスタンプを、最初に実行可能となる時刻とは別に記録します。
データセットに以前のタイムスタンプに結合されたリビジョンまたはインジケーターが含まれている場合にも、同じ問題が発生します。有効な履歴値がその時点で戦略に利用可能である必要があります。今日のクリーン化されたデータセットは、自動的に昨日の情報セットの忠実な記録になるわけではありません。
チューニングを繰り返すと、良い結果の意味が変わります
何百もの試行から最適なパラメータ セットを選択すると、選択の問題が発生します。開発期間のノイズに、その組み合わせが過剰に適合しただけかもしれません。最も好成績だったグラフだけでなく、失敗したトライアルの記録も保管してください。
QuantConnect の研究ガイド では、過学習と研究の安全対策について説明しています。実用的な拡張としては、後の手つかずの期間を評価する前に戦略を凍結することが挙げられます。その評価がさらなるチューニングにつながるのであれば、それは開発データになります。新しい最終テストを予約します。
コストを可視化する
以下は架空の会計例であり、観察された戦略ではありません。
| アイテム | USDT での金額 |
|---|---|
| 模擬トレーディング総利益 | 300 |
| 新規建てと決済の手数料合計 | -120 |
| 推定執行スリッページ | -100 |
| 受取額を差し引いた資金調達料の純支払額 | -90 |
| ネットシミュレーション結果 | -10 |
計算は、300 - 120 - 100 - 90 = -10 USDT です。コストによって結果の符号が逆転する場合があります。シミュレートされた約定価格にスプレッドがすでに含まれている場合は、スプレッドを 2 回カウントすることは避けてください。資金調達料は、便宜的な固定年率ではなく、テストにおける実際のポジション、レート、決済タイミングに従う必要があります。
約定が可能かどうかを尋ねる
タッチされた指値価格は、注文全体が約定されたことを証明するものではありません。キューのポジション、競合する注文、利用可能な深さ、および部分的な実行が重要です。大規模な成行注文は、そのサイズ全体に対して表示される最良の価格を自動的に受け取るべきではありません。
レイテンシー、料金、スリッページの変化をテストします。 1 つの楽観的な実行前提だけで機能する戦略は脆弱です。欠損データ、拒否された注文、接続損失を個別の運用シナリオとしてテストします。歴史的なキャンドルだけでは、これらを適切にモデル化することはできません。
条件間で比較する
テスト日、商品、ポジション制限、取引数、出来高、ドローダウン、資本の仮定をリターンとともに報告します。市場の上昇結果は主に資産エクスポージャーを反映している可能性があります。同じ日付の適切なパッシブベンチマークと比較し、コストと現金を一貫して処理します。
手つかずのホールドアウト期間と小規模なペーパートレードの観察により、実装上のエラーが明らかになる可能性がありますが、どちらも将来の利益を保証するものではありません。短いデモがポジティブだからという理由だけで資本を増額しないでください。
検討可能な結果
便利なボット レポートは、再現可能な設定、データの出所、タイムスタンプ ルール、すべての重要なコスト、開発と評価の明確な分離を提供します。プラットフォーム固有の前提条件を使用する前に、現在の OrangeX 料金表 を参照してください。この記事はシミュレーションを評価するものであり、OrangeX が特定のボットやバックテスト製品を提供しているとは主張しません。
決定するのは、どのチャートが最も滑らかに見えるかではなく、証拠が現実的な仮定に耐えられるかどうかです。上記の数値結果はすべて例示的なものです。