Learn › Technical analysis

Seasonality Tested: Is There Really a Best Day or Month to Trade?

Seasonal charts say gold rises this month or that day is best, but pure random numbers draw the same charts. How to test day-of-week, monthly and Sell in May effects.

Intermediate 13 min read 22 October 2026

What you will learn
  • Ten years of pure random numbers always produce a "best month". In our simulation, 90% of runs had a month that rose in 7 of 10 years by chance
  • Test 5 weekdays, 12 months and 24 hours at once and there is an 88% chance at least one passes the 5% test even when nothing is real
  • In our 2022–2026 gold data, the best weekday changed from year to year, but the hourly volatility profile looked almost the same every year
  • Volatility seasonality is reliable and useful for planning. Direction seasonality is very weak and fades easily

“Gold tends to rise in January.” “Mondays are down days.” “Sell in May and go away.” Lines like these always come with a neat chart, and they sound like facts. Seasonality is the idea that prices follow patterns tied to the calendar: the day of the week, the month of the year, or the hour of the day. This article looks at why these charts are so convincing even though random numbers can draw them, how many years of data you actually need, and what our own gold data shows. Some of it is noise, and some of it repeats every single year.

The calendar effects people talk about

  • Day-of-week: for example, Monday falls and Friday rises
  • Month-of-year: the “gold by month” charts that show which months tend to be up
  • Turn-of-month: the last day of a month and the first few days of the next
  • Sell in May: the belief that stocks do worse from May to October than from November to April
  • Hour-of-day: for example, the London open or the US data window

They all have one thing in common. They are easy to test: group returns by the calendar and take the average. And because they are easy to test, they are easy to be fooled by.

Why seasonal charts look convincing

Most monthly charts use 10–20 years of data, so each month has only 10–20 values. An average of that few numbers swings a lot, and a single year with a big move can drag a whole bar.

We showed this with pure random numbers. We generated monthly returns for 12 months × 10 years from a normal distribution with mean zero and a standard deviation of 5% per month (close to the 5.05% we measured on gold in 2022–2026). Every month is identical. There is no seasonality in it at all.

One run:

  1. August came out “best” at +2.14% per month on average, and September “worst” at −2.08%, a gap of more than 4 points
  2. But August was up in only 5 of the 10 years, exactly a coin toss
  3. The average is high because of year 8 alone, at +13.80%. Check: the 10-year total is 21.43. Remove year 8 and it is 7.63, divided by 9 = +0.85%
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +2.14% −2.08% 10-year average by month (random numbers, no real seasonality) Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 August, year by year: 5 up, 5 down Dashed line: average without year 8, +0.85% +13.80%
Simulated random numbers, not real market data: monthly returns for 12 months × 10 years, every month drawn from the same distribution (mean 0, standard deviation 5%), yet a clear-looking "best month" still appears. The bottom panel shows that August's average comes from year 8 alone.

One run could be luck, so we ran it 20,000 times:

  • The best month averaged about +2.58% per month and sat 5.16 points above the worst month on average, when the truth for every month is 0
  • 90% of runs (89.8%) had at least one month that was up in 7 or more of the 10 years. Check with the formula: the chance one month is up ≥ 7 of 10 times is 17.2%, and the chance at least one of 12 months does it is 1 − 0.828¹² = 89.6%. They match
  • 49% of runs had a month that was up in 8 of the 10 years

“Up in 8 of the last 10 years” sounds solid. In pure random data with 12 months and 10 years, there is roughly a coin-flip chance of finding at least one month like that.

These charts also get a second layer of hindsight bias. Once we see that August was good, we can always find a story to explain it. More in Why charts always look easy in hindsight.

Testing many slots: 5 days × 12 months × 24 hours

The 5% significance test is designed for a single test. Run many slots at once and the number that “pass” by luck grows with the number of slots. The chance of at least one is 1 − 0.95^(number of slots).

What you testSlotsChance of at least 1 false passt threshold to use instead of 1.96
Weekday (Forex has 5)522.6%2.58
Month of year1246.0%2.87
Hour of day2470.8%3.08
All three together4187.8%3.23
Weekday × month6095.4%—

