Commit 64d8ea9
Add LP-DiD launch carousel (local-projections crossover narrative) (#597)
* Add LPDiD launch carousel (one-regression-to-rule-them-all narrative)
11-slide LinkedIn deck for the LP-DiD estimator (Dube, Girardi, Jorda &
Taylor 2025). Horizon palette (violet/cyan/amber), spillover-deck
architecture. Claim discipline: CS/Cengiz-stacked equivalences marked
exact (Sec. 3.7), BJS scoped to exact-single-cohort (fn. 10-11), no
speed claims (paper's Table 2 speedups are Stata artifacts; diff-diff's
vectorized CS outbenchmarks LPDiD, verified empirically).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Scope carousel unification claims to the four documented equivalences
Cover/shelf/equivalence-map now name exactly the estimators the paper
proves LP-DiD nests (CS, Cengiz stacked, classic 2x2, single-cohort
BJS); Sun-Abraham removed from the unification arc (no documented
equivalence). "Whole zoo is a keyword argument" scoped to CS. Footer
version derived from pyproject.toml (was hard-coded, stale at v3.6.0).
Non-absorbing/survey code comments made caveat-precise.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Polish carousel claim precision (Cengiz qualifier, covariate caveat, default-path survey)
Cover names Cengiz-style stacking (the paper's actual equivalence
target, not StackedDiD generically); non-negative-weights card scoped
to the clean-control baseline with RA-preferred note; survey cards on
slides 9/10 marked default-path. Version parse switched from tomllib
(3.11+) to a stdlib regex so the generator runs on Python >=3.9.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Fix slide-6 estimand sum to treated cohorts only; scope composability claim
E(beta_h) now sums over g != 0 (paper Eq. 9; never-treated is the
control cohort, not an ATT recipient). Slide-9 footer scoped:
survey_design composes on the default path only (rejects reweight=True).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Scope fixest-parity card to VW variants; precision + cleanup polish
Slide-10 fixest card scoped to variance-weighted point+SE parity (the
reweighted effect-stabilization SE is pinned, not parity). Composition
card says post-window sample; shelf caption "Same causal question."
Removed unused _render_equations helper; documented carousel-only
generation deps (fpdf2/Pillow/matplotlib) in the docstring.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Qualify BJS as BJS-style on cover/shelf; add carousel README (regen contract)
The single-cohort-PMD equivalence scope now travels with the name on
every user-visible surface ("BJS-style imputation"), matching the
slide-6 and slide-10 qualifiers. carousel/README.md documents the
regenerate-with-the-script contract, generation-only deps, and the
claim-discipline convention for methodology copy.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Correct parity tolerance to ~1e-12 (registry B2 bundle); fix README deps wording
The authors'-recipes card claimed ~1e-13; the registry records the
absorbing R-parity bundle at ~1e-12 (only pooled specifically ~1e-13).
README: matplotlib is already in dev/docs extras; only fpdf2/Pillow are
carousel-only.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Scope slide-5 clean-control caption to the absorbing path
Eq. 13 effect-stabilization admits stabilized already-treated units as
clean controls, so the unqualified "never serve as controls" was too
broad.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Rename shelf card to Cengiz-Style Stacking (never the library's StackedDiD name)
diff-diff's StackedDiD implements Wing-Freedman-Hollingsworth (2024)
Q-weights, a different (corrected) scheme LP-DiD does not nest; the
paper's Sec. 3.7 equivalence target is the Cengiz et al. (2019)
literature design. The shelf card previously juxtaposed the library
estimator name with the Cengiz citation, inviting a false
identification. Claim-discipline docstring now carries the rule.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Rebuild carousel on the paper's own novelty spine (IRF crossover narrative)
New arc per Dube-Girardi-Jorda-Taylor (2025) pp. 741-742, quotes verbatim:
macro built LPs for dynamic effects of shocks (cover, IRF motif) ->
negative weighting via contamination schematic + pull quote -> dark
twist slide (naive LP inherits the bias, Eqs. 6-7) -> the
"underappreciated feature" fusion (LP + clean controls) -> "unclean"
mechanism grid -> non-negative weights + "subsumes" equivalence map ->
symmetric pre-trends (Roth 2024, authors' claim) -> code/production/
validated/CTA. Visual flair: amber kickers, serif pull quotes, card
shadows, one dark slide; type floored at ~13pt body / 38-52pt headlines
for phone-width legibility. All prior claim discipline retained
(BJS-style single-cohort, Cengiz-style literature naming, default-path
survey, ~1e-12 tolerance, no speed claims, Sum over g != 0).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Rename slide-9 card to Non-Absorbing Entry Effects; add README install command
Card title now matches the registry's entry-effect scope (exit-event
dynamics are deferred). README gains the pip install line for the
carousel-only deps.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Cover motif polish: anchor shock dash at curve baseline, label hugs the line
The dashed shock marker no longer extends below the pre-period line
(read as a rendering mistake); the "shock" label sits directly beside
its dash. Slide-6 lead-in rephrased to a plain sentence.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Cover: punchline contained above the motif baseline
Trimmed the below-baseline padding so the curve's flat line is the
motif's bottom edge, and raised the punchline so no text hangs under
the chart.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>1 parent d895ade commit 64d8ea9
3 files changed
Lines changed: 1451 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
Binary file not shown.
0 commit comments