Hi Statalist forums,

I am working on an event study where I am studying the cash dividend payouts on the danish stock market. I am looking at the time period 2013-2019, which means that firms have a very different amount of cash dividends.

My data set currently looks like this: Array


or if you'd rather have it as a code:

Code:
* Example generated by -dataex-. To install: ssc install dataex
clear
input int Date str36 Company double(returns dividend) byte eventdate float(datezero1 tau1 event_window1 estimation_window1)
18995 "A P MOLLER MAERSK A"  .0076588021778583    . . 74 -73 . 1
18996 "A P MOLLER MAERSK A" -.0032576197762579    . . 74 -72 . 1
18997 "A P MOLLER MAERSK A"   .018519129572627    . . 74 -71 . 1
18998 "A P MOLLER MAERSK A" -.0160442079637895    . . 74 -70 . 1
19001 "A P MOLLER MAERSK A" -.0027155465037338    . . 74 -69 . 1
19002 "A P MOLLER MAERSK A"  .0054490258254896    . . 74 -68 . 1
19003 "A P MOLLER MAERSK A" -.0065046447228725    . . 74 -67 . 1
19004 "A P MOLLER MAERSK A"  .0190939952752907    . . 74 -66 . 1
19005 "A P MOLLER MAERSK A" -.0042825262735225    . . 74 -65 . 1
19008 "A P MOLLER MAERSK A" -.0032245456322063    . . 74 -64 . 1
19009 "A P MOLLER MAERSK A"  .0021566513086952    . . 74 -63 . 1
19010 "A P MOLLER MAERSK A"  .0129167190695119    . . 74 -62 . 1
19011 "A P MOLLER MAERSK A"  .0010638167414709    . . 74 -61 . 1
19012 "A P MOLLER MAERSK A" -.0079624905445425    . . 74 -60 . 1
19015 "A P MOLLER MAERSK A"                  0    . . 74 -59 . 1
19016 "A P MOLLER MAERSK A"  .0101657451741266    . . 74 -58 . 1
19017 "A P MOLLER MAERSK A"  .0190679778989318    . . 74 -57 . 1
19018 "A P MOLLER MAERSK A"  .0218299753946083    . . 74 -56 . 1
19019 "A P MOLLER MAERSK A" -.0223805037814423    . . 74 -55 . 1
19022 "A P MOLLER MAERSK A" -.0072842274636239    . . 74 -54 . 1
19023 "A P MOLLER MAERSK A"  .0476941430128774    . . 74 -53 . 1
19024 "A P MOLLER MAERSK A"  .0465230724825918    . . 74 -52 . 1
19025 "A P MOLLER MAERSK A"  -.012428946911173    . . 74 -51 . 1
19026 "A P MOLLER MAERSK A"  .0232339918089672    . . 74 -50 . 1
19029 "A P MOLLER MAERSK A"                  0    . . 74 -49 . 1
19030 "A P MOLLER MAERSK A"  .0037841776884993    . . 74 -48 . 1
19031 "A P MOLLER MAERSK A"  .0037699116728593    . . 74 -47 . 1
19032 "A P MOLLER MAERSK A"  .0093900592414815    . . 74 -46 . 1
19033 "A P MOLLER MAERSK A" -.0074429701033322    . . 74 -45 . 1
19036 "A P MOLLER MAERSK A"  .0253055210079489    . . 74 -44 . 1
19037 "A P MOLLER MAERSK A"  .0009137188356612    . . 74 -43 . 1
19038 "A P MOLLER MAERSK A"  .0191784827935062    . . 74 -42 . 1
19039 "A P MOLLER MAERSK A" -.0161291781861234    . . 74 -41 . 1
19040 "A P MOLLER MAERSK A"  .0355196712610941    . . 74 -40 . 1
19043 "A P MOLLER MAERSK A"  .0123120837297812    . . 74 -39 . 1
19044 "A P MOLLER MAERSK A" -.0147690032645952    . . 74 -38 . 1
19045 "A P MOLLER MAERSK A" -.0599654018850884    . . 74 -37 . 1
19046 "A P MOLLER MAERSK A"                  0    . . 74 -36 . 1
19047 "A P MOLLER MAERSK A"  .0215756663829603    . . 74 -35 . 1
19050 "A P MOLLER MAERSK A" -.0358119241508295    . . 74 -34 . 1
19051 "A P MOLLER MAERSK A" -.0019053899043185    . . 74 -33 . 1
19052 "A P MOLLER MAERSK A"  .0238552717783271    . . 74 -32 . 1
19053 "A P MOLLER MAERSK A"  .0354156584395333    . . 74 -31 . 1
19054 "A P MOLLER MAERSK A" -.0126015125450356    . . 74 -30 . 1
19057 "A P MOLLER MAERSK A" -.0164085315422757    . . 74 -29 . 1
19058 "A P MOLLER MAERSK A" -.0379979680231003    . . 74 -28 . 1
19059 "A P MOLLER MAERSK A" -.0038534440590536    . . 74 -27 . 1
19060 "A P MOLLER MAERSK A"                  0    . . 74 -26 . 1
19061 "A P MOLLER MAERSK A"  .0367500275513606    . . 74 -25 . 1
19064 "A P MOLLER MAERSK A" -.0018662866815485    . . 74 -24 . 1
19065 "A P MOLLER MAERSK A"  .0158883796171474    . . 74 -23 . 1
19066 "A P MOLLER MAERSK A" -.0128797509507872    . . 74 -22 . 1
19067 "A P MOLLER MAERSK A"  .0018645480453836    . . 74 -21 . 1
19068 "A P MOLLER MAERSK A" -.0065117602147955    . . 74 -20 . 1
19071 "A P MOLLER MAERSK A" -.0140448451812095    . . 74 -19 . 1
19072 "A P MOLLER MAERSK A" -.0151955781730512    . . 74 -18 . 1
19073 "A P MOLLER MAERSK A" -.0125354349985116    . . 74 -17 . 1
19074 "A P MOLLER MAERSK A"  .0039061289459226    . . 74 -16 . 1
19075 "A P MOLLER MAERSK A"  .0165361037095035    . . 74 -15 1 .
19078 "A P MOLLER MAERSK A" -.0019131279780474    . . 74 -14 1 .
19079 "A P MOLLER MAERSK A" -.0191762483369797    . . 74 -13 1 .
19080 "A P MOLLER MAERSK A" -.0039099512701348    . . 74 -12 1 .
19081 "A P MOLLER MAERSK A" -.0323833628473919    . . 74 -11 1 .
19082 "A P MOLLER MAERSK A"   .040566675346638    . . 74 -10 1 .
19085 "A P MOLLER MAERSK A"  .0204682719992801    . . 74  -9 1 .
19086 "A P MOLLER MAERSK A"  .0066859083425752    . . 74  -8 1 .
19087 "A P MOLLER MAERSK A"  -.030360964981908    . . 74  -7 1 .
19088 "A P MOLLER MAERSK A"                  0    . . 74  -6 1 .
19089 "A P MOLLER MAERSK A"                  0    . . 74  -5 1 .
19092 "A P MOLLER MAERSK A"                  0    . . 74  -4 1 .
19093 "A P MOLLER MAERSK A" -.0362034824557564    . . 74  -3 1 .
19094 "A P MOLLER MAERSK A"  .0015229794163474    . . 74  -2 1 .
19095 "A P MOLLER MAERSK A"  .0238217782404755    . . 74  -1 1 .
19096 "A P MOLLER MAERSK A" -.0257424979006118 1000 1 74   0 1 .
19099 "A P MOLLER MAERSK A"  .0121947465401309    . . 74   1 1 .
19100 "A P MOLLER MAERSK A" -.0075293483833407    . . 74   2 1 .
19101 "A P MOLLER MAERSK A"  .0136568125737817    . . 74   3 1 .
19102 "A P MOLLER MAERSK A"  .0039918924132452    . . 74   4 1 .
19103 "A P MOLLER MAERSK A" -.0109344150173996    . . 74   5 1 .
19106 "A P MOLLER MAERSK A" -.0165829473546872    . . 74   6 1 .
19107 "A P MOLLER MAERSK A"  .0025546681290041    . . 74   7 1 .
19108 "A P MOLLER MAERSK A"                  0    . . 74   8 1 .
19109 "A P MOLLER MAERSK A"   .013252482359186    . . 74   9 1 .
19110 "A P MOLLER MAERSK A"   .045271305680354    . . 74  10 1 .
19113 "A P MOLLER MAERSK A"  .0076994734204348    . . 74  11 1 .
19114 "A P MOLLER MAERSK A"  .0171921389258185    . . 74  12 1 .
19115 "A P MOLLER MAERSK A" -.0028171532125028    . . 74  13 1 .
19116 "A P MOLLER MAERSK A" -.0009412512529644    . . 74  14 1 .
19117 "A P MOLLER MAERSK A"                  0    . . 74  15 1 .
19120 "A P MOLLER MAERSK A" -.0235629675852852    . . 74  16 . .
19121 "A P MOLLER MAERSK A" -.0193044279749216    . . 74  17 . .
19122 "A P MOLLER MAERSK A" -.0275596140631832    . . 74  18 . .
19123 "A P MOLLER MAERSK A"  .0070851680117729    . . 74  19 . .
19124 "A P MOLLER MAERSK A" -.0201013329854089    . . 74  20 . .
19127 "A P MOLLER MAERSK A" -.0292304483096847    . . 74  21 . .
19128 "A P MOLLER MAERSK A"   .011094499840745    . . 74  22 . .
19129 "A P MOLLER MAERSK A"  -.062696978420736    . . 74  23 . .
19130 "A P MOLLER MAERSK A"                  0    . . 74  24 . .
19131 "A P MOLLER MAERSK A"                  0    . . 74  25 . .
19134 "A P MOLLER MAERSK A"  .0061315657442784    . . 74  26 . .
end
format %tdnn/dd/CCYY Date
So all of the firms are listed in the variable "Company". Returns for firm i for specific that specific day are listed in the variable "returns". Index returns for that day are listed in the variable "index". Dividend payout is listed under "dividend" and the event number per firm is listed under eventdate(meaning, for example, if it is the third event for a specific firm, this will say 3). datezeroi is the day the eventdatei will happen. Taui is the days from eventdatei. Estimation_windowi is a dummy variable that is equal to 1 if taui is >-251 and <-15. Event windowi is a dummy variable that is equal to 1 if taui is >-16 and <15.