The last column uses the Bonferroni correction: divide the 5% threshold by the number of slots and convert it to a t value. It is the strictest and simplest method. And this still doesn’t count the pairs, timeframes and definitions you tried along the way, such as which closing time you measured from. More in Data snooping: test 200 strategies.

How many years do you need

The t value is roughly effect size ÷ (volatility ÷ √sample size). For t to reach 1.96, you need a sample of n = (1.96 × volatility ÷ effect size)².

Monthly example, volatility 5% per month:

  • One month 2% better than normal: n = (1.96 × 5 ÷ 2)² = 4.9² = 24.01, rounded up to 25 years, just to land on the significance line. That means only a 50% chance of detecting it. For an 80% chance you need (2.8 × 5 ÷ 2)² = 49 years
  • 1% better than normal: (1.96 × 5 ÷ 1)² = 96.04, about 97 years
  • Testing all 12 months with a 2.87 threshold: a 2% effect needs (2.87 × 5 ÷ 2)², about 52 years

Weekday example, gold 2022–2026 swings 1.19% per day:

  • One weekday 0.1% better than normal needs (1.96 × 1.19 ÷ 0.1)², about 544 weeks or 10.5 years. With the 2.58 threshold for 5 days, about 942 weeks or 18 years

A seasonal chart built on 10–15 years can only detect very large effects, and an effect that large, if it existed, would have been traded away long ago. The same logic applies to counting trades in a system: see How many trades do you need.

What the research says

Most research on this is about stocks, not Forex or gold. It is here to show how long effects like these tend to last, not to be applied directly.

  • The weekend effect: Kenneth French (1980) found that US stocks had negative average returns from Friday’s close to Monday’s close. Later reviews such as Schwert (2003) point out that the effect weakened to almost nothing in the data after it was published
  • Sell in May: Bouman and Jacobsen (2002) found the pattern in stock markets across many countries, but it is still debated how well it holds up after costs. It is a stock market finding and says nothing about currencies or gold
  • Testing many rules: Sullivan, Timmermann and White (2001) tested thousands of calendar rules on US stocks. Once you account for every rule earlier researchers could have tried, the best one was not significantly better than luck
  • Effects fade after publication: McLean and Pontiff (2016) found that published stock market anomalies paid clearly less after publication, partly because some were the product of testing many ideas and partly because people traded on them
  • Hourly volatility: on the other hand, Andersen and Bollerslev (1998) found that currency volatility follows a clear intraday pattern tied to market opening hours and news release times. A pattern like this doesn’t disappear when people learn about it, because it comes from when people work, not from a predictable price

Our gold data: day of the week

We measured from a broker’s XAUUSD M1 bars, from 3 January 2022 to 31 August 2026, 1,210 trading days in all. The daily return is that day’s close against the previous day’s close. Server time is GMT+0 (Thai time (UTC+7) = server + 7), and Sunday evening bars count as Monday. Gold rose from about 1,830 to about 4,450 dollars over this period, so the average of all days is positive at +0.082% per day. Each weekday has to be compared with that number, not with zero.

−0.4% −0.2% 0% +0.2% +0.4% Mon Tue Wed Thu Fri 2022 2023 2024 2025 2026 (Jan–Aug)
Same real data: average daily return by weekday and year. Each weekday's bars flip up and down from year to year, and across all years no weekday passes the significance test. Past results do not predict future results.
YearBest dayWorst day
2022Wednesday +0.12%Monday −0.20%
2023Wednesday +0.12%Monday −0.05%
2024Thursday +0.27%Wednesday −0.05%
2025Monday +0.39%Friday +0.00%
2026 (Jan–Aug)Wednesday +0.31%Thursday −0.41%

What stands out:

  • Monday was the worst day in the first two years. Someone looking at the data in early 2024 might have concluded “gold falls on Mondays”. Then in 2025 Monday was the best day
  • Across all five years, no weekday stands out. Wednesday has the highest average, but against the all-day average its t is only 0.81 (1.92 if measured against zero, a figure the rising market flatters), far short of the 2.58 threshold for 5 days
  • Wednesday was best in 3 of 5 years, which sounds like something. But if the best day were picked at random each year, the chance that some day comes first in 3 or more years is 29% (200,000 simulated runs)
  • The correlation of the weekday pattern between years ranges from −0.95 to +0.88, so some pairs of years are almost mirror images

