MATLAB: How to get certain data

last trading dayselect datastock returns

I have data of stock daily returns but I just use data of 21 days before the last trading day of a month. I already have a logical matrix of whether a date is a last trading date of a month but I dont know how to create a matrix of returns of only 21 days before it. Please help me.

Best Answer

Let's say you have a logical vector, logicalLastDaysVector, of when a day is the last day of the month. Then just extract going back to 1 more than the last day of the prior month:
lastDayIndexes = find(logicalLastDaysVector);
for k = 2 : length(lastDayIndexes)
% Get the index of the first day of the month.
firstDay = lastDayIndexes(k-1) + 1;
% Get the index of the last day of the month
lastDay = lastDayIndexes(k);
% Extract all the days from first to last, inclusive.
thisMonth = stockReturns(firstDay:lastDay);
% Now do something with this data.....
end