Energy Market Monitor

Three months of the prices and macro drivers our CO₂ storage, hydrogen and unconventional-resource work depends on — crude and gas benchmarks alongside the dollar, the Treasury and TIPS curves, volatility and carbon — with a gradient-boosted P10/P50/P90 outlook for the week ahead pinned to the top of the chart, and every past call scored against what actually printed.

WTI · Brent Henry Hub OVX · RBOB UST & TIPS curves DXY · Broad TW USD LightGBM P10/P50/P90 Direction F1 scorecard
All panels share one time axis — drag to pan, scroll to zoom, double-click to reset, and every other chart follows. Opens on the last three months plus the forecast week; pan left for more history. Open full screen ↗

Track record — the stars

Every run logs its full forecast before anything is drawn. Once a predicted day’s close prints, that run’s next-day P50 appears as a star on the candle it was predicting — hover for the predicted and actual moves, the price error, and whether that star is a live call or a backtested one.

The colour scores the direction, not the price. Read each call as a daily long/short: go long if the model says tomorrow closes above today, short if below.

  • ★ gold — the direction was right. The trade made money.
  • ★ navy — the direction was wrong. The trade lost.

Next to each P10/P50/P90 line at the top of the chart is that contract’s direction F1, with the hit rate, the number of scored calls, and the mean absolute price error. F1 is used rather than raw accuracy on purpose: “up” is the positive class, so a model that simply calls up every day can post a flattering hit rate in a rising market while F1 exposes it. Roughly 0.5 is a coin flip.

The red band always covers the most recent 28 scored days — a rolling window, so it stays the same width as live calls accumulate rather than creeping wider every run.

The bold red number in it is what trading those days would have been worth. 100% is break-even: 110% means the stake grew a tenth, 90% means it lost one. Two variants are shown:

  • The headline figure applies a 2% intraday stop. Enter at the previous close, and if the day moves 2% against the position, close it there instead of riding the full adverse move. The day’s own high and low decide whether the stop was touched, and a gap straight through it fills at the open — worse than the stop — rather than pretending the exit was free.
  • “no stop” is the plain version: hold every position to the close regardless.

Both are frictionless — no spread, financing or slippage — so read them as ceilings on what the signal is worth rather than achievable returns. The count of stopped days is shown alongside; when it is a large share of the window, the stop is doing most of the work and the direction call rather less.

Where the stars come from. The chart is seeded with a walk-forward backtest over the preceding 30 trading days. For each of those days the panel is truncated to that date before the model is fitted, validated and simulated, so it never sees the bar it is predicting — there is no lookahead in the training. But those rows were still generated after the fact, so they are tagged backtest and are not the same thing as a call made in advance. Every subsequent run appends genuine live predictions on top, which are tagged live and can never be overwritten by a later replay. Over time the record becomes predominantly live.

How the one-week forecast is produced

The model is a LightGBM gradient-boosted tree ensemble. It never predicts a week directly: it learns a single one-day step — given the contract’s last 14 trading days of volatility-scaled returns plus the current state of every other indicator on this page, what is tomorrow’s log price change? — and is then applied recursively: predict tomorrow, append that price to the history, re-derive the 14-day window from the extended series, and predict again, five times over to reach a week.

Hyperparameters are found by randomised search over a forward-chaining, gapped time-series split: every validation fold sits strictly later than the data it was trained on, with a 14-day gap between them so a validation row’s trailing window cannot overlap rows the model has already seen. The search is scored on directional accuracy rather than R², because daily-return R² hovers near zero and barely separates candidates, while direction is what the scorecard measures. The winning settings are cached with the date they were found and reused for a week before the search runs again, so the model tracks a drifting market without paying for a search on every run.

Uncertainty is generated the same way. At each step a residual is drawn at random from the model’s own walk-forward out-of-sample errors, and 2,000 independent paths are simulated. The P10/P50/P90 fan on the crude and gas panels is the 10th/50th/90th percentile of those paths at each day, so the band widens with horizon because the errors genuinely compound — not because a widening was imposed on it.

Two limits are worth stating plainly. The other indicators are held fixed through the rollout: the dollar, the curve and volatility are not themselves forecast, so the fan answers “where does this contract drift if the rest of the market stands still”, not “what will happen”. And because each step feeds on its own output, any bias in the one-day model accumulates rather than cancels.

Read the bands as uncertainty, not as a view. The P10/P50/P90 range describes how wrong this one model has historically been. It assumes next week resembles the training period, and it will be wrong precisely when that assumption breaks — which is usually when it matters.

Series caveats. EUA carbon is proxied by the KRBN ETF, not the ICE EUA futures settlement. FRED publishes TIPS yields from 5 years out — there is no 2-year real rate — so the short leg of the real-yield panel is 5Y, labelled as such in the panel's colour key.

No warranty and no responsibility. This page is produced automatically from third-party data for internal research interest only. It is not investment, trading, financial or commercial advice, and it is not a recommendation to buy, sell or hold anything. The underlying data may be delayed, revised, incomplete or simply wrong, and the model output is a statistical extrapolation that carries no guarantee of accuracy. CURE, Inha University and the authors accept no liability whatsoever for any loss or damage arising from any use of, or reliance on, this page or its forecasts. Use it at your own risk, and verify anything that matters against the primary sources below.

References — Yahoo Finance · FRED, Federal Reserve Bank of St. Louis · U.S. Energy Information Administration · Ke, G., et al. (2017). LightGBM: A Highly Efficient Gradient Boosting Decision Tree. NeurIPS 30.