Almost five years is about 243 weeks, far short of the 544 weeks worked out above. The honest conclusion is “no evidence yet”, not “proven not to exist”.

Gold data: month of the year, one year drags the average

The same data gives 55 monthly returns (February 2022 to August 2026), so each month has only 4–5 values.

MonthEach yearAverageAverage without the most extreme value
June2022 −1.63, 2023 −2.39, 2024 −0.02, 2025 +0.69, 2026 −11.78−3.03%−0.84%
September2022 −2.81, 2023 −4.69, 2024 +5.28, 2025 +12.03+2.45%−0.74%
January2023 +5.69, 2024 −1.12, 2025 +6.67, 2026 +13.26+6.13%+3.75%

September looks like a good month, but all of it comes from 2025. Remove that year and it turns negative. June looks like a bad month, but most of that is 2026 alone. January stays positive after the cut, but it has to be compared with the all-month average of +1.79% per month during a strong gold rally. Part of what makes a month look “good” is simply a big trend that every month shared in.

What really repeats: hourly volatility

Now change the question from “which hour goes up” to “which hour moves wide”. We measured the range of each hourly bar (High − Low as a % of price), took the median for each hour in Thai time (UTC+7), then divided by the average of all hours in that year so the shape can be compared across years. We left out 04:00–06:00, the daily break, where there are few bars.

0.5× 1× 1.5× 2× 06:00 09:00 12:00 15:00 18:00 21:00 00:00 03:00 Hour (Thai time), starting after the 04:00–06:00 daily break Peak 20:00–21:00 every year 2022 2023 2024 2025 2026 (Jan–Aug)
Real data: XAUUSD M1 bars, January 2022 to August 2026. Median hourly bar range divided by the average hour of that year; the dashed line is the average level. The shape is nearly identical every year, even though overall volatility in 2026 was almost double 2023. Past results do not predict future results.
  • The peak is at 20:00 or 21:00 every year, 1.60–2.06 times the average hour. That lines up with US data releases and the New York open
  • The quietest hour is 03:00 or 06:00, down to 0.49–0.66 times
  • The correlation of the shape between years is 0.77–0.99, compared with the weekday pattern above, which jumps around from −0.95 to +0.88
  • The level changes but the shape doesn’t. The average hour in 2026 was 0.417% wide, almost double 2023’s 0.193%, yet the peak and the quiet hours stayed in the same place

Thai time doesn’t shift, but European and US markets move with daylight saving, so the peak can move by an hour depending on the time of year. See the session table in Forex market hours in Thai time, and for how volatility comes in high and low spells, read Volatility clustering.

Volatility seasonality comes from working hours and news release times, so it repeats every year. Direction seasonality, if it exists, gets traded until it disappears.

Hourly direction: weak, and watch your data

We also measured hourly direction on the same data. We first subtracted the average of all hours (gold rose 0.0028% per hour on average), then looked for hours that differ from the rest. Of 24 hours, only one has a t above 1.96: 06:00 Thai time (t = 2.39). That is still below the 3.08 threshold for 24 slots.

That hour was positive in all five years, which sounds interesting. But if every hour were a coin tossed once a year, the chance that at least one of 24 hours lands the same side five years running is 1 − (15/16)²⁴ = 79%. The size is also tiny, about 0.017% per hour, or roughly 0.67 dollars at a gold price of 4,000. And 06:00 is the first hour after the daily break, when spreads are often wide. Bar data uses one side of the price, so a spread that widens and then narrows could make the bar seem to move on its own. We have not tested that separately.

