Я хочу применить тот же анализ данных к нескольким временным рядам данных. Однако число рядов данных является переменным. Поэтому вместо жесткого кодирования анализа каждой серии я хотел бы указать количество и название фондов, а затем сделать то же самое манипулирование данными для всех, прежде чем они будут объединены в один портфель. В частности, у меня есть файл exel, где каждый рабочий лист является временным рядом, где первый столбец - это даты, а второй столбец - цены. Даты для всех фондов могут не соответствовать, поэтому отдельные листы должны быть отфильтрованы для дат, которые происходят во всех фондах, до объединения в один набор данных, где имеется один столбец дат, а все остальные столбцы соответствуют данным каждого из текущих фондов , Этот комбинированный набор данных затем анализируется на средства и отклонения и т. Д. В настоящее время я разработал, как выполнить слияние и анализ (см. Ниже), но я хотел бы знать, как я могу просто добавлять или удалять средства (т.е. новые рабочие листы, содержащие данные отдельных фондов в файле excel) без необходимости повторной записи и добавления/удаления дополнительного/избыточного кода matlab.Анализ временных рядов времени для нескольких серий Matlab
*% LOAD DATA*
XL='XLData.xlsx';
formatIn = 'dd/mm/yyyy';
formatOut = 'mmm-dd-yyyy';
*%SPECIFY WORKSHEETS*
Fund1Prices=3;
Fund2Prices=4;
*%RETRIEVE VALUES*
[Fund1values, ~, Fund1sheet] = xlsread(XL,Fund1Prices);
[Fund2values, ~, Fund2sheet] = xlsread(XL,Fund2Prices);
*%EXTRACT DATES AND DATA AND COMBINE (TO REMOVE UNNECCESSARY TEXT IN ROWS 1
%TO 4) FOR FUND 1.*
Fund1_dates_data=Fund1sheet(4:end,1:2);
Fund1Dates= cellstr(datestr(datevec(Fund1_dates_data(:,1),formatIn),formatOut));
Fund1Data= cell2mat(Fund1_dates_data(:,2));
*%EXTRACT DATES AND DATA AND COMBINE (TO REMOVE UNNECCESSARY TEXT IN ROWS 1
%TO 4) FOR FUND 2.*
Fund2_dates_data=Fund2sheet(4:end,1:2);
Fund2Dates= cellstr(datestr(datevec(Fund2_dates_data(:,1),formatIn),formatOut));
Fund2Data= cell2mat(Fund2_dates_data(:,2));
*%CREATE TIME SERIES FOR EACH FUND*
Fund1ts=fints(Fund1Dates,Fund1Data,'Fund1');
Fund2ts=fints(Fund2Dates,Fund2Data,'Fund2');
*%CREATE PORTFOLIO*
Port=merge(Fund1ts,Fund2ts,'DateSetMethod','Intersection');
*%ANALYSE PORTFOLIO*
Returns=tick2ret(Port);
q = Portfolio;
q = q.estimateAssetMoments(Port)
[qassetmean, qassetcovar] = q.getAssetMoments
Спасибо! Работает фантастически! Я даже тестировал его с разным количеством листов, и он работает очень плавно. Это здорово, и я действительно счастлив. Спасибо вам за все усилия по этому поводу. – Mary
@ Mary Рад помочь (взял меня немного, чтобы понять, что вам нужно). Я вставил недостающий «конец». – Schorsch