12. オプティマイザー戦略オプティマイザー
オプティマイザーは、遺伝的アルゴリズムや粒子群最適化などの手法を使用して戦略パラメーターを最適化できる戦略オプティマイザーです。
- class qteasy.optimization.Optimizer(*, op: Operator, method: str, shares: list[str], benchmark: DataFrame, pool_size: int, opti_target: str, opti_direction: str, parallel: bool, opti_start_date: str, opti_end_date: str, test_start_date: str, test_end_date: str, opti_cash_plan: CashPlan, test_cash_plan: CashPlan, cost_params: ndarray, signal_parsing_params: dict, trading_moq_params: dict, trading_delivery_params: dict, search_config: dict, logger: Optional[Logger] = None, evaluate_indicators: str = 'r,m,v,b', test_plot_type: str = 'histo')[ソース]
最適パラメータ検索オブジェクト
13. 戦略パラメータ最適化手法
グリッド検索
- class qteasy.optimization.Optimizer._search_grid(self, space: Space)
グリッド検索: 固定ステップ サイズでパラメーター空間をサンプリングし、バッチで評価します。
- パラメータ:
space (Space) -- 検索するパラメータ空間。
- 戻り値:
最適な結果を``self.result_pool``に書き込みます。
- 戻り値の型:
None
モンテカルロ検索
- class qteasy.optimization.Optimizer._search_montecarlo(self, space: Space)
モンテカルロランダム検索:
space内でランダムに均一にサンプリングし、バッチで評価します。- パラメータ:
space (Space) -- 検索するパラメータ空間。
- 戻り値:
最適な結果を``self.result_pool``に書き込みます。
- 戻り値の型:
None
模擬焼なまし検索
- class qteasy.optimization.Optimizer._search_sa(self, space: Space)
漸進的なステップサイズのランダム検索: 複数回のモンテカルロ + 部分空間縮小。
各ラウンドで、いくつかの部分空間内でランダムにサンプリングします。最適なものを選択した後、
reduce_ratioand proceed to the next round, until stopping conditions such asmin_volumeormax_roundsのような設定を使用して近傍を縮小します。- パラメータ:
space (Space) -- 初期パラメータ空間。
- 戻り値:
最適な結果を``self.result_pool``に書き込みます。
- 戻り値の型:
None
遺伝的アルゴリズム検索
- class qteasy.optimization.Optimizer._search_ga(self, space: Space)
最適なハイパーパラメータ検索アルゴリズム 4: 遺伝的アルゴリズム。遺伝的アルゴリズムは、計算コストを許容範囲内に保ちながら、非常に大きなパラメータ空間で全体最適値または近似全体最適値を検索するのに適しています。
遺伝的アルゴリズムは、生物の反復的な遺伝プロセスを利用します。まず、一定数のパラメータ ポイントがパラメータ空間内でランダムに選択されます。このパラメータ点のセットは「母集団」と呼ばれます。次に、この母集団に基づいて反復計算が実行されます。各反復 (再現と呼ばれる) の前に、各個体が生存するか死亡する確率が、その評価関数の値に従って決定されます。法則は、個体の評価関数値が最適値に近ければ近いほど、生存確率が高く、子孫を残す確率が高くなります。それ以外の場合、これらの確率は低くなります。生存/死亡および繁殖の確率を決定した後、生存/死亡の確率に従って一定数の個体が死亡するように選択されます。残った(生き残った)個体の中から、最も高い繁殖確率を持つ個体が交雑のために選択され、次世代の個体が繁殖します。同時に、生殖中にランダムな遺伝子変異が導入され、新しい個体が生成されます。最終的に、個体群サイズは初期値に戻ります。このようにして、1 回の人口反復が完了します。上記のプロセスは、望ましい最適解または最適に近い解が集団内に現れるまで、何千世代、さらには何万世代にもわたって繰り返されます。
- パラメータ:
space (qt.Space) -- パラメータ空間オブジェクト
- 戻り値の型:
None,搜索的结果最佳值会被保存在self.result_pool属性中
勾配降下探索
- class qteasy.optimization.Optimizer._search_gradient(self, space: Space)
最適パラメータ探索アルゴリズム5:勾配降下法(多点同時勾配探索)
パラメーター空間で、最適化結果が最も速く改善する方向を見つけ、結果が変化しなくなるか最大ステップ数に達するまで、常に最適な方向に向かって (適応ステップ サイズを使用して) 移動します。パラメータ空間内で N 個の開始点をランダムに選択して検索を開始します。出力は、最終ステップからの N 個の結果です。
近傍は、space.neighbors(point, axis_index, ...) によって生成され、int/float/enum/int_array/float_array をサポートします。適応ステップ サイズ (増加/減少) は浮動小数点次元にのみ適用されます。改善がない場合は、ステップ サイズが縮小され、ステップ サイズが小さくなりすぎるか、連続して改善されない回数がしきい値に達すると、軌道は終了します。
- パラメータ:
space (Space) -- パラメータ空間
- 戻り値の型:
None
粒子群最適化探索
- class qteasy.optimization.Optimizer._search_pso(self, space: Space)
最適なハイパーパラメータ探索アルゴリズム 6: Particle Swarm Optimization (PSO)
パラメータ空間内の N 個の開始点を粒子群の初期位置としてランダムに選択します。各粒子は、自身の歴史的最良位置と全体的な歴史的最良位置に基づいて速度と位置を調整し、徐々に最適値に近づきます。複数の反復の後、群は全体最適値または近似最適値に収束します。
数値表現では、space.point_to_vector / space.vector_to_point を使用します。エンコードされたベクトル空間で速度と位置を更新し、有効なパラメーター ポイントにマッピングし直します。慣性重み w=0.7、認知係数 c1=1.5、社会係数 c2=1.5。
- パラメータ:
space (qt.Space) -- パラメータ空間オブジェクト
- 戻り値の型:
None,搜索的结果最佳值会被保存在self.result_pool属性中
ベイジアン最適化検索
- class qteasy.optimization.Optimizer._search_bayesian(self, space: Space)
最適なハイパーパラメータ探索アルゴリズム 6: ベイズ最適化
ベイジアン最適化は、ベイズ統計理論に基づいた大域的な最適化手法であり、高次元の非凸ブラックボックス関数の最適化に適しています。これは、目的関数の確率モデル (通常はガウス過程) を構築することによってパラメーター検索をガイドし、それによって限られた数の評価内で最適なものを見つけます。ワークフロー: 初期ランダム サンプリング -> (X, y) でサロゲートを適合 (RBF カーネルを使用したガウス プロセス) -> 反復: 候補点で UCB 取得関数を計算し、評価のために最大の取得値を持つ点を選択 -> max_iterations に達するまで、(X, y) と result_pool を更新します。
- パラメータ:
space (qt.Space) -- パラメータ空間オブジェクト
- 戻り値の型:
None,搜索的结果最佳值会被保存在self.result_pool属性中