3
フォロー
1444
フォロワー

FMZ Inventor 定量プラットフォーム バックテスト手順

作成日:: 2019-07-06 12:15:50, 更新日:: 2023-10-25 20:00:15
comments   22
hits   9711

FMZ Inventor 定量プラットフォーム バックテスト手順

ほとんどの戦略は、実践する前に検証のためにバックテストを行う必要があります。FMZ は、一部の種類のデジタル通貨スポット、先物、永久契約、およびあらゆる種類の商品先物をサポートしています。しかし、Inventor Quantitative Platform のバックテストのメカニズムは一般的なオンバー バックテストとは異なるため、多くの初心者に混乱を引き起こしています。この記事では、バックテストに関する一般的な質問について詳しく説明し、回答します。

バックテストシステムはどのように機能しますか?

FMZ Inventor 定量プラットフォーム バックテスト手順

上図に示すように、バックテストの開始時刻から終了時刻までを時間軸とみなすことができます。バックテストを行うと、バックテストの時点は軸に沿って左から右に移動し、バックテストが開始されます。この時点では、この時点のみが取得できます。この戦略では、過去の履歴データを使用して、そのデータに基づいて購入と販売を行い、最終的に利益または損失をもたらします。明らかに、バックテストの時点の分布は離散的であり、分布の密度はバックテストの精度を表します。 もちろん、バックテストのタイムポイントが密集するほど時間がかかることを考慮すると、実際のバックテスト システムでは精度と効率の間でトレードオフを行う必要があります。

従来のonBarバックテストメカニズム

オンバーのバックテストの仕組みはKラインに基づいています。つまり、各Kラインはバックテストの時点を生成し、その時点のKラインの高値と安値、取引量、その他の情報を得ることができます。この時点以前の情報も含まれています。K ラインの履歴情報。 このメカニズムの欠点は明らかです。K ラインでは 1 つの買いと売りしか生成できず、価格は通常 K ラインの終値に基づきます。さらに、1つのKラインでは、始値と終値の高値のみを取得できます。Kライン内で価格がどのように変化するか、最高値が最初に発生するか、最低値が最初に発生するかなどについては、予測できません。そのような情報を入手します。 1 時間の K ラインを例にとると、実際の取引では、K ラインの終了を待つのではなく、数秒ごとに市場情報を取得し、取引セッション中に取引指示が発行されます。オンバーバックテストの仕組みの利点は、理解しやすく、バックテストの速度が非常に速いことです。

FMZの発明者定量プラットフォームonTickバックテストメカニズム

FMZ Inventor 定量プラットフォーム バックテスト手順

上の写真は、FMZ バックテスト設定インターフェースです。バックテスト モードは、シミュレーション レベルのバックテストとリアルタイム バックテストの 2 種類に分かれており、以下に紹介します。

ティックとは何ですか?

K ライン データとは異なり、ティックは特定の時点における価格です。 K ライン データに基づいて、実際にわかっているのは始値と終値が発生した時間だけです。K ライン サイクル内で価格が最高値に達した時期は不明です。実際、K ライン データもティックに基づいて生成されます。 K ライン データに基づいて、K ライン期間の特定のティックの変化をシミュレートすることもできます。実際のティックではありませんが、バックテストの精度を高めることができます。さらに、シミュレーションに使用される K ライン期間は、バックテストに使用される期間よりもはるかに短くなるため、精度が高くなります。

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

シミュレーション レベルのバックテストでは、バックテストに使用する K ライン期間と基礎となる K ライン期間を選択する必要があります。例えば、戦略が1時間ごとのバックテストを使用し、基礎となるKラインが5分の場合、バックテストのタイムポイント間の間隔は、5分間のKラインシミュレーションによって生成されたティックに基づき、継続的な変化に反映されます。最新の1時間Kラインの終値。 K ラインに基づいて K ライン内でティックを生成するメカニズムは、MT4 のメカニズムに似ています。この投稿に詳細な説明があります: https://www.fmz.com/bbs-topic/662

FMZ Inventor 定量プラットフォーム バックテスト手順
このメカニズムを説明するために、簡単な戦略を使用します。戦略コードは次のとおりです。

function main() {
  while(true){
      var records = exchange.GetRecords() //GetRecords可以填参数,获取不同周期K线。
      var ticker = exchange.GetTicker()
      Log('K线收盘价: ', records[records.length-1].Close, 'ticker买一卖一价: ', ticker.Buy, ticker.Sell)
      //js回测不用Sleep,会自动跳到下一个tick。Python需要一个小的休眠时间
  }
}

バックテスト結果: FMZ Inventor 定量プラットフォーム バックテスト手順 各 K ラインでは、開始ティックと終了ティックのみが固定され、その間に 12 個のシミュレートされたティックが追加されるため、1 つの K ラインは 14 個のバックテスト タイム ポイントを形成します。バックテストが 1 日間の場合、基礎となる K ライン サイクルは 5 分で、合計 24×12×14 = 4032 のタイム ポイントがありますが、従来の onBar バックテストでは 24 のみであるため、精度が大幅に向上します。ポジションの開始と終了も 1 つの K ライン サイクル内で完了できます。途中で生成されるティックはシミュレートされていますが、影響は大きくありません。バックテストでは、ビッド価格がアスク価格より高く、アスク価格がビッド価格より低い限り、取引は成立します。このバックテスト方法は、バックテストの速度と精度の両方を考慮しており、すべての人に推奨されます。

リアルタイムバックテスト

リアルタイムバックテストでは、実際のティックを使用し、各時点間の最短間隔はわずか1秒です。このバックテストの精度は1秒ごとに正確ですが、データ量が多いため、バックテストの速度が遅く、バックテスト時間を短縮することはできません。保証します。非常に長いです。下の写真は実際のダニを示しています。リアルタイムのバックテストを使用して、戦略を正確に検証できます。 FMZ Inventor 定量プラットフォーム バックテスト手順

バックテストと実際の取引のギャップ

リアルタイムのバックテストや実際の取引でも、取引履歴を取得できない、実際の深度の変化を取得できない、実際のネットワーク遅延など、明らかなデータ欠陥が残っています。それでも、FMZ の現在のバックテスト システムは比較的完成度が高く、戦略のフォールト トレランスをテストするために使用できるネットワーク エラーのシミュレーション、ネットワーク遅延のシミュレーション、マーケット アイコンの描画などの小さな機能が多数あります。

よくある質問

バックテストでサポートされている取引ペアと取引所が少数なのはなぜですか?

現在、共通取引ペアのデータはわずかしかありません。実際、戦略と製品の関係はそれほど大きくありませんが、戦略を検証するには十分です。

BitMEX が請求する資金調達率をシミュレートできますか?

はい、BitMEX バックテストを選択することでイベント ログをオンにできます。 FMZ Inventor 定量プラットフォーム バックテスト手順

バックテストはどこで行われますか?

JavaScript 戦略のバックテストはブラウザで実行され、Python は FMZ のサーバーまたは独自のホストを選択できます。

バックテストログはダウンロードできますか?

はい、ログの右上にダウンロードボタンがあります

ローカルでバックテストできますか?

FMZ は Python バックテスト エンジンをオープンソース化しました。参照: https://www.fmz.com/bbs-topic/1687