Model
Ensemble Meta-Learner
The second-layer classifier. Reads every teammate's buy-probability as a feature and produces the final daily yes-or-no that shows up on the homepage.
What the model pays attention to
Approach
Pulled aligned historical data from every upstream source (EIA WTI daily, Alpha Vantage WTI, NOAA Gulf SST, EIA weekly US gasoline stocks, Yahoo CL=F, Yahoo RB=F), replayed each teammate's base model over the 2022-2026 overlap window, and stacked their per-day buy-probabilities into a training set. Label was forward-looking: did WTI finish higher 7 trading days later? Held out the most recent 20% as a time-ordered test split. Trained logistic regression on purpose — the fitted coefficients stay readable as 'how much trust this teammate earned,' which a deeper model would have buried at this data size. Six stacked features, one per teammate base model. Test accuracy 50.8% on 187 held-out days, beating always-buy (49.7%) and majority-vote (47.6%). Marcus's weight came out biggest by a wide margin; Ryan's is slightly negative, meaning his signal is most useful inverted. Full training is in scripts/retrain_ensemble.py; ensemble/build_prediction.py loads the .joblib every morning.
Features
Built by
Team lead on the project — built the stacked ensemble that combines every teammate's classifier into the site's final YES/NO, plus the daily pipeline, the site, and the R2 data layer.
Trained on
2022-04-06 to 2025-07-07 (745 rows). Test window 2025-07-08 to 2026-04-07 (187 rows).