-2

ポートフォリオ管理で遺伝的アルゴリズムを試してみたいと思っていますが、主な関数と制約がどのように見えるべきかはわかりません。

ポートフォリオの価格とポートフォリオのリターン/リスク (std) 比率を計算する、株式価格のマトリックス、重みのあるベクトル、およびスクリプトがあります。MATLAB で遺伝的アルゴリズムを使用して、ライトのさまざまな組み合わせをテストし、最適なポートフォリオを見つけることができるようにしたい (最適 - 最高のリターン/リスク (std) 比.

prices- 列が異なる株式を表し、行が 1 日の価格を表すマトリックス。

w- 重み付きベクトル[0.333, 0.333, 0.333]

ポートフォリオのパフォーマンスを計算するスクリプト:

d = length(prices);    
n = numel(prices);

for j = 1:d
    temp = 0;
    for i = 1:n
        temp = temp + prices(j,i) * w(i);
    end
    ap(j) = temp;
end

port_performance = rr_ratio(ap); %calculates return/risk(std) ratio.

重みの最適な組み合わせを見つける必要があるため、port_performance最大値になります。GA関数はどのように見えるべきか、sum(w) = 1;そしての各要素はw >= 0

ありがとうございました

4

1 に答える 1

1

これは非常にオープンエンドな質問です。遺伝的アルゴリズムをポートフォリオ最適化に適用する完璧な方法はありません。一般的に、あなたがすることは次のようなものです:

  1. 制約を満たす多数の候補ポートフォリオを無作為に生成します。
  2. おそらくリスク/報酬比である「フィットネス指標」に従って各ポートフォリオを評価します。
  3. ポートフォリオのサブセットを選択して「複製」し、残りを削除します。通常、パフォーマンスで上位 50% を選択するようなことを行います。
  4. いくつかの新しいポートフォリオを「繁殖」させます。これは、無性生殖 (つまり、古いポートフォリオのクローン) または有性生殖 (古いポートフォリオをペアで選択し、それらを組み合わせて新しいポートフォリオを生成する) によって行うことができます。
  5. いくつかの小さな突然変異率 (p = 0.01 など) でポートフォリオに突然変異を導入します。たとえば、いくつかのウェイトをランダムに上下に動かしたり、いくつかの異なる株のウェイトをランダムに交換したりできます。
  6. これでポートフォリオの新しい母集団ができたので、最初からやり直すことができます。

最初にランダムなポートフォリオを生成して、それぞれw(i) >= 0sum(w) = 1できるようにする

>> w = rand(numPortfolios, numStocks);
>> w = bsxfun(@rdivide, w, sum(w,2));

の各行wは、ポートフォリオの重みの候補セットです。

2つのポートフォリオを繁殖させるには、平均をとることができます

>> wNew = 0.5 * (w1 + w2);

または、各ポートフォリオから要素をランダムに選択し、再正規化して重みの合計が 1 になるようにすることもできます。

>> wNew = zeros(1, numStocks);
>> x = rand(1, numStocks) < 0.5;
>> wNew( x) = w1(x);
>> wNew(~x) = w2(x);
>> wNew = wNew / sum(wNew);

また、この論文を参照することも検討してください。

于 2013-10-30T18:09:23.427 に答える