Method · exploratory · 2026-10-20

Monte Carlo tree search

Where the other methods decide by a fixed rule each round, the search plans: at each round it builds a tree of candidate decisions, samples thousands of futures through the engine, and commits to the decision the search favours. The output is a pathway, the statistics behind each decision, and the trees themselves.

9 batches · 40 experiments · 1,244 simulations

Decisions the model favours, not forecasts and not recommendations
Every result here is what the search makes of a structural model with seed parameter values. Where the model is wrong, the search is confidently wrong; the trees are shown so a reader can see what it believed and why. Greedy is the bar: if search cannot beat it, sequencing is not being rewarded by the model, which is a finding about the model's lags and dependencies, not a reason to tune the search.

How the search works here

At a decision point (a nation, a round, a state) the search repeats four steps for a fixed number of iterations. The budget is iterations, never wall-clock, so a simulation is reproducible from its seed.

  1. 1Select

    Walk down the tree from the root. At each node prefer the child with the higher mean reward, but keep trying the ones visited less (UCT, with the exploration constant scaled so it means the same for an index of 0 to 20 as for a rank of 1 to 197).

  2. 2Expand

    At the frontier add one new child, the next untried candidate, but only once the node has earned it: a node with v visits may have at most √v children, so the tree deepens before it fans out.

  3. 3Play out

    From that child, play to the horizon with the greedy method under one sampled future of shocks, and read the objective off the final state.

  4. 4Back up

    Add that reward to every node on the path, so each node carries a visit count and a running mean. The committed decision is the root child with the most visits; the round is then played for real, and the search starts again.

State at year t2,000 visitsPartner Fiscal Capacity612 visits · mean 11.80proposed by graph leverageBuild Semiconductors941 visits · mean 11.83most visited: committedGreedy bundle447 visits · mean 11.76the baseline, always a candidatethen Buy Energy Technologiest + 1 · 388 visits · 11.85then Holdt + 1 · 61 visits · 11.74play out to the horizon with the greedy method,under one sampled future of shocksHorizon: objective 11.87the reward, backed up every node on the pathback up: visits + 1,running mean updatedWidening: a node with v visitsmay have at most √v children,so the tree deepens beforeit fans out across candidates.Select: prefer the child withthe higher mean, but keeptrying the ones visited less.

What a candidate is. The engine allows up to five actions a round, so a tree's choice is a round's decision: a headline action (a group, a mode, a large chunk of income) proposed by one of three generators, placed first, with the greedy ranking filling the other four slots; or the plain greedy decision; or holding. The tree chooses which action leads the round, with everything else as greedy would have done it, so the regret against greedy measures exactly what the lookahead adds.

Where candidates come from. Marginal return proposes the groups with the most objective value per credit this round; graph leverage the groups that deliver most downstream, through the Capability Dependency Graph, to groups below their domain's Tier 1 bar; goal gap the groups furthest below that bar, weighted by the goal. Every candidate records which generators proposed it, so the trees can show where good actions came from.

Shocks. Shocks are stochastic, so each playout plays under one sampled future drawn from the shock library with the search's own random stream, and averaging over playouts averages over futures. The plan is remade after every round with the simulation's realised shocks, which is why the tree never has to carry every possible future.

Sanity and convergence

M0: a two-action toy problem whose optimum is known in closed form. M1: one nation, one state, the search at four budgets, five seeds each; the root decision and visit shares should stabilise.

M0 passeshorizon 6, 500 iterations, 3 seeds: found totals [15.0, 15.0, 15.0] against the optimum 15 (myopic 6); sequences all optimal

Each round the decision is A, which pays 1 at once, or B, which pays 3 two rounds later but only if the next round's decision is also B. A myopic method takes A every round; the optimum is B every round. The default playout is the myopic one, so the search can only find B by looking two decisions deep, which is what the model's lags demand of it.

DecisionCommittedVisits AVisits BMean AMean B
1B134875.4614.68
2B2498514.82
3B2498714.9
4B2498914.96
5B24981114.98
6B24981315
M1 did not stabilisespecKOR, the start state, objective index, 5 seeds a budget.

