嗨喽,诸君安啦,小编又来跟大家分享business calendar的内容了,上回书说到啊,用business calendar排除了周末,但是我们还保留了一个小问题,那就是还有重大节日比如国庆节,也是非交易日,属于股票交易数据中的间隔,我们还没有将其剔除出去。
一、剔除其他非交易日
通过bofd函数,可以发现除双休之外的非交易日没有被剔除出去,比如通过date函数我们可以将2001年10月1日换算成stata 数值型日期,再用bofd函数对其进行检验,具体命令如下:
dis date("01/10/2001","DMY")
dis bofd("stkcd",15249)
结果并不为缺失值,对于这种特定需要排除的日期,我们通过在do-file文件中加入omit命令语句将特定的节假日排除在business calendar之外,重新编辑do-file文件如下:
version 13.1
dateformat dmy
range 10nov1999 28oct2016
centerdate 10nov1999
omit dayofweek (Sa Su)
omit date 01oct*
再通过bcal load stkcd导入business calendar
通过bofd函数对2001年10月1日进行检验,命令如下:
dis bofd("stkcd",15249)
结果为缺失值,business calendar已经将每年的国庆节剔除出去了,这就是剔除特定节假日的方法。
接下来小编要开始放大招了,前方高能请注意!!!
二、通过bcal create创建business calendar
如果你觉得上面介绍的创建business calendar的方法比较复杂,那么小编教你一个一招制敌的方法,通过bcal create命令来创建business calendar。
我们可以通过use重新调用一份数据http://www.stata.com/data/nasdaq,首先通过date函数,将date列的数据转化为Stata 数值型日期,并保存在mydate和mydate1中,并且将mydate的数据显示格式变为%td格式,具体命令下:
generate mydate = date(date,"YMD")
generate mydate1 = mydate
format %td mydate
list date mydate mydate1 in 1/10
对mydate使用tsset命令并且显示变量index及其滞后一期的数据,具体命如下:
tsset mydate
list date mydate mydate1 index L.index
出现了与business calendar(一)中一样的问题,接下来我们就可以直接用bcal create命令创建business calendar,并创建business date,将其以%tbcalname的显示格式,保存在bcaldate中,具体的命令如下:
bcal create nasdaq, from(mydate) gen(bcaldate)
显示前100行的结果:
list in 1/100
至此,business calendar及business date创建成功,对其正确性的检验及滞后期的分析均按照business calendar(一)中所说内容。
以上就是今天小编与大家分享的全部内容了,如果各位看官喜欢今天分享的内容,不要吝啬你的打赏哦,毕竟马上就是双十一啦,小编已经做好吃土的准备了!
编辑by谢慧蓉 徐苾雯
往期推文推荐:
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:xueyuan19920310@163.com
长按二维码关注你懂哟~
微信扫一扫
关注该公众号