Seasonal Trading Analytics

SuperSeasonals: Seasonal Stock Analysis Platform

A .NET rebuild of a PHP application in which opportunity generation had become the bottleneck. We rebuilt it around precomputation and caching, and the client reports custom report generation running 5x faster and the weekly opportunity run 8x faster. The platform scans 20+ years of historical price data to surface the weeks of the year a given symbol has consistently moved up or down, so retail traders can time entries and exits without doing the math themselves.

The Spyrol Group LLC logoClient: The Spyrol Group LLC (US)Ryan Jones, CEO13+ year client
SuperSeasonals Opportunities workspace, dark UI, showing 313 ranked opportunities for a single week beside a detail panel with 16 computed metrics, a reliability rating and a 52-week seasonality chart

20yr+

Historical Depth

16

Metrics Per Opportunity

Since 2018

In Production

The Challenge

Opportunity generation in the existing PHP application was slow enough that it limited how the product could be used

Manually reviewing 20 years of weekly price history per symbol is too slow to act on before a seasonal window closes

Most charting tools show price but don't tell a trader which calendar weeks have historically moved a stock in one direction with high frequency

Traders need a way to filter the universe down to only the symbols whose seasonal pattern is actually significant for the current week

After picking a candidate, traders still want sector context (is this a one-off symbol or part of a December financials trend?) before committing capital

Going back to the platform every Monday to re-run the same screen is friction; users want alerts and email digests pushed to them

Our Approach

We built SuperSeasonals as a focused tool for one job: rank stocks by their historical seasonal edge for a given week of the year. The Angular frontend gives traders a workspace for opportunities, portfolios, performance tracking, custom reports, alerts, and TradingView charts. The .NET 10 API runs on SQL Server with EF Core for schema and Dapper for the heavy seasonal queries that power the opportunities ranker. Background workers keep market data and symbol metadata current outside the API process, so the user-facing app stays responsive even on busy mornings. The rebuild moved the expensive work off the request path entirely. A scheduled job precomputes every symbol's opportunities and rebuilds all 60 ranked week-and-month lists ahead of demand, so whichever week a trader opens, the answer already exists rather than being calculated while they wait; custom reports regenerate on their own schedule in a separate long-running service. Four cache layers sit behind that, from the process-wide symbol universe down to per-run memoization, and a startup warm-up means the first visitor after a deploy pays nothing for it. The API itself carries per-user rate limiting, structured logging, and response compression negotiated per request.

Key Features

View Opportunities ranks the top symbols for any week of the year and shows each one as a card with profit factor, duration, average move up and down, net gain, annualized return, and annual win rate, all sortable and filterable

Seasonal Performance runs a full backtest on any symbol across 20+ years of history with summary metrics (total net profit, profit factor, winners, max consecutive wins and losses, annualized return) plus an equity curve

Histogram Chart renders monthly and weekly average-move and percent-move charts for visual seasonal scanning

Custom Reports with Auto-Export let traders save a screen and have it re-run on a schedule, with results pushed out automatically

Portfolios cover the full position lifecycle (open, closed, pending, manual) with day-wise performance and trade-alert info across multiple portfolios

Alerts include the impending move, sector and industry, entry point, duration, historical movement, performance report, and cumulative net increase

Favorite Symbols and Opportunity Notifications subscribe per user to symbols, weeks, months, or combinations, with a log of what was sent

SmartShareEmail pushes opportunities and performance reports to subscribers' inboxes so they don't have to log in to see the next week's setups

Admin Opportunities and a TradingView UDF-compatible charting layer round out the platform with operator-side controls and in-app technical analysis

A per-opportunity reliability rating scores how dependable a seasonal signal is, so a trader triages a 313-row week instead of reading it top to bottom

Competitor Seasonality lists sector and industry peers for the same calendar week beside the symbol being viewed, turning a single-symbol answer into a comparison

Month Wise Weekly Detail filters a symbol's qualifying weeks by a minimum frequency and a minimum run of consecutive weeks, surfacing sustained windows rather than one-week flukes

SuperSeasonals detailed opportunity report showing market profile, a signal-quality panel of all-history statistics, a 52-week seasonality path and an embedded live price chart
The detailed report behind one opportunity. Market profile, a signal-quality panel computed across the symbol's full history, the 52-week seasonality path with the entry and exit window marked, and a live TradingView chart. Below the fold it continues into a five-year overlay, a year-by-year breakdown, an on-page backtest, and seasonality for sector and industry peers in the same calendar week.

Modernization

Framework

Before: Angular 14

After: Angular 21

Styling

Before: Dated light theme

After: Tailwind CSS 3, dark-first workspace

Navigation

Before: Top menu bar of 12 links

After: Sidebar workspace with keyboard symbol search

Charting

Before: Static equity-curve image

After: TradingView Advanced Chart on a UDF-compatible datafeed

Opportunity detail

Before: 10 metrics per card

After: 16 metrics, a reliability rating, and a 52-week seasonality path

Tech Stack

.NETAngularSQL ServerEF CoreDapperSerilogTradingView Charts

The Result

Custom report generation 5x faster, the weekly opportunity run 8x faster. 20+ years of price history. In production since 2018.

Traders open the app, pick a week, and see a ranked list of symbols with the strongest historical seasonal edge in seconds. No more charting tickers by hand to find the pattern.

They filter, drill into a 20-year breakdown, save the screen as a custom report that auto-exports on a schedule, and subscribe to email notifications. Portfolio Tracker keeps the trades they take linked back to the seasonal thesis, so they can measure whether the pattern actually paid.

Building an analytics or research tool for traders?

Historical data at scale, custom scanners, performance backtests, scheduled reports. We ship analytics products that traders use every week. Tell us about yours.

Get a Free Quote