Saturday, September 8, 2012

Rolling The Dice in the Shale Plays

Encore post... Original date August 24, 2010
[Note: A version of this blog entry appears in World Oil (August, 2010)]

Shale gas is constantly in the news these days, including this column (May 2010). Anyone reading the flow of articles and analyses on domestic shale gas is struck by the wide range of reserve estimates and uncertainty in those estimates.

This brings up the general topic of estimating reserves, a subject intimately familiar to many World Oil readers. Like so many prediction methods, reserve estimations become tighter, more reliable, as ground truth is added to the analysis. We can expect that with additional drilling results, seismic imaging, and production information the reserve estimate for, say, a single gas field will become more accurate over time. But at the level of shale gas plays we find ourselves in vast areas and early days of drilling and production information. So how can we possibly come up with reserve estimates?

There are two fundamentally different ways. The first approach, 'bottom-up', involves estimating the areal extent of gas-rich shale, along with thickness, porosity, water saturation, recovery factor, and more. Mind you, for a regional shale play like the Haynesville, this would need to be done over an area of 6000 square miles sprawling across the Texas/Louisiana border. The second approach, 'top-down', cares little for geological details, but is more interested in how many wells are likely to be drilled, at what cost, and the per well estimated ultimate recovery (EUR).

We will look at the second method, because it naturally leads to a computation method used in broad areas of science, technology, and finance. Let's use the Haynesville Shale (HS) play as our example.

Shale gas plays are driven by energetic, growing companies. The kind of information we need is likely not to be in dusty academic journals, but the latest presentation material prepared for potential investors. Choose your favorite company, go to their Web site, and look up 'investor relations'. You will find a mountain of information, especially by studying several companies.

To get started, we need to know how many total wells are likely to be drilled in the HS play. Based on published maps, the 200-ft thickness contour seems to appropriately outline the play. This area is about 4300 square miles and company information indicates average HS well spacing is 100 acres. Allowing for spacing inefficiency (1/3 of potential sites), we arrive at a potential for 9000 total wells. As of mid-2010 about 860 have been drilled. The EUR per well is generally estimated at 4-12 BCF, although this is projected from, at most, two years production (the HS discovery well was only drilled in March 2008).

So how do we make a reserve estimate? First, guess a total well count between 1000-9000 and an EUR per well between 4-12 BCF. If we guess, say, 4200 wells with an average EUR of 7 BCF, the reserve estimate would be 4200 * 7 = 29400 BCF or 29.4 TCF. It may happen that this result is correct (lucky us!), but that is highly unlikely. The future could turn out vastly different. In the real world only one future will play out. But in the computer we can test all reasonable scenarios, and results that occur many times are more likely to happen in the real world. In scientific circles this is called Monte Carlo Simulation.

It works like this. We repeat the procedure described above many times, using a random number generator in each calculation to guess the number of wells and EUR per well, while honoring the limits on those quantities. Do this, say, one hundred thousand times, make a histogram, and you will have Figure 1. Since we have a histogram, we pull off the standard P10, P50, and P90 probabilities also shown in the figure. For example, P10 says 10% of the scenarios have reserves less than 13 TCF, a long shot bet on the low end. Equally far fetched on the high end, P90 means only 10% of the outcomes yield reserves above 73 TCF. To get this result in the real world, both the number of wells drilled and EUR per well would have to be near the upper limits. The most likely result, P50, is 36 TCF. Note, however, this histogram has a plateau between 12-36 TCF, meaning these outcomes are almost equally likely.

The powerful thing about MCS, once you figure it out, is how easily it extends to problems of daunting complexity. For example, you might want to estimate the money side of things rather than reserves, requiring ranges in well cost and gas price. HS wells are deep, high-tech horizontals that cost $6-12 million. As we are all painfully aware, the US domestic gas price is highly variable. For the sake of argument, let's assume that over the life of the HS play (2008-2030?) the average will likely be in the range of 2-20 $/MCF.

