2012-02-15 85 views
-1

tr9sh,感謝編輯問題,但我必須澄清我沒有要求計算每日回報。我想要的是通過查找日期的行來計算年度回報,而不輸入數據的「價格」。公式如下所示:(price(2001/1/20)/ price(2000/1/21) - 1)Matlab:如何計算每種股票的回報率

'n期股票'的收盤價格被導入到Matlab中,如下所示:

2000年1月1日23.4 78.9 ...

2000年1月2日23.3 67.1 ...

...

2001/1/1 23.2 77.1 ...

2001/1/2 24.1 78.1 ...

每列中的數字是每隻股票的價格。如果我想計算每個人的年度回報,我的代碼應該如何查看?

我已經試過

Return = (filename(find(2001/1/1)),2)/(filename(find(2000/1/1)),2) - 1 
+0

你是說數據是文本文件的形式,每個條目之間有空格嗎? – 2012-02-15 13:52:02

+0

對不起,我沒有寫清楚..沒有空間..它在墊子裏。格式 – user1205030 2012-02-15 14:22:32

+0

你需要更清楚。如果您在MATLAB中輸入'load filename',那麼結果是什麼?(其中'filename')是.mat文件的名稱? – 2012-02-15 14:24:37

回答

0

我不完全知道您想要什麼,但以下解決方案可能適用於您。假設你的數據存儲在矩陣X中。然後

close = X(:,2:end); 
ret = close(2:end,:) ./ close(1:end-1,:) - 1; 
dates = X(2:end,1); 
+0

其實它解決了我的問題。謝謝! – user1205030 2012-02-15 15:10:45

+0

很酷。現在,如果我能讓你做我(和你自己)的忙 - 坐下來,並確保你明白*爲什麼這段代碼適合你。從長遠來看,這會更好! – 2012-02-15 15:20:24

+0

代碼沒有直接解決我的問題,但它確實幫助我理解並完成了工作。謝謝你的幫助 :) – user1205030 2012-02-15 18:05:29

1

你正在嘗試使用「查找」的字符串。下一次嘗試正則表達式(http://www.mathworks.nl/help/techdoc/ref/regexp.htmlhttp://www.mathworks.nl/help/techdoc/ref/regexpi.html爲不區分大小寫的變體)

但我會以不同的方式:讀取每一行並提取日期和價格。 完成後:在年/月和最後一天搜索日期(存儲在單獨的數組中,作爲數字,而不是字符)。使用找到的索引,以獲得相應的價格陣列價格

順便說一句,你說它存儲在一個mat文件?但你的例子更像是一個文本文件? 對於文本文件,最簡單的方法是使用scanf(http://www.mathworks.nl/help/techdoc/ref/fscanf.html)函數獲取您的數據

+0

這是mat文件,是日期存儲爲數字......第一列是日期,第二列到第n列是(n-2)個不同股票的價格。我是否必須使用循環來計算每個股票的回報,還是有一個公式?謝謝!! – user1205030 2012-02-15 14:20:21