This project explored whether short-term structure inside ES futures blocks could reveal a predictive edge. The goal was not to build a flashy trading bot, but to test a very specific question: after a breakout bar closes, can the surrounding price, volume, and profile behavior help predict whether price reaches an 8-tick target before moving 12 ticks against the setup?

The work turned raw futures exports into a modeling dataset. I processed bar and tick-level market data, engineered features around buy and sell volume, block totals, high-volume price levels, breakout behavior, divergence, and candle direction, then labeled breakout cases according to the target/adverse-move logic.

What I Built

  • Prepared ES futures bar, block, and tick data for modeling.
  • Engineered a feature set from volume-profile behavior, breakout candles, price levels, and block-level buy/sell pressure.
  • Labeled thousands of breakout cases based on whether the market reached an 8-tick move before a 12-tick adverse move.
  • Compared several machine learning approaches, including KNN, XGBoost, Decision Tree, Random Forest, SVC, and LSTM models.
  • Tested feature-selection and feature-combination variants to see which groups carried the clearest signal.

Result

The project found a modest but measurable signal, with the strongest clear result coming from an XGBoost model after feature selection:

  • Accuracy around 58%
  • Precision around 62%
  • F1 score around 57%
  • ROC AUC around 0.58

That result is interesting, but not enough by itself to claim a production trading edge. A real trading system would still need walk-forward validation, transaction-cost modeling, slippage assumptions, out-of-sample testing across different market regimes, and profitability simulation.

For me, the value of this project was in turning noisy market microstructure into a disciplined modeling problem: define the event, engineer the market context, label the outcome, test the signal, and stay honest about what the numbers actually say.