Finding seasonality candidates with the AnalyticsFX screener
The seasonality screener walks historical price data to find recurring directional windows on forex and futures, then ranks them by win rate, annualized Sharpe, and sample depth.
Seasonality is the cheapest edge a discretionary trader can add to their process: it requires no broker change, no new tool, no extra screen, and it stacks with every other thesis. The AnalyticsFX seasonality screener is built around that.
What it returns
For every symbol you select, the screener scans historical bars and emits a list of seasonality candidates. Each candidate is a directional window with the following fields:
- Symbol. The instrument the candidate was found on.
- Direction. Long or Short.
- Start and end label. Human-readable bar labels (for example, day-of-year ranges) for the window.
- Win rate. Share of historical years where the window closed in the predicted direction.
- Average return. Mean return across the historical years the window has existed.
- Annualized Sharpe. Risk-adjusted version of the average return so a small but consistent edge is not flattered by a single huge year.
- Sample size (nYears). Number of historical years the candidate is computed on. A high win rate on three years means much less than the same win rate on twenty.
- Cycle win rate. A secondary win rate computed on a sub-cycle of the same window, used to detect candidates whose edge has changed in recent years.
- Per-year returns. The actual return each year of the historical window, shown as a small chart so dispersion is visible.
What filters exist
The filter widget lets you constrain candidates by:
- Window length. Minimum and maximum bar length of the candidate.
- Win rate floor. Drops any candidate below the threshold.
- Asset list. Multi-select across the asset universe.
Filter state is persisted to local storage and reflected in the URL, so a screener view can be shared as a link.
Why dispersion matters
A 70% win rate with consistent year-over-year returns is a tradable candidate. A 70% win rate where one year delivered the average and the other nine were noise is a coincidence. The per-year return chart on each candidate is the fastest way to spot the difference. Always glance at it before trusting the headline number.
What this is not
Seasonality is a statistical tendency, not a guarantee. The win rate is a long-run number; any single occurrence can be on the wrong side. Size positions accordingly, manage risk on every trade, and re-screen quarterly to catch regime changes that may have invalidated a candidate.
