Simulating Geopolitical Scenarios | Monte Carlo ++

Consider a crisis in the Strait of Hormuz. Iran closes the waterway. The United States must decide whether to respond with military force, negotiate, or seek some less obvious accommodation. Each decision could trigger a different chain of reactions, leading to escalation, stalemate or de-escalation. Can we build a model that systematically explores these alternative futures without pretending to know which one will actually occur?

But first, what is a model? Models are proxies for understanding physical and social systems. A toy car helps us understand real cars, while Newton's laws explain gravity. Models evolve: a radio-controlled car is more sophisticated than a wooden toy, just as Einstein's model of gravity improves upon Newton's. Complex situations that are dependent on the outcome of random variables are often described by simulation models based on the Monte Carlo method. In these simulations, random numbers are generated using well-understood probability distributions. Unfortunately, the complex, context-dependent decisions that shape social and geopolitical situations cannot easily be captured by predefined mathematical probability distributions. 

This article proposes the MonteCarlo++ mechanism that uses AI, instead of predefined mathematical equations, to identify possible actions and estimate how likely they are. It then randomly selects among these possibilities to create different versions of how events might unfold. To demonstrate this technique we have built a free and open-source software platform and used it to model the Middle East Oil Security scenario. 

Geopolitical Modelling

Sudden events, or triggers, change the state of the world. For example, if Iran were to close the Strait of Hormuz, the obvious fallout could be a rise in oil prices which is a quantifiable consequence. But there would be other consequences that are harder to measure. For example, there could be greater political cohesion between certain countries, or domestic turmoil in others. These changes can be expressed as deviations from the original state, as assessed by a knowledgeable human geopolitical analyst. The first step in our model is to assign this task of assessing the changing geopolitical situation to an AI agent. 

Once an event's consequences have been assessed, seasoned military analysts or diplomats would identify possible reactions, some escalatory and others conciliatory. Our second AI agent generates these options. 

For example, the US could send a flotilla of warships into the Strait, or quietly arrange to pay a bribe or toll to secure passage for oil tankers. Which is more likely?  Identifying possible reactions is one thing; estimating their relative probabilities is another. Our third AI agent performs this assessment.  A past history of paying bribes might increase the likelihood of taking a similar action.

Now we will add a fourth animal in this zoo but he is not an AI agent. He is a pure dice roller, of the traditional Monte Carlo family.  He rolls a virtual die and selects an action according to its assigned probability.  We need this stochastic element because human geopolitical agents need not always choose the most likely action. Even if paying a bribe appears more likely, a hot-headed decision-maker might still choose to send in the flotilla.  

The action selected by the dice roller marks the end of one cycle, or epoch. This action becomes the trigger for the next epoch, and the cycle continues. A series of epochs constitutes one scenario, or possible trajectory, based on the initial trigger. A collection of such scenarios, all starting from the same initial trigger but potentially following different paths, constitutes a Monte Carlo ensemble. 

However, this Monte Carlo ensemble is different. While the dice roller introduces randomness through conventional methods, the three AI agents use large language models to interpret events, generate possible actions and estimate their probabilities. This introduces another layer of uncertainty, beyond conventional random selection. Hence, MonteCarlo++.

AI agents and Role Files

Most of us use AI in chatbot mode, uploading PDFs or Excel files and asking ChatGPT to summarise documents or generate charts. But repeating such tasks hundreds of times manually is impractical. A Python program can automate these interactions through an application programming interface, or API.  

Consider a simple task of generating MCQ papers for an examination. Here the input could be the PDF of the textbook and the instruction  could be a simple text message “Act as a question paper setter and generate 20 Multiple Choice Questions with 4 possible answers based on the content of the input PDF file.” Note, while the base program may be written in Python, the role and task are described in clear and simple English. Running this program 20 times can generate 20 question papers, potentially with different sets of questions.  

To generate essay questions instead, the teacher simply changes the English instructions. No Python changes are necessary. 

In MonteCarlo++, each AI agent generally has a Role File that contains its instructions -- role and task --  in clear English. It also receives the necessary input data, while a common Python program communicates with the LLM through an API. 

World and Events

The first challenge is representing the World State. Unlike conventional simulations based on measurable quantities such as queue lengths, MonteCarlo++ uses eight geopolitical variables: Oil Price, Hormuz Oil Flow, Regional Diplomatic Engagement, Economic Pressure on Iran, US/Regional Partner Cohesion, Iran Domestic Stability, US–Iran Tension and Regional Armed Conflict.

Each variable has a numerical Index (initially set to 100) and text fields for Description, Direction, Status, Rationale and Conditions. Description and Direction remain constant, while the other components may change as the scenario unfolds. These eight variables are illustrative and can be changed to address different geopolitical situations.

An Event is defined by an actor, in this case the US or Iran, and a description -- for example Iran closes Hormuz. An event changes the state of the world variables, but how ?

