全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
4911 3
2011-03-15
11.jpg
如图:stock_code:股票代码  trading_date:交易日(列出了从06年至今某股票所有的交易日)   event_date:事件日  
group_id:第几次事件(每个股票每发生一个事件都记一次)
现在想求第二个事件日与第一个事件日之间间隔的交易日天数(不是日历天数),请问该如何写命令?十分感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-3-16 13:31:05
jnx2004 发表于 2011-3-15 20:38

如图:stock_code:股票代码  trading_date:交易日(列出了从06年至今某股票所有的交易日)   event_date:事件日  
group_id:第几次事件(每个股票每发生一个事件都记一次)
现在想求第二个事件日与第一个事件日之间间隔的交易日天数(不是日历天数),请问该如何写命令?十分感谢!
应该是“想求交易日与事件日之间间隔的交易日天数”吧?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-3-16 13:35:42
由于你没有上传相应数据,因此我无法看到下面的程序是否能行。请你试试:


gen trddt = date(trading_date, "YMD")
format trddt %td
gen evtdt = date(event_date, "YMD")
format evtdt %td

// 1.计算(调整后的)事件日,解决事件日为非交易日的问题
gen deltadt = trddt - evtdt              // 日历间隔
bysort groupid (trddt): egen minddt = min(cond(deltadt < 0, ., deltadt))
gen evtdt_nu = evtdt + minddt     // 若evtdt非交易日,将下一个交易日作为调整后的事件日
                                                     // 当然为避免事件日正处于股市长时间停牌期间的影响,
                                                     // 最好能给minddt加个限定条件,如小于3天

// 2. 标识t0
bysort groupid (trddt): gen t = _n
bysort groupid (trddt): egen t0 = total( (trddt == evtdt_nu)*t )

// 3. t就是你需要的交易日间隔
replace t = t - t0
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-3-16 15:46:03
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群