FOUNDING ACCESS IS FULL·Founder onboarding is closed.Get launch updates →
← All indicators
FreeIndicators·ThinkorSwim

Seasonal Analysis

Historical seasonality patterns for any symbol.

How to install in ThinkorSwim

  1. In ThinkorSwim, open a chart, then go to Studies → Edit Studies.
  2. Click Create, clear the editor, and paste the code.
  3. Name it, click Apply, then OK, and it draws on your chart.

How to Use — WeTradePro Seasonal Analysis

A label that tells you the average historical return and up-month win rate for the calendar month you're currently in, based on this chart's loaded history. Educational, not advice.

What it is (one line)

A seasonality label: for the current calendar month, it averages every prior year's same-month return (first open → last close) and reports the average % move and how often that month closed up.

Who it's for & best timeframe

Trader typeHow you use itBest timeframeRecommended setting
Day traderBackground bias only — know if the month is historically a tailwindDaily (for the read)load max history
Swing traderBest fit — lean long in historically strong months, cautious in weak onesDaily"max" / 10y+ range
Position traderTime entries around strong/weak seasonal windowsDaily / Weekly"max" range

Best overall: Daily chart, "max" date range. The tool needs many years of the same month to produce a meaningful average — more history = more reliable.

What you see (overlay — labels only)

  • `Seasonal — <Month>` — the month being analyzed (the rightmost bar's month).
  • `Avg <Month> return: X%` — average historical return for this month across all loaded years. Green if positive, red if negative.
  • `Up-month rate: X%` — how often this month closed up. Green ≥ 50%, red below.
  • `Years sampled: N` — number of completed same-month instances behind the average. Trust it only when N is reasonably large.
  • Light green panel tint when the month's average is positive (a calendar tailwind).

How to trade it (the core play)

  1. Use it as context, never a trigger. Seasonality is a probability lean, not a timing signal.
  2. Check `Years sampled` — under ~8 years the average is noisy; weight it lightly.
  3. In a historically strong month (green, high win rate), favor your long setups and give them room.
  4. In a historically weak month, tighten risk and be quicker to take profits on longs.
  5. Combine with a real entry tool (breakout, RSI band, momentum cross) — seasonality picks the season, the entry tool picks the bar.

Settings (inputs)

  • None. The accuracy is driven entirely by how much history you load — set the chart to "max" / 10y+ on a Daily.

Best on

  • Indices and large, long-listed names with strong seasonal records: SPY, QQQ, DIA, AAPL, MSFT, XLE, GLD. Avoid recent IPOs (too few years).

Common mistakes

  • Trading it as a signal — it's a bias, not an entry.
  • Ignoring `Years sampled` — a "+4%" average off 3 years is meaningless.
  • Using it on a young ticker — not enough same-month history.
  • Short chart range — load max history or the averages are thin.
  • Forgetting it's path-agnostic — it measures open→close of the month, not the intramonth drawdown.

Video script outline (for your WeTradePro tutorial)

  1. Hook: "Is this month historically your friend or your enemy?"
  2. Show the label flipping as the calendar changes.
  3. Explain the math: average of every prior same-month move.
  4. Why Years sampled is the credibility check.
  5. Strong month vs weak month — how it changes your risk.
  6. Pairing seasonality (the season) with an entry tool (the bar).
  7. Recap + "load max history" + "import link in description."

Educational analysis, not financial advice.

← Back to all 103 indicators