VLO vs XLE 20-session forward excess when retail-sales growth is in its top trailing 252-session quintile and Brent 20d is positive
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.
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
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
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.
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
| Condition | N | Mean excess | Median excess | Win rate |
|---|---|---|---|---|
| Retail top quintile + Brent positive (signal) | 49 | 0.0307 | 0.0288 | 0.898 |
| Retail top quintile + Brent non-positive | 77 | 0.0875 | 0.0858 | 0.8701 |
| Retail not top quintile + Brent positive | 139 | 0.0233 | 0.0266 | 0.6403 |
| Neither | 156 | 0.016 | 0.0088 | 0.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
- 49 signal days with overlapping 20-session windows — the effective independent sample is closer to a handful, so the eye-popping t-stat overstates confidence.
- XLE holds VLO, so the benchmark is partly the thing being tested; the self-overlap mechanically shrinks any observable edge.
- The Brent-positive leg is the weak link — within top-quintile retail growth, the non-positive-Brent days show a much larger excess (8.75% vs 3.07%).
- Retail growth is a 12-month change and the top-quintile cutoff is set in-sample on the trailing 252 sessions; out-of-sample behavior could differ.