flowchart TD
A[Volumetrics] --> B[Geological risk]
B --> C[Field development / production simulation]
C --> D[Economics]
D --> E[Decision metrics / loss function]
This post is a demonstration of the Resgo probabilistic prospect evaluation toolkit, and my motivations for building it.
Resgo is my attempt to make complex prospect evaluation probabilistic all the way down—uncertain geology, uncertain field development performance, uncertain economics—packaged into an integrated simulation model.
In practical terms, Resgo lets me define uncertain reservoir properties—geological risks, development plans, production behavior, prices, taxes, royalties, financing, and costs—then simulate thousands of internally consistent project outcomes. Instead of asking “what is the project NPV?”, it asks “what is the range of possible commercial outcomes?”
It is designed to do this extremely fast, allowing iterative exploration of different development concepts in a way that would not be feasible without it.
Motivations
Reporting a single number or a low/mid/high, as the basis for decision making for a project as risky and complex as an oil and gas field development, is… not ideal. There is no single number that captures the uncertainty inherent in such a complex undertaking, so the appropriate information to present for decision-making is not a set of point estimates, but a series of distributions that capture the uncertainties involved.
Traditionally these uncertainties are almost impossible to integrate end-to-end. Static structural models feeding into dynamic simulation models very rarely propagate uncertainty up the chain through to commercial metrics. The undertaking is simply too slow and clumsy to be done with traditional tools.
Resgo provides that integration. It does so by making some simplifying assumptions about reservoir behavior, but in low information contexts—before drilling or early in field development—I would argue that simpler models are more appropriate. Not because they model reservoir physics rigorously, but because they are flexible enough to configure quickly, model many scenarios, and iterate on.
This should become clear with an example.
Example
At a high level, the model flow looks like this:
| Module | Inputs | Outputs |
|---|---|---|
| Volumetric model | Net, porosity, saturation, gas cap fractions, fluid properties, risk | STOIIP/GIIP, recoverable resource, and geological success distributions |
| Field development model | Wells, timing, reservoir targets, facility constraints, recovery assumptions | Oil and gas production time series, well activity, CAPEX/OPEX timing |
| Economic model | Prices, costs, taxes, royalties, financing, depreciation | Cash flows, NPV, IRR, PI, EMV, payback time |
| Decision analysis | Commercial metrics, company risk tolerance | Decision metrics, downside exposure, loss-adjusted value |
The following example is for a stacked reservoir field development, with 12 target reservoirs and 25 planned producers.
Volumetric Simulation
Resgo models start with a stochastic volumetric simulation of each reservoir. Reservoirs can be single phase or separated into oil and gas legs via a Gas Cap Fraction parameter. Associated condensate and solution gas are captured as outputs along with their primary product streams.
Each parameter is represented with a probability distribution, with flexible copula models used to capture correlations between them. A few examples are shown below:
These forest plots show the P99, P90, P50, P10, and P1 quantiles for each variable of each reservoir.
Each reservoir in the simulated stack has a series of risk factors applied, which together with a dependency parameter (capturing the correlation of risk across reservoirs) is used to simulate the success or failure of each target, aggregating results stochastically and propagating them into the field production simulator.
Here are the individual zone success case oil volumes:
And the overall total visualized with an ECDF plot:
The Total STOIIP shown above represents the simulated range of STOIIP outcomes across trials. The geological risk factor of each individual reservoir is visualized as the y-intercept of each ECDF. Aggregation of zone resources in the total is calculated stochastically.
Field Development Simulation
Resgo is designed to support multi-well developments, as realistic end-to-end modeling is not fully achievable without a simulation of multiple wells producing a field, with volume sharing, production profiles and CAPEX/OPEX associated with each.
This includes complex, phased projects targeting multiple reservoirs with oil and gas caps at different stages of development. Producers can be scheduled specifically, with defined drill and online dates, or they can be automatically sequenced on a defined cadence, coming online after an assumed drill-to-online period. The choice of how in depth to go with field development sequencing is left to the user.
The field production simulation uses Decline Curve Analysis (DCA) formulas in a stochastic model, constrained by static volumes (simulated in the volumetric model), initial rate and recovery factor distributions. The simulation is designed to ensure produced volumes in a given month are consistent with each producer’s share of the reservoir volumes it produces from in that month.
That is a mouthful, but what it means is total field production (Ultimate Recovery) across all producers will be equivalent to the Ultimate Recovery implied by the static volume multiplied by the recovery factor for each reservoir.
This consistency guarantee makes Resgo very powerful. It provides a physically consistent, stochastic material balance simulation of the field that runs in seconds.
Dynamic simulation modeling traditionally takes weeks of configuration, and hours to run. This makes iteration extremely inefficient. Resgo models can be used to simulate hundreds of different scenarios, each with thousands of iterations, efficiently exploring field development options.
The produced oil and gas streams are plotted as stochastic time series plots, showing producers coming online through the development of the field.
As more wells are brought online, the decline of the field steepens as more producers exploit the shared resource. The field production has constraints on maximum oil and gas throughput, which curtails peak production while remaining consistent with ultimate recoveries. This allows modeling tradeoffs between different facility concepts, weighing their CAPEX/OPEX against the peak throughput they are capable of sustaining.
The simulation also “cancels” planned wells dynamically when remaining field volumes do not justify continued development. This avoids unfairly penalizing results with unrealistically poor operational decision-making. This is important for the economics model, as CAPEX/OPEX spend is tied to wells actually drilled.
Because all field production is fed directly into the economic model, development scenarios are compared on their commercial basis directly, not with proxies of it like EUR or STOIIP.
This also means that there is no need for BOE (barrels of oil equivalent) or MEPS (minimum economic pool size) metrics, as everything is simulated through to cash flows.
Economic Simulation
The Resgo economic model runs full OPEX/CAPEX, royalty, tax, financing, price and depreciation modeling, fully integrated with the rest of the stochastic model.
It includes configurable tax and royalty schemes, as well as stochastic oil and gas price forecasting using Geometric Brownian Motion or Ornstein-Uhlenbeck mean reverting stochastic processes. Flat pricing assumptions or price decks can also be used.
This flexibility allows full stochastic analysis through to commercial metrics like IRR, NPV, PI, and payback time.
Below, nominal discounted cash flows are shown, which sum to project NPV.
The cumulative discounted flows shown in the bottom chart here reflect the project value through time, with NPV being the end of project distribution. Note that the above plots are showing the geological success case outcomes. Failures are represented with a separate cost of failure parameter for cases where the prospect fails at the outset (by default the CAPEX of the first well drilled).
To emphasize what is being shown here, this is a time-discounted, full accounting of cash flows, including royalties, taxation, financing, debt servicing tranches, depreciation scheduling and product sales.
Why go this far? Because high-stakes decisions should not be made on subsurface or production-based proxies. They should be made based on commercial outcomes. That requires full accounting. Usually those commercial metrics are provided as point estimates after a handoff from reservoir engineers, but here they are part of the same integrated model. Uncertainties are preserved, end-to-end.
Decision Analysis
Resgo provides rich reporting functionality so that outputs can be either visualized or tabulated.
Volumetrics
| P(Success) | P99 | P90 | P50 | P10 | P1 | ||
|---|---|---|---|---|---|---|---|
| stream | |||||||
| STOIIP (stb) | Total Volumes | 1.0 | 97.6 | 156.4 | 247.9 | 367.7 | 506.7 |
| GIIP (mscf) | Total Volumes | 1.0 | 38.4 | 65.2 | 108.2 | 168.9 | 244.8 |
| Condensate (stb) | Total Volumes | 1.0 | 1.2 | 2.1 | 3.8 | 6.6 | 10.3 |
| Solution Gas (mscf) | Total Volumes | 1.0 | 159.2 | 270.9 | 456.4 | 716.8 | 1042.9 |
Oil EUR
| P(Success) | P99 | P90 | P50 | P10 | P1 | |
|---|---|---|---|---|---|---|
| Total Oil EUR | 1.0 | 21.6 | 35.3 | 56.5 | 85.8 | 120.7 |
By Reservoir
| P(Success) | P99 | P90 | P50 | P10 | P1 | |
|---|---|---|---|---|---|---|
| reservoir | ||||||
| Zone 1 | 0.54 | 0.9 | 2.5 | 6.1 | 13.5 | 22.8 |
| Zone 2 | 0.67 | 1.4 | 3.2 | 7.5 | 16.6 | 30.9 |
| Zone 3 | 0.86 | 1.8 | 3.4 | 6.8 | 13.2 | 22.8 |
| Zone 4 | 0.95 | 0.6 | 1.8 | 5.4 | 13.8 | 28.6 |
| Zone 5 | 0.81 | 0.8 | 2.3 | 5.3 | 11.3 | 20.6 |
| Zone 6 | 0.60 | 0.8 | 2.6 | 7.4 | 19.9 | 41.8 |
| Zone 7 | 0.43 | 0.9 | 2.6 | 6.2 | 13.8 | 27.6 |
| Zone 8 | 0.49 | 1.5 | 3.1 | 7.2 | 16.2 | 29.2 |
| Zone 9 | 0.65 | 1.0 | 2.9 | 8.4 | 22.0 | 47.0 |
| Zone 10 | 0.94 | 0.8 | 2.6 | 8.0 | 22.2 | 49.1 |
Nominal NPV
| P(Commercial) | P99 | P90 | P50 | P10 | P1 | |
|---|---|---|---|---|---|---|
| NPV | 0.96 | -266.0 | 218.0 | 849.0 | 1525.0 | 2124.0 |
Nominal EMV
| P(Commercial) | P99 | P90 | P50 | P10 | P1 | |
|---|---|---|---|---|---|---|
| EMV | 0.96 | -258.0 | 205.0 | 809.0 | 1456.0 | 2029.0 |
On the basis of these results the prospect looks quite attractive. The project is commercial in the P50 case at around USD $890M, and has a P(Commercial) of 95%. It is even NPV positive in the P90 case! This all sounds pretty good!
Note the large, negative P99 result, though. We will get to that next.
Why do I report such wide confidence intervals?
I tend to report and visualize wide uncertainty ranges, from P99 to P1. The reason I do this is simple: hundreds of millions of dollars are on the line. I don’t want to be 90% sure that a project requiring me to commit a billion dollars of capital will make a return, I want to be 99.99% sure. If I don’t have that luxury, fine, but showing that I do, in fact, have it is extremely valuable, as it means an easy decision can be made.
These models should enable more effective decision-making, a P90-P10 range is not a sufficient description. I want to know what happens if shit completely hits the fan! If there is a real possibility of losing money, I want to know how much, and how likely we think that is. Point estimates don’t provide that.
The other reason is that often probabilistic analyses are treated with skepticism because all the uncertainties stack up to something approximating “we have no bloody idea what will happen”. That’s a possible result of a model (and if it’s a good one, you should probably take it seriously and avoid doing anything drastic), but much more often the uncertainties flow through into something that actually represents a plausible range of outcomes.
Uncertainties don’t blow up into infinite doubt as you stack them—they converge. Correlations across uncertainties complicate this a bit, but they are rarely dramatic enough to blow up the uncertainty. Being explicit about the range the model produces is a mark of confidence that the range is actually meaningful and worth consideration.
If your uncertainty range is well defined, and never crosses “we go bankrupt”, that is very valuable information!
Because decision-making under uncertainty should not be “project A has a higher NPV than project B, so let’s do A”, but something closer to “project A exposes us to financial ruin, project B is a safe bet. So let’s do B”.
Ignoring uncertainty in high-stakes decision-making is crazy, and glossing over it with a few point-estimate metrics hides the reality of the situation.
So, to get to the point, should this prospect be FID’d or not?
Well, it depends on whether the company can survive such a large loss. This can be reasoned about quantitatively by defining a company loss function, which is the final stage of Resgo modeling.
Admittedly I’ve never seen a company do this before, so most of the time project NPV would be the end of the line.
Let’s do it anyway though, because it’s neat.
Loss Functions
The loss function formalizes a company’s financial position and risk tolerance. It maps simulated commercial outcomes to how good (or, more importantly, how bad) their consequences are for the company.
Before defining the function, it is worth looking directly at the simulated NPV distribution:
Lots of upside potential, sure, but a decent chunk of the distribution is left of the break-even line.
Let’s suppose the company cannot survive a loss of more than $300M. We can encode that constraint as a loss-adjusted NPV function that is linear at ordinary outcomes (i.e., loss-adjusted NPV = NPV), but becomes hyperbolic as the result approaches the company oh shit threshold. The function below is capped at -$5B for the sake of plotting clarity:
\[ L(x) = \begin{cases} x, & x > 0 \\ \dfrac{T x}{T + x}, & x \le 0 \end{cases} \]
where:
- \(x\) is the project NPV
- \(L(x)\) is the loss-adjusted NPV
- \(T\) is the maximum survivable loss, or bankruptcy threshold
The point here is that exposure to a $300M gain is very, very different from exposure to a $300M loss. If we had $3B in the bank, we would have a different loss function and might be happy to take that bet, but right now losing it would be existential.
Running the simulated NPV distribution through our loss function allows us to consider the project again, but this time placed into the important context of our company’s loss tolerance.
And this paints a very different picture! Maybe the headline commercial metrics looked too good to pass up, but if we’re honest about our financial situation… we can see that the undertaking could sink us.
So we pass on the opportunity, or we diversify our risk by farming in joint venture partners, because there’s still opportunity on the table, we just can’t bear the risk on our own.
So that’s Resgo. Subsurface, production, infrastructure and commercial uncertainties propagated all the way through to loss-adjusted NPV distributions in one giant stochastic monster.
Back of the Envelope
Resgo can act as a “back of the envelope” exercise on steroids, because it enables a technical team to see the consequences of their assumptions propagate all the way through to commercial outcomes in seconds. A geologist might argue that a reservoir is much riskier than previously supposed, and 10 seconds later can have their opinion reflected in project NPV.
This creates laser focus in a technical team, as what really matters is identifiable in seconds, not argued about for months.
The model can be calibrated rigorously based on geostatistical offset analysis, or it can be run on back-of-the-envelope assumptions. Either way, the information put into the model will flow through to its logical consequences. Add high-confidence assumptions, get tighter commercial results.
That configurability also means that new information is very easy to integrate into the analysis. New reservoir data, new analogs, new commercial assumptions—just rerun the model. It will only take 10 seconds.
And once a set of development concepts have been high-graded, if data permits they can be taken through the traditional static-to-dynamic simulation modeling workflow for cross-checks.
Future Plans
Resgo is currently a backend tool that I use as a consultant. It is not yet a sellable product. It may become one eventually, but for now I am focused on data platform offerings ahead of specialized analytical tools.
That being said, it integrates very well with a good data system, and my intention for deployments would be to utilize a GIS database and geostatistical modeling to infer appropriate distributions for properties using well offsets where available. Databasin and Resgo fit together very nicely from that perspective.
But prospect evaluation occurs in many different contexts, and often in very information-sparse ones. Flexibility is key, so Resgo sits comfortably on its own, rolled out when I need it.
If you are looking for technical analysis of oil and gas developments, or have experience in this area and feedback to share, don’t hesitate to reach out.
Thanks for reading!