我了解我们可以在财务工具箱中使用“每月”功能,但这会返回默认的每月数据,该数据取每月的最后一个工作日。

如果我要每月的第一个工作日怎么办?

我尝试通过以下方式将“ ED”设置为1:

ftsFuture = fints (matlabDate, lnPrice);
monthlyFuture = tomonthly(ftsFuture,'ED',1);


但这只是部分成功,因为如果每月的第一天是一个工作日,就可以了,但是如果不是一个工作日,它将成为上个月的前一个工作日。

我还尝试通过以下方式将“ BusDays”设置为0:

ftsFuture = fints (matlabDate, lnPrice);
monthlyFuture = tomonthly(ftsFuture,'ED',1, 'BusDays',0);


这成功地将每个条目强制为每月的1号,但由于其中某些日期显然不是工作日,因此显然不正确!

非常感谢您提供任何帮助!

最佳答案

从每月的第一个工作日开始,有一种方法可以从每月的每日财务时间序列中提取数据。我们可以使用tomonthlybusdate函数获得系列中间的日期。

假设数据从某个月初开始,到某月末结束,我们将添加第一个日期,并消除操作后的最后一个日期。

ftsFuture = fints (matlabDate, lnPrice);
monthlyFuture = tomonthly(ftsFuture);
eomDates = monthlyFuture.dates ; % getting end of month business days)
fomDates = busdate(eomDates) ;  % getting first month bussines days)
fomDates(end)=[] ; % deleting the last date in the array (out of range otherwise).
firstday = ftsFuture.dates(1); % adding the first date of the series.
fomDates = [firstday ; fomDates];
fomDates = datestr(fomDates);
fomftsFuture = ftsFuture(fomDates);

关于matlab - 如何根据每日英尺数提取每月财务时间序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26361539/

10-11 04:50