Our other research points the same way:

  • We tested whether price structure at 09:00 Thai time could predict gold’s direction to 14:00, 20:00 and 24:00, over 1,184 days (M1 bars, January 2022 to August 2026). No variable with more than 100 days predicted correctly more than 55% of the time at both 14:00 and 20:00. The best-looking cell, 59%, had only 83 days, sat just 1.6 SD from 50%, and flipped around by year (53% in 2022, 70% in 2026)
  • In our backtest of a gold breakout system split into 8-hour time windows, using real 2026 tick data (960 trades), no window differed significantly from the rest. The largest t was just 0.96. But running the same trades on ticks simulated from 1-minute bars made one window come out best, while real ticks said that same window was the worst. Run on simulated ticks across 4.6 years (2022–2025 have no real ticks), it reached a t of 2.75, a false result created by the tick simulation

That last point matters a lot. An hourly pattern in backtest results can come from how the data was generated rather than from the market. More in MT5 backtest tick data quality. All of these are past results. Past results do not predict future results.

How to test seasonality yourself

  1. Write the hypothesis and the reason before looking at the data. “Price moves wide during US data because the data comes out then” is better than scanning 60 slots and picking the prettiest one
  2. Count every slot you looked at and raise the threshold using the table above: t ≥ 2.58 for 5 slots, 2.87 for 12
  3. Compare with the average of all periods, not with zero. If the market rose throughout, every month will look good
  4. Look at each year separately. A real effect should point the same way in nearly every year. If it all comes from one year, remove that year and look again, or use the median instead of the mean
  5. Hold data back for confirmation. Choose using the first set of years, then check whether the effect is still there in years you didn’t use. Same idea as Walk-forward testing
  6. Compare the effect size with costs. An hourly effect worth a fraction of a dollar can vanish entirely into the spread
  7. Use data that fits the question. Hourly questions in a backtest need real ticks, and you need to know how many hours the server time is from your local time

How to use the seasonality you can trust

The part you can trust is volatility by time of day, and it applies directly to risk control:

  • Stop loss distance: a Stop loss that fits at 10:00 may be too tight at 20:00, when price moves about twice as wide. Use the ATR of the same time window to help place it. See ATR and Stop loss placement
  • Position size: if your Stop loss widens with the time of day, cut your position size so the money at risk per trade stays the same
  • News hours: 19:30–21:30 Thai time is when US data often comes out, so price jumps and slippage happen easily. See News spikes and slippage
  • Quiet hours: around the daily break, price moves narrow but the spread can be wide. Systems aiming for small profits are at their biggest disadvantage here

For calendar direction, if you want to try it for real, treat it as a hypothesis that has to pass all 7 steps above, and compare it with random entries in the same time window. See Use random entry as a benchmark.

Common mistakes

  • Trusting a monthly chart built on 10 years. Each bar has just 10 values, and one big year can create a “best month”
  • Looking at many slots and reporting only the winner. With 5 days, 12 months and 24 hours, there is almost a 9 in 10 chance of finding a pretty slot by luck
  • Comparing with zero in a trending market. During a strong gold rally, every weekday and almost every month looks positive
  • Applying stock market findings to Forex or gold. The weekend effect and Sell in May were studied on stocks, and several of these effects weakened after publication
  • Confusing volatility with direction. Knowing when price moves wide doesn’t tell you which way it will go
  • Reading hourly results from simulated ticks. Tick simulation can create fake hourly patterns that flip when you use real ticks

Frequently asked questions

Can I trust the gold seasonal charts that get shared around?

First check how many years they use. Each month has only 10–20 values, so one big year can drag the average a long way. Look at how many years that month was up, remove the most extreme year and see if the effect survives, and compare with the average of all months, not with zero.

How many years of data do I need before I can trust a monthly effect?

Far more than most people think. If monthly returns swing by about 5%, a 2% per month edge needs about 25 years just to reach the significance line, and about 49 years for an 80% chance of detecting it. A 1% edge needs close to a century.

So what is time-of-day information good for?

Volatility. Which hours move wide and which are quiet repeats every year, so you can use it to set Stop loss distance, position size and to pick hours where costs are reasonable. Don't use it to guess whether price will go up or down.

This is general education, not investment advice. Trading is risky and you may lose all of your capital.

Tools Chat on LINE