Enter Agents - ZeitWorld, Chanakya, Centaur

ZeitWorld, Chanakya and Centaur are three agents, as described above and differentiated by their respective Role Files.

ZeitWorld initialises the World State, W0, using geopolitical background information collected from websites and news sources by an auxiliary pre-processing agent. 

After initialisation, ZeitWorld works with only two inputs, the previous World State and the current Event and creates the next World State :  W(t+1) = ZW { RoleFile_ZW, W(t), E(t) }. The critical component in this process is the ZeitWorld Role File, which explains in clear English how ZeitWorld should interpret each variable and how it should change the variables. Think of it as a seasoned diplomat teaching a student how the world changes.

The Chanakya Agent comes in multiple flavours or avatars, reflecting the bias and point of view of the actor. Our US_Chanakya and Iran_Chanakya share common Role File instructions, supplemented by actor-specific instructions. For example, US_Chanakya would seek to protect Israel, while Iran_Chanakya might consider actions that threaten Israeli interests. However the common part is that both Agents must generate two alternative candidate actions based on the current world situation and the event that caused it. [C1(t+1), C2(t+1)] =CHX{RoleFile_CHX, W(t+1), E(t)}

The Centaur Agent takes the two candidate actions and estimates the relative likelihood of each candidate action happening. Unlike the actor-specific Chanakya, Centaur is instructed to assess both alternatives from a neutral third-party perspective, considering the current geopolitical situation. [P(C1), P(C2)] = CN{RoleFile_CN, W(t+1), E(t), [C1(t+1), C2(t+1)]}

Now comes the joker in the pack, Shakuni, the dice roller. It generates a random number and based on this number one of the two candidates is selected as the next Event. E(t+1) = SH{ [C1(t+1), C2(t+1)],[P(C1), P(C2)]} Unlike the other three agents, Shakuni does not use AI. It is a deterministic computer program that rolls a virtual die, weighted by the probabilities supplied by Centaur. 

Beginning with a World State W(t) and an event E(t) we traverse through ZeitWorld, which creates W(t+1), then X_Chanakya, then Centaur, to Shakuni who selects E(t+1). The transition from { W(t), E(t)} to {W(t+1), E(t+1)} constitutes one Epoch.

The critical design parameters in this process are the Role Files, which play a role similar to that of programs in traditional systems, but are written in simple, clear English rather than a programming language. This is a key benefit of MonteCarlo++. 



Experiment – Middle East Oil Security Scenario

To establish the initial World State, information from 10 websites known for geopolitical analysis was downloaded as PDF files. This was supplemented with recent news from Moneycontrol, including developments such as the Mecca Pact. The collected information was converted into text files for ZeitWorld to create a common initial World State, W0.

Two trigger events were designed: (a) an escalatory event, Iran closing the Strait of Hormuz, and (b) a conciliatory event, the US suspending offensive military operations.

Each scenario consisted of three successive World State updates, driven by the initial trigger and two subsequent Events selected by Shakuni. This produced three Events and four World States. For each trigger, 40 scenarios were run, creating two ensembles of 40 alternative histories.

Each ensemble of 40 histories was classified into three categories: Escalation, Stalemate and De-escalation. This classification was performed by another LLM-based agent, Analyst, using its own Role File to categorise these outcomes. Unlike conventional machine learning approaches such as K-Means clustering, Analyst used an LLM to interpret and classify the narrative histories. 

Trigger Escalation Stalemate De-escalation
Iran closes Hormuz 36 (90%) 3 (7.5%) 1 (2.5%)
US suspends offensive operations 2 (5%) 18 (45%) 20 (50%)

These numbers represent outcomes within the simulation, not predictions of real-world geopolitical probabilities. Nevertheless, the  contrast is striking. The Iranian closure trigger led predominantly to escalation, while the US suspension trigger produced a mixture of stalemate and de-escalation. Yet neither outcome was inevitable. Even with identical starting conditions, MonteCarlo++ generated alternative histories that followed different paths. 

Conclusions

MonteCarlo++ is designed for flexibility. Role Files can be changed without modifying the Python code, World State variables can be adapted with minimal coding, and different LLMs can be used. The complete platform, including Python code and Role Files, is freely available as open-source software at http://github.com/prithwis/Centaur 

For strategic analysts, the value of MonteCarlo++ lies in systematically exploring alternative scenarios, including possibilities that might escape conventional human analysis. By examining different histories, analysts can identify unexpected developments, critical turning points and the decisions that shape them.

MonteCarlo++ is neither a forecasting tool nor a quantitative risk estimation model. Its purpose is exploratory brainstorming, wargaming and scenario planning  --  expanding the range of possibilities we can imagine and examine by combining human strategic reasoning, artificial intelligence and randomness in a systematic, repeatable framework.

Comments