ドキュメント1.0 (latest)
ページ最適化 · 20 / 29

最適化

QuantCraft は、入力パラメータの値を変えながら多数のバックテストを連続して実行し、結果を比較できます。実行は Test(コードの実行)から設定し、要約された結果は テスト結果 に表示されます。2 つの探索戦略があります。

  • Brute force — 指定した値のすべての組み合わせを試します。
  • Genetic — 遺伝的アルゴリズムを使い、はるかに少ない実行回数で大きな探索空間を探索します。

どちらのモードも Run backtest モーダル(Test ボタン)の Script タブで設定し、スクリプトが quantcraft.inputs でパラメータを宣言している場合にのみ表示されます(既存のスクリプト向けに、古い quantcraft.inputs_module / ide.inputs_module のパスも引き続き照合されます)。最適化グリッドやその他のモーダル設定は、実行プリセット (.qcs) で保存できます(optStep / optMax はバックテストのプリセットに保存されます)。


場所

  1. IDE のツールバーの Test ボタンで Test モーダルを開きます。
  2. Script タブを開きます(スクリプトが quantcraft.inputs、または古い quantcraft.inputs_module / ide.inputs_module のパスから params をインポートしている場合に表示されます)。
  3. Optimize を有効にし、Brute force または Genetic を選びます。

最適化の実行は、通常のバックテストと同じ Symbol & data と Simulation の設定を使います。設定するのは、パラメータをどう変化させるかだけです。


最適化オン時のパラメータ表の動作

最適化を有効にすると、Parameter values 表に 2 つの列が追加されます。

列目的
Parameterスクリプトから取得した名前(読み取り専用)。
Typeint、float、bool、str。
Value数値型では、グリッドの開始値です。bool/str では固定値です。
Step数値のみ。連続する値の間隔(正または負)。
Max数値のみ。昇順グリッドの上限、または降順グリッドの下限。

型ごとの動作:

  • int / float — 値は start, start+step, … として Max まで(Max を含む)生成されます(int では丸められます)。
  • bool — 自動的に true と false(2 つの値)に展開されます。
  • str — 固定のままで、文字列パラメータは変化しません。

値を展開できない場合、各行に小さなプレースホルダ(true / false または fixed)が表示されるため、実際にどのパラメータが変化するかがひと目で分かります。


総当たり(パラメータグリッド)

総当たりは、定義した値のすべての組み合わせを評価します。length に 5 つの値、threshold に 4 つの値を指定すると、5 × 4 = 20 回のバックテストになります。

制限と検証

  • 組み合わせの総数は 256 回の実行が上限です。これを超えると、モーダルは送信をブロックし、ステップを広げるかグリッドからパラメータを外すよう求める明確なメッセージを表示します。
  • 各数値範囲には、Value(開始値)、Step、Max の3 つすべてが必要です。Step は 0 にできません。
  • 選んだ Step の符号では Value から Max に到達できない場合、モーダルが問題を説明します(たとえば、正のステップでは開始値 ≤ 最大値)。

実行中に表示されるもの

総当たり最適化を送信すると:

  • Test results ビューにヘッダーバナーが表示されます: Optimization — <file> (current/total)。
  • 出力パネルには、各実行がそのパラメータの組み合わせとともに記録され、ヘッダー行も出力されます: Optimization (brute force): N backtest run(s).
  • 出力パネルの進行状況バーには Run X / N と表示されます。
  • Stop ボタンが使えます。すでに完了した実行は保持され、結果に表示されます。

完了時に表示されるもの

Test Results ペインに Optimization ビューが表示されます。

  • スクリプトと、完了した実行回数を要約したヘッダー。
  • すべての実行のタブストリップ。各タブにはパラメータの組み合わせがラベルとして付きます(例: length=20, threshold=1.5)。ラベルが長い場合は、アクティブな実行のチャートの上に完全な組み合わせが表示されます。
  • タブを選択すると、その実行の通常のパフォーマンスビュー(資産チャート、指標、取引)が表示され、任意の組み合わせを掘り下げられます。
  • すべての組み合わせが完了する前に実行が停止された場合は、結果が部分的であることをバナーが知らせます。

遺伝的探索

総当たりのグリッドが大きくなりすぎる場合は、遺伝的モードが適しています。すべての組み合わせを試す代わりに、少数の候補の集団を複数の世代にわたって進化させ、最良のものを残して組み換えます。

