Policy-Coupled Robust Action Selection
Implementation & benchmark of arXiv:2607.02206 — Prediction Sets for Counterfactual Decisions: Coverage, Optimality, and Conformal Prediction
Source paper: Prediction Sets for Counterfactual Decisions: Coverage, Optimality, and Conformal Prediction arXiv:2607.02206 ⓘ · analyzed Aug 30, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Add conformal prediction sets for every action of a contextual policy, then select the action maximizing its worst-case utility over the corresponding set. Calibrate the sets using the outcome generated by this same max-min policy, rather than calibrating each action independently; this directly targets reliable utility under deployment decisions.
Formulas
Mathematical statement
The paper's central decision rule is the risk-averse max-min policy $\pi_{\mathrm{RA}}(x;C)=\operatorname*{argmax}_{a\in\mathcal A}\inf_{y\in C(x,a)}u(a,y)$, where $x\in\mathcal X$ is the context, $\mathcal A$ is the finite action set, $C(x,a)$ is an uncertainty set for the potential outcome under action $a$, and $u(a,y)$ is the utility of taking action $a$ when the realized outcome is $y$. The policy-coupled coverage target is $\Pr\{Y(\pi_{\mathrm{RA}}(X;C))\in C(X,\pi_{\mathrm{RA}}(X;C))\}\ge 1-\alpha$, where $Y(a)$ is the potential outcome under action $a$ and $\alpha$ is the desired error probability. Unlike per-action marginal coverage, this event evaluates the outcome under the action that the uncertainty sets themselves induce. For a practical scalar-outcome implementation, let $\hat m_a(x)$ be a potential-outcome predictor and $r_i=|y_i-\hat m_{a_i}(x_i)|$ be a calibration residual. With a nonnegative radius $q$, define $C_q(x,a)=[\hat m_a(x)-q,\hat m_a(x)+q]$ and the robust score $v_q(x,a)=\inf_{y\in C_q(x,a)}u(a,y)$. The deployed action is $\pi_q(x)=\arg\max_a v_q(x,a)$. Estimate policy-coupled failure by $\hat e(q)=n^{-1}\sum_i\mathbf 1\{y_i\notin C_q(x_i,\pi_q(x_i))\}$ when the calibration data contain the relevant potential outcome, or use randomized/off-policy inverse-propensity weighting when only one factual action outcome is observed. Select the smallest radius satisfying a high-confidence version of $\hat e(q)\le\alpha$.
Implementation notes
Integrate this as a decision head on top of a contextual bandit, offline-RL, or treatment-effect model. First train one outcome model $\hat m_a(x)$ per action, either as separate heads sharing a neural encoder or as a world model predicting $(x,a)\mapsto Y(a)$. Reserve a calibration split. For every calibration context, compute all action predictions and define a candidate interval $C_q(x,a)=[\hat m_a(x)-q,\hat m_a(x)+q]$ for each radius $q$ in a sorted grid of residual values. Compute the lower endpoint of utility over the interval; for monotone decreasing utility this is often $u(a,\hat m_a(x)-q)$, but implement the infimum by evaluating both endpoints or a small outcome grid. Select $\pi_q(x)=\arg\max_a\inf_y u(a,y)$, with deterministic tie-breaking. On calibration records, evaluate whether the observed outcome is inside the set for the selected action. If the data are randomized with known propensity $p_i=\Pr(A_i=a_i\mid X_i)$, use the inverse-propensity estimate $w_i=\mathbf 1\{a_i=\pi_q(x_i)\}/p_i$ in the displayed policy-coupled error; clip propensities to avoid exploding variance. Choose the smallest $q$ whose error estimate plus an empirical-Bernstein confidence radius is at most $\alpha$; use a Bonferroni correction over the radius grid. At inference, return the robust action and optionally its worst-case utility margin. The max-min rule and policy-coupled event come directly from the paper; residual intervals, propensity weighting, confidence correction, and grid search are practical approximations. The first experiment should use a synthetic contextual bandit with two actions and known heterogeneous potential outcomes, then a small MLP compared with greedy prediction, independent per-action conformal intervals, and pessimistic lower-confidence-bound selection. Measure realized utility, policy-coupled coverage, and regret at equal calibration size. Success means coverage remains at or above $1-\alpha$ while utility exceeds independent conformal selection, especially when actions have different outcome variances or treatment effects.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Confirmed ✓
Stage 2 · Practical benchmark result: Significantly worse ✗
Methodology: 8 paired seeds, permutation test (p<0.05) against a learning-rate-tuned baseline. How verification works
Stage 1 — Mechanism check agent confidence 8/10
Built a two-action contextual-bandit MVP with per-action outcome models, exact interval worst-case utility, propensity-weighted policy-coupled calibration, and comparisons against greedy and independent calibration. The mechanism checks matched quantitative predictions: robust-policy switch q*=0.10 observed exactly, Gaussian coverage scaling had maximum error 0.0006, and monotonic coverage had zero violations. Coupled calibration achieved deployment coverage 0.9634 at alpha=0.10 versus 0.8881 for independent calibration, although it did not beat greedy raw utility.
- Agent confidence
- 8/10
- Baseline
- Greedy: utility=-0.19689, regret=0.03260, coverage=0.0000. Independent robust calibration at alpha=0.10: utility=-0.21111, regret=0.04681, coverage=0.8881.
- Idea
- Policy-coupled calibration at alpha=0.10: q=0.5404, utility=-0.20040, regret=0.03610, coverage=0.9634. At alpha=0.20: utility=-0.19992, regret=0.03563, coverage=0.8674 versus independent coverage 0.7846.
Limitations: Only one synthetic two-action data-generating process and one seed were tested, using ExtraTrees rather than a neural model. The confidence correction is a practical finite-grid bonus rather than a formal adaptive conformal guarantee; observational deployment assumptions, propensity misspecification, larger action spaces, and repeated seeds were not tested.
How to run: python3 policy_coupled.py
Stage 2 — Benchmark vs. tuned baseline (arXiv:2607.02206)
Significantly WORSE than the tuned baseline (+8.9%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Contextual_potential_outcomes
- Model
- mlp_tiny
- Paired seeds
- 8
- Baseline mean
- 0.0506
- Idea mean
- 0.0551
- Effect (Δ)
- 0.0045 (+8.9%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±3.4%
- Mechanism
- Confirmed ✓
- Practical effect
- Hurts
- Baseline tuning
- swept over 3 configs
The registered custom task is synthetic, has two actions, 800 training examples, 300 test examples, one small action-conditioned MLP, and 12 epochs. Observational propensity weighting, larger action spaces, real bandit data, alternative neural architectures, utility/regret as the primary metric, and formal adaptive conformal guarantees were not tested.
How to run: python3 run_bench.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Failed ✗
Agent confidence: 10/10
Reran the experiment on the accepted registered track contextual_potential_outcomes with identical mlp_tiny systems, a parity-matched baseline learning-rate sweep, and 8 paired seeds. The trained-model mechanism signature confirmed monotone policy-coupled interval coverage, but the idea significantly worsened test MSE: delta_mean=+0.0045146, permutation p=0.0081, with 0/8 paired wins.
- Baseline
- Best lr=0.003; full 8-seed test MSE mean=0.0505636572, std=0.0064717207. Sweep means: lr=0.001 -> 0.0563624138, lr=0.003 -> 0.0524060195, lr=0.01 -> 0.0533738267.
- Idea
- Best lr=0.003, alpha=0.20; full 8-seed test MSE mean=0.0550782750, std=0.0060394484. Paired delta=+0.0045146178, p=0.0081, 0/8 wins.
Benchmark result
Significantly WORSE than the tuned baseline (+8.9%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Contextual_potential_outcomes
- Model
- mlp_tiny
- Paired seeds
- 8
- Baseline mean
- 0.0506
- Idea mean
- 0.0551
- Effect (Δ)
- 0.0045 (+8.9%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±3.4%
- Mechanism
- Confirmed ✓
- Practical effect
- Hurts
- Baseline tuning
- swept over 3 configs
The registered custom task is synthetic, has two actions, 800 training examples, 300 test examples, one small action-conditioned MLP, and 12 epochs. Observational propensity weighting, larger action spaces, real bandit data, alternative neural architectures, utility/regret as the primary metric, and formal adaptive conformal guarantees were not tested.
How to run: python3 run_bench.py
Artifacts
- bench_report.json 3.8 KB View Raw
- policy_coupled.py 6.1 KB View Raw
- policy_track.py 0.8 KB View Raw
- report.md 1.6 KB View
- report_bench_2026-08-30T162219.md 4.1 KB View
- run_bench.py 5.8 KB View Raw