PolicyEngine

Methods

The protocol identifies prompt-conditioned response distributions under a fixed elicitation design — what a model returns when asked, not how well it forecasts. The paper carries the full treatment; this page summarizes the estimand and discloses the per-model harness.

Elicitation

A memory-only prompt fixes each quantity's interpretation and requests structured JSON: a point estimate, five quantiles (p05, p25, p50, p75, p95), citations, and a reasoning summary. The prompt instructs the model to answer from background knowledge alone — no tools, no literature reconstruction. Two sign-ambiguous quantities carry direction-first clarifiers that define what the reported sign means without calling either direction correct. The exact prompt text appears verbatim on every quantity page and on the Process page, alongside costs and the full generation pipeline.

How the nine headline elasticities were chosen

Three criteria, fixed in the registry before the panel ran: each quantity is a standard named object with a published review anchor or an established calibration home; each has a direct policy consumer (six labor-and-tax parameters feed CBO-style and PolicyEngine-style tax-benefit microsimulation, three macro-and-trade parameters are core calibration inputs); and the two subpanels pair a domain where lower elasticities read as more room for redistribution with one where no such monotone mapping exists. Selection determines coverage, not model comparisons — every model answers the identical panel. Each quantity's page opens with the exact definition the models received.

Repeated runs and pooling

Each model-quantity cell runs 15 independent times. Each run's quantiles become a piecewise-uniform distribution; the pooled predictive distribution is the equal-weight mixture of the 15. The headline interval is the pooled 90 percent mixture interval — the predictive spread of repeated elicited answers, not a confidence interval for their mean. REML and Bayesian hierarchical estimators run alongside as robustness checks.

Panel

29 models from nine organizations — Anthropic, OpenAI, Google, xAI, DeepSeek, Alibaba, Moonshot AI, Zhipu AI, and MiniMax — elicited in five waves: 11 in April 2026 and 18 in July 2026 (six frontier updates, five Chinese-lab models, the GPT-5.6 family, and late Grok 4.5, Kimi K3, Gemini 3.6 Flash, and Claude Opus 5 additions), all under identical prompts. 26 U.S.-scoped quantities: 9 headline elasticities in two subpanels, 4 calibration parameters, a capital-gains convention sibling, and 12 simulation-facing coefficients. 11,310 successful runs at a 100 percent parse rate, with every cell verified against the exact 15-run grid; failed slots re-ran as fresh independent draws, each traced in the failure manifest (58 July frontier slots) or in per-directory recovery archives (4,168 records across the Chinese-lab wave).

Reproduce it

Every table rebuilds from the committed artifacts without API access, and a verification script pins the paper's prose to the generated tables. The README documents both reproduction paths and costs; the paper carries the full estimand discussion, robustness appendices, and limitations.

Per-model harness disclosure

The structured-output mechanism, completion budget, sampling regime, and reasoning configuration follow each provider's API surface and are therefore confounded with model identity — disclosed in full here and bounded empirically by the paper's cross-mechanism ablation (max center movement 0.03).

ModelPathMechanismBudgetSamplingReasoning
GPT-5.5OpenAI Chat Completionsstrict JSON schema1200 (8000 for the 40 re-elicited runs)temperature 1.0, batched n <= 8provider default effort
GPT-5.6 SolOpenAI Chat Completionsstrict JSON schema8000temperature 1.0, batched n <= 8provider default effort
GPT-5.6 LunaOpenAI Chat Completionsstrict JSON schema8000temperature 1.0, batched n <= 8provider default effort
GPT-5.6 TerraOpenAI Chat Completionsstrict JSON schema8000temperature 1.0, batched n <= 8provider default effort
GPT-5.4OpenAI Chat Completionsstrict JSON schema1200temperature 1.0, batched n <= 8provider default effort
GPT-5.4 miniOpenAI Chat Completionsstrict JSON schema1200temperature 1.0, batched n <= 8provider default effort
GPT-5.4 nanoOpenAI Chat Completionsstrict JSON schema1200temperature 1.0, batched n <= 8provider default effort
Claude Fable 5native Anthropic APIstrict JSON schema32000none accepted (provider default)always-on reasoning
Claude Opus 4.8native Anthropic APIstrict JSON schema32000none accepted (provider default)off (provider default)
Claude Sonnet 5native Anthropic APIstrict JSON schema32000none accepted (provider default)adaptive (provider default)
Claude Opus 5native Anthropic APIstrict JSON schema32000none accepted (provider default)adaptive, on by default (provider default)
Claude Opus 4.7LiteLLMforced function call1200temperature 1.0off (provider default)
Claude Sonnet 4.6LiteLLMforced function call1200temperature 1.0off (provider default)
Claude Haiku 4.5LiteLLMforced function call1200temperature 1.0off (provider default)
Gemini 3.1 ProLiteLLMforced JSON object1200temperature 1.0provider default thinking
Gemini 3.5 FlashLiteLLMforced JSON object4000temperature 1.0provider default thinking
Gemini 3.6 FlashLiteLLMforced JSON object8000temperature 1.0provider default thinking
Gemini 3 FlashLiteLLMforced JSON object1200temperature 1.0provider default thinking
Gemini 3.1 Flash-LiteLiteLLMforced JSON object1200temperature 1.0provider default thinking
Grok 4.20LiteLLMforced function call1200temperature 1.0reasoning variant
Grok 4.3LiteLLMforced function call4000temperature 1.0provider default
Grok 4.5LiteLLMforced function call8000temperature 1.0provider default
DeepSeek V4 ProLiteLLM via OpenRouterforced JSON object (schema validated locally)8000temperature 1.0provider default
Qwen 3.7 MaxLiteLLM via OpenRouterforced JSON object (schema validated locally)8000temperature 1.0provider default
Kimi K2.6LiteLLM via OpenRouterforced JSON object (schema validated locally)8000temperature 1.0provider default
Kimi K3LiteLLM via OpenRouterforced JSON object (schema validated locally)8000temperature 1.0provider default
GLM-5.2LiteLLM via OpenRouterforced JSON object (schema validated locally)16000temperature 1.0provider default
MiniMax M3LiteLLM via OpenRouterforced JSON object (schema validated locally)8000temperature 1.0provider default
Grok 4.1 FastLiteLLMforced function call1200temperature 1.0non-reasoning variant

11,310 successful runs · elicited April and July 2026 · v4 prompts · 15 runs per model-quantity cell. Code · Raw responses · Paper (PDF)

Code and dataElicited April and July 2026 · 29 models · v4 prompts