Part II: Petroleum Data Engineering
Chapter 9
Production Decline Curve Analysis
Get the TL;DR and the key concepts before you dive in — or as a quick review after.
Why This Chapter Exists
Every well ever drilled will eventually stop producing. The question is not if production will decline, but how fast, by how much, and how much oil or gas remains to be recovered. These questions drive some of the largest financial decisions in the industry: whether to drill additional wells, when to invest in artificial lift, how to value an asset for acquisition, and when to abandon a field.
Decline Curve Analysis (DCA) is the primary tool for answering these questions. It fits mathematical models to a well's production history and extrapolates into the future. The method is deceptively simple (you are fitting a curve to data points), but the engineering judgment required to do it well is substantial. A poorly chosen model or a careless fit can overestimate reserves by millions of barrels, leading to investment decisions that destroy value.
This chapter teaches you to do DCA properly: understanding the physics behind each model, fitting them rigorously with Python, quantifying uncertainty, and knowing when each model applies and when it breaks down.
infoWhat You'll Learn
- The physical basis for production decline in oil and gas wells
- Arps' three decline models: exponential, hyperbolic, and harmonic
- Fitting decline parameters to production data using
scipy.optimize - Calculating Estimated Ultimate Recovery (EUR) and remaining reserves
- Modified Hyperbolic and Duong models for unconventional wells
- Probabilistic DCA: generating P10, P50, and P90 forecasts
- Automating DCA across a portfolio of wells
The Physics of Decline
Before touching any equations, you need to understand why production declines in the first place.
When a well first begins producing, the reservoir pressure near the wellbore is high. Hydrocarbons flow toward the well driven by the pressure difference between the reservoir and the wellbore. Over time, as fluid is withdrawn, the pressure around the well drops. The driving force weakens. Flow rates decrease.
How quickly this happens depends on several factors:
- Reservoir permeability: how easily fluid moves through the rock. High-permeability reservoirs deliver fluid quickly but can also deplete quickly.
- Drive mechanism: whether the reservoir has natural energy support (water drive, gas cap expansion) or relies solely on fluid expansion.
- Well completion: the number and placement of perforations, the length of the horizontal section, whether hydraulic fracturing was performed.
- Fluid properties: gas wells decline differently from oil wells because gas is compressible and its flow behavior changes with pressure.
These physical factors determine the shape of the decline curve. Arps' empirical models capture that shape mathematically.
Arps' Decline Models
Almost every reserves estimate in the industry traces back to one 1945 framework. J.J. Arps defined decline through the loss ratio, the reciprocal of the fractional decline rate, and showed that three production-decline models fall out of how that ratio changes over time.
The Loss Ratio
The instantaneous decline rate is defined as:
This is the fractional rate of change of production. If a well produces 1,000 bbl/d today and loses 10 bbl/d per day, per day. That is a nominal (instantaneous) rate; compounded over a year it gives an effective annual decline of , not 365%. Keeping nominal and effective rates straight matters the moment you annualize.
What matters is how changes over time:
- If is constant, so the loss ratio never changes, you get exponential decline ().
- If the loss ratio increases linearly with time (equivalently, falls off as ), you get hyperbolic decline ().
- Harmonic decline is the special case : still rises linearly, at the largest Arps exponent.
Exponential Decline ($b = 0$)
The simplest case. The production rate decays as:
where is the initial rate and is the constant decline rate.
This model applies when the reservoir is in boundary-dominated flow with a strong drive mechanism, typically a well producing under constant bottomhole pressure from a closed reservoir with good permeability. In practice, pure exponential decline is uncommon in the early life of a well but is often a reasonable assumption for mature wells in late-stage depletion.
The EUR (Estimated Ultimate Recovery) for exponential decline has a clean closed-form solution. Integrating the rate from the initial rate down to the economic abandonment rate gives:
In the idealized limit of producing all the way to zero rate (), this reduces to the familiar . Either way, the initial rate and the decline rate are almost all you need.
Hyperbolic Decline ($0 < b < 1$)
Most real wells follow hyperbolic decline, where the decline rate itself slows over time:
The parameter controls the curvature. When , the equation reduces to exponential. When , it becomes harmonic. Values between 0 and 1 produce curves that decline steeply at first, then flatten.
The physical interpretation: early in a well's life, the near-wellbore region depletes rapidly, causing steep decline. As the drainage area expands, the decline slows because the well is drawing from a larger volume of rock.
The EUR for hyperbolic decline is:
where is the abandonment rate, the rate below which the well is no longer economic to operate.
warningThe $b > 1$ Problem
When , the EUR integral diverges; it predicts infinite recovery. This is physically impossible. If your curve fit returns , something is wrong: the well may still be in transient flow, the data may contain artifacts, or the hyperbolic model may not be appropriate. This is one of the most common mistakes in DCA.
Harmonic Decline ($b = 1$)
A special case where:
Harmonic decline produces the slowest rate of decline among Arps' models. It is occasionally observed in heavy oil reservoirs with strong water drive, where the displacement process maintains relatively high reservoir pressure.
Fitting Decline Curves in Python
A model is only as good as the parameters you fit to it. The next step turns Arps' equations into Python functions whose qi, Di, and b you can estimate directly from a well's production history.
These three functions are the core of every DCA analysis. Each takes time as input and returns the predicted production rate. The parameters (, , and optionally ) are what we need to estimate from data.
Loading and Preparing Production Data
Production data in the real world arrives as monthly or daily records, often with gaps, unit inconsistencies, and noise. Before fitting any model, the data must be cleaned.
The cleaning step is critical. Shut-in periods, equipment failures, and well interventions create zeros or anomalous values that distort curve fits. Removing them is not "cheating"; it is separating operational events from reservoir behavior.
Fitting the Models
Now we fit each of the three Arps models to the cleaned data and compare their quality of fit.
The RMSE (Root Mean Square Error) tells you how well each model reproduces the observed data. Lower is better. But RMSE alone is not sufficient for model selection: a model can fit historical data well and still produce unreasonable forecasts. Engineering judgment matters.
Visualizing the Fits

