英文:
How to calculate an event window for FOMC interest change announcement on S&P500 returns
问题
我正在使用Stata进行一项关于FOMC利率变动公告对S&P500回报的事件研究。我有日期和事件日(公告日)的变量,其中每次发生事件时值为1。
我在计算事件窗口时遇到了问题。事件窗口需要从-2到2的范围。所以每当事件值为1时,我需要在新变量中的值为事件日为-2、-1、0,而在事件日为1、2时为1、2。
举个例子,在新变量中,第15行应该是0,第14行应该是-1,第16行应该是1,依此类推。这个循环需要遍历所有事件值为1的情况。
英文:
I'm doing a event study in Stata on the effect of FOMC interest change announcement on S&P500 returns.
I have variables for date and for event days (announcementdays), where the value is 1 every time there is an event.
I have trouble with calculating my event window. The event window needs to range from -2 to 2. So everytime the event value is 1, I need the values in a new variable to be -2,-1, 0 on the event day and 1, 2.
To illustrate, in the new variable row 15 should be 0, observation 14 should -1 and observation 16 should be 1 and so on. This loop needs to go through all the occasions where the event is equal to 1.
答案1
得分: 1
我认为你指的是我通常称为“事件时间”变量的内容。以下是如何在一个简单示例数据集上创建这样一个变量。
输入 id 日期 事件
1 20 0
1 21 0
1 22 1
1 23 0
2 20 0
2 21 0
2 22 1
2 23 0
结束
请查看下面的注释:
* 首先,如果有事件,创建一个带有日期的列
gen date_with_event = date if event==1
* 然后,找到每个ID的最早事件日期
bys id: egen first_date_with_event = min(date_with_event)
* 事件时间是当前日期减去该日期
gen event_time = date - first_date_with_event
list
最终输出为
+----------------------------------------------------+
| id date event date_w~t first_~t event_~e |
|----------------------------------------------------|
1. | 1 20 0 . 22 -2 |
2. | 1 21 0 . 22 -1 |
3. | 1 22 1 22 22 0 |
4. | 1 23 0 . 22 1 |
5. | 2 20 0 . 22 -2 |
|----------------------------------------------------|
6. | 2 21 0 . 22 -1 |
7. | 2 22 1 22 22 0 |
8. | 2 23 0 . 22 1 |
+----------------------------------------------------+
英文:
I think you're referring to what I typically call the "event time" variable. Here's how to make such a variable on a simple example dataset.
input id date event
1 20 0
1 21 0
1 22 1
1 23 0
2 20 0
2 21 0
2 22 1
2 23 0
end
Check out the comments below:
* First make a column with the date whenever there's an event
gen date_with_event = date if event==1
* Then find the earliest event for each ID
bys id: egen first_date_with_event = min(date_with_event)
* The event time is the current date minus that date
gen event_time = date - first_date_with_event
list
The final output is
+----------------------------------------------------+
| id date event date_w~t first_~t event_~e |
|----------------------------------------------------|
1. | 1 20 0 . 22 -2 |
2. | 1 21 0 . 22 -1 |
3. | 1 22 1 22 22 0 |
4. | 1 23 0 . 22 1 |
5. | 2 20 0 . 22 -2 |
|----------------------------------------------------|
6. | 2 21 0 . 22 -1 |
7. | 2 22 1 22 22 0 |
8. | 2 23 0 . 22 1 |
+----------------------------------------------------+
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论