Now the procedure goes like this: guess... 1) a number of wells, 2) an EUR/well, 3) a well cost, 4) a gas price, where items 2-4 are average values over the life of the play. Now repeat 100K times to get a histogram for the dollar value of the Haynesville Shale gas play net after drill costs (Figure 2). P50 tells us the Haynesville is likely a $300 billion shale gas play. A curious feature of this plot is that some cases give a negative value. Is this possible? Sure, all we need is for gas prices to collapse and drilling costs to skyrocket. But then who would drill the 9000 wells to realize this future?

Of course, once we are talking about money a lot of complexity creeps in, time value of money, cash flow, royalties, tax burden, rate of return targets, and so on. But with a little free time, I think someone could work that into a nice Monte Carlo simulation.


Figure 1. Monte Carlo estimate of Haynesville Shale gas play reserves.

Figure 2. Monte Carlo estimate of Haynesville Shale gas play net after drilling costs.

Further Reading:

A quick survey of shale gas technology can be found in the World Oil column What's New in Exploration (May 2010) or at this blog entry.

For a discussion of uncertainty in shale gas reserves, see
April 2010 AAPG Explorer (p. 28).

For Haynesville shale reserve estimates, see
EOG investor relations presentation for June 2010 (slide 13). The TS/LA 200 ft contour was used to estimate play area at 4300 sq miles.

A similar 'hot spot' outline can be found in PetroHawk investor info (link expired). The red area on slide 11 is more or less coincident with EOG's 200 ft Haynesville shale contour.

Announcement of the Haynesville shale discovery well (Mar 24, 2008) can be found here.

A discussion and graph of US natural gas prices 1989-2007 can be found at this Houston Geological Society site

Mathematica 7.0 code for Figures

Code for Figure 1:
Nsim = 100000;  (* number of simulation runs *)
Nwell1 = 1000; (* min number of wells *)
Nwell2 = 9000; (* max number of wells *)
rmin = 4; (* min res estimage per well (bcf) *)
rmax = 12;(* max res estimage per well (bcf) *)
(* do simulations *)
r = Table[
   RandomInteger[{Nwell1, Nwell2}] RandomReal[{rmin, rmax}] /1000,
   {Nsim}
   ];
(* make histogram plot *)
Histogram[r,
 Frame -> True,
 GridLines -> Automatic,
 Axes -> False,
 ImageSize -> 450,
 PlotLabel ->
  "Haynesville Play Reserves\nMonte Carlo Simulation (" <> ToString[Nsim] <>
   " trials)\n",
 FrameLabel -> {"TCF", "Count"}]
(* Print P10, etc. *)
Print["Haynesville Play Reserves (TCF): \n\n",
 "P10              P50               P90    \n",
 "", Quantile[r, .1]  ,
 "          ", Quantile[r, .5]  ,
 "          ", Quantile[r, .9]
 ]

Code for Figure 2:
Nsim = 100000;  (* number of simulation runs *)
Nwell1 = 1000; (* min number of wells *)
Nwell2 = 9000; (* max number of wells *)
rmin = 4; (* min res estimate per well (bcf) *)
rmax = 12;(* max res estimage per well (bcf) *)
cmin = 6;  (* min well cost ($ million)*)
cmax = 12; (* max well cost ($ million)*)
gmin = 2; (* min gas price ($/MCF) *)
gmax = 20; (* max gas price ($/MCF) *)
(* do simulations *)
r = Table[
   RandomInteger[{Nwell1, Nwell2}]*
    (
      RandomReal[{rmin, rmax}] (10^6) RandomReal[{gmin, gmax}] -
       RandomReal[{cmin, cmax}] 10^6
      )/10^9 ,
   {Nsim}
   ];
(* make histogram plot *)
Histogram[r,
 Frame -> True,
 GridLines -> Automatic,
 Axes -> False,
 ImageSize -> 450,
 PlotRange -> All,
 PlotLabel ->
  "Haynesville Play Net After Drill Costs\nMonte Carlo Simulation (" <>
   ToString[Nsim] <> " trials)\n",
 FrameLabel -> {"$Billion", "Count"}]
(* Print P10, etc. *)
Print["Haynesville Play Net After Drill Costs \
($Billion): \n\n",
 "P10              P50             P90  \n",
 "", Quantile[r, .1]  ,
 "          ", Quantile[r, .5]  ,
 "          ", Quantile[r, .9]
 ]