id: an-090 hypothesis: shell-contratante headline: Paper-ready 4-spec × 3-outcome × 3-bucket appendix table consolidating AN-082 / AN-085 / AN-089. Three readings emerge clearly: (a) other_firm is the most-robust sponsor-bucket signal — significant on margin_error in 3 of 4 FE specs (S0 −3.01, S1 −1.87, S2 −2.65, S3 −0.91); collapses to ns only under firm + race FE jointly. (b) candidate margin_error coefficient FLIPS sign across specs (raw +0.02 → race FE −2.57 → firm FE +1.01 → both FE −1.76*) — the sponsor effect is entangled with which races candidates commission polls in. (c) mean_abs_error is null across specs except raw candidate (+1.07***), absorbed by either FE. The headline message for the paper appendix is "race + firm sorting accounts for most of the cross-sectional sponsor differences; the residual within-firm-within-race slant is small but directionally consistent." type: synthesis-table question: "Single appendix table showing the spec ladder for sponsor-bucket effects across the four FE levels." tags: ["hyp:shell-contratante", "paper-ready", "spec-ladder", "synthesis"] status: interpreted status_date: 2026-06-17 confidence: green created: 2026-06-17 script: source/analysis/an-090-sponsor-effect-spec-ladder.py target: build/table/an-090-sponsor-effect-spec-ladder.csv

AN-090: Sponsor-effect spec ladder (paper-ready)

Consolidates the regression results from AN-082 (race FE only), AN-085 (race FE + trusted-firm dummy), and AN-089 (firm + race FE) into a single appendix table. Same sample, same outcomes, same bucket definitions throughout — only the FE block changes.

The table

Cluster SE at race level in parentheses. Reference = media- sponsored polls. * p<0.10, ** p<0.05, *** p<0.01.

Calls winner first

Bucket S0 No FE S1 Race FE S2 Firm FE S3 Firm + Race FE
is_candidate −0.007 (0.021) +0.027 (0.032) +0.055 (0.024) +0.057 (0.035)
is_pollster_self −0.024 (0.019) +0.023 (0.022) +0.038 (0.026) +0.045 (0.029)
is_other_firm −0.039 (0.018) −0.022 (0.024) −0.004 (0.020) +0.010 (0.025)
n 6,991 5,750 6,929 5,655

Margin error

Bucket S0 No FE S1 Race FE S2 Firm FE S3 Firm + Race FE
is_candidate +0.018 (1.075) −2.572 (0.932) +1.008 (1.069) −1.755 (0.974)
is_pollster_self −0.306 (0.898) −0.841 (0.612) +1.372 (1.074) +0.223 (0.776)
is_other_firm −3.009 (0.841) −1.867 (0.618) −2.645 (0.899) −0.905 (0.617)
n 6,693 5,521 6,633 5,424

Mean |error|

Bucket S0 No FE S1 Race FE S2 Firm FE S3 Firm + Race FE
is_candidate +1.072 (0.382) +0.270 (0.460) +0.096 (0.377) +0.110 (0.444)
is_pollster_self +0.235 (0.287) +0.250 (0.304) +0.278 (0.388) −0.004 (0.355)
is_other_firm +0.029 (0.276) +0.130 (0.289) −0.243 (0.296) +0.127 (0.288)
n 6,991 5,750 6,929 5,655

What the spec ladder shows

1. other_firm is the most-robust sponsor-bucket signal. The margin_error coefficient is significant at *** in S0, S1, S2 and drops to ns only under the joint S3 (firm + race FE). Cross-firm composition (which firms get hired by shells) and cross-race composition (which races get shell-sponsored polls) both contribute, but neither alone explains the effect. Only when both are held fixed does the coefficient halve and lose significance. This is the cleanest case in the table for a sponsor effect that requires both layers of identification to shrink.

2. candidate margin_error coefficient flips sign across specs. Raw +0.02 → race FE −2.57*** → firm FE +1.01 → both FE −1.76*. The sign is not stable to the choice of FE block. The natural reading: candidates commission polls in races that are systematically harder/closer (race FE makes within-race candidate-vs-media comparisons look better for candidate); and firms that take candidate work have different baseline margin errors than firms that take media work (firm FE flips the within-firm comparison the other way). Both effects partly cancel under S3, leaving a directional candidate-margin effect of about −1.8 pp at p=0.07. The candidate-bucket effect is real but composition-sensitive — the paper should report S1 and S3 together rather than picking one.

3. mean_abs_error is null across all FE specs except S0 candidate (+1.07***). The candidate raw mean-error effect is fully absorbed by either race FE alone or firm FE alone. Magnitude (absolute) accuracy doesn't differ by sponsor type after conditioning on either layer. The sponsor signal lives in rank concordance and margin, not in magnitude.

4. is_pollster_self is null on every outcome in every spec. The cross-sectional AN-085 / AN-086 finding that pollster_self polls call the winner more often (within race × week, with a trusted-firm dummy) does NOT survive removing the trusted-firm dummy. Without that orthogonal control, the pollster_self effect washes out. This confirms AN-085's reading: the pollster_self winner-call advantage is mostly the trusted- firm subset (Datafolha / Quaest showcase polls), not a general property of self-contracted polls.

How to read the table for the paper

Three honest summary statements:

Implications for the paper structure

Caveats

Artifacts