私は遺伝的アルゴリズムのプロジェクトを行っており、その履歴に基づいて株のセットを選択するソフトウェアを構築する必要があります。遺伝的プログラミングでそれを行う必要があります。つまり、適応度関数と染色体が必要です。右私は、株式の平均履歴と実際の値との正の差によって適応度関数を考えました(したがって、一致した場合は0になります)。誰かが染色体を表現する方法を知っていますか?
1 に答える
問題は明確に定義されていないようです。あなたが言及したフィットネス関数は、株式の実際の価値を知っていれば、価格が実際の価値の周りにある株式の選択を提供します。その他の可能性:
最初のシナリオ: 過去のパフォーマンスに基づいて最も有望な一連の銘柄を選択しようとしています。つまり、期待リターンを最大化したり、分散/リスクを最小化したりします。選択できる銘柄の数が多くない場合、最も簡単なオプションはバイナリ文字列を使用することです。0 は選択なしを表し、1 は選択を表します。位置は、株式のインデックスに対応します。選択できる銘柄が非常に多い場合は、銘柄のラベル/インデックスを染色体としてエンコードできます。これは、選択する銘柄数に上限がない場合、可変長染色体を意味する可能性があり、コーディングが難しくなります。
適合度関数 (最大化) は、選択した銘柄の (期待リターン - 標準偏差) の合計になります。期待リターンは、2 つの方法で定式化できます。期待される将来の価格 - 現在の価格、または現在の価格 - 基礎となる価値 (基礎となる価値がわかっている場合)。予想される将来の価格は、履歴データから推定できます (たとえば、選択した単純な曲線に適合させるか、ARIMA を適用して次の時点まで拡張します)。標準偏差は、過去のデータから直接推定できます。
染色体が 2 進数 (値は 0/1) の場合、期待リターンと標準偏差が得られれば、必要な計算は単純なドット積で行うことができます。選択された株式の数にも上限がある可能性があると思います。その場合、制約付きの最適化問題があります。制約をフィットネスのペナルティとして表すことができます。
この問題は基本的にバイナリ整数線形計画法 (BILP) であり、GA を他の Bilp ソルバーに対してベンチマークすることができます。適切な混合整数線形計画法ソルバー (たとえば、symphony、gurobi、ibm cplex など) を使用すると、通常、GA を使用するよりも高速に大きな問題を解決できます。
2 番目のシナリオ: 期待リターンを最大化するために、現在の価格で購入する株式の数を見つけようとしています。ここでの染色体は、ショートを表現したくない限り、非負の整数になります。適合度は項目 (1) と同じです。つまり、時間の経過とともに平均化された選択された株式の価格の合計から、時間の経過とともに選択された株式の過去の価格の標準偏差が差し引かれます。問題は整数線形計画問題になります。それ以外は(1)と同じです。繰り返しになりますが、選択できる銘柄の数が多い場合は、GA よりも MILP ソルバーの方がはるかに優れていることがわかります。
さらに、GP(遺伝的プログラミング)は、GAとは十分に異なる。銘柄選択戦略、または将来の株価を予測する式を進化させようとしている場合、実際には GP です。銘柄選択の問題については、a ga wld b で十分です。