我有一个指数的每日收盘价,我想为每个月的最后一天之前和之后的特定天数创建虚拟变量。
比如4天前和4天之后。总共9天。我有23年的数据。
问题是,月份的长度并不相同(很明显),而且数据不包括所有周末(这使得不平等的长度更加“不平等”)。
如何有效地为数据创建虚拟变量,而不必手动处理超过6000次的观察和点日期,这些日期是月份最后一天的4天和4天之后?
%?
我设法创建了一张表格,列有1991年至2014年(不包括周末)的日期和返回日期。第一栏年份、第二个月、第三天和第四栏:

现在,我想为月份最后一个营业日之前的X天和月份最后一天之后的X天创建虚拟变量。比如说9天。所以假人D-9,D-8.T,D+1,D+2.D+9.月中的T=last日.总共有19个假人。其余的日子将有一个单独的虚拟,ROM。然后,我将它们用作返回的回归符。

我的预期结果将是所有的虚拟人的系数,它描述了每个月的每一天的回报(19天左右的一个月)和其余的月份(ROM)。它应该是这样的:

@Daniel
发布于 2015-04-04 17:10:14
%shorter period for demonstration purposes
startday = datenum(2015,1,1);
endday = datenum(2015,3,1);
%just make sure our calendar contains enough data so every interesting day is included
startday=startday-27;
endday=endday+27;
alldays=startday:endday;
alldaysvec=datevec(alldays);
%logical vector which is true for mon-friday. Might be updated to reflect holidays as well
workday=weekday(alldays)<=6&weekday(alldays)>=2;
%create a calendar with only the bussines days in it:
wdays=alldaysvec(workday,:);
%identify days where month is changed
closing_days=find(diff(wdays(:,2))~=0);
%closing days
wdays(closing_days,:)
%days three bussines days after the closing days
wdays(closing_days+3,:)https://stackoverflow.com/questions/29447926
复制相似问题