首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建每月转弯MATLAB的虚拟变量

创建每月转弯MATLAB的虚拟变量
EN

Stack Overflow用户
提问于 2015-04-04 15:06:28
回答 1查看 663关注 0票数 2

我有一个指数的每日收盘价,我想为每个月的最后一天之前和之后的特定天数创建虚拟变量。

比如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

我的索引的完整数据在这里找到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-04 17:10:14

代码语言:javascript
复制
%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,:)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29447926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档