Hi, greetings, First of all, I sincerely thank all of you for saving my life many times (I wish I could pay you for help). The current difficulty I am going through is the following: I am dealing with a large dataset of daily stock returns. When a company incurs an event on a certain day, I am going to extract three stock returns on that day, the previous day, and the next day. So, if we designate the event day as zero, the event window can be formalized as window (-1, +1): further, I am going to calculate the mean of the three returns. Based on the large daily data, I identified such event days from numerous companies by creating a dummy t (=1, missing otherwise). Then, using the following codes, data window; set daily_stock; by cusip; if t>. then do p=max(_n_-1,1,p+1) to min(_n_+1,nobs); set daily_stock point=p nobs=nobs; output; end; run; I obtained the results below. CUSIP DATE RET t Year Month newvar 00030710 2/24/2017 -0.021 2017 2 1 00030710 2/27/2017 0.001 1 2017 2 1 00030710 2/28/2017 0.208 2017 2 1 00030710 5/2/2017 0.097 2017 5 2 00030710 5/3/2017 -0.055 1 2017 5 2 00030710 5/4/2017 0.077 2017 5 2 00030710 8/1/2017 0.032 2017 8 3 00030710 8/2/2017 -0.063 1 2017 8 3 00030710 8/3/2017 0.203 2017 8 3 00030710 10/31/2017 -0.034 2017 10 4 00030710 11/1/2017 -0.047 1 2017 11 4 00030710 11/2/2017 0.327 2017 11 4 00030710 2/20/2018 -0.023 2018 2 5 00030710 2/21/2018 0.031 1 2018 2 5 00030710 2/22/2018 0.072 2018 2 5 00077R10 9/22/1998 0.014 1998 9 1 00077R10 9/23/1998 0.108 1 1998 9 1 00077R10 9/24/1998 -0.308 1998 9 1 00077R10 12/2/1998 -0.019 1998 12 2 00077R10 12/3/1998 -0.125 1 1998 12 2 00077R10 12/4/1998 0.035 1998 12 2 00077R10 3/3/1999 0.010 1999 3 3 00077R10 3/4/1999 0.023 1 1999 3 3 00077R10 3/5/1999 0.088 1999 3 3 00077R10 4/29/1999 0.074 1999 4 3 00077R10 4/30/1999 0.018 1 1999 4 3 00077R10 5/3/1999 0.429 1999 5 3 From here, I need to create the group of three consecutive observations with "t" in the middle. In other words, I need to identify "t", a row above "t", and a row below "t" in a group. At first, this task looked very simple. So, I created year and month variables, and I thought grouping by year-months will accomplish it. However, there are cases in which a three-day window covers more than one month. So, I created the "newvar" that increases by 1 only when month jumps by 2 or more. But then again, there are three-day windows lying side by side in consecutive months (See cusip 00077R10 in 1999 over months 3, 4, and 5). So, please give me a hand to solve this. I want to be very rigorous and precise, since I have to submit the data and codes together with my manuscript, to a journal. Many thanks in advance!! Sincerely, KS -,
... View more