My problem was that because some firms had multiple dividends per year, some of the estimation windows were overlapping. As such, I thought I was smart and created a variable for each event.

the code I have written is as follows:


Code:
clear

use "C:\Users\path\Downloads\event study data.dta"

rename eventday eventdate

replace dividend = . if dividend == 0
replace eventdate = . if eventdate == 0

sort Company Date
by Company: egen count_div=count(dividend)
by Company: gen fakedate = _n

forval i=1/14 {                                                        //maximum dividends payouts for a specific firm is 14
by Company: generate datezero_`i'=fakedate if eventdate==`i'
by Company: egen datezero`i'=min(datezero_`i')
by Company: gen tau`i'=fakedate-datezero`i'
by Company: generate event_window`i'=1 if tau`i'>=-15 & tau`i'<=15
by Company: generate estimation_window`i'=1 if tau`i'>=-250 & tau`i'<-15
}

drop datezero_*

forval i=1/14 {
generate R_hat`i'=.
generate sigmahat`i'=.
}

egen fakeID=group(Company)


forvalues i=1/63 {                                           //we have 63 firms in total
forval     j=1/14 {

    quietly reg returns index if fakeID==`i' & estimation_window`j'==1
    quietly predict R_hat_`i' if fakeID==`i' & event_window`j'==1, xb
    quietly replace R_hat`j' = R_hat_`i' if fakeID==`i'
    quietly drop R_hat_`i'
    quietly replace sigmahat`j'=e(rmse) if fakeID==`i'
}
}
The problem that I now have is that firms obviously don't have dividend payouts each time, and I thus can't regress returns against index as I get the error "no observations". How can I solve this problem?

I've tried explaining the problem as good as I can but reading it again some things still might be unclear but I'm not sure how to expand on it. If you think things are still unclear, please ask.