Run Outcome Regression (per-fight)
Generated: 2026-07-10 16:37 UTC
Rows: 2479 fights from 720 runs
Pooled win rate: 71.3%
Pooled pseudo-R² (stage+tier controlled): 0.4407
Pooled model — shop effects with stage + tier fixed
Stage (regular_1 baseline) and tier (Family baseline) are dummy-controlled.
| Feature |
OR |
p-value |
| shop_spend_frac |
1.446 |
0.382769 |
| shop_totems_bought |
1.187 |
0.480008 |
| shop_removals |
0.983 |
0.772953 |
| shop_cards_bought |
0.991 |
0.959387 |
| Stage dummy (baseline: regular_1) |
OR |
p-value |
| stage_regular_2 |
1.383 |
0.631358 |
| stage_boss |
1.252 |
0.755375 |
| Tier dummy (baseline: Family) |
OR |
p-value |
| tier_MidTier |
0.678 |
0.41608 |
| tier_MegaCorp |
0.861 |
0.86379 |
By stage (stratified — no stage confound)
regular_1 — n=973, win%=93.1%, R²=0.3203
| Feature |
Direction |
OR |
p-value |
| battles_won |
hurts |
0.398 |
0.007834 |
| deck_size |
hurts |
0.746 |
0.25726 |
| log_capital |
helps |
1.014 |
0.891993 |
| enemy_hp |
helps |
1.006 |
0.986417 |
| hp_pct |
hurts |
1.000 |
1.0 |
| incoming_t1 |
hurts |
1.000 |
1.0 |
regular_2 — n=906, win%=66.2%, R²=0.405
| Feature |
Direction |
OR |
p-value |
| hp_pct |
helps |
3.197 |
0.008818 |
| deck_size |
hurts |
0.538 |
0.006605 |
| totem_count |
hurts |
0.631 |
0.105635 |
| shop_totems_bought |
helps |
1.420 |
0.051507 |
| hp_lost_prev_fight |
hurts |
0.834 |
0.701458 |
| shop_cards_bought |
helps |
1.094 |
0.586439 |
| log_capital |
hurts |
0.918 |
0.687894 |
| enemy_hp |
helps |
1.077 |
0.812015 |
| shop_removals |
hurts |
0.937 |
0.52728 |
| shop_spend_frac |
hurts |
0.943 |
0.770999 |
boss — n=600, win%=43.5%, R²=0.2896
| Feature |
Direction |
OR |
p-value |
| hp_pct |
helps |
3.087 |
0.0 |
| enemy_hp |
helps |
1.842 |
0.129232 |
| hp_lost_prev_fight |
hurts |
0.706 |
0.036046 |
| deck_size |
hurts |
0.741 |
0.086213 |
| shop_spend_frac |
hurts |
0.835 |
0.257544 |
| log_capital |
hurts |
0.876 |
0.399061 |
| totem_count |
hurts |
0.878 |
0.728492 |
| shop_totems_bought |
helps |
1.106 |
0.663102 |
| shop_cards_bought |
hurts |
0.958 |
0.75867 |
| shop_removals |
helps |
1.024 |
0.827686 |
By tier × stage
| Battle |
n |
Win% |
Strongest signal (OR) |
| Family F1 |
720 |
95.8% |
deck_size helps OR=1.1994 |
| Family F2 |
690 |
72.8% |
hp_pct helps OR=2.0479 |
| Family Boss |
502 |
44.4% |
hp_pct helps OR=2.904 |
| MidTier F1 |
223 |
87.4% |
enemy_hp helps OR=1.5624 |
| MidTier F2 |
195 |
46.2% |
hp_pct helps OR=4.5408 |
| MidTier Boss |
90 |
33.3% |
hp_pct helps OR=4.6922 |
| MegaCorp F1 |
30 |
70.0% |
— (n too low) |
| MegaCorp F2 |
21 |
38.1% |
— (n too low) |
| MegaCorp Boss |
8 |
100.0% |
— (n too low) |
Calibration hints
- regular_1:
battles_won hurts (OR=0.3975, p=0.007834)
- regular_2:
hp_pct helps (OR=3.1971, p=0.008818)
- regular_2:
deck_size hurts (OR=0.5381, p=0.006605)
- boss:
hp_lost_prev_fight hurts (OR=0.7058, p=0.036046)
- MidTier F2:
hp_pct helps (OR=4.5408)
- MidTier F2:
deck_size hurts (OR=0.584)
- MidTier Boss:
hp_pct helps (OR=4.6922)
Reproducing
py -3 scripts/regress_run_outcomes.py