Skip to main content

Decline Curve Analysis: A comprehensive Python library for decline curve analysis with multi-phase forecasting, data utilities, and ML models

Project description

Decline Curve Analysis

A Python library for forecasting oil and gas production using traditional decline models and modern machine learning.

What this is

Decline curve analysis is essential for petroleum engineers, reservoir analysts, and energy economists who need to predict future production from oil and gas wells. This library provides both classical Arps decline models and state-of-the-art forecasting methods in a single, easy-to-use package.

The library helps you forecast production rates, estimate reserves, and evaluate economic performance. It supports exponential, harmonic, and hyperbolic decline curves, plus machine learning models like ARIMA, Chronos, and TimesFM for more complex patterns. Monte Carlo simulation provides probabilistic forecasts with P10/P50/P90 ranges for risk assessment.

Whether you're analyzing a single well or benchmarking hundreds across a field, the library handles data processing, model fitting, and visualization automatically. It's designed for both quick analyses and production workflows that need reproducibility and uncertainty quantification.

Highlights

The library combines traditional petroleum engineering methods with modern forecasting techniques, providing probabilistic forecasts, economic analysis, and batch processing capabilities. It uses Numba JIT compilation and parallel processing for fast execution on large datasets, making it practical for field-wide analysis and sensitivity studies.

Quick start

pip install decline-curve
import pandas as pd
import numpy as np
from decline_curve import dca

# Create sample production data
dates = pd.date_range('2020-01-01', periods=24, freq='MS')
production = 1000 * np.exp(-0.05 * np.arange(24))
series = pd.Series(production, index=dates, name='oil_bbl')

# Generate forecast
forecast = dca.forecast(series, model='arps', kind='hyperbolic', horizon=12)
dca fit production.csv --well WELL_001 --model arps

Examples

See examples/01_basic_dca_analysis.ipynb for a complete workflow and examples/02_economic_evaluation.ipynb for economic analysis.

Project status

The library is in active development with core functionality stable. Current focus is on expanding machine learning model support and improving uncertainty quantification methods.

Roadmap

We're adding support for more foundation models and ensemble forecasting methods. Data quality tools and automated segmentation are being enhanced. The batch processing pipeline is being optimized for larger field datasets.

Contributing

We welcome contributions. Please see CONTRIBUTING.md for guidelines.

License

Licensed under the Apache License 2.0. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

decline_curve-0.2.0.tar.gz (188.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

decline_curve-0.2.0-py3-none-any.whl (154.2 kB view details)

Uploaded Python 3

File details

Details for the file decline_curve-0.2.0.tar.gz.

File metadata

  • Download URL: decline_curve-0.2.0.tar.gz
  • Upload date:
  • Size: 188.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for decline_curve-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7e16550dea04b1aae9520909e9950498b2117b9a7ac7a0869ceaa636b46dd5a0
MD5 0a0e43ca060e0c4f56fffee5d55a660f
BLAKE2b-256 20c64c2e23a362c56c1b45e01fd6192c6e77441c0758b6cb188d9afbdf4e6486

See more details on using hashes here.

Provenance

The following attestation bundles were made for decline_curve-0.2.0.tar.gz:

Publisher: workflow.yml on kylejones200/pydca

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file decline_curve-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: decline_curve-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 154.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for decline_curve-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0fbd6d4f4b90629481bca0391a6c12807ed8a0922ad2b6175ca22be35a334ded
MD5 27771c6cbc0bf44473b7cfdb176a3831
BLAKE2b-256 162f2c9f283de612621b41aca74d53b3029518c4ace07a7f62b96c05302c5603

See more details on using hashes here.

Provenance

The following attestation bundles were made for decline_curve-0.2.0-py3-none-any.whl:

Publisher: workflow.yml on kylejones200/pydca

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page