4.40 Seasonality as a Filter, Not a Standalone System

A vetted seasonal is still a weak 56/44 bias that dies to costs if traded alone. Its real job is to gate or tilt a system you trust, stacking with intermarket filters as one input among several.

4.40 Seasonality as a Filter, Not a Standalone System

A seasonal that passed every test in the reliability checklist is still a weak signal. That is not a failure of your research, it is the nature of the thing. A well-founded seasonal bias might shift the odds from 50/50 to 56/44 over a calendar window. Real, repeatable, and nowhere near enough to trade on its own once you subtract slippage, commission, and the years it goes the wrong way. Traders who build standalone seasonal systems learn this the expensive way: the edge is too thin to survive contact with costs, and the variance year to year is too high to stomach.

The fix is to stop asking the seasonal to be the system. Use it as a filter. A modest, well-understood bias is exactly the kind of input that improves a system it does not have to carry. It gates other signals, tilts position size, or confirms a setup you already had a reason to take. This is the same move the whole intermarket arc is built on, the logic from "Intermarket Analysis for System Traders": a second source of information decides whether the first source's signals are live. A seasonal is just another such source, and a cheap one, because the calendar costs nothing to compute.

Why standalone seasonality fails

Run the math on a clean seasonal and the problem is obvious. Suppose your best, fully-vetted seasonal wins 56% of years in a 15-day window with a small average edge. Across 20 years that is 11 or 12 winning years. The dispersion around that is large, the average trade is small, and once you charge realistic costs for entering and exiting, the thin per-trade edge can flip negative. You are taking real variance for a sliver of expected return.

$$ E[\text{net}] \;=\; \underbrace{p\cdot W - (1-p)\cdot L}_{\text{gross seasonal edge}} \;-\; \underbrace{c}_{\text{costs}} $$ $$ \text{thin gross edge} - \text{costs} \;\approx\; 0 \quad\text{or worse} $$

The gross edge is the win probability times the average win minus the loss probability times the average loss. For a 56/44 seasonal with comparable win and loss sizes, that gross number is small, and subtracting round-trip costs c eats most or all of it. The seasonal is not wrong; it is just too small to stand alone. A 56% directional bias is genuinely useful, but only as a thumb on the scale of a decision you were already going to make, not as the decision itself.

The filter construction

The clean way to use a seasonal is as an AND condition on a signal you already trust. Your base system generates a long signal; the seasonal says the calendar bias is also long; you take the trade only when both agree. When they disagree, you stand down or size down.

$$ \text{Trade}_{\text{long}} \;=\; \big(\text{base signal} = \text{long}\big)\;\wedge\;\big(\text{seasonal bias} \geq 0\big) $$ $$ \text{size} \;=\; \text{base size} \times \big(1 + k\cdot \text{seasonal strength}\big) $$

The first line is the gate: take the long only when your primary system and the seasonal point the same way. The second line is the softer version, a tilt instead of a switch, where the seasonal scales position size up when its bias agrees and down when it does not, with k controlling how much you let the calendar move your bet. Both are ways of letting a weak-but-honest signal improve a stronger one without being asked to generate trades by itself. The seasonal contributes where it is good, narrowing the field, and never has to be right on its own.

This is structurally identical to the divergence filter in "Intermarket Divergence as a Trading Filter." There, a second market's disagreement with the traded market flagged or vetoed a trade. Here, the calendar's agreement or disagreement does the same job. The seasonal is one more gate in the same machine, and it composes with the others. You can require your base signal, the intermarket state, and the seasonal bias to all line up, each one independently thinning the trade set toward the cleaner outcomes.

Stacking the seasonal with intermarket filters

The strongest use combines the seasonal with the cross-asset filters from the intermarket arc, because the best seasonals are often proxies for those same forces anyway. The silver case from "Day-of-Week Effects That Actually Have a Cause" is the template: silver's Thursday bias is really an economic-strength signal that the bond market also reports. Stacking the silver seasonal with a "bonds falling" filter is not two independent edges, it is the same cause confirmed two ways, which is a legitimate way to raise conviction on the days the story actually holds.

The general pattern is a layered gate. The intermarket state sets the macro backdrop (is the external market confirming?), the seasonal sets the calendar backdrop (is the bias with us this week?), and the base signal sets the entry. Each layer removes trades that the layer above would have taken blindly. The result trades less and trades cleaner. You give up frequency, which is the correct trade when each filter genuinely improves the forward-return distribution and the alternative is a standalone seasonal that costs you money.

Two cautions before you stack everything onto everything. First, every filter you add is another degree of freedom and another chance to overfit, the warning from the reliability checklist in "Is Your Seasonal Real or Curve-Fit? A Reliability Checklist." Adding the seasonal as a filter has to clear the same bar as adding any condition: does it improve out-of-sample results, or did you just find a combination that flattered the backtest? Count the seasonal against your degrees of freedom like any other knob.

Second, do not stack correlated filters and pretend they are independent confirmation. Silver's seasonal and the bond filter share a cause, so requiring both is fine as a conviction check but does not give you two separate edges. Stacking three filters that are all secretly the same macro signal narrows your trade count to nearly zero and gives you false confidence in the handful that survive. Know which of your filters are independent and which are the same force wearing different clothes.

Where this leaves seasonality

The honest verdict closes the loop the whole arc has been building toward. Seasonality is real, it is mostly weak, and its correct job is supporting, not starring. A seasonal that survives the reliability checklist is a modest, well-founded bias, and a modest well-founded bias is worth exactly what a good filter is worth: it cleans up the distribution of a system that can already stand on its own. Ask it to be the system and it dies to costs. Ask it to gate or tilt a system, and it earns its keep.

That reframing, from standalone pattern to one input among several, is the through-line of this pillar. No single market trades alone, and no single signal carries a book. The seasonal takes its place next to the intermarket filters as one more way to condition the trades you take on information the price chart in front of you does not show.

Visualizing the filter stack

KEY POINTS

  • A seasonal that passes every reliability test is still a weak signal, maybe a 56/44 bias. That is the nature of seasonality, not a research failure.
  • Standalone seasonal systems die to costs. A thin gross edge minus realistic round-trip costs lands near zero or negative, and the year-to-year variance is high for a small expected return.
  • Use the seasonal as a filter, not the system: an AND gate on a signal you already trust, or a tilt that scales position size up when the bias agrees and down when it disagrees.
  • This is the intermarket logic applied to the calendar: a second source of information decides whether the first source's signals are live. The seasonal is a cheap extra gate that composes with the others.
  • The strongest use stacks the seasonal with cross-asset filters, because the best seasonals are proxies for the same forces. Silver's Thursday bias plus a falling-bonds filter is one cause confirmed two ways.
  • Every added filter is another degree of freedom. Adding a seasonal gate must clear the same overfitting bar as any condition: does it improve out-of-sample results, counted against your degrees of freedom.
  • Do not treat correlated filters as independent confirmation. Filters that share a cause raise conviction but are not two separate edges; stacking several of the same hidden signal manufactures false confidence.

References