ページ最適化 · 20 / 29
最適化
QuantCraft は、入力パラメータの値を変えながら多数のバックテストを連続して実行し、結果を比較できます。実行は Test(コードの実行)から設定し、要約された結果は テスト結果 に表示されます。2 つの探索戦略があります。
- Brute force — 指定した値のすべての組み合わせを試します。
- Genetic — 遺伝的アルゴリズムを使い、はるかに少ない実行回数で大きな探索空間を探索します。
どちらのモードも Run backtest モーダル(Test ボタン)の Script タブで設定し、スクリプトが quantcraft.inputs でパラメータを宣言している場合にのみ表示されます(既存のスクリプト向けに、古い quantcraft.inputs_module / ide.inputs_module のパスも引き続き照合されます)。最適化グリッドやその他のモーダル設定は、実行プリセット (.qcs) で保存できます(optStep / optMax はバックテストのプリセットに保存されます)。
場所
- IDE のツールバーの Test ボタンで Test モーダルを開きます。
- Script タブを開きます(スクリプトが
quantcraft.inputs、または古いquantcraft.inputs_module/ide.inputs_moduleのパスからparamsをインポートしている場合に表示されます)。 - Optimize を有効にし、Brute force または Genetic を選びます。
最適化の実行は、通常のバックテストと同じ Symbol & data と Simulation の設定を使います。設定するのは、パラメータをどう変化させるかだけです。
最適化オン時のパラメータ表の動作
最適化を有効にすると、Parameter values 表に 2 つの列が追加されます。
| 列 | 目的 |
|---|---|
| Parameter | スクリプトから取得した名前(読み取り専用)。 |
| Type | int、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 size | 4 – 64 | 世代ごとに評価される候補の数。一般的な値は 8–32 です。Elitism より大きくする必要があります。 |
| Generations | 1 – 40 | 各世代で、バックテストの集団 1 つ分が実行されます。 |
| Elitism | ≥ 1、< 集団サイズ | 上位の候補を変更せずに次の世代へコピーします。 |
| Crossover rate | 0 – 1 | 2 つの親が混合した子を生み出す確率(そうでなければ最初の親がコピーされます)。 |
| Mutation rate | 0 – 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 レポートをエクスポートできます。

