-2

4 つのデータ セットがあります (ここでご容赦ください)。

  • 1 番目のテーブル: matlab の txt 形式の 1 つの列に 10 個のティッカー (株式シンボル) のリスト。
  • 2 番目のテーブル: 1 つの列の数値形式の日付 (倍精度形式で 10 日)。
  • 3 番目のテーブル: 乱数の 10*10 データ セットがあります (簡単にするために 0 ~ 1 と仮定します)。(たとえば、EPS の 1 株あたりの利益)--つまり、ポートフォリオを構築するために、ランキングで高い EPS の成長を望んでいます。
  • 4 番目の表: 別の 10*10 の乱数のデータ セットがあります (簡単にするために 0 ~ 1 と仮定します)。(たとえば、毎日の価格対収益率)-ポートフォリオ構築のために、ランキングで低いP / E比が必要です。

今: 特定の日のテーブル 1 の 3 つの銘柄 (最大値) と、テーブル 2 の下位 3 つの銘柄 (最小値) で構成される銘柄のポートフォリオを毎日ランク付けしたいと考えています。出力は、2 つの要因の組み合わせランキング (表 3 と 4 で説明) に基づいて、日ごと (この場合は 3 つ) のティッカーのリストである必要があります。

何か案は?要するに、私は 3 つのティッカーを持つトップ バケットで終わる必要があります...

4

1 に答える 1

1

あなたが達成しようとしていることは、投稿から完全には明らかではありません。これは、さまざまなオプションを使用した推測に基づくテイクです。

最初の 2 つの「テーブル」には、株式と日数のシンボルが格納されます (ランキングには関係ありません)。あなたの 3 番目と 4 番目は、ある方法で配置されたスコアstock x dayです。株式は縦、日は横、株式は の値でシンボル化されていると仮定しましょう[1:10]

N = 10; % num of stocks
M = 10; % num of days   
T3 = rand(N,M); % table 3 stocks x days
T4 = rand(N,M); % table 4 stocks x days

スコア テーブルを昇順および降順で並べ替えます (1 日ごと、つまり列ごとに上位および下位のスコアを取得するため):

[Sl,L] = sort(T3, 'descend'); 
[Ss,S] = sort(T4, 'ascend');

最大と最小の 3 つを保持します。

largest = L(1:3,:);  % bucket of 3 largest per day
smallest = S(1:3,:); % bucket of 3 smallest per day

両方のものが必要な場合 (0 は nan):

% Inter-section of both buckets
indexI = zeros(3,M);
for i=1:M
    z = largest(ismember(largest(:,i),smallest(:,i)));
    if ~isempty(z)
        indexI(1:length(z),i) = z;
    end
end

どちらかが必要な場合 (0 は nan):

% Union of both buckets
indexU = zeros(6,M);
for i=1:M
    z = unique([largest(:,i),smallest(:,i)]);
    indexU(1:length(z),i) = z;
end

maximum_of_3 と least_of_4 のセットからのスコア/株式のランキングが必要な場合:

scoreAll = [Sl(1:3,:); Ss(1:3,:)];
indexAll = [largest;smallest];

[~,indexSort] = sort(scoreAll,'descend');
for i=1:M
    indexBest(:,i) = indexAll(indexSort(1:3,i),i);
end

アップデート

最終スコアの加重ランキングを取得するには、加重ベクトル (1 x スコア) を定義し、以下の 2 つのオプションのいずれかを使用してから、 のscoreAllW代わりに並べ替えscoreAllます。

w = [0.3 ;0.3; 0.3; 0.7; 0.7; 0.7];
scoreAllW = scoreAll.*repmat(w,1,10);    % Option 1
scoreAllW = bsxfun(@times, scoreAll, w); % Option 2
于 2013-02-10T23:02:46.670 に答える