2013-02-09 49 views
-2

我有四個數據集(請原諒這裏):如何基於來自兩個獨立數據表的輸入在matlab中創建排名(降序)表?

  • 1表:10個行情(股票代碼)在一列txt格式的MATLAB列表。
  • 第二張表格:一列數據格式的日期(雙格式爲10天)。
  • 第三個表格:我有10 * 10個隨機數據集(爲簡單起見,假定爲0-1)。 (例如每股收益增長EPS) - 所以我希望我的投資組合排名中的每股收益高速增長。
  • 第四個表格:我有另一個10 * 10的隨機數據集(爲簡單起見,假定爲0-1)。 (例如每日的市盈率) - 所以我希望我的投資組合排名中的低市盈率。

現在我想從表1(最小值)的特定日期和底部三個股票的表格中選擇3個股票(最大值)組成每日股票組合。根據兩個因素的綜合排名(如上所述,表3 & 4),輸出必須是每天的代答人名單(本例中爲3)。

任何想法?總之,我需要結束與三個代價的頂部水桶......

+0

表3和表4的目的是什麼?表3和表4的內容是什麼?他們是表1中每個股票的每日數據? – TJ1 2013-02-10 15:48:43

+1

合作編輯是SO的一部分http://stackoverflow.com/faq#editing「如果您不滿意您的貢獻是由其他可信用戶協作編輯的想法,那麼這可能不適合您。」考慮自己編輯您的帖子,根據數據和輸入/輸出抽象您的問題,並提供一個示例。 – gevang 2013-02-10 21:51:33

回答

1

從帖子不完全清楚你想要實現什麼。這裏有一個基於猜測和各種選項。

您的前兩個「表」存儲股票和天數的符號(與排名無關)。你的第三和第四個分數是以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 

按升序評分表和降序(讓每天上較低的分數,每列IE):

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

保持三個最大和最小:

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囡):

% 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 

如果你需要得分/股從集largest_of_3和smallest_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 

UPDATE

爲了得到最終得分的加權排名,在排序scoreAllW而不是之前,定義權重向量(1 x分數)並使用以下兩個選項之一3210:

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 
+0

親愛的Gevang,非常感謝您的全力支持,它非常​​有意義。快速的問題,我將如何修改最終輸出的每個因素的權重?在最後階段的含義,假設我想要.3在權重爲T3和.7爲T4之前,我得到了indexBest的最終輸出? – 2013-02-11 13:38:06

+1

@ Noob_1你可以通過選擇的權重(w1和w2)預先給T3和T4加權,或者在最終的「排序」之前對「scoreAll」矩陣進行加權。請參閱我的答案中的更新。 – gevang 2013-02-11 21:47:29

相關問題