Oil supply chain simulation

This was my MSc dissertation. Oil companies mostly judge a new field on its geology and leave out the supply chain. I built a simulation to see what happens when a chokepoint closes, and calibrated it to real 2026 prices from the Iran conflict.

The question

When the next chokepoint crisis hits, how can companies and governments know in advance which oil supplies will survive it?

How I built it

I used Mesa 3 with five agent types: Reservoir, Market, Infrastructure, Operator and Shock.

I calibrated the price mechanism against real EIA data for 2026. The RMSE before the shock was $2.02 per barrel for Brent and .70 for WTI, both inside the $2.50 limit I set in advance.

I then ran four reservoir types through four disruption scenarios and scored each one on production continuity, route redundancy, cost stability and recovery speed.

Results by scenario

Overall ranking

Arctic frontier: 0.963

US shale: 0.943

Offshore deepwater: 0.901

Onshore low cost, Gulf routed: 0.720

The Gulf routed field has the best rock and the cheapest barrels, and it came last. A LASSO analysis found that the share of a field's oil going through the Gulf chokepoints was the strongest driver of vulnerability, ahead of any geological property.

Robustness checks

The ranking stayed the same across five random seeds, three shock onset dates and over a thousand changes to the scoring weights. A separate Venezuela case study tested the same mechanism in a different region.

Limitations

The model uses representative volumes, so the ranking compares field types and doesn't predict global volumes. The price model is fitted to real prices and doesn't simulate the whole market. Route exposure and field type are also tied together in my design, so the driver analysis can't fully separate them. Varying the two independently is the first thing I'd do next.

What I learned

My strongest early decision was to treat calibration as a gate, so the model had to reproduce real Brent and WTI prices before I trusted any resilience number. The hardest decision was dropping SimPy after I'd committed to it in my proposal, because a daily step model was enough. My main weakness was building too much of the visualisation before the analysis was settled.