Matlab: как рассчитать доходность для каждой акции - PullRequest
0 голосов
/ 15 февраля 2012

tr9sh, спасибо за редактирование вопроса, но я должен уточнить, что я не просил подсчитать дневной доход. Я хочу рассчитать годовой доход, найдя строку даты без ввода данных «цена». Формула будет выглядеть так: (цена (2001/1/20) / цена (2000/1/21) - 1)

Цена закрытия 'n акций за 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

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Я не совсем знаю, что вы хотите, но следующее решение может работать для вас. Скажем, ваши данные хранятся в матрице X. Тогда

close = X(:,2:end);
ret   = close(2:end,:) ./ close(1:end-1,:) - 1;
dates = X(2:end,1);
1 голос
/ 15 февраля 2012

вы пытаетесь использовать 'find' для строки.В следующий раз попробуйте regexp (http://www.mathworks.nl/help/techdoc/ref/regexp.html и http://www.mathworks.nl/help/techdoc/ref/regexpi.html для варианта без учета регистра)

, но я бы сделал это по-другому: прочитайте каждую строку и извлеките дату и цены.Когда это будет сделано: ищите даты (хранящиеся в отдельном массиве, как числа, а не как символы) по году / месяцу и в последний день.Используйте найденный индекс, чтобы получить соответствующие цены из массива цен

Кстати, вы говорите, что он хранится в файле mat?а ты пример больше похож на текстовый файл ??Для текстового файла проще всего использовать функцию scanf (http://www.mathworks.nl/help/techdoc/ref/fscanf.html), чтобы получить ваши данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...