set more off capt log close local jobname proxy13_2_plus48 log using `jobname', replace * proxy13 calculate 24 months' CARA ending at filing date * cfb 8928 rev to append with original * cfb 9423 tweaked to handle 18-24 months * cfb 9B30 rev to back off to (-25, -1) * cfb 0424 altered to calculate abret 48 months after FD include proxy.doh local infile proxy_proxyR2 local outfile proxy_proxyCARAplus48 use `infile', clear // fixup case_code replace case_code = "COVD_01" if case_code == "COVD-01" egen tagc = tag(case_code) keep if tagc g filing_m = int(mofd(filing_d)) su filing_d filing_m tab filing_m tab extd desc // su levelsof casenr, local(cases) local monback 23 local monahead 47 local adjok 6 local lomo 396 // modified to consider abret > FD local himo 581 keep if suityear == 0 // tabstat filing_d, by(case_code) stat(N) gen double cara = . g obsnr = _n foreach c of local cases { // 9422: determine range of available abret local minavail = `lomo' forv i = `lomo'/`himo' { su abret`i' if casenr == `c', mean if r(N) > 0 { local minavail = `i' continue, break } } local maxavail = `himo' forv i = `himo'(-1)`lomo' { su abret`i' if casenr == `c', mean if r(N) > 0 { local maxavail = `i' continue, break } } // local maxavail = cond(`maxavail' < `himo', `maxavail' + 1, `maxavail') local maxavail = cond(`minavail' == `maxavail', `himo', `maxavail') local minavail = cond(`minavail' == `maxavail', `lomo', `minavail') summ filing_m if casenr == `c', meanonly local fdst = r(min) + 1 // local fdst = `fdend' - `monback' local fdend = `fdst' + `monahead' // local fdst = cond(`fdst' < `minavail' & `minavail' - `fdst' <= `adjok', /// // `minavail', `fdst') local fdend = cond(`fdend' > `maxavail' & `fdend' - `maxavail' <= `adjok', /// `maxavail', `fdend') local ok = cond(`fdst' >= `minavail' & `fdend' <= `maxavail', " ok ", " FAIL ") su obsnr if casenr == `c', mean local cc = case_code[`r(min)'] di as err "`c' `cc' min/max avail `minavail' `maxavail' need `fdst' `fdend' `ok'" %tm `fdst' " " %tm `fdend' // fix here too qui replace cara = 0 if casenr==`c' & filing_m == `fdst' - 1 forv i=`fdst'/`fdend' { qui replace cara = cara + abret`i' if casenr==`c' // di "`i' abret`i'" // su cara if casenr == `c' // qui replace cara = cara + cond(!mi(abret`i'), abret`i', 0) if casenr==`c' } } // problem firms // count if mi(cara) | cara == 0 // list case_code cara if mi(cara) | cara == 0, sep(0) // keep only cara observations, sorted by case code, for merge keep if cara < . & cara != 0 tabstat cara,by(case_code) stat(mean N) keep case_code cara sort case_code desc save `outfile', replace log close log2html `jobname', replace