ハイパーパラメータ

内側のタブを Genetic に切り替えると、次のフィールドが表示されます。

フィールド範囲備考
Population size4 – 64世代ごとに評価される候補の数。一般的な値は 8–32 です。Elitism より大きくする必要があります。
Generations1 – 40各世代で、バックテストの集団 1 つ分が実行されます。
Elitism≥ 1、< 集団サイズ上位の候補を変更せずに次の世代へコピーします。
Crossover rate0 – 12 つの親が混合した子を生み出す確率(そうでなければ最初の親がコピーされます)。
Mutation rate0 – 1遺伝子ごとに、別の離散値へランダムに変わる確率。
Fitness metricドロップダウン探索が最大化するもの(下記参照)。
Random seed (optional)テキスト同じシードを使うと、探索を正確に再現できます。

実行されるバックテストの総数は population × generations です。この積は 400 回の評価が上限で、超えるとモーダルがどちらかの値を下げるよう求めます。

対立遺伝子(アレル)(各パラメータが取りうる離散値)は、総当たりが作るのとまったく同じグリッドです。

  • 数値パラメータは Value / Step / Max を使って離散リストを作ります。
  • Bool パラメータは true / false になります。
  • 文字列パラメータは固定です(探索には影響しません)。

遺伝的探索には、変化できるパラメータが少なくとも 1 つ(アレルが 2 つ以上)必要です。すべてのパラメータが固定の場合、モーダルは送信をブロックし、数値グリッドを広げるか bool を含めるよう求めます。

適応度指標

ドロップダウンには次の項目があります(値が高いほど良い)。

  • Sharpe ratio(既定)
  • Sortino ratio
  • Total return
  • Total P/L ($)
  • Profit factor
  • Calmar ratio

指標は各バックテストのアカウントパフォーマンスから読み取られます。エラーで終わった実行には可能な限り最低の適応度が付けられるため、常に最後に並びます。

実行中に表示されるもの

  • ヘッダーバナー: Genetic optimization — <file> と Generation g of N, individual i of P。
  • 出力パネルが探索を記録します: Genetic optimization: population P, N generation(s), fitness = …、続いてバックテストごとに ── Gen g/N, indiv i/P: <combo> ──。
  • 進行状況バーには Gen g/N · i/P と表示されます。
  • 最初の実行が完了するとすぐに、部分的な結果パネルが表示されます。評価済みの候補は適応度順に並べられ、G<g>·… の接頭辞付きで一覧されるため、探索全体の終了を待たずに先頭を確認できます。

完了時に表示されるもの

  • Test Results ペインに、使用した適応度指標と実行回数とともに Genetic optimization — <file> が表示されます。
  • 最終ビューには、適応度順に並べた最後の世代が含まれ、最良のものが一番上に来ます。各タブは、その実行の完全なパフォーマンスビューを開きます。
  • Stop を押した場合は、これまでのすべての世代で完了した評価が適応度順に表示され、探索が途中で停止されたことをバナーが知らせます。

実践的なヒント

  • 小さく始める。 3 つのパラメータで各 10 個の値を持つ総当たりグリッドは、すでに 1000 回の実行で、上限の 256 を大きく超えます。最適化をオンにする前にステップを減らしましょう。
  • 大きな空間には Genetic を使う。 数値パラメータが約 3 つを超える場合は、小さな総当たりグリッドよりも、数世代の遺伝的探索のほうが通常は速く、役に立ちます。
  • Genetic の実行を再現可能にしたい場合は、シードを固定します(例: 同じ探索で 2 つの戦略を比較するとき)。
  • Stop を遠慮なく使う。 どちらのモードも、すでに完了した実行を保持するため、明確な勝者が現れたらすぐに中断できます。
  • 適応度を意図して選ぶ。 Sharpe と Sortino は一貫性を、Total return / Total P/L は素の成長を、Profit factor は勝ちと負けのバランスを重視し、Calmar は深いドローダウンにペナルティを与えます。
  • すべての実行を確認する。 各結果タブには標準の資産チャート、指標、取引履歴が含まれます。単一のバックテストと同様に、個々の実行の HTML レポートをエクスポートできます。
最適化 — ドキュメント (1.0 (latest)) | QuantCraft