Stata Regression
Generate rigorous, reproducible Stata code that follows DIME Analytics impact-evaluation conventions and uses modern econometric estimators. The default style is ietoolkit + reghdfe + esttab, with heterogeneity-robust DiD and weak-IV-robust inference baked in.
Operating Principles
- Reproducibility before convenience. Every script starts with
ieboilstart, sets a seed, declares dynamic absolute paths via globals, and writes outputs to a Results/ folder. Never cd, never use relative paths, never commit .dta files containing PII.
- Modern estimators by default. Plain
xi: reg y treat##post under staggered timing is biased; use csdid, eventstudyinteract, did_imputation, or jwdid. For weak instruments, use ivreg2 ... weakid and weakivtest. With few clusters, use boottest.
ietoolkit is the house standard. Use iebaltab for balance, ieddtab for simple two-period DiD, iefolder for project setup, iegraph for regression-result figures, and iedropone for safe drops.
- One do-file, one purpose. Master do-file installs packages and routes to sub-do-files for cleaning, construction, analysis, and output. Each script must run end-to-end from a clean Stata session.
- Tables are produced, never copy-pasted. All tables go through
esttab to .tex, .csv, or .rtf — no manual editing.
Decision Policy
This skill follows the repo-wide Agent Policy.
ASK before proceeding (blocking):
- Estimand and identification strategy.
- Treatment timing (uniform vs staggered) — drives
csdid / eventstudyinteract / did_imputation vs plain TWFE.
- Cluster level for inference (matches assignment level by default).
- DataWork folder layout: which globals to use, where do tables/figures land.
DEFAULT + flag (use this default; tell the user how to override):
reghdfe over xtreg / areg for high-dim FE.
csdid (Callaway-Sant'Anna) as preferred staggered-DiD estimator; report TWFE as benchmark in tab_did_estimators.
ivreg2 + weakivtest with cluster-robust SEs for IV; switch to condivreg when effective F < 100.
boottest wild cluster bootstrap when G < 30 or treatment is concentrated in a few clusters.
esttab for tables; coefplot for figures; iebaltab for balance.
- Outputs to
${tabs}/ (.tex) and ${figs}/ (.pdf), declared by master do-file globals.
DOCUMENT and proceed (write into the decisions log):
- Specific estimator within an approved family.
- The cluster level and the number of clusters G.
- Any sample restriction beyond what the user named.
- Choice of bandwidth in RDD and sensitivity range.
PROCEED items: ieboilstart, dynamic absolute paths via globals, isid, iedropone, assert, set seed, never cd, never copy-paste numbers from the Results window.
Pre-flight Checklist
Before writing code, confirm with the user — and write the answers as a header comment block:
- Estimand. ATT, LATE, ITT, sharp/fuzzy RD effect, descriptive, or balance check?
- Unit of observation and panel keys. Assert with
isid (e.g. isid hhid year).
- Treatment timing. Single shock, simultaneous, staggered, or reversible?
- Identifying variation. Which comparison drives the coefficient?
- Clustering level. Where is treatment assigned, or where does within-group correlation live?
- Sample. Document each filter and report the resulting N.
- Output target. Working paper, slides, journal submission, or internal report.
DIME Project Layout
Every analysis script assumes a DataWork/ folder created by iefolder:
ProjectABC/
├── DataWork/
│ ├── MasterDoFile.do # globals, packages, routes to sub-master files
│ ├── Baseline/
│ │ ├── DataSets/
│ │ │ ├── Raw/
│ │ │ ├── Intermediate/
│ │ │ └── Final/
│ │ ├── Dofiles/
│ │ │ ├── Cleaning/
│ │ │ ├── Construction/
│ │ │ └── Analysis/
│ │ ├── Output/
│ │ │ ├── Tables/
│ │ │ └── Figures/
│ │ └── Documentation/
│ └── Endline/
└── README.md
Globals are user-specific and defined only in the master do-file:
* Master do-file globals
if c(username) == "jonas" global root "/Users/jonas/Dropbox/ProjectABC"
if c(username) == "coauthor" global root "C:/Users/coauthor/Dropbox/ProjectABC"
global dataWork "${root}/DataWork"
global baseline "${dataWork}/Baseline"
global results "${baseline}/Output"
Estimator Decision Tree
Difference-in-Differences
Two periods, two groups, no staggered adoption
└── ieddtab y, t(time) treatment(treated) // DIME-style two-period DD
or: reghdfe y treat_post, absorb(unit time) vce(cluster unit)
Staggered adoption (the realistic case)
└── Do NOT use plain TWFE. Choose one of:
├── csdid → Callaway & Sant'Anna (2021)
├── eventstudyinteract → Sun & Abraham (2021)
├── did_imputation → Borusyak, Jaravel & Spiess (2024)
├── did_multiplegt_dyn → de Chaisemartin & D'Haultfoeuille
└── jwdid → Wooldridge (2021), TWFE re-derivation
Continuous or non-binary treatment
└── did_multiplegt_dyn (de Chaisemartin & D'Haultfoeuille)
Instrumental Variables
Always estimate and report the first stage explicitly.
For 2SLS with diagnostics:
ivreg2 y x_exog (endog = z), cluster(cluster_var) first
Weak-IV diagnostics:
- ivreg2 reports Kleibergen-Paap rk Wald F
- weakivtest after ivreg2 → Olea-Pflueger effective F
- condivreg or rivtest → Anderson-Rubin / CLR confidence sets
Effective F (Olea-Pflueger):
- F >= 100 → conventional t is fine
- 10 <= F < 100 → use AR or tF-adjusted CI
- F < 10 → instrument is weak; do not interpret 2SLS causally
Panel IV with high-dim FE:
ivreghdfe y x_exog (endog = z), absorb(unit time) cluster(cluster_var) first
Regression Discontinuity
Sharp RDD:
rdrobust y x, c(0) // Calonico-Cattaneo-Titiunik
rdplot y x, c(0) binselect(esmv)
rddensity x, c(0) // density manipulation test
Fuzzy RDD:
rdrobust y x, c(0) fuzzy(treatment)
Bandwidth sensitivity:
Loop over h_opt/2, h_opt, 2*h_opt and report the table.
Inference
Number of clusters G:
G >= 50 → vce(cluster cl) is fine
30 <= G < 50 → reg2hdfe or boottest with t-statistic correction
G < 30 → wild cluster bootstrap via boottest, type(rademacher)
Multi-way clustering:
Use vce2way (or `, vce(cluster cl1 cl2)` in some commands).
Only when there is real correlation along both dimensions.
Few-cluster small-sample fix in reghdfe:
reghdfe y x, absorb(unit time) vce(cluster unit, suite(boot))
Output Skeleton
Every analysis do-file should follow this structure:
*-------------------------------------------------------------*
* Project : ProjectABC
* Purpose : Main DiD specification on outcome Y
* Author : First Last (email)
* Created : 2026-05-05
* Inputs : ${baseline}/DataSets/Final/analysis.dta
* Outputs : ${results}/Tables/table_did_main.tex
* ${results}/Figures/event_study.pdf
* Estimand : ATT of program on outcome Y
* Cluster : at the unit level (treatment assignment)
*-------------------------------------------------------------*
* 0. Settings
ieboilstart, version(17.0)
`r(version)'
* 1. Load and assert structure
use "${baseline}/DataSets/Final/analysis.dta", clear
isid unit_id year
* 2. Sample construction (log every drop)
iedropone if missing(outcome), error // hard-fail if pattern is unexpected
* 3. Descriptives + balance
iebaltab age gender baseline_y, grpvar(treated) ///
save("${results}/Tables/balance.xlsx") replace
* 4. Main specification
eststo clear
reghdfe outcome treat_post, absorb(unit_id year) vce(cluster unit_id)
eststo main
* 5. Robustness ladder
reghdfe outcome treat_post, absorb(unit_id year) vce(cluster unit_id year)
eststo twoway
reghdfe outcome treat_post controls, absorb(unit_id year) vce(cluster unit_id)
eststo controls
* 6. Export
esttab main twoway controls using "${results}/Tables/table_did_main.tex", ///
replace booktabs label se ///
stats(N r2_within, fmt(%9.0fc %9.3f) labels("Observations" "Within R2")) ///
star(* 0.10 ** 0.05 *** 0.01) ///
notes("Cluster-robust SEs in parentheses.")
Common Pitfalls
- Plain
xi: reg y i.treat##i.post with staggered timing — biased; use csdid or eventstudyinteract.
- Conditioning on first-stage F > 10 — biased; report Olea-Pflueger F and AR.
vce(cluster cl) with very few clusters — undercoverage; use boottest.
- Hardcoded paths and
cd — break collaboration; use globals from the master do-file.
- Copy-pasting tables into Word — kills reproducibility; always go through
esttab.
- Quietly dropping observations — every drop should be logged or use
iedropone.
- Saving
.dta with PII or running scripts on raw confidential data — see DIME PII guidance.
xtreg, fe for high-dim FE — slow and limited; use reghdfe.
Additional Resources
reference.md — extended code patterns for each estimator family.
examples/ — runnable do-files:
examples/master.do — DIME-style master do-file
examples/reghdfe_baseline.do — reghdfe + esttab workflow
examples/iebaltab_balance.do — balance tables with iebaltab
examples/csdid_staggered.do — Callaway-Sant'Anna in Stata
examples/eventstudyinteract_sa.do — Sun-Abraham event study
examples/did_imputation_bjs.do — BJS imputation estimator
examples/ivreg2_weak.do — IV with weakivtest
examples/rdrobust_sharp.do — sharp RDD with rdrobust
examples/boottest_few_clusters.do — wild cluster bootstrap
Requirements
- Stata >= 16 (Stata 17+ recommended for
frames and faster matrix ops).
- DIME packages:
ietoolkit, iefieldkit.
- Estimation:
reghdfe, ivreg2, ivreghdfe, weakivtest.
- Modern DiD:
csdid, did_imputation, did_multiplegt_dyn, eventstudyinteract, jwdid.
- RDD:
rdrobust, rddensity.
- Inference:
boottest, vce2way.
- Tables and figures:
estout (provides esttab), coefplot, outreg2.
* Run once, or include with `, replace` in the master do-file.
ssc install ietoolkit, replace
ssc install iefieldkit, replace
ssc install reghdfe, replace
ssc install ftools, replace // dependency for reghdfe
ssc install ivreg2, replace
ssc install ivreghdfe, replace
ssc install ranktest, replace // dependency for ivreg2
ssc install weakivtest, replace
ssc install csdid, replace
ssc install drdid, replace // dependency for csdid
ssc install did_imputation, replace
ssc install did_multiplegt_dyn, replace
ssc install eventstudyinteract, replace
ssc install jwdid, replace
ssc install rdrobust, replace
ssc install rddensity, replace
ssc install boottest, replace
ssc install estout, replace
ssc install coefplot, replace
ssc install outreg2, replace
References
DIME Conventions
Methods
- Goodman-Bacon (2021). DiD with Variation in Treatment Timing. JoE.
- Callaway & Sant'Anna (2021). DiD with Multiple Time Periods. JoE.
- Sun & Abraham (2021). Estimating Dynamic Treatment Effects in Event Studies. JoE.
- Borusyak, Jaravel & Spiess (2024). Revisiting Event Study Designs. ReStud.
- Olea & Pflueger (2013). A Robust Test for Weak Instruments. JBES.
- Lee, McCrary, Moreira & Porter (2022). Valid t-ratio Inference for IV. AER.
- Calonico, Cattaneo & Titiunik (2014). Robust Nonparametric CIs for RDD. Econometrica.
- MacKinnon & Webb (2018). Wild Bootstrap for Few (Treated) Clusters. EJ.
1---2name: stata-regression3description: Generates rigorous, reproducible Stata regression workflows that follow World Bank DIME Analytics conventions (`ietoolkit`, `iefolder`, master do-files, `ieboilstart`, dynamic absolute paths, `iebaltab`, `ieddtab`, `esttab`). Defaults to modern estimators (`reghdfe`, `ivreg2`/`ivreghdfe`, `csdid`, `eventstudyinteract`, `did_imputation`, `boottest`, `rdrobust`) with weak-IV-robust inference and wild cluster bootstrap when needed. Use when the user asks for OLS, logit, fixed effects, panel regression, DiD, IV, RDD, event study, balance tables, esttab/outreg2, reghdfe, csdid, ivreg2, boottest, ietoolkit, iefolder, master do-file, or publication-ready Stata output.4---56# Stata Regression78Generate rigorous, reproducible Stata code that follows DIME Analytics impact-evaluation conventions and uses modern econometric estimators. The default style is `ietoolkit` + `reghdfe` + `esttab`, with heterogeneity-robust DiD and weak-IV-robust inference baked in.910## Operating Principles11121. **Reproducibility before convenience.** Every script starts with `ieboilstart`, sets a seed, declares dynamic absolute paths via globals, and writes outputs to a `Results/` folder. Never `cd`, never use relative paths, never commit `.dta` files containing PII.132. **Modern estimators by default.** Plain `xi: reg y treat##post` under staggered timing is biased; use `csdid`, `eventstudyinteract`, `did_imputation`, or `jwdid`. For weak instruments, use `ivreg2 ... weakid` and `weakivtest`. With few clusters, use `boottest`.143. **`ietoolkit` is the house standard.** Use `iebaltab` for balance, `ieddtab` for simple two-period DiD, `iefolder` for project setup, `iegraph` for regression-result figures, and `iedropone` for safe drops.154. **One do-file, one purpose.** Master do-file installs packages and routes to sub-do-files for cleaning, construction, analysis, and output. Each script must run end-to-end from a clean Stata session.165. **Tables are produced, never copy-pasted.** All tables go through `esttab` to `.tex`, `.csv`, or `.rtf` — no manual editing.1718## Decision Policy1920This skill follows the repo-wide [Agent Policy](../../AGENT_POLICY.md).2122**ASK before proceeding** (blocking):23241. Estimand and identification strategy.252. Treatment timing (uniform vs staggered) — drives `csdid` / `eventstudyinteract` / `did_imputation` vs plain TWFE.263. Cluster level for inference (matches assignment level by default).274. DataWork folder layout: which globals to use, where do tables/figures land.2829**DEFAULT + flag** (use this default; tell the user how to override):3031- `reghdfe` over `xtreg` / `areg` for high-dim FE.32- `csdid` (Callaway-Sant'Anna) as preferred staggered-DiD estimator; report TWFE as benchmark in `tab_did_estimators`.33- `ivreg2` + `weakivtest` with cluster-robust SEs for IV; switch to `condivreg` when effective F < 100.34- `boottest` wild cluster bootstrap when G < 30 or treatment is concentrated in a few clusters.35- `esttab` for tables; `coefplot` for figures; `iebaltab` for balance.36- Outputs to `${tabs}/` (.tex) and `${figs}/` (.pdf), declared by master do-file globals.3738**DOCUMENT and proceed** (write into the decisions log):3940- Specific estimator within an approved family.41- The cluster level and the number of clusters G.42- Any sample restriction beyond what the user named.43- Choice of bandwidth in RDD and sensitivity range.4445`PROCEED` items: `ieboilstart`, dynamic absolute paths via globals, `isid`, `iedropone`, `assert`, `set seed`, never `cd`, never copy-paste numbers from the Results window.4647## Pre-flight Checklist4849Before writing code, confirm with the user — and write the answers as a header comment block:5051- **Estimand.** ATT, LATE, ITT, sharp/fuzzy RD effect, descriptive, or balance check?52- **Unit of observation and panel keys.** Assert with `isid` (e.g. `isid hhid year`).53- **Treatment timing.** Single shock, simultaneous, staggered, or reversible?54- **Identifying variation.** Which comparison drives the coefficient?55- **Clustering level.** Where is treatment assigned, or where does within-group correlation live?56- **Sample.** Document each filter and report the resulting N.57- **Output target.** Working paper, slides, journal submission, or internal report.5859## DIME Project Layout6061Every analysis script assumes a `DataWork/` folder created by `iefolder`:6263```64ProjectABC/65├── DataWork/66│ ├── MasterDoFile.do # globals, packages, routes to sub-master files67│ ├── Baseline/68│ │ ├── DataSets/69│ │ │ ├── Raw/70│ │ │ ├── Intermediate/71│ │ │ └── Final/72│ │ ├── Dofiles/73│ │ │ ├── Cleaning/74│ │ │ ├── Construction/75│ │ │ └── Analysis/76│ │ ├── Output/77│ │ │ ├── Tables/78│ │ │ └── Figures/79│ │ └── Documentation/80│ └── Endline/81└── README.md82```8384Globals are user-specific and defined only in the master do-file:8586```stata87* Master do-file globals88if c(username) == "jonas" global root "/Users/jonas/Dropbox/ProjectABC"89if c(username) == "coauthor" global root "C:/Users/coauthor/Dropbox/ProjectABC"9091global dataWork "${root}/DataWork"92global baseline "${dataWork}/Baseline"93global results "${baseline}/Output"94```9596## Estimator Decision Tree9798### Difference-in-Differences99100```101Two periods, two groups, no staggered adoption102└── ieddtab y, t(time) treatment(treated) // DIME-style two-period DD103 or: reghdfe y treat_post, absorb(unit time) vce(cluster unit)104105Staggered adoption (the realistic case)106└── Do NOT use plain TWFE. Choose one of:107 ├── csdid → Callaway & Sant'Anna (2021)108 ├── eventstudyinteract → Sun & Abraham (2021)109 ├── did_imputation → Borusyak, Jaravel & Spiess (2024)110 ├── did_multiplegt_dyn → de Chaisemartin & D'Haultfoeuille111 └── jwdid → Wooldridge (2021), TWFE re-derivation112113Continuous or non-binary treatment114└── did_multiplegt_dyn (de Chaisemartin & D'Haultfoeuille)115```116117### Instrumental Variables118119```120Always estimate and report the first stage explicitly.121122For 2SLS with diagnostics:123 ivreg2 y x_exog (endog = z), cluster(cluster_var) first124125Weak-IV diagnostics:126 - ivreg2 reports Kleibergen-Paap rk Wald F127 - weakivtest after ivreg2 → Olea-Pflueger effective F128 - condivreg or rivtest → Anderson-Rubin / CLR confidence sets129130Effective F (Olea-Pflueger):131 - F >= 100 → conventional t is fine132 - 10 <= F < 100 → use AR or tF-adjusted CI133 - F < 10 → instrument is weak; do not interpret 2SLS causally134135Panel IV with high-dim FE:136 ivreghdfe y x_exog (endog = z), absorb(unit time) cluster(cluster_var) first137```138139### Regression Discontinuity140141```142Sharp RDD:143 rdrobust y x, c(0) // Calonico-Cattaneo-Titiunik144 rdplot y x, c(0) binselect(esmv)145 rddensity x, c(0) // density manipulation test146147Fuzzy RDD:148 rdrobust y x, c(0) fuzzy(treatment)149150Bandwidth sensitivity:151 Loop over h_opt/2, h_opt, 2*h_opt and report the table.152```153154### Inference155156```157Number of clusters G:158 G >= 50 → vce(cluster cl) is fine159 30 <= G < 50 → reg2hdfe or boottest with t-statistic correction160 G < 30 → wild cluster bootstrap via boottest, type(rademacher)161162Multi-way clustering:163 Use vce2way (or `, vce(cluster cl1 cl2)` in some commands).164 Only when there is real correlation along both dimensions.165166Few-cluster small-sample fix in reghdfe:167 reghdfe y x, absorb(unit time) vce(cluster unit, suite(boot))168```169170## Output Skeleton171172Every analysis do-file should follow this structure:173174```stata175*-------------------------------------------------------------*176* Project : ProjectABC177* Purpose : Main DiD specification on outcome Y178* Author : First Last (email)179* Created : 2026-05-05180* Inputs : ${baseline}/DataSets/Final/analysis.dta181* Outputs : ${results}/Tables/table_did_main.tex182* ${results}/Figures/event_study.pdf183* Estimand : ATT of program on outcome Y184* Cluster : at the unit level (treatment assignment)185*-------------------------------------------------------------*186187* 0. Settings188ieboilstart, version(17.0)189`r(version)'190191* 1. Load and assert structure192use "${baseline}/DataSets/Final/analysis.dta", clear193isid unit_id year194195* 2. Sample construction (log every drop)196iedropone if missing(outcome), error // hard-fail if pattern is unexpected197198* 3. Descriptives + balance199iebaltab age gender baseline_y, grpvar(treated) ///200 save("${results}/Tables/balance.xlsx") replace201202* 4. Main specification203eststo clear204reghdfe outcome treat_post, absorb(unit_id year) vce(cluster unit_id)205eststo main206207* 5. Robustness ladder208reghdfe outcome treat_post, absorb(unit_id year) vce(cluster unit_id year)209eststo twoway210211reghdfe outcome treat_post controls, absorb(unit_id year) vce(cluster unit_id)212eststo controls213214* 6. Export215esttab main twoway controls using "${results}/Tables/table_did_main.tex", ///216 replace booktabs label se ///217 stats(N r2_within, fmt(%9.0fc %9.3f) labels("Observations" "Within R2")) ///218 star(* 0.10 ** 0.05 *** 0.01) ///219 notes("Cluster-robust SEs in parentheses.")220```221222## Common Pitfalls223224- Plain `xi: reg y i.treat##i.post` with staggered timing — biased; use `csdid` or `eventstudyinteract`.225- Conditioning on first-stage F > 10 — biased; report Olea-Pflueger F and AR.226- `vce(cluster cl)` with very few clusters — undercoverage; use `boottest`.227- Hardcoded paths and `cd` — break collaboration; use globals from the master do-file.228- Copy-pasting tables into Word — kills reproducibility; always go through `esttab`.229- Quietly dropping observations — every drop should be logged or use `iedropone`.230- Saving `.dta` with PII or running scripts on raw confidential data — see DIME PII guidance.231- `xtreg, fe` for high-dim FE — slow and limited; use `reghdfe`.232233## Additional Resources234235- `reference.md` — extended code patterns for each estimator family.236- `examples/` — runnable do-files:237 - `examples/master.do` — DIME-style master do-file238 - `examples/reghdfe_baseline.do` — reghdfe + esttab workflow239 - `examples/iebaltab_balance.do` — balance tables with `iebaltab`240 - `examples/csdid_staggered.do` — Callaway-Sant'Anna in Stata241 - `examples/eventstudyinteract_sa.do` — Sun-Abraham event study242 - `examples/did_imputation_bjs.do` — BJS imputation estimator243 - `examples/ivreg2_weak.do` — IV with `weakivtest`244 - `examples/rdrobust_sharp.do` — sharp RDD with `rdrobust`245 - `examples/boottest_few_clusters.do` — wild cluster bootstrap246247## Requirements248249- Stata >= 16 (Stata 17+ recommended for `frames` and faster matrix ops).250- DIME packages: `ietoolkit`, `iefieldkit`.251- Estimation: `reghdfe`, `ivreg2`, `ivreghdfe`, `weakivtest`.252- Modern DiD: `csdid`, `did_imputation`, `did_multiplegt_dyn`, `eventstudyinteract`, `jwdid`.253- RDD: `rdrobust`, `rddensity`.254- Inference: `boottest`, `vce2way`.255- Tables and figures: `estout` (provides `esttab`), `coefplot`, `outreg2`.256257```stata258* Run once, or include with `, replace` in the master do-file.259ssc install ietoolkit, replace260ssc install iefieldkit, replace261ssc install reghdfe, replace262ssc install ftools, replace // dependency for reghdfe263ssc install ivreg2, replace264ssc install ivreghdfe, replace265ssc install ranktest, replace // dependency for ivreg2266ssc install weakivtest, replace267ssc install csdid, replace268ssc install drdid, replace // dependency for csdid269ssc install did_imputation, replace270ssc install did_multiplegt_dyn, replace271ssc install eventstudyinteract, replace272ssc install jwdid, replace273ssc install rdrobust, replace274ssc install rddensity, replace275ssc install boottest, replace276ssc install estout, replace277ssc install coefplot, replace278ssc install outreg2, replace279```280281## References282283### DIME Conventions284285- DIME Analytics, [Stata Coding Practices](https://dimewiki.worldbank.org/Stata_Coding_Practices)286- DIME Analytics, [Master Do-files](https://dimewiki.worldbank.org/Master_Do-files)287- DIME Analytics, [ietoolkit](https://dimewiki.worldbank.org/ietoolkit)288- DIME Analytics, [Reproducible Research](https://dimewiki.worldbank.org/Reproducible_Research)289- DIME Analytics, [Data Analysis](https://dimewiki.worldbank.org/Data_Analysis)290- DIME Analytics, [Difference-in-Differences](https://dimewiki.worldbank.org/Difference-in-Differences)291- *Development Research in Practice* (DIME Analytics handbook).292293### Methods294295- Goodman-Bacon (2021). *DiD with Variation in Treatment Timing*. JoE.296- Callaway & Sant'Anna (2021). *DiD with Multiple Time Periods*. JoE.297- Sun & Abraham (2021). *Estimating Dynamic Treatment Effects in Event Studies*. JoE.298- Borusyak, Jaravel & Spiess (2024). *Revisiting Event Study Designs*. ReStud.299- Olea & Pflueger (2013). *A Robust Test for Weak Instruments*. JBES.300- Lee, McCrary, Moreira & Porter (2022). *Valid t-ratio Inference for IV*. AER.301- Calonico, Cattaneo & Titiunik (2014). *Robust Nonparametric CIs for RDD*. Econometrica.302- MacKinnon & Webb (2018). *Wild Bootstrap for Few (Treated) Clusters*. EJ.