docs(methodology): Caetano, Callaway, Payne & Sant'Anna (2026) bad-controls paper review (PR-A) - #819
Conversation
…ntrols paper review (PR-A) Add docs/methodology/papers/caetano-2026-review.md: paper-sourced fidelity review of arXiv:2608.03881v2 plus its Supplementary Appendix v1 (both SHA-256 pinned). Step-1 artifact for a prospective bad-controls extension; docs-only, no code change. Includes the changelog fragment.
Overall assessment:
|
…ntercept convention, fix OLS complexity (CI review round 1)
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall assessment: ✅ Looks goodExecutive summary
MethodologyP2 — Chang and Sant’Anna–Zhao scores are conflatedLocation: Impact: Equation 10 reduces specifically to Chang’s unconditional- Concrete fix: Replace the label with “Chang panel DR score,” or clarify that Sant’Anna–Zhao is population-level equivalent while its finite-sample normalization and influence function differ. The previous bias-cancellation and Code QualityNo findings; no code changed. PerformanceNo findings. Complexity now correctly includes MaintainabilityNo findings. Sources are version- and checksum-pinned, and unresolved choices are clearly separated from paper claims. Tech DebtNo untracked implementation debt is introduced; this PR is a prospective paper review only. SecurityNo findings. Documentation/TestsNo findings. The intercept convention is now explicit, and the required changelog fragment passes |
…core, distinct from Sant'Anna-Zhao self-normalization (CI review round 2)
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall assessment: ✅ Looks goodExecutive summary
MethodologyP3 — Prior score-family wording resolved
Code QualityNo findings; this is documentation-only. PerformanceNo findings; no runtime paths changed. MaintainabilityNo findings. Paper claims, implementation requirements, and unresolved choices are clearly separated. Tech DebtNo findings. Prospective implementation gaps are explicitly documented without introducing code debt. SecurityNo findings; no secrets or executable changes were introduced. Documentation/TestsNo findings. The required documentation changelog fragment is present and |
Summary
docs/methodology/papers/caetano-2026-review.md: paper-sourced fidelity review of Caetano, Callaway, Payne & Sant'Anna (2026), "Difference-in-differences with 'bad controls'" (arXiv:2608.03881v2, 2 Sep 2026) together with its Supplementary Appendix (CCPS_2026_SA_v1). Both PDFs are SHA-256 pinned in the header; all equation / assumption / theorem / table numbering follows arXiv v2 and SA v1. This is PR-A of the 2-PR methodology protocol for a prospective bad-controls extension of the DiD-with-covariates family; no code changes.τ^use/τ^discard); Approach 1 (pre-treatment conditioning; Theorem 1, Proposition 1, Assumptions 4-5) and Approach 2 (covariate unconfoundedness; Theorem 2 / Eq. 4, Assumptions 6-7, Remarks 2-3); the staggered results (Assumptions MP-1 to MP-9, Theorem 3, Propositions 2-3, Remarks 4-6 incl. theATT_X(g,t)pre-test); the imputation estimator (Assumption 8, Eqs. 5-7, Proposition 4, influence function S8); the Neyman-orthogonal DR / DML estimator (Eqs. 8-11, Propositions 5-7, Algorithm 1 verbatim, Assumptions 9 / S1 / S2, the SB.1-SB.3 proof structure incl. the staggered substitution rule and aggregation IF); the SC linearity alternative (Assumptions S3-S5, Proposition S1, Corollary S1); all five Monte Carlo DGPs with Tables S1-S6 in full; and the NLSY job-displacement application (Table 1, the nine estimators, Figures 6-8, footnotes 9-10).badcontrolsR package as a one-line Note: (black-box numerical oracle only; no source port - the earlier direct-port PR feat: port twfeweights/ptetools/badcontrols R packages (R-compat) #753 was declined on this basis) and a clearly labelled "Relation to Existing diff-diff Estimators" section mapping Approach 1 ontoCallawaySantAnna's base-period covariates (already computable) and the DR estimator onto theDMLDiDcross-fitting stack (Equation 10 reduces to the Sant'Anna-Zhao / Chang panel score when no bad control and noWare present).ATT_X(g,t)stated identified but no estimand written; the SA Figure S1 "four main DGPs" vs five panels; unstated application control group / anticipation / SE method; binary bad control undiscussed; as-printed typos), recorded rather than silently resolved.changelog.d/20260905-bad-controls-paper-review.mdfragment (Documentation).Methodology references (required if estimator / math changes)
BadControlsDiDin the review, no estimator implemented in this PR)ATT_X(g,t)estimator) are labelled as implementation-required / deviation-to-be-documented inside the review, not resolved.Validation
changelog_compile.py check;premerge_scan.pyreports 0 findings.Security / privacy
Changelog