A Python toolkit for crude oil futures quantitative analysis — term structure modeling, Monte Carlo simulation, Value-at-Risk (VaR), and statistical arbitrage signals.
Built for the ICE Brent & NYMEX WTI crude oil futures markets.
| Module | Capability |
|---|---|
| Term Structure | Build & visualize futures curves, detect backwardation/contango regime shifts |
| Monte Carlo Simulation | GBM and Ornstein-Uhlenbeck price path simulation for scenario analysis |
| Value at Risk | Historical, parametric (variance-covariance), and Monte Carlo VaR with multiple confidence levels |
| Statistical Modeling | Cointegration tests, rolling correlation, volatility clustering (EWMA/GARCH-style) |
| Spread Signals | Calendar spread momentum, crack spread ratio analysis, basis trading signals |
# Clone the repo
git clone https://github.com/zack59309-maker/quantoil.git
cd quantoil
# Install dependencies
pip install -r requirements.txt
# Or install as a package (if pyproject.toml is present)
pip install -e .from quantoil import term_structure
# Load futures price data (columns: contract_month, settlement_price)
curve = term_structure.build_curve(prices_df)
term_structure.plot_curve(curve, title="ICE Brent Forward Curve")
# Detect market regime
regime = term_structure.detect_regime(curve)
print(f"Market regime: {regime}") # "Contango" or "Backwardation"from quantoil import var_model
# Calculate 95% VaR using historical method
var_95 = var_model.calculate_var(returns, confidence=0.95, method="historical")
print(f"95% VaR (1-day): {var_95:.2%}")
# Monte Carlo VaR
mc_var = var_model.calculate_var(returns, confidence=0.99, method="mc", n_simulations=10000)from quantoil import mc_simulation
# Simulate 1,000 price paths over 252 trading days
paths = mc_simulation.simulate_gbm(
S0=75.0, mu=0.05, sigma=0.25,
T=252, n_paths=1000
)
mc_simulation.plot_paths(paths)quantoil/
├── quantoil/
│ ├── __init__.py
│ ├── term_structure.py # Futures curve construction & regime detection
│ ├── mc_simulation.py # Monte Carlo price path simulation
│ ├── var_model.py # Value-at-Risk computation
│ ├── statistical.py # Cointegration, correlation, volatility
│ └── spread.py # Spread trading signal generation
├── examples/
│ └── basic_analysis.ipynb
├── tests/
├── requirements.txt
├── LICENSE
└── README.md
numpy— numerical computingpandas— data manipulationscipy— statistical functions & optimizationmatplotlib— visualizationstatsmodels— time series & statistical tests
MIT © 2024 Zack (zack59309-maker)
This software is for educational and research purposes only. It does not constitute financial advice. Use at your own risk.