Last time we explained how to build a logistic oil production profile using a Stochastic Bass Model which can be seen as a stochastic equivalent of the logistic curve used by peakoilers. This post is an attempt to apply this stochastic model so as to literally "track" the production curve and then project future production for the coming years. An interesting framework within which this goal can be achieved is called the particle filtering technique. Particle filtering can be seen as a generalization of the Kalman filter and is sometimes encountered under various names such as the bootstrap filter, the condensation method, the Bayesian filter or the sequential Monte-Carlo Markov Chain (MCMC). These techniques have been very sucessful in many applications such as the visual tracking of targets.

Particle filtering is quite a complex technique and there is a fairly large body of literature on it. I don't wish to flood this post with equations rather try to provide some intuitive insights. In order to explain the particle filtering, I will use the following simple analogy:

Imagine that you are in a totally dark room looking for a wall switch for the lights. The best way to find it is to randomly sample the walls with your hands in order to find an object that has a similar feeling under the touch. Of course, you have some prior knowledge on where to find the switch, its shape and your trajectory will probably evolve along the walls.

Well, particle filtering is exactly the same. The equivalent of the particles are the random sampling of the wall with your hands around your current position. The information you are getting with your hands is the equivalent of the particles' importance weights.

Now, let's look at some equations. Each particle will be an hypothetical oil production profile evolving according to a stochastic Bass model (SBM):

Note that only the SBM growth rate (or adoption rate) will be a random variable. We also need to discretize the production growth so that it can only grow by a fix amount of oil (ex 0.1 Gb/year).

The particle filtering is an iterative procedure where each iteration is composed of the following four steps:

The weighting step consists in assigning an importance weight to each particle according to their fit compared to the observed data:

where Prod(t) is the observed production at time t. One hurdle is how to extend the tracking for future production where there is no data available. For now, we simply replace the particle weights by an uniform weight which is equivalent to simulate a stochastic Bass model.

The resampling step consists in redistributing in place the initial set of particles according to their weight so that particles with bigger weights will be eventually duplicated. Once the particles have been resampled, we can estimate the mean state using a Monte-Carlo approach:

The two figures below give an example of curve tracking on the US production using N=1,000 particles (alpha=5e-5, m= 223 Gb). Because the growth rate is the only stochastic parameter it has to fluctuate widely in order to follow closely the oberved curve variations.

In summary, we are proposing to use a sequential Monte-Carlo Markov Chain for the modeling of the oil production.

There are many improvements possible in particular around the design of the proposal distribution and the choice of the priors for the URR and the growth rate.

For a good overview on particle filtering techniques:

M. Sanjeev Arulampalam, Simon Maskell, Neil Gordon, and Tim Clapp, A Tutorial on Particle Filters for Online Nonlinear/Non-Gaussian Bayesian Tracking, IEEE TRANSACTIONS ON SIGNAL PROCESSING, VOL. 50, NO. 2, FEBRUARY 2002.

Well, particle filtering is exactly the same. The equivalent of the particles are the random sampling of the wall with your hands around your current position. The information you are getting with your hands is the equivalent of the particles' importance weights.

Now, let's look at some equations. Each particle will be an hypothetical oil production profile evolving according to a stochastic Bass model (SBM):

Note that only the SBM growth rate (or adoption rate) will be a random variable. We also need to discretize the production growth so that it can only grow by a fix amount of oil (ex 0.1 Gb/year).

The particle filtering is an iterative procedure where each iteration is composed of the following four steps:

- Sampling step: we randomly choose N candidate particles from a proposal distribution (i.e. I choose random positions on the wall where to put my hands)
- Reweighting step: we weight each particle with an importance weight (i.e. do I feel something under my hands?)
- Resampling step: this step is optional but gives better results and avoid degeneracy of the particles.
- Filtering step: we finally compute a mean state based on the new particle set (Monte-Carlo integration)

The weighting step consists in assigning an importance weight to each particle according to their fit compared to the observed data:

where Prod(t) is the observed production at time t. One hurdle is how to extend the tracking for future production where there is no data available. For now, we simply replace the particle weights by an uniform weight which is equivalent to simulate a stochastic Bass model.

The resampling step consists in redistributing in place the initial set of particles according to their weight so that particles with bigger weights will be eventually duplicated. Once the particles have been resampled, we can estimate the mean state using a Monte-Carlo approach:

The two figures below give an example of curve tracking on the US production using N=1,000 particles (alpha=5e-5, m= 223 Gb). Because the growth rate is the only stochastic parameter it has to fluctuate widely in order to follow closely the oberved curve variations.

Fig. 1 Proposed method applied to the US production (EIA data) where the dark dots are the actual data, the thick orange line is the mean state of the particles and the two blue lines delineate the one sigma of the various particles' positions.

Fig. 2 The growth rate beta_t is the only parameter of the particles which is stochastic and reflects how particles have to accelerate production growth in order to match the data. Production seemed to have grown faster in the 50s. After 2005, we have no data so the growth rate stays around its mean value.

In summary, we are proposing to use a sequential Monte-Carlo Markov Chain for the modeling of the oil production.

- The algorithm allows for a dynamic adaptation of the production parameters (growth rate and URR) instead of a static and global view of the parameters as in traditional curve fitting.
- production shocks can be modeled.
- the underlying Markov process is still based on a logistic model but a stochastic one.

There are many improvements possible in particular around the design of the proposal distribution and the choice of the priors for the URR and the growth rate.

For a good overview on particle filtering techniques:

M. Sanjeev Arulampalam, Simon Maskell, Neil Gordon, and Tim Clapp, A Tutorial on Particle Filters for Online Nonlinear/Non-Gaussian Bayesian Tracking, IEEE TRANSACTIONS ON SIGNAL PROCESSING, VOL. 50, NO. 2, FEBRUARY 2002.

peak+oil bass+model US particle+filtering oil+production