Matlab: как рассчитать доходность каждой акции

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

person user1205030    schedule 15.02.2012    source источник
comment
Вы говорите, что данные представлены в виде текстового файла с пробелами между каждой записью?   -  person Chris Taylor    schedule 15.02.2012
comment
извините не понятно написал..пробелов нет..и это в мат. формат   -  person user1205030    schedule 15.02.2012
comment
Вам нужно быть более ясным. Что получится, если вы введете load filename в MATLAB (где filename) — это имя файла .mat?   -  person Chris Taylor    schedule 15.02.2012
comment
Да, это файл .mat. Первый столбец — это дата, а столбцы со 2-го по n — цены на (n-2) разных акций.   -  person user1205030    schedule 15.02.2012
comment
Что получится, если ввести load filename?   -  person Chris Taylor    schedule 15.02.2012


Ответы (2)


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

close = X(:,2:end);
ret   = close(2:end,:) ./ close(1:end-1,:) - 1;
dates = X(2:end,1);
person Chris Taylor    schedule 15.02.2012
comment
Прохладно. Теперь, если бы я мог заставить вас сделать мне (и себе) одолжение - сядьте и убедитесь, что вы понимаете, почему этот фрагмент кода работает для вас. В долгосрочной перспективе будет лучше! - person Chris Taylor; 15.02.2012
comment
Код не решил мою проблему напрямую, но помог мне понять и выполнить работу. Спасибо за вашу помощь :) - person user1205030; 15.02.2012

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

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

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

person Gunther Struyf    schedule 15.02.2012
comment
Это матовый файл, да, даты хранятся в виде чисел... первый столбец — это дата, а столбец со второго по n — цены на (n-2) разных акций. Должен ли я использовать цикл для расчета доходности каждой акции или для этого есть формула? Спасибо!! - person user1205030; 15.02.2012