As the brief specifies: a fresh shock future every playout, exploration scaled to the spread of all rewards.

IterationsModal root actionSeeds agreeingTop visit shareDrift from the largest budgetSeconds
200Build Nuclear Deterrence20%18%50 points0.9
500Build Nuclear Deterrence20%12%31 points2.1
2,000Greedy bundle40%7%10 points9.2
10,000Hold40%9%0 points45.9
Visit shares by candidate, mean over seeds
Candidate2005002,00010,000
Hold0.0%0.0%4.7%5.9%
Build Nuclear Deterrence9.3%5.0%3.1%5.6%
Buy Technical & Vocational Skills9.0%5.5%3.7%5.0%
Build Lifelong Learning & Reskilling7.5%3.6%3.5%4.2%
Partner Lifelong Learning & Reskilling5.6%3.6%3.4%4.1%
Greedy bundle10.4%5.8%4.5%3.9%
Buy Research Talent & Knowledge Creation6.9%4.3%3.4%3.7%
Buy Digital & AI Competence0.0%5.4%4.3%3.5%
Partner Nuclear Deterrence8.7%7.1%4.6%3.5%
Partner Research Talent & Knowledge Creation5.6%5.8%3.4%3.4%
M1 did not stabilisecrnKOR, the start state, objective index, 5 seeds a budget.

Common random numbers: sixteen shock futures per decision, used in turn, so every candidate is scored under the same futures; exploration scaled to the spread among the candidates.

IterationsModal root actionSeeds agreeingTop visit shareDrift from the largest budgetSeconds
200Partner Fiscal Capacity & Public Finance40%22%48 points0.9
500Greedy bundle40%16%31 points1.9
2,000Build Lifelong Learning & Reskilling20%11%11 points7.8
10,000Buy Digital & AI Competence40%13%0 points39.6
Visit shares by candidate, mean over seeds
Candidate2005002,00010,000
Buy Digital & AI Competence0.0%4.3%4.5%9.2%
Buy Lifelong Learning & Reskilling5.4%3.2%4.6%4.8%
Build Lifelong Learning & Reskilling5.7%5.0%4.7%4.8%
Build Research Talent & Knowledge Creation5.2%4.9%4.0%4.2%
Greedy bundle13.2%8.4%5.4%4.2%
Buy Research Talent & Knowledge Creation3.8%3.7%3.4%4.0%
Partner Fiscal Capacity & Public Finance11.6%9.6%6.7%4.0%
Partner Technical & Vocational Skills7.5%6.1%5.1%4.0%
Partner Research Talent & Knowledge Creation6.4%5.6%4.0%4.0%
Partner Lifelong Learning & Reskilling7.7%5.4%3.5%3.8%
M1 stable at 10,000 iterationsno-shocksKOR, the start state, objective index, 5 seeds a budget.

Certainty-equivalent playouts: no shocks inside the search, so a playout is deterministic given the state. The cleanest test of whether the model rewards sequencing at all.

IterationsModal root actionSeeds agreeingTop visit shareDrift from the largest budgetSeconds
200Partner Nuclear Deterrence100%26%97 points0.7
500Buy Digital & AI Competence100%27%92 points1.7
2,000Hold100%49%41 points6.6
10,000Hold100%90%0 points34.0
Visit shares by candidate, mean over seeds
Candidate2005002,00010,000
Hold0.0%0.0%48.7%89.7%
Buy Digital & AI Competence0.0%27.0%23.9%4.8%
Partner Nuclear Deterrence25.5%17.4%4.3%0.9%
Build Nuclear Deterrence20.5%13.8%3.5%0.7%
Build Space, Aerospace & Defence Infrastructure0.0%0.0%3.0%0.6%
Partner Space, Aerospace & Defence Infrastructure0.0%0.0%2.7%0.5%
Buy Technical & Vocational Skills16.0%10.2%2.6%0.5%
Buy Space, Aerospace & Defence Infrastructure0.0%0.0%2.2%0.4%
Partner Digital & AI Competence0.0%3.6%0.9%0.2%
Partner Technical & Vocational Skills4.5%3.6%0.9%0.2%

Experiments

Each MCTS experiment has its own page with the fourteen views of the brief, from the fan chart to the trees. Regret is the search's objective minus greedy's at the horizon, paired by seed.

Compare two experiments side by side.

MCTS M6, stability mcts-m6

Certainty-equivalent rollouts (no shocks inside the search, exploration scaled to the candidates' spread), because the search as the brief specified it is indifferent at the root (M1). Twenty seeds of the same configuration (one nation, 20 years, the index, the quick preset): how consistent the first five years of the pathway are across seeds.

The batch's regret table
# MCTS summary: mcts-m6

Regret is the search's objective minus greedy's at the horizon, paired by seed (positive: the search did better). `share` is the share of seeds in which the search beat greedy. Stability is how often the same root decision won across seeds, all rounds and the first five.

| Experiment | Nation | Objective | Horizon | Iterations | Seeds | Regret (mean) | p10 | p50 | p90 | Share better | Hesitation | Stability (5y) | s/decision |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| m6-kor-mcts-index | KOR | index | 20 | 500 | 20 | +0.045 | −0.224 | +0.080 | +0.253 | 65% | 36% | 41% (55%) | 0.8 |

CMA-ES development batch cmaes-dev

A tiny CMA-ES batch (one nation, four rounds, two seeds, a population of four for a few generations) to exercise the tables, the checks, the report and the site's CMA-ES pages while the real experiments run. Not evidence of anything.

The batch's regret table
# MCTS summary: cmaes-dev

Regret is the search's objective minus greedy's at the horizon, paired by seed (positive: the search did better). `share` is the share of seeds in which the search beat greedy. Stability is how often the same root decision won across seeds, all rounds and the first five.

| Experiment | Nation | Objective | Horizon | Iterations | Seeds | Regret (mean) | p10 | p50 | p90 | Share better | Hesitation | Stability (5y) | s/decision |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dev-est-mcts-index | EST | index | 4 | 40 | 2 | −0.020 | −0.023 | −0.020 | −0.016 | 0% | 38% | 50% (50%) | 0.0 |

MCTS M3, objective sensitivity mcts-m3

Certainty-equivalent rollouts (no shocks inside the search, exploration scaled to the candidates' spread), because the search as the brief specified it is indifferent at the root (M1). The same nation and horizon under each objective at the default budget of 2,000 iterations a decision, 10 seeds: how the committed sequence changes with what is being maximised. The tier-rank objective is expected to produce single-point tier flips.

The batch's regret table
# MCTS summary: mcts-m3

Regret is the search's objective minus greedy's at the horizon, paired by seed (positive: the search did better). `share` is the share of seeds in which the search beat greedy. Stability is how often the same root decision won across seeds, all rounds and the first five.

| Experiment | Nation | Objective | Horizon | Iterations | Seeds | Regret (mean) | p10 | p50 | p90 | Share better | Hesitation | Stability (5y) | s/decision |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| m3-kor-mcts-index | KOR | index | 20 | 2000 | 10 | −0.045 | −0.191 | −0.087 | +0.115 | 30% | 30% | 33% (48%) | 3.5 |
| m3-kor-mcts-score-sum | KOR | score_sum | 20 | 2000 | 10 | −2.330 | −14.597 | −7.273 | +9.994 | 30% | 29% | 34% (48%) | 3.4 |
| m3-kor-mcts-tier1 | KOR | tier1 | 20 | 2000 | 10 | −0.100 | −1.000 | 0.000 | +1.000 | 20% | 87% | 46% (44%) | 3.6 |
| m3-kor-mcts-tier-rank | KOR | tier_rank | 20 | 2000 | 10 | −0.200 | −1.000 | 0.000 | 0.000 | 0% | 98% | 57% (52%) | 4.1 |

MCTS M4, horizon sensitivity mcts-m4

Certainty-equivalent rollouts (no shocks inside the search, exploration scaled to the candidates' spread), because the search as the brief specified it is indifferent at the root (M1). One nation at 10, 20 and 30 years on the index, 10 seeds at the quick preset, each with its greedy pair: how the horizon changes what the search commits to.

The batch's regret table
# MCTS summary: mcts-m4

Regret is the search's objective minus greedy's at the horizon, paired by seed (positive: the search did better). `share` is the share of seeds in which the search beat greedy. Stability is how often the same root decision won across seeds, all rounds and the first five.

| Experiment | Nation | Objective | Horizon | Iterations | Seeds | Regret (mean) | p10 | p50 | p90 | Share better | Hesitation | Stability (5y) | s/decision |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| m4-kor-mcts-index-10y | KOR | index | 10 | 500 | 10 | +0.039 | +0.027 | +0.041 | +0.049 | 100% | 37% | 56% (68%) | 0.5 |
| m4-kor-mcts-index-20y | KOR | index | 20 | 500 | 10 | −0.059 | −0.218 | −0.105 | +0.111 | 30% | 47% | 43% (52%) | 0.9 |
| m4-kor-mcts-index-30y | KOR | index | 30 | 500 | 10 | −0.340 | −0.740 | −0.424 | +0.229 | 30% | 31% | 44% (78%) | 1.2 |

MCTS development batch mcts-dev

A tiny MCTS batch (one nation, four years, two seeds, 60 iterations) to exercise the tables, the checks, the report and the site's MCTS panels while the real experiments run. Not evidence of anything.

The batch's regret table
# MCTS summary: mcts-dev

Regret is the search's objective minus greedy's at the horizon, paired by seed (positive: the search did better). `share` is the share of seeds in which the search beat greedy. Stability is how often the same root decision won across seeds, all rounds and the first five.

| Experiment | Nation | Objective | Horizon | Iterations | Seeds | Regret (mean) | p10 | p50 | p90 | Share better | Hesitation | Stability (5y) | s/decision |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dev-est-mcts-index | EST | index | 4 | 60 | 2 | −0.038 | −0.053 | −0.038 | −0.023 | 0% | 62% | 62% (62%) | 0.0 |

MCTS M2, versus greedy mcts-m2

Tree search against the greedy baseline: five nations, a 20-year horizon, each of the four distinct objectives (the index, the score sum, Tier 1 domains and the tier rank; rank follows the index and the goal-weighted score is the score sum without a goal), 50 seeds, at the quick preset of 500 iterations a decision. The greedy experiment for each nation faces the same seeds, so the regret is paired.

The batch's regret table
# MCTS summary: mcts-m2

Regret is the search's objective minus greedy's at the horizon, paired by seed (positive: the search did better). `share` is the share of seeds in which the search beat greedy. Stability is how often the same root decision won across seeds, all rounds and the first five.

| Experiment | Nation | Objective | Horizon | Iterations | Seeds | Regret (mean) | p10 | p50 | p90 | Share better | Hesitation | Stability (5y) | s/decision |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| m2-gbr-mcts-index | GBR | index | 20 | 500 | 50 | +0.048 | −0.023 | +0.055 | +0.111 | 78% | 36% | 15% (12%) | 1.1 |
| m2-gbr-mcts-score-sum | GBR | score_sum | 20 | 500 | 50 | +5.031 | −1.595 | +5.509 | +11.259 | 86% | 34% | 17% (13%) | 1.1 |
| m2-gbr-mcts-tier1 | GBR | tier1 | 20 | 500 | 50 | +0.220 | 0.000 | 0.000 | +1.000 | 22% | 70% | 24% (15%) | 1.1 |
| m2-gbr-mcts-tier-rank | GBR | tier_rank | 20 | 500 | 50 | 0.000 | 0.000 | 0.000 | 0.000 | 0% | 100% | 31% (30%) | 1.3 |
| m2-kor-mcts-index | KOR | index | 20 | 500 | 50 | +0.045 | −0.055 | +0.048 | +0.104 | 78% | 37% | 15% (12%) | 1.1 |
| m2-kor-mcts-score-sum | KOR | score_sum | 20 | 500 | 50 | +3.780 | −2.989 | +4.243 | +9.600 | 82% | 37% | 14% (12%) | 1.1 |
| m2-kor-mcts-tier1 | KOR | tier1 | 20 | 500 | 50 | +0.220 | 0.000 | 0.000 | +1.000 | 22% | 58% | 19% (12%) | 1.1 |
| m2-kor-mcts-tier-rank | KOR | tier_rank | 20 | 500 | 50 | 0.000 | 0.000 | 0.000 | 0.000 | 0% | 88% | 33% (32%) | 1.3 |
| m2-est-mcts-index | EST | index | 20 | 500 | 50 | −0.025 | −0.092 | −0.031 | +0.042 | 34% | 45% | 12% (11%) | 1.1 |
| m2-est-mcts-score-sum | EST | score_sum | 20 | 500 | 50 | −2.470 | −5.216 | −2.876 | +1.615 | 18% | 44% | 11% (12%) | 1.0 |
| m2-est-mcts-tier1 | EST | tier1 | 20 | 500 | 50 | +0.320 | 0.000 | 0.000 | +1.000 | 40% | 42% | 13% (12%) | 1.1 |
| m2-est-mcts-tier-rank | EST | tier_rank | 20 | 500 | 50 | +2.620 | −1.000 | +2.500 | +8.000 | 60% | 37% | 13% (14%) | 1.2 |
| m2-bra-mcts-index | BRA | index | 20 | 500 | 50 | −0.027 | −0.089 | −0.033 | +0.039 | 32% | 47% | 11% (10%) | 1.1 |
| m2-bra-mcts-score-sum | BRA | score_sum | 20 | 500 | 50 | −1.412 | −5.486 | −1.596 | +3.084 | 36% | 43% | 12% (12%) | 1.0 |
| m2-bra-mcts-tier1 | BRA | tier1 | 20 | 500 | 50 | +0.880 | 0.000 | +1.000 | +2.000 | 64% | 36% | 12% (12%) | 1.1 |
| m2-bra-mcts-tier-rank | BRA | tier_rank | 20 | 500 | 50 | +3.640 | 0.000 | +4.000 | +8.000 | 80% | 36% | 12% (14%) | 1.2 |
| m2-ken-mcts-index | KEN | index | 20 | 500 | 50 | +0.057 | −0.047 | +0.050 | +0.179 | 68% | 45% | 12% (10%) | 1.0 |
| m2-ken-mcts-score-sum | KEN | score_sum | 20 | 500 | 50 | +3.354 | −3.846 | +3.521 | +10.940 | 64% | 50% | 10% (11%) | 1.0 |
| m2-ken-mcts-tier1 | KEN | tier1 | 20 | 500 | 50 | 0.000 | 0.000 | 0.000 | 0.000 | 0% | 100% | 10% (9%) | 1.1 |
| m2-ken-mcts-tier-rank | KEN | tier_rank | 20 | 500 | 50 | +5.660 | 0.000 | +5.000 | +15.000 | 60% | 44% | 13% (12%) | 1.2 |

MCTS M2b, versus greedy with certainty-equivalent playouts mcts-m2b

M2 again for the five nations on the index, 20 seeds at the quick preset, with no shocks inside the search (playouts are deterministic given the state) and exploration scaled to the candidates' spread: the variant M1 showed converging. The realised simulations still face the stochastic shock library, so this tests whether what the search finds in the deterministic model survives the shocks. The greedy experiment for each nation faces the same seeds.

The batch's regret table
# MCTS summary: mcts-m2b

Regret is the search's objective minus greedy's at the horizon, paired by seed (positive: the search did better). `share` is the share of seeds in which the search beat greedy. Stability is how often the same root decision won across seeds, all rounds and the first five.

| Experiment | Nation | Objective | Horizon | Iterations | Seeds | Regret (mean) | p10 | p50 | p90 | Share better | Hesitation | Stability (5y) | s/decision |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| m2b-gbr-mcts-index | GBR | index | 20 | 500 | 20 | −0.042 | −0.227 | −0.080 | +0.207 | 30% | 43% | 33% (41%) | 0.9 |
| m2b-kor-mcts-index | KOR | index | 20 | 500 | 20 | −0.047 | −0.224 | −0.105 | +0.191 | 35% | 46% | 39% (53%) | 0.9 |
| m2b-est-mcts-index | EST | index | 20 | 500 | 20 | +0.065 | +0.042 | +0.065 | +0.085 | 100% | 36% | 49% (83%) | 0.9 |
| m2b-bra-mcts-index | BRA | index | 20 | 500 | 20 | +0.065 | +0.047 | +0.062 | +0.082 | 100% | 31% | 59% (86%) | 0.9 |
| m2b-ken-mcts-index | KEN | index | 20 | 500 | 20 | +0.041 | +0.031 | +0.038 | +0.055 | 100% | 20% | 64% (75%) | 0.9 |

MCTS M7, backcast pathway mcts-m7

South Korea from its reconstructed 1996 starting state, 30 years to 2026, under the shocks the backcast scripts for it: the found pathway against the scripted historical policy (e4-kor in the backcast-1996 batch) by domain. The brief asked for 1990; the reconstruction starts in 1996.

The batch's regret table
# MCTS summary: mcts-m7

Regret is the search's objective minus greedy's at the horizon, paired by seed (positive: the search did better). `share` is the share of seeds in which the search beat greedy. Stability is how often the same root decision won across seeds, all rounds and the first five.

| Experiment | Nation | Objective | Horizon | Iterations | Seeds | Regret (mean) | p10 | p50 | p90 | Share better | Hesitation | Stability (5y) | s/decision |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| m7-kor-mcts-index | KOR | index | 30 | 500 | 10 | +0.042 | +0.015 | +0.038 | +0.069 | 100% | 54% | 41% (32%) | 1.2 |

MCTS M5, candidate generator ablation mcts-m5

Certainty-equivalent rollouts (no shocks inside the search, exploration scaled to the candidates' spread), because the search as the brief specified it is indifferent at the root (M1). Each candidate generator alone against the three combined, one nation, 20 years on the index, 10 seeds at the quick preset, with the greedy pair.

The batch's regret table
# MCTS summary: mcts-m5

Regret is the search's objective minus greedy's at the horizon, paired by seed (positive: the search did better). `share` is the share of seeds in which the search beat greedy. Stability is how often the same root decision won across seeds, all rounds and the first five.

| Experiment | Nation | Objective | Horizon | Iterations | Seeds | Regret (mean) | p10 | p50 | p90 | Share better | Hesitation | Stability (5y) | s/decision |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| m5-kor-mcts-marginal-return | KOR | index | 20 | 500 | 10 | −0.075 | −0.236 | −0.128 | +0.104 | 30% | 51% | 42% (52%) | 0.8 |
| m5-kor-mcts-graph-leverage | KOR | index | 20 | 500 | 10 | −0.065 | −0.217 | −0.096 | +0.093 | 30% | 16% | 63% (58%) | 0.8 |
| m5-kor-mcts-goal-gap | KOR | index | 20 | 500 | 10 | −0.085 | −0.243 | −0.137 | +0.097 | 30% | 9% | 72% (68%) | 0.8 |
| m5-kor-mcts-combined | KOR | index | 20 | 500 | 10 | −0.059 | −0.218 | −0.105 | +0.111 | 30% | 47% | 43% (52%) | 0.9 |

What these results are, and are not

The decisions the model favours
Under its current, structural parameters, and under the search's own settings: the candidate generators, the playout method, the budget. Change any of them and the answer may change; that is what M3 to M6 test.
Not forecasts, not recommendations
A pathway says what a search found rewarding in the model, not what a nation should do. Other nations are frozen at their 2026 ratings throughout.
Confidently wrong where the model is wrong
Tree search exploits whatever the model rewards, including its mistakes. A group the parameter tables cannot value defensibly can look like the best move; that is a finding for the framework review, flagged by the improvement loop.
Read with the search's panels
An MCTS experiment is an ordinary experiment with a different method, and writes the standard tables. Its page carries the search's own panels (regret against greedy, the trees, stability across seeds) beside the standard ones, so its results are read as a search's, not as a fixed rule's.

Method: the methodology. Reconciliation with the brief and the decisions taken: docs/mcts-reconciliation.md in the repository.