Inspiration
The motivation behind this project was the need for a more robust and realistic production forecasting tool in petroleum engineering. Traditional Decline Curve Analysis (DCA) is widely used, but it often overlooks parameter uncertainty, price variability, and different production phases. We wanted to combine the simplicity of Arps models with modern computational methods—such as Monte Carlo simulations and two-segment modeling—to create a tool that provides probabilistic forecasts rather than single deterministic curves.
What it does
This application allows users to:
Perform Arps-based decline curve analysis (exponential, harmonic, hyperbolic).
Generate probabilistic forecasts using Monte Carlo sampling of model parameters and price scenarios.
Account for multiple production phases with two-segment Monte Carlo simulation.
Visualize production decline, forecast intervals, and Net Present Value (NPV) distributions.
Interactively explore results through a Streamlit dashboard connected to Excel or CSV production data.
How we built it
Core models: Implemented in Python, using Arps’ decline equations with options for exponential, hyperbolic, and harmonic forms.
Simulation engine: Monte Carlo sampling for production parameters (Qi, Di, b) and stochastic price paths.
Data handling: Pandas and NumPy for managing time-series production data.
Visualization: Matplotlib and Plotly for clear, interactive plots of decline curves, uncertainty bands, and economics.
Frontend: Built with Streamlit for a clean, user-friendly web interface.
Deployment: Hosted via Streamlit Cloud with all dependencies managed through requirements.txt.
Challenges we ran into
Ensuring continuity between forecast segments (avoiding artificial jumps in rate).
Designing a flexible simulation framework that supports both single-segment and two-segment forecasts.
Handling uncertainty in economic inputs (e.g., stochastic price paths) while keeping computations efficient.
Deployment issues on Streamlit Cloud, mainly around package dependencies like Matplotlib and OpenPyXL.
Accomplishments that we're proud of
Developed a probabilistic forecasting approach that is both accessible and technically rigorous.
Successfully integrated production, price, and economic modeling into a single streamlined tool.
Created a user interface that allows non-programmers to run advanced DCA workflows.
Deployed the app publicly so others in academia and industry can experiment with it.
What we learned
How to combine classic reservoir engineering methods with modern computational techniques.
The importance of uncertainty quantification in production forecasting.
How to design modular Python code that supports both deterministic and probabilistic simulations.
Best practices for deploying Streamlit apps and managing Python dependencies for reproducibility.
What's next for Probabilistic Decline Curve Analysis
Extend to multi-well and field-level analysis with allocation methods.
Add Bayesian parameter estimation for decline parameters to better capture uncertainty.
Incorporate machine learning models as complements to traditional Arps models.
Develop more advanced economic modules, including operating costs and fiscal regimes.
Expand deployment options beyond Streamlit Cloud, enabling enterprise use with Docker and cloud platforms.

Log in or sign up for Devpost to join the conversation.