Dropping institute FE barely moves the βs: β_cpf_repeat goes from +19.11 → +18.34 pp; β_cpf_singleton from +16.78 → +16.11 pp; the other-route βs change by 0.07–0.41 pp. Institute FE was NOT absorbing an M1-individual firm-choice channel — the raw repeat-vs-singleton mean-error gap (+20.2 vs +3.5) is absorbed by candidate FE alone (i.e., candidates appearing in repeat-CPF dyads have higher baseline errors across all their polls, not just sponsored). The CPF-uniform / strategic-individual-stake (M4-leaning) reading of AN-075 sharpens under robustness. M1-individual at the dyad level is not separately identified; M1-individual at the firm-choice layer is also not separately identified.

Confidence
yellow
Type
robustness
Design
Sample
same as AN-075 (cand_poll.parquet, error.notna() & final_rank.notna(), with CPF dyad indicator from poll_sponsor_2024.parquet)
Specification
AN-075 spec without institute FE: error ~ sp_cpf_repeat + sp_cpf_singleton + sp_committee + sp_party + sp_party_name + opponent_sponsored + log_sample_size + days_to_election + days_to_election_sq | politico_id FE only, cluster=muni_id
Comparator
AN-075 (same specification with institute FE)
Cluster
muni_id
Notes
If singleton β drops sharply (towards the +3.5 pp raw-mean) while repeat β stays at +19, the firm-choice channel IS the M1-individual mechanism — and AN-075's institute FE was absorbing it. If both stay near +17-19, the CPF-uniform / strategic-stake (M4) reading sharpens. Result: the latter.
Script
source/analysis/an-076-cpf-beta-no-institute-fe.py
Target
build/table/an-076-cpf-beta-no-institute-fe.csv
Status
interpreted · 2026-06-16
Created
2026-06-16

Question

AN-075 found β_cpf_repeat ≈ +19.11 and β_cpf_singleton ≈ +16.78 within candidate FE + institute FE. The raw mean errors before FE diverge sharply (repeat +20.2 pp, singleton +3.5 pp), so the convergence under FE is the FE absorbing baselines. AN-076 tests whether the AN-075 reading ("CPF route slant is uniform across dyad structure → strategic individual stake, not relational durability") is an artifact of absorbing the firm-choice channel that the M1-individual mechanism would operate through.

If the candidate hires a particular firm because of a durable tie, the institute FE absorbs the M1 mechanism by construction. Dropping institute FE keeps candidate FE — comparing the same candidate's sponsored vs unsponsored polls — but lets the firm-choice channel speak.

Design

source/analysis/an-076-cpf-beta-no-institute-fe.py:

Identical to AN-075 except other_effects = () (no institute FE). Keep candidate FE (politico_id entity_effects), muni-clustered SE, same controls (log_sample_size, days_to_election, days_to_election_sq, opponent_sponsored). Treatment dummies: sp_cpf_repeat, sp_cpf_singleton, sp_committee, sp_party, sp_party_name.

Results

Forest plot — no institute FE

Treatment AN-075 (cand + inst FE) AN-076 (cand FE only) Δ
sp_cpf_repeat +19.11 +18.34 −0.77
sp_cpf_singleton +16.78 +16.11 −0.67
sp_committee +7.91 +7.50 −0.41
sp_party +5.71 +5.78 +0.07
sp_party_name +5.85 +5.69 −0.16

The largest change is 0.77 pp on the CPF repeat coefficient. Every route stays at essentially its AN-075 value. The institute FE was carrying almost no identifying weight on β.

Interpretation

The hypothesis "the institute FE absorbs an M1-individual firm-choice mechanism" is refuted. The βs barely move when institute FE is dropped, which means:

  1. Whatever absorbed the raw repeat / singleton mean-error gap (+20.2 vs +3.5 pp) is the candidate FE, not the institute FE. Candidates who appear in repeat-CPF dyads have systematically higher errors across all their polls (sponsored AND unsponsored). The candidate FE absorbs that.
  2. The within-candidate identification is the right object. For a given candidate, sponsored CPF polls overstate that candidate by +16-19 pp vs unsponsored polls of the same candidate — uniformly across repeat-vs-singleton dyad structure.
  3. The AN-075 CPF-uniform reading is the right reading. The slant operates at the route level (paying personally → +19 slant) regardless of whether the (firm × candidate) pair recurs. Strategic individual stake is the operative variable.

For the enforcement-puzzle ranking: M1-individual at the dyad level is not separately identified (AN-075); M1-individual at the firm-choice layer is also not separately identified (AN-076). The leading reading of AN-006's CPF +19 pp slant is strategic individual stake / M4 single-shot pricing on personally-paid polls, not durable individual-relational structure.

Caveat: n = 6 per CPF subset is unchanged from AN-075. The split is still underpowered. AN-076 says only that the FE structure isn't hiding an M1-individual signal — it doesn't rule out M1-individual operating at some other relational unit (firm × marqueteiro, statistician × candidate, cross-cycle).

Follow-ups

  1. All-routes repeat-vs-singleton decomposition (extension, already on todo from AN-075): apply the AN-075/76 split to committee (n=359), party (n=32), party-name (n=117). Much more sample. If singleton β << repeat β on the larger routes, the M1-individual mechanism is real but the CPF cell was just too thin to detect. If βs stay route-uniform across all routes, the strategic-stake-by-sponsor-architecture reading generalizes. Suggested script: source/analysis/an-NNN-all-routes-repeat-singleton.py.

  2. Diagnose why repeat-CPF-dyad candidates have higher baseline errors (puzzle): the AN-076 result implies that candidates who appear in repeat-CPF dyads have higher baseline error rates across all polls (otherwise candidate FE wouldn't absorb the +20.2 vs +3.5 raw gap). Why? Possibly these candidates are in races where polling is harder (informal informal sector, high mobility, hard-to-reach voters). Possibly they're candidates whose campaign committees are unusually disorganized. Not load-bearing for the headline, but worth a one-page profile of the seven candidates appearing in CPF repeat dyads vs the singleton candidates. ~30 min.

  3. Joint write-up of AN-073 / AN-074 / AN-075 / AN-076 in the enforcement-puzzle doc (extension): the four-iteration arc converges on a specific reading (partisan M1/M3 out; CPF route carries the slant; relational structure exists at repeat-dyad layer but is not slant-carrying; strategic stake leads). The doc currently records each iteration's update; worth a section that knits them. Not an analysis follow-up.