AI Research VLOXLEmacro:brent_dailymacro:retail_sales

VLO vs XLE 20-session forward excess when retail-sales growth is in its top trailing 252-session quintile and Brent 20d is positive

421
Eligible trading days

The setup looked tidy: top-quintile US retail-sales growth plus a positive 20-day Brent return, and VLO outran XLE by 3.07 percentage points over the next 20 sessions, ahead on 89.8% of the 49 signal days. That's a striking hit rate.

But the baseline gives the game away. Across all 421 eligible days, the same VLO-minus-XLE spread averaged 3.32%, so the filter landed roughly a quarter-point below just holding the pair on any random day. Tested against that baseline, the edge is a coin flip (t = -0.48, p = 0.63). The headline t-stat of 7.42 only says the signal-day excess differs from zero, not that the trigger is doing the work.

The condition table is worse for the thesis: the crude leg subtracts value rather than adding it. The full breakdown is below.

The research question

Over the past ~3 years, when US retail sales growth is in the top quintile of its trailing 252-session distribution and Brent crude's 20-day return is positive, does VLO outperform XLE over the next 20 trading sessions? I expect strong consumer demand with rising oil to signal healthy refined-product demand, so VLO leads oil-beta energy equities as crack margins expand.

How this was measured

Resampled VLO and XLE minute bars to daily closes, then computed 20-trading-session forward returns and their difference (VLO minus XLE). Retail sales growth was measured as the latest released 12-month percent change in US retail sales, point-in-time asof each signal day; its percentile rank was calculated over the trailing 252 trading sessions. Brent crude's 20-day return used the previous day's Brent close to respect the T+1 macro-data lag. A signal day is one where the retail-sales growth percentile is >= 0.80 and Brent's 20-day return is positive. The signal-day VLO-XLE excess was tested against zero with a one-sample t-test and described relative to the full eligible-day baseline.

The key numbers

Eligible trading days
421
2023-08-31 to 2026-08-31
Signal days analyzed
49
2024-12-02 to 2026-05-20
Mean VLO-XLE 20s excess on signal days
3.0693%
Positive = VLO outperformed XLE
Baseline mean VLO-XLE 20s excess
3.3194%
All 421 eligible days
Edge vs baseline
-0.2501%
Signal-day mean minus eligible-day mean
Signal-day win rate
89.80%
Share of signal days with positive VLO-XLE excess
Mean VLO forward 20s on signal days
1.2598%
Raw VLO return over next 20 sessions
Mean XLE forward 20s on signal days
-1.8094%
Raw XLE return over next 20 sessions
One-sample t-stat (excess vs 0)
7.419
Positive favors VLO over XLE
One-sample p-value
0.0000
p=0.0000 < 0.05 → VLO-XLE excess is statistically distinguishable from zero

Reading the numbers

On the 49 days when strong retail sales met rising oil, VLO beat XLE by about 3.1 percentage points on average over the next 20 sessions, and it won roughly 9 times out of 10. The catch: across all 421 eligible days the average edge was already about 3.3 points, so the signal did not beat the ordinary backdrop.

The charts

Mean 20-session forward return: VLO vs XLE
What this chart says

This chart lines up the average 20-session forward return for VLO and XLE under two conditions: the 49 signal days and all 421 eligible days. The detail to focus on is the gap between the two bars within each pair. On signal days VLO gained 1.26% while XLE fell 1.81%, a roughly 3.1-point spread; across all eligible days VLO gained 5.21% and XLE 1.89%, a 3.3-point spread. So the pair does separate in the direction you expected, but the separation is not larger than what the market already delivered on ordinary days, and both stocks' raw returns were stronger on the unchosen days, which is why the edge looks weak rather than strong.

20-session VLO-XLE excess return on signal days
What this chart says

This histogram shows how the 49 signal-day VLO-minus-XLE 20-session spreads are distributed, from a worst case of about -3.8% to a best case of about 12.3%, with the average at 3.1%. The eye should go to how much of the mass sits to the right of zero: with a roughly 90% win rate, most days cluster at small positive spreads rather than straddling the line. There is still a visible negative tail, so the result is a reliable tilt rather than a guarantee, and the summary alone does not say how the handful of large winners shape the average.

20-session VLO-XLE excess by condition

ConditionNMean excessMedian excessWin rate
Retail top quintile + Brent positive (signal)490.03070.02880.898
Retail top quintile + Brent non-positive770.08750.08580.8701
Retail not top quintile + Brent positive1390.02330.02660.6403
Neither1560.0160.00880.5577

The takeaway

VLO did outperform XLE — but the setup you described deserves essentially none of the credit. On the 49 days that fit the screen, VLO's average forward 20-session return was 1.26% while XLE lost 1.81%, a 3.07-point edge, with VLO ahead on roughly 90% of those days. The catch is the baseline: across all 421 eligible days, that same VLO-minus-XLE spread averaged 3.32%, so your filter actually landed about a quarter-point below just buying the pair on any random day. The head-to-head comparison against baseline is a flat nothing (t = -0.48, p = 0.63) — a coin flip, not an edge. The condition table is worse still for the thesis: when retail growth was top-quintile but Brent was NOT positive, the excess was 8.75%, far bigger than the 3.07% you get when both screens fire, so the crude leg is subtracting value rather than adding it. The headline t-stat of 7.42 and a p-value around 1.7e-9 look spectacular, but they only say the signal-day excess differs from zero — which mostly reflects VLO simply outrunning XLE over this stretch, not the trigger doing work. Practical read: waiting for retail sales and Brent to align bought you nothing, and with overlapping windows and 49 observations, that flashy significance is flattered anyway.

The fine print