Advanced time-series analytics and forecasting toolkit for commodity and power trading
Project description
Analysis3054
Analysis3054 is a Python toolkit for time-series forecasting, market calendar logic, statistical diagnostics, and API-backed data ingestion.
This README is intentionally package-function focused. It documents what is implemented in the Python modules in this repository, with practical usage examples.
Install
python -m venv .venv
source .venv/bin/activate
pip install -e .
Python requirement: >=3.10.
Module Guide
Forecasting (analysis3054/forecasting.py)
This module contains broad forecasting coverage, including:
- Classical:
arima_forecast,sarimax_forecast,ets_forecast,var_forecast,vecm_forecast,theta_forecast - Volatility/regime:
garch_forecast,markov_switching_forecast,dynamic_factor_forecast,unobserved_components_forecast - ML/DL methods:
xgboost_forecast,lightgbm_forecast,catboost_forecast,svr_forecast,lstm_forecast,tcn_forecast,transformer_forecast,neuralprophet_forecast - Chronos/TimeFM family:
chronos2_forecast,chronos2_univariate_forecast,chronos2_multivariate_forecast,chronos2_covariate_forecast,chronos_bolt_forecast,timesfm_forecast - Quantile/anomaly/imputation utilities for Chronos models
- Intraday and demand-focused helpers (burn-day and covariate workflows)
Most functions return typed result objects (*ForecastResult) with forecast outputs and model metadata.
Auto-ML Forecasting (analysis3054/auto_ml_forecasting.py)
Feature generation and model-oriented forecast utilities, including:
auto_generate_featuresbayesian_ridge_covariate_forecastelastic_net_covariate_forecastlightgbm_covariate_forecastxgboost_covariate_forecaststacked_meta_ensemble_forecastchronos2_auto_covariate_forecast
Forecast Engine (analysis3054/forecast_engine.py)
Composable engine API:
ForecastEnginebuild_default_engineEngineForecastResult
Useful when standardizing forecast pipelines across datasets.
Current engine capabilities include:
- model registry introspection (
available_models,model_registry) - custom backend registration (
register_model) - sklearn-style estimator registration (
register_estimator) - covariate horizon propagation with automatic future-covariate synthesis
- standardized result fields (
training_time_seconds,hyperparameters,diagnostics)
Capability Map
flowchart LR
A[analysis3054] --> B[Forecasting APIs]
A --> C[Forecast Engine]
A --> D[Stats + Diagnostics]
A --> E[Holiday Calendars]
A --> F[Utilities]
A --> G[DTN API + CSV Updaters]
B --> B1[Classical + ML + DL + Chronos/TimeFM]
C --> C1[Model Registry + Covariate Horizon + Diagnostics]
D --> D1[ADF + Ljung-Box + ACF/PACF + PCA]
G --> G1[PADD Daily + Rack Daily]
G1 --> G2[Full Backfill]
G1 --> G3[Rolling 14-Day Repull]
Forecasting Capability Chart
| Capability Area | Coverage | Representative APIs |
|---|---|---|
| Classical statistical forecasting | █████ |
arima_forecast, sarimax_forecast, ets_forecast, var_forecast, vecm_forecast, theta_forecast |
| Machine learning forecasting | █████ |
xgboost_forecast, lightgbm_forecast, catboost_forecast, svr_forecast, knn_forecast |
| Deep learning forecasting | ████ |
lstm_forecast, tcn_forecast, transformer_forecast, neuralprophet_forecast |
| Foundation model forecasting | █████ |
chronos2_forecast, chronos_bolt_forecast, timesfm_forecast |
| Quantile / probabilistic outputs | █████ |
chronos2_quantile_forecast, chronos_bolt_quantile_forecast, interval-ready model results |
| Covariate-driven forecasting | █████ |
chronos2_covariate_forecast, *_covariate_forecast in auto_ml_forecasting.py |
| Feature-engineering automation | ████ |
auto_generate_features, chronos2_feature_generator |
| Intraday / demand workflows | ████ |
intraday_* and burn-focused forecast helpers in forecasting.py |
Quick interpretation:
█████= mature and broad API coverage in this package.████= strong, but narrower than top-tier categories.
Calendar & Holiday APIs
analysis3054/holiday_calendars.pyavailable_holiday_calendarsget_holidaysget_holidays_between
analysis3054/holiday_lookup.pyis_holidayis_financial_holidayis_platts_holidayresolve_iso_codeget_market_code
Time-Series Utilities (analysis3054/utils.py)
Common data engineering helpers:
- Merge/coalesce:
conditional_column_merge,conditional_row_merge,nearest_key_merge,coalesce_merge - Time ops:
add_time_features,resample_time_series,rolling_fill,rolling_window_features,add_lag_features - Quality/transforms:
winsorize_columns,scale_columns,data_quality_report - Domain helper:
get_padd
Statistics, Regression, Estimation, Finance, Visualization
analysis3054/stats.py: PCA, cross-correlation, Granger causality, ADF/Ljung-Box diagnostics, ACF/PACF with confidence intervalsanalysis3054/regression.py: OLS regression, rolling correlation, CUSUM testsanalysis3054/estimators.py: Bayesian linear, Gaussian process, load-based estimatorsanalysis3054/finance.py: rolling beta, liquidity-adjusted volatilityanalysis3054/visualization.pyandanalysis3054/plot.py: forecast plots, drawdown, ACF/PACF, EIA-style five-year plotting
Quick Usage
1) Forecast Example
import pandas as pd
from analysis3054 import arima_forecast
series = pd.Series([100, 103, 105, 104, 108], index=pd.date_range("2025-01-01", periods=5, freq="D"))
result = arima_forecast(series, horizon=7)
print(result.forecast)
2) Holiday Lookup Example
from analysis3054 import is_financial_holiday
print(is_financial_holiday("2026-12-25", market="US"))
3) Utility Example
import pandas as pd
from analysis3054 import add_time_features
df = pd.DataFrame({"date": pd.date_range("2026-01-01", periods=3), "value": [1, 2, 3]})
out = add_time_features(df, date_col="date")
print(out.columns)
4) ForecastEngine Example (Covariates + Diagnostics)
import pandas as pd
import numpy as np
from analysis3054 import build_default_engine
df = pd.DataFrame(
{
"date": pd.date_range("2026-01-01", periods=40, freq="D"),
"demand": np.linspace(100, 140, 40) + np.sin(np.linspace(0, 6, 40)),
"temp": np.linspace(30, 45, 40),
}
)
engine = build_default_engine()
res = engine.forecast(
df,
date_col="date",
target_cols=["demand"],
model="harmonic",
horizon=7,
covariate_cols=["temp"],
validation_size=7,
)
print(res.forecasts.head())
print(res.diagnostics)
DTN Refined Fuels Demand Puller (PADD + Rack)
Implementation lives in:
analysis3054/refined_fuels_api.pyanalysis3054/data/kayross/run_dtn_daily.py
Supported behavior
- Full backfill (
full history) - Rolling repull (default
last 14 days, inclusive window) - CSV upsert/merge by endpoint-specific keys
- Same behavior for
padd-dailyandrack-daily
DTN auth options
Use one of:
DTN_API_KEYDTN_ACCESS_TOKEN- OAuth client credentials:
DTN_CLIENT_ID+DTN_CLIENT_SECRET(optionalDTN_AUDIENCE)
Programmatic API
from analysis3054 import RefinedFuelsUSMDClient, update_padd_daily_csv, update_rack_daily_csv
client = RefinedFuelsUSMDClient(api_key="<your_api_key>")
# Rolling update (default 14 days)
padd_df = update_padd_daily_csv(client, "analysis3054/data/kayross/dtn_refined_fuels.csv")
rack_df = update_rack_daily_csv(client, "analysis3054/data/kayross/dtn_refined_fuels_rack.csv")
# One-time full backfill
update_padd_daily_csv(client, "analysis3054/data/kayross/dtn_refined_fuels.csv", full_history=True)
update_rack_daily_csv(client, "analysis3054/data/kayross/dtn_refined_fuels_rack.csv", full_history=True)
CLI: CSV-only daily updater
python analysis3054/data/kayross/run_dtn_daily.py
Full backfill:
python analysis3054/data/kayross/run_dtn_daily.py --full-history
Custom rolling window:
python analysis3054/data/kayross/run_dtn_daily.py --lookback-days 21
Optional filters:
python analysis3054/data/kayross/run_dtn_daily.py \
--dtn-regions 1,2,3 \
--dtn-products Distillates \
--dtn-grades "#2 Diesel" \
--dtn-states TX,LA \
--rack-average N
Windows Task Scheduler (Daily Run)
Use this for automated daily DTN CSV refresh.
- Open Task Scheduler.
- Create a new task (not basic task).
- Trigger: Daily, choose time.
- Action: Start a program.
- Program/script: path to
python.exein your environment, for example:%USERPROFILE%\\Analysis3054-Codex\\.venv\\Scripts\\python.exe
- Add arguments:
%USERPROFILE%\\Analysis3054-Codex\\analysis3054\\data\\kayross\\run_dtn_daily.py
- Start in:
%USERPROFILE%\\Analysis3054-Codex
- Save task and run once manually to validate output CSV updates.
Optional one-time historical seed task:
- Same command with
--full-history, then switch back to default daily command.
Validation
pytest -q
python3 -m compileall -q analysis3054
DTN Documentation Baseline
DTN integration here is aligned to Refined Fuels Demand OpenAPI v1.3.0 (as of February 15, 2026):
- Documentation: https://devportal.dtn.com/catalog/Refined%20Fuels/dtn-refined-fuels-demand/documentation#get-/padd-daily
- Release notes: https://devportal.dtn.com/catalog/Refined%20Fuels/dtn-refined-fuels-demand/release-notes
- Local OpenAPI source used for implementation checks:
/Users/alexhoffmann/Downloads/DTN Refined Fuels Demand-1.3.0-OpenAPI.json
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file analysis3054-0.5.2.tar.gz.
File metadata
- Download URL: analysis3054-0.5.2.tar.gz
- Upload date:
- Size: 80.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c78327d2b37a2a0d86243f54b84fa7cd7aaedd49ef61eca6543b6a2c7d72f36b
|
|
| MD5 |
084d3e018659835afc54ba1cb22763a2
|
|
| BLAKE2b-256 |
267978618b38c4e5f87537f03517062d23f1133fa134b64c3f7f5596f9a708ad
|
File details
Details for the file analysis3054-0.5.2-py3-none-any.whl.
File metadata
- Download URL: analysis3054-0.5.2-py3-none-any.whl
- Upload date:
- Size: 82.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7574fd7328a793df57cef7730dfa80202a4ad1c135d98baaba08dff9066f0877
|
|
| MD5 |
2272eecb591b0e7026f4bae8c19361e3
|
|
| BLAKE2b-256 |
851adc9aca08f4d0060ea0c8deac06a874c43e219a6c5c36a73efff1c3dee8be
|