The semi-log plot is standard practice in DCA. On a semi-log scale, exponential decline appears as a straight line. Deviation from a straight line indicates hyperbolic or harmonic behavior. This visual check is one of the fastest ways to identify the appropriate model.
Calculating EUR and Remaining Reserves
Get the reserves estimate wrong and every downstream decision (well count, abandonment timing, asset value) inherits the error. EUR (Estimated Ultimate Recovery), the total volume of oil or gas a well will produce over its entire economic life, is the deliverable DCA exists to produce.
The spread between model estimates is important. A narrow spread means all models agree, and you can report EUR with reasonable confidence. A wide spread means the data does not clearly distinguish between decline behaviors, and you need either more production history or additional engineering judgment to select the appropriate model.
warningEUR Is Not Reserves
EUR is a technical estimate of total recoverable volume under current operating conditions. Proved reserves (1P), probable reserves (2P), and possible reserves (3P) are formal classifications defined by the SPE Petroleum Resources Management System (PRMS) and involve additional considerations including economics, regulatory approval, and development plans. DCA informs reserves estimation but does not replace it.
Modified Hyperbolic Decline for Unconventional Wells
Earlier we flagged as the red flag that makes the hyperbolic EUR diverge to infinity. Unconventional wells are where that actually bites: horizontal wells with multi-stage hydraulic fractures in shale or tight rock routinely show during early transient flow. They obviously hold finite reserves, so the model needs a fix, not a discard.
The Modified Hyperbolic (also called the Robertson method) addresses this by switching from hyperbolic decline to exponential decline at a specified minimum decline rate :
The switch point occurs when the instantaneous decline rate of the hyperbolic model drops to . After that, the well declines exponentially at a constant rate.
Probabilistic DCA: P10, P50, P90
A single best-fit curve gives a single EUR estimate. But all curve fits carry uncertainty: the data has noise, the model is an approximation, and the future is unknown. Reporting a single number without quantifying uncertainty is misleading.
Probabilistic DCA generates a distribution of possible outcomes. The industry standard is to report three percentiles:
- P90: the conservative estimate. There is a 90% probability that actual recovery will exceed this value.
- P50: the most likely estimate. Equal probability of exceeding or falling short.
- P10: the optimistic estimate. Only a 10% probability of exceeding this value.

The shaded region between P10 and P90 represents the range of plausible outcomes. A narrow band means the forecast is confident. A wide band means more data or additional engineering analysis is needed before committing capital.
Multi-Well DCA Automation
In practice, you rarely analyze a single well. A field evaluation requires DCA for every producing well, often dozens or hundreds, and a reserves booking has to be reproducible months later when an auditor asks how you got the number. That is the case for fitting them in a loop rather than by hand.
Each well gets a rigorous fit, quality metrics, and reserves estimates. The results are in a single table ready for reporting or further analysis.
Summary
- Production decline is caused by reservoir pressure depletion as fluids are withdrawn. The rate and shape of decline depend on reservoir properties, drive mechanism, and well completion.
- Arps' framework defines three models based on how the decline rate changes over time: exponential (), hyperbolic (), and harmonic ().
- Exponential decline assumes a constant decline rate. It is the simplest model and applies best to mature wells in boundary-dominated flow. EUR = .
- Hyperbolic decline is the most commonly used model. The decline rate itself decreases over time, producing a curve that flattens. The -factor controls the curvature.
- EUR is calculated by integrating the decline curve to an economic abandonment rate. Different models can produce significantly different EUR estimates from the same data.
- Modified Hyperbolic addresses the problem of in unconventional wells by switching to exponential decline at a minimum decline rate.
- Probabilistic DCA quantifies uncertainty by generating P10, P50, and P90 forecasts using bootstrap resampling. Single-point estimates without uncertainty ranges are incomplete.
- Multi-well automation scales DCA from one well at a time to a whole portfolio in a single, repeatable run.
Exercises
: Exponential vs. Hyperbolic
A well has the following monthly production data (bbl/d): 1800, 1650, 1520, 1400, 1295, 1200, 1110, 1030, 958, 892, 832, 778. Fit both exponential and...
: The b-Factor
Using the well data from Exercise 9.1, what is the fitted bbb-factor? What does its value tell you about the decline behavior? Research: what range of...
: Sensitivity to Data Length
Take the 60-month synthetic dataset from this chapter. Fit a hyperbolic model using only the first 12 months, then 24, then 36, then all 60. How do th...
: Abandonment Rate Sensitivity
Using the hyperbolic fit from this chapter, calculate EUR for abandonment rates of 5, 10, 20, 50, and 100 bbl/d. Plot EUR vs. abandonment rate. Why do...
: Modified Hyperbolic Implementation
A shale gas well has b=1.4b = 1.4b=1.4 from a standard hyperbolic fit. Implement the Modified Hyperbolic model with DminD_{min}Dmin values of 0.3%, 0...
: Rate-Cumulative Plot
An alternative to rate-time analysis is the rate-cumulative plot, where you plot rate (qqq) on the y-axis and cumulative production (NpN_pNp) on the ...
: Detecting a Change in Decline
Take the 60-month synthetic dataset and modify it: after month 36, increase the decline rate by 50% (simulating water breakthrough or mechanical failu...
: Portfolio Analysis
Generate synthetic production data for 20 wells with varied parameters. Run the auto_dca() function on all of them. Create a summary report that inclu...
: Comparing DCA to Volumetric Estimates
Volumetric OOIP is calculated as N=7758×A×h×ϕ×(1−Sw)BoN = \frac{7758 \times A \times h \times \phi \times (1 - S_w)}{B_o}N=Bo7758×A×h×ϕ×(1−Sw). For...
: Real Data Challenge
Download production data for a real well from a public database (the North Dakota Industrial Commission publishes monthly production for every well in...