Overnight and Intraday Returns of Stocks

Author

Jake Stoetzner

Published

January 22, 2025

Introduction

This project attempts to answer the following broad question: on average, how much do stocks gain or lose during the intraday session as compared to the overnight session?

Regular trading hours for listed stocks, as defined by the Securities and Exchange Commission (SEC), are from 9:30 a.m. to 4 p.m. ET. Any activity that takes place outside of regular trading hours, whether in the pre-market, after-hours or overnight periods, is generally referred to as extended-hours trading.

  • Pre-market is 7 a.m. – 9:30 a.m. ET
  • After-hours trading is from 4 a.m. – 8 p.m. ET
  • Overnight hours for trading is from 8 p.m. - 4 a.m. ET

For ease of reference herein intraday will refer to 9:30 a.m. ET - 4:00 p.m. ET and overnight will refer to all hours outside that time from 4:00 p.m. ET to 9:30 a.m. ET. The total return can then be calculated as the sum or the intraday and overnight sessions.

Summary of Results

Data on 483 stocks from 1993 to 2024 was analyzed, a brief summary of the results is as follows:

  • Overnight Returns Dominate Overnight returns accounted for the majority of each individual stock’s total return 69.2% of the time. On a cumulative daily basis, overnight returns totaledx 1,349,271% compared to intraday total returns of 15,594%.
  • Relatively Large Intraday Moves Precede Large Overnight Returns Intraday returns of plus or minus 2-standard deviations result in intraday moves of around 1% on average. Regardless of the direction of the move overnight, intraday returns were positive on average.
  • Relatively Large Overnight Returns Followed By Flat Intraday Action Stocks that had large overnight moves tended to return close to 0% intraday regardless of the direction of the prior overnight change.
  • Trading Simulations Reflect Same Results Entering at the close of the day following a large positive or negative intraday move proved profitable using Z-Score and Percentile Rank Bins. After simulating an account making 100 trades 50,000 times, the average total return far exceeded the baseline randomized strategy. The results are set forth more fully below.

Background

This project was motivated by several different sources.

First, the article Buy the Close, Sell the Open Strategy Generates +1,100% Gains From 1993 caught my attention.

Several other sources referenced the same Bespoke chart that is mentioned in the article (and is re-created below) that shows the cumulative returns of the S&P 500 both intraday and overnight. In no uncertain terms, the overnight returns smoke the intraday returns.

Chart - SPY - Cumulative Return Comparison 1993 to 2024

From January 1, 1993 to December 31, 2024, SPY cumulatively returned 1,078.91% overnight compared with 13.55% intraday.

period percent return
total 12.3877
overnight 10.7891
intraday 0.1356

This “overnight effect” research got so popular in 2021 and 2022 that it spurred the launch of (at least) 2 ETFs to only trade after-hours. These ETFs shutdown in August 2023 after being opened about a year.The CEO cited “colossal bad luck”. The funds did suffer from bad timing - from June 1, 2022 to August 1, 2023, SPY had a cumulative return of -9.7% overnight compared with 23.8% intraday.

On issue that was perplexing was the use of cumulative return to compare the intraday and overnight sessions. Cumulative return measures the total return on an investment over a specific period, expressed as a percentage of the initial investment. For example, if you started with $100 and bought SPY at the close then sold at the open the following day, then repeated this every day from 1993 to 2024, you would have $1078. If you did the opposite - buy at the open and sell at the close - you would have $135. But what if you just bought the SPY in 1993 and walked away? You would have $1238, which is well ahead of of the overnight approach. Plus, you don’t have any of the associated transaction costs of buying and selling so often intraday.

Why not just buy and hold then? There is some value to the overnight approach regarding volatility. Compare the standard deviation of the daily returns of each of the 3 approaches:

overnight intraday total
0.006674 0.009576 0.011746

The total (buy and hold) approach had 76% more volatility than the overnight returns. The intraday had 43.8% more volatility on average.

For the remainder of this report, I will utilize intraday and overnight returns calculated on a daily basis rather than a cumulative basis.

SPY daily returns were grouped by year and then divided into their intraday and overnight portions. The blue line is the average overnight return and the black line is the average intraday return. Areas shaded in red are where the intraday return was greater than the overnight. Areas in green are years the overnight return exceeded the intraday.

Chart - SPY - Averge Daily Return (%) Comparison

Below is a table with a yearly breakdown for SPY showing the average intraday and overnight percent returns. The diff column shows the difference between the 2 columns. A positive diff means that the overnight returns were higher than the intraday returns. A negative diff means that the overnight returns were lower than the intraday.

In 22 out of the 33 years (66.7%), average overnight returns where higher than the average intraday returns for SPY.

Table - SPY - Averge Daily Return (%) Comparison

year daily pct (%) intraday pct (%) overnight pct (%) diff
1993 0.0269 -0.0181 0.0450 0.0631
1994 -0.0066 -0.0301 0.0237 0.0538
1995 0.1205 0.1010 0.0196 -0.0814
1996 0.0755 0.0120 0.0642 0.0522
1997 0.1161 0.0066 0.1106 0.1040
1998 0.1048 0.0094 0.0959 0.0866
1999 0.0759 -0.0701 0.1462 0.2163
2000 -0.0335 -0.1257 0.0919 0.2175
2001 -0.0459 0.0176 -0.0615 -0.0791
2002 -0.0889 -0.0449 -0.0440 0.0009
2003 0.0975 0.0759 0.0223 -0.0537
2004 0.0353 0.0176 0.0178 0.0003
2005 0.0139 -0.0384 0.0523 0.0907
2006 0.0533 0.0217 0.0316 0.0098
2007 0.0177 -0.0336 0.0507 0.0843
2008 -0.1571 -0.1004 -0.0582 0.0422
2009 0.0978 0.0726 0.0238 -0.0488
2010 0.0543 0.0303 0.0237 -0.0066
2011 0.0097 -0.0066 0.0149 0.0214
2012 0.0538 0.0384 0.0156 -0.0228
2013 0.1057 0.0596 0.0460 -0.0136
2014 0.0450 0.0106 0.0344 0.0238
2015 0.0016 -0.0015 0.0032 0.0046
2016 0.0400 0.0599 -0.0200 -0.0799
2017 0.0715 0.0227 0.0488 0.0260
2018 -0.0203 -0.0684 0.0484 0.1168
2019 0.1036 0.0541 0.0492 -0.0050
2020 0.0816 0.0205 0.0585 0.0380
2021 0.0984 0.0380 0.0601 0.0221
2022 -0.0746 -0.0149 -0.0597 -0.0448
2023 0.0904 0.0727 0.0179 -0.0548
2024 0.0881 0.0078 0.0804 0.0726

The final important bit of research relates to measuring the magnitude of the overnight and intraday returns and the effect on future returns. In other words, does a relatively big return overnight mean a big return intraday? Or vice versa?

The staff for the Federal Reserve Bank of New York wrote a report on the phenomena of “overnight drift”. Among other things, the authors researched the relationship between the size of the intraday return and subsequent effect on overnight returns. They found that a large positive overnight return usually followed a large intraday sell-off. But the reverse was not always true; when markets rallied intraday, the price reversal overnight was much more modest. As the authors concluded:

Market selloffs generate robust positive overnight reversals, while reversals following market rallies are much more modest

See also The Overnight Drift in U.S. Equity Returns - Liberty Street Economics - Link - DB for a good summary of the staff paper.

As noted in the Financial Times article:

Returns that are realized in the the overnight period can be used to predict both the subsequent intraday and overnight returns. Specifically, high (low) overnight returns are followed by strong (weak) returns in next day’s trading session which are then followed by a reversal in the next overnight session. Crucially, this overnight signal is sufficiently strong to overcome the high turnover and the associated transaction costs, and is robust with respect to the actual implementation lag we need to consider between determining the signal and the actual implementation.

Assuming this is true, the foregoing tests the idea that intraday and overnight periodic returns are a signal for the other. The signal (the percentage change in the given period) remains relative to the history of the individual stock itself. What is “high” for one stock might be relatively “low” for another. To measure returns relative to a stock’s recent history, I use Z-Score and Percentile Rank throughout the analysis.

Returns on a relative basis for a given stock can then be classified as follows:

  • High positive intraday returns
  • High positive overnight returns
  • High negative intraday returns
  • High negative overnight returns

High positive returns will be denoted with “Plus”, and highly negative moves will be denoted with a “Minus”.

For example, dividing positive intraday returns into twenty separate “bins” of percentiles and comparing the subsequent overnight return will be referred to as “Intraday - Bin Plus”. Z-score based on a 20-day SMA and SD is also used as a way to measure the relative positive or negative move during a given session. A negative move overnight is referenced as “Overnight - Z-Score Minus. The term included in the label will refer to the signal and the return is calculated on the session immediately following the signal.

Label Signal Return Calculation
Intraday - Z-Score/Bin Plus Intraday 20-day Z-Score is Greater than 2.0/Percentile is 95% or Greater Next Overnight Session
Intraday - Z-Score/Bin Minus Intraday 20-day Z-Score is Less than -2.0/Percentile is 5% or Less Next Overnight Session
Overnight - Z-Score/Bin Plus Overnight 20-day Z-Score is Greater than 2.0/Percentile is 95% or Greater Next Intraday Session
Overnight - Z-Score/Bin Minus Overnight 20-day Z-Score is Less than -2.0/Percentile is 5% or Less Next Intraday Session

For SPY, as the average intraday return increases, the overnight return decreases. For example, the highest percentile returns for SPY (95th plus percentile defined as those returns above 2.7% intraday) were followed by the largest negative returns overnight. As explored in this post more fully below, this is not the case for every symbol.

Chart and Table - SPY - INTRADAY Returns

The chart and table below show average intraday returns grouped into percentiles and the subsequent overnight return.

The diff column is calculated by taking the overnight percentage minus the intraday percentage. For example, the 1st percentile (bottom 5%) of intraday returns average -2.295% and are followed by average overnight returns of 0.003%. The 20th percentile (above the 95th percentile) intrday return for SPY averaged 2.175% and was followed by an overnight return of -0.019%.

percentile intraday pct (%) overnight pct (%) diff
1 -2.295 0.003 2.299
2 -1.274 0.016 1.290
3 -0.912 0.099 1.011
4 -0.658 0.051 0.709
5 -0.485 -0.004 0.481
6 -0.353 0.017 0.370
7 -0.240 0.044 0.283
8 -0.147 0.051 0.198
9 -0.066 0.040 0.106
10 0.006 0.089 0.083
11 0.081 0.016 -0.065
12 0.155 0.052 -0.104
13 0.233 0.063 -0.170
14 0.316 -0.017 -0.333
15 0.411 0.000 -0.411
16 0.525 0.022 -0.503
17 0.669 0.002 -0.667
18 0.852 0.099 -0.753
19 1.141 0.035 -1.106
20 2.175 -0.019 -2.194

Chart and Table - SPY - OVERNIGHT Returns

percentile overnight pct (%) intraday pct (%) diff
1 -1.630 0.050 1.680
2 -0.735 -0.045 0.689
3 -0.497 -0.009 0.488
4 -0.356 -0.001 0.355
5 -0.260 -0.010 0.250
6 -0.184 0.011 0.195
7 -0.121 0.033 0.154
8 -0.065 0.057 0.122
9 -0.015 0.027 0.042
10 0.028 -0.042 -0.071
11 0.075 0.020 -0.055
12 0.123 -0.026 -0.149
13 0.173 -0.016 -0.189
14 0.227 -0.019 -0.246
15 0.285 -0.004 -0.289
16 0.357 -0.030 -0.386
17 0.444 -0.050 -0.494
18 0.561 -0.039 -0.600
19 0.767 0.017 -0.750
20 1.491 0.199 -1.292

Analysis Overview

The introduction above offers a short overview of the relevant research and a breakdown of the S&P 500 as represented by the SPY ETF. More resources are provided below in the Notes & Research section at the end.

The remainder of this report will measure and report on the Top 500 symbols by total option volume from 2014 to 2023. A complete copy of the csv file with all of the symbols mentioned can be downloaded here.

For each of the symbols, I will measure:

  • Absolute Price Change The absolute change in stock price intraday and overnight.
  • Total Periodic Return Percentage (grouped by symbol)
  • Bin Percent Returns Grouped by Percentile (n=20)
  • Z-Score (using a 20-period SMA and 20-period SD)

In addition, a basic trading strategy will be analyzed using the measurements above and bench marked against:

  • Random Entry and Exit

Data Overview

Absolute Price Change - Overnight vs Intraday

The table below summarizes the price change as an absolute value (not percentage) for the intraday and overnight sessions and compares each with the total point change from close to close.

For reference the relevant columns are defined as

  • diff = ratio of the overnight change to the intraday change. Calculated as the overnight price change divided by the intraday price change.
  • diff_on = portion of the total change that the overnight change accounts for - calculated as the overnight change divide by the total change
  • diff_id = portion of the total change that the intraday change accounts for - calculated by the intraday change divided by the total change
  • diff_abs = abs() value of the overnight point change divided by the abs() value of the intraday point change.

Table - Top 20 Stocks - Ranked By diff_on

Below is a table showing the top 20 stocks ranked by intraday versus overnight diff:

symbol count total_pts on_pts id_pts diff diff_on diff_id diff_abs diff_on_abs diff_id_abs
GOLD 8056 0.27 183.18 -183.09 -1.00 672.22 -671.91 1.00 672.22 671.91
IAG 5403 0.38 54.55 -54.34 -1.00 143.55 -143.00 1.00 143.55 143.00
AU 6644 1.51 118.61 -116.97 -1.01 78.29 -77.21 1.01 78.29 77.21
MOS 8056 2.44 176.47 -173.78 -1.02 72.40 -71.30 1.02 72.40 71.30
HST 8056 -0.54 -34.13 33.81 -1.01 63.54 -62.94 1.01 63.54 62.94
LVS 5044 4.14 203.33 -194.53 -1.05 49.11 -46.99 1.05 49.11 46.99
F 8056 1.85 86.10 -84.12 -1.02 46.52 -45.44 1.02 46.52 45.44
C 8056 29.93 1262.24 -1232.52 -1.02 42.18 -41.18 1.02 42.18 41.18
CLF 8056 4.83 182.55 -177.67 -1.03 37.79 -36.78 1.03 37.79 36.78
EWZ 6154 3.74 128.82 -124.96 -1.03 34.49 -33.46 1.03 34.49 33.46
HR 7955 -2.69 -87.14 84.45 -1.03 32.39 -31.39 1.03 32.39 31.39
EGO 5522 7.10 226.19 -219.54 -1.03 31.86 -30.92 1.03 31.86 30.92
NEM 8056 4.60 131.58 -127.08 -1.04 28.60 -27.63 1.04 28.60 27.63
DDD 8056 2.15 53.37 -51.27 -1.04 24.76 -23.79 1.04 24.76 23.79
AGIO 2879 1.75 43.14 -39.11 -1.10 24.65 -22.35 1.10 24.65 22.35
SSYS 7600 7.21 130.50 -123.42 -1.06 18.09 -17.11 1.06 18.09 17.11
XME 4662 11.20 193.79 -181.99 -1.06 17.30 -16.25 1.06 17.30 16.25
SPX 6247 -2.75 -47.55 45.52 -1.04 17.28 -16.55 1.04 17.28 16.55
PBR 6135 5.59 96.56 -90.12 -1.07 17.26 -16.11 1.07 17.26 16.11
APA 8056 14.41 232.21 -217.85 -1.07 16.11 -15.12 1.07 16.11 15.12

Overall for the 483 stocks analyzed, the results were as follows:

  • 60% of the time, the overnight return accounted for the majority (more than 50%) of the total return
  • 80% of overnight returns were positive
  • 40% of intraday returns were positive
measure value
ON Returns - Majority 0.607
ON Returns - Positive 0.816
ID Returns - Majority 0.393
ID Returns - Positive 0.398

Table - Bottom 20 Stocks - Ranked By diff_on

Below is a table showing the bottom 20 stocks ranked by intraday versus overnight diff:

symbol count total_pts on_pts id_pts diff diff_on diff_id diff_abs diff_on_abs diff_id_abs
CX 6364 -3.10 53.35 -56.43 -0.95 -17.22 18.22 0.95 17.22 18.22
KNDI 4361 -2.85 56.35 -59.30 -0.95 -19.77 20.81 0.95 19.77 20.81
ONVO 3240 -32.64 667.65 -700.29 -0.95 -20.45 21.45 0.95 20.45 21.45
HL 8056 -2.64 58.00 -60.64 -0.96 -21.97 22.97 0.96 21.97 22.97
BABA 2587 -9.76 258.28 -266.85 -0.97 -26.46 27.34 0.97 26.46 27.34
RIG 7954 -12.15 338.48 -350.54 -0.97 -27.85 28.84 0.97 27.85 28.84
SAN 8056 1.46 -47.18 48.61 -0.97 -32.41 33.39 0.97 32.41 33.39
CSIQ 4564 -4.40 172.68 -176.97 -0.98 -39.25 40.22 0.98 39.25 40.22
FCEL 8056 -11870.68 467489.51 -479540.19 -0.97 -39.38 40.40 0.97 39.38 40.40
NBR 8056 -108.25 4743.34 -4851.59 -0.98 -43.82 44.82 0.98 43.82 44.82
GDX 4684 -3.46 170.10 -172.85 -0.98 -49.16 49.96 0.98 49.16 49.96
HIMX 4719 -0.63 36.15 -37.15 -0.97 -57.38 58.97 0.97 57.38 58.97
GERN 7152 -3.93 250.55 -254.71 -0.98 -63.83 64.89 0.98 63.83 64.89
AAL 4847 -1.68 114.92 -118.35 -0.97 -68.40 70.45 0.97 68.40 70.45
XOP 4662 -7.29 566.74 -573.71 -0.99 -77.74 78.70 0.99 77.74 78.70
SIRI 7628 -23.45 2185.94 -2208.14 -0.99 -93.22 94.16 0.99 93.22 94.16
SLCA 3144 -0.51 56.21 -57.97 -0.97 -110.21 113.66 0.97 110.21 113.66
X 8056 -2.09 282.87 -285.59 -0.99 -135.02 136.32 0.99 135.02 136.32
BLDP 7335 -2.08 327.92 -330.00 -0.99 -157.65 158.65 0.99 157.65 158.65
FOSL 7989 0.14 -83.44 83.55 -1.00 -594.41 595.24 1.00 594.41 595.24

Total Percent Return Change - Overnight vs Intraday

The table below summarizes the price change as an relative percentage value for the intraday and overnight sessions and compares each with the total percentage change from close to close.

For reference the relevant columns are defined as:

  • diff = ratio of the overnight percentage change to intraday percentage change calculated as the overnight percentage change divided by the intraday percentage change
  • diff_on = portion of the total percentage change that the overnight percentage change accounts for - calculated by the overnight percentage change divded by the total percentage change
  • diff_id = portion of the total percentage change that the intraday percentage change accounts for - calculated by the intraday percentage change divided by the total percentage change

Note that all number are returned as absolute values.

Table - Top 20 Stocks - Ranked By Ratio of Overnight to Intraday Percent Return - diff

symbol count tot_pct_total on_pct_total id_pct_total diff diff_on diff_id
XLB 6547 2.129 2.139 -0.001 2272.159 1.005 0.000
AMGN 8056 5.107 5.233 -0.009 579.832 1.025 0.002
EOG 8056 5.950 5.942 0.019 314.298 0.999 0.003
UAL 4757 4.886 4.829 -0.023 209.043 0.988 0.005
PHM 8056 6.405 6.514 -0.046 142.467 1.017 0.007
SPX 6247 693.568 689.369 5.122 134.599 0.994 0.007
OEX 4810 12556.042 12473.380 94.884 131.459 0.993 0.008
DHI 8056 7.913 8.226 0.087 94.336 1.040 0.011
MTW 8056 5.551 5.586 -0.070 79.984 1.006 0.013
GLNG 5403 4.709 4.746 -0.067 70.457 1.008 0.014
TSM 6850 6.026 6.024 0.088 68.710 1.000 0.015
TRIP 3286 0.984 1.019 0.016 64.375 1.035 0.016
TRN 8056 4.404 4.442 -0.093 47.644 1.009 0.021
GLW 8056 4.451 4.506 -0.115 39.238 1.013 0.026
XLV 6547 2.119 2.112 0.058 36.159 0.997 0.028
LYB 3694 2.123 2.139 -0.063 34.116 1.007 0.030
SU 8056 40.515 41.341 -1.219 33.910 1.020 0.030
INFN 4422 2.201 2.113 0.070 30.064 0.960 0.032
WSBF 4841 2.384 2.680 0.100 26.930 1.124 0.042
XRT 4662 2.140 2.077 0.084 24.787 0.970 0.039

Overall for the 483 stocks analyzed, the results were as follows:

  • in 69% of the stocks (334 of 483), the total overnight total return accounted for the majority (more than 50%) of the total close to close percent return
  • in 84% of the stocks (408 of 483), the overnight percent returns were positive
  • in 60% of the stocks (292 of 483), the intraday percent returns were positive
measure value
ON Returns - Majority 0.696
ON Returns - Positive 0.849
ON Returns - Total (pct) 15095.532
ID Returns - Majority 0.304
ID Returns - Positive 0.592
ID Returns - Total (pct) 222.413

Table - Bottom 20 Stocks - Ranked By Ratio of Overnight to Intraday Percent Return - diff

symbol count tot_pct_total on_pct_total id_pct_total diff diff_on diff_id
BKLN 3480 -0.152 -0.002 -0.148 0.010 -0.010 -0.976
IPG 8056 3.108 -0.044 3.344 0.013 0.014 1.076
COST 8056 6.048 -0.097 6.182 0.016 0.016 1.022
EXC 8056 2.410 0.041 2.397 0.017 0.017 0.995
DRI 7463 5.346 -0.168 5.620 0.030 0.031 1.051
MRK 8056 2.684 -0.083 2.772 0.030 0.031 1.033
BRFS 6085 3.931 0.116 3.826 0.030 0.030 0.973
MAT 8056 2.386 -0.101 2.629 0.038 0.042 1.102
XOM 8056 2.960 -0.118 3.063 0.039 0.040 1.035
NKE 8056 4.992 0.187 4.836 0.039 0.037 0.969
MCD 8056 4.038 0.177 3.918 0.045 0.044 0.970
AFL 8056 5.666 0.249 5.400 0.046 0.044 0.953
WDAY 3072 2.587 0.121 2.495 0.048 0.047 0.964
PNC 8056 3.817 0.189 3.675 0.051 0.049 0.963
HTZ 880 -1.259 0.052 -0.992 0.052 -0.041 -0.788
CLX 8056 3.569 0.180 3.396 0.053 0.050 0.952
IBM 8056 4.121 0.216 3.852 0.056 0.052 0.935
USB 8056 4.173 -0.274 4.577 0.060 0.066 1.097
IRM 7277 5.019 -0.366 5.532 0.066 0.073 1.102
PBI 8056 1.846 0.129 1.612 0.080 0.070 0.873

Bin Percentile Returns

Next, the stocks were grouped by symbol and the overnight and intraday returns were divided into 20 equal width bins based on their relative percentile rank for each stock’s available price history. Twenty separate bins representing 5 percentile points for both the intraday return and the overnight returns were analyzed.

The goal of this exercise was to see if the current period return affected a later period return. For example, when a stock had an intraday return that was in the 1st (lowest) percentile, what was the average overnight return? Or when a stock had an overnight return that was in the 20th (highest) percentile, what was the average intraday return?

Overnight percentile rank was higher when the prior intraday returns were lowest. For example, when intraday returns ranked in the 1st percentile, overnight returns averaged 11.1.

Similarly, intraday returns that were lowest were generally followed by higher than average overnight returns.

Intraday Bins

The table and charts below show the results grouped by intraday bins. Overall, relatively high intraday returns were followed by relatively lower overnight returns, and low intraday returns were followed by higher overnight returns.

I compared the z-scores of overnight and intraday returns. For example, when intraday returns were at their highest (20th bin or greater than 95th percentile) the mean Z-score was 1.25 while the mean overnight return had a Z-score of 0.009 for a diff_z (overnight z-score minus intraday z-score) of -1.24.

bin_id count id_mean on_mean id_tot_z on_tot_z diff diff_z
1 149834 -0.053 0.008 -1.156 0.006 0.060 1.162
2 149819 -0.029 0.006 -0.631 0.003 0.035 0.634
3 149800 -0.021 0.005 -0.465 0.001 0.026 0.466
4 149784 -0.016 0.005 -0.360 -0.001 0.021 0.358
5 149765 -0.013 0.004 -0.281 -0.003 0.016 0.278
6 149753 -0.010 0.003 -0.217 -0.005 0.013 0.213
7 149728 -0.007 0.001 -0.163 -0.010 0.008 0.153
8 149706 -0.005 0.011 -0.113 0.013 0.016 0.127
9 149696 -0.003 0.005 -0.067 -0.001 0.008 0.067
10 149681 -0.001 0.003 -0.023 -0.006 0.003 0.017
11 149668 0.001 0.003 0.013 -0.005 0.002 -0.018
12 149649 0.003 0.007 0.054 0.004 0.004 -0.050
13 149636 0.005 0.006 0.100 0.002 0.001 -0.098
14 149624 0.007 0.002 0.150 -0.008 -0.005 -0.158
15 149605 0.009 0.005 0.205 0.001 -0.004 -0.204
16 149592 0.012 0.005 0.269 0.000 -0.007 -0.270
17 149403 0.016 0.005 0.350 0.000 -0.011 -0.350
18 149388 0.021 0.005 0.458 -0.001 -0.016 -0.459
19 149381 0.029 0.006 0.633 0.001 -0.023 -0.632
20 149366 0.057 0.009 1.253 0.009 -0.049 -1.245

Overnight Bins

The table and charts below show the results grouped by overnight bins.

bin_on count id_mean on_mean id_tot_z on_tot_z diff diff_z
1 149811 0.004 -0.036 0.085 -0.100 -0.040 -0.184
2 149793 0.001 -0.016 0.021 -0.051 -0.017 -0.071
3 149777 0.000 -0.011 0.008 -0.039 -0.012 -0.047
4 149759 0.001 -0.008 0.010 -0.031 -0.008 -0.041
5 149747 0.000 -0.006 0.001 -0.026 -0.006 -0.026
6 149722 0.000 -0.004 -0.002 -0.022 -0.004 -0.020
7 149701 0.000 -0.003 -0.008 -0.019 -0.002 -0.010
8 149690 0.000 -0.001 -0.007 -0.016 -0.001 -0.008
9 149676 0.000 0.000 -0.008 -0.013 0.000 -0.005
10 149663 0.000 0.000 -0.003 -0.012 0.000 -0.009
11 149644 0.000 0.001 -0.005 -0.011 0.001 -0.006
12 149632 0.000 0.002 -0.002 -0.008 0.002 -0.006
13 149620 0.000 0.003 -0.001 -0.006 0.003 -0.004
14 149600 0.000 0.004 -0.005 -0.003 0.004 0.002
15 149587 0.000 0.005 -0.005 0.000 0.005 0.005
16 149398 0.000 0.007 -0.008 0.004 0.007 0.012
17 149383 0.000 0.010 -0.008 0.011 0.010 0.019
18 149375 0.000 0.021 -0.012 0.039 0.022 0.051
19 149360 -0.001 0.043 -0.018 0.091 0.044 0.109
20 149343 -0.001 0.092 -0.033 0.210 0.094 0.243

Z-Score

As a final step I looked at all symbols and how often the Z-Score was greater than 2.0 (“Z-Score Plus”) and how often the Z-score was less than -2.0 (“Z-Score Minus”). This analysis was applied to both intraday and overnight returns.

Note that both Plus and Minus designations refer to when the stock returns (either intraday or overnight returns) were more (Plus) or less (Minus) than 2 standard deviations above or below the 20 period simple moving average.

As noted in the table below:

  • There were 74,443 times when the stocks had returns greater than 2 standard deviations (Z-Score Plus) where the average move was 5.70%. This was followed by an overnight move of 1.20%.
  • There were 65,959 intraday returns that were Z-Score Minus. The average intraday move was -4.70% followed by an average overnight move of 1.0%.
  • Overnight Z-Score Plus - big upside overnight moves that averaged 3.90% - were followed by a relatively flat to slightly negative intraday returns.
  • Overnight Z-Score Minus - big downisde overnight moves that averaged -3.40% - were followed by a relatively flat to slightly positive intraday returns.
measurement count on_mean id_mean diff
Intraday - Z-Score Plus 74498 0.011 0.057 0.046
Intraday - Z-Score Minus 67322 0.010 -0.047 -0.057
Overnight - Z-Score Plus 75438 0.082 -0.001 -0.083
Overnight - Z-Score Minus 82929 -0.034 0.003 0.037

Trading Simulation

The next section analyzes the trading simulation using the trends noted above.

For each dataset, the entry and exit is simulated 50,000 times. Then the average of the results are compared to the benchmark. For example, the Z-score plus simulation enters short at the daily open if the z-score for the overnight return is greater than 2. It then exits at the close of the day. Each entry and exit is a position, and one simulation consists of 100 unique (but random) positions across all available stocks. Each simulation is repeated 50,000 and compared against a random entry and exit benchmark (which is repeated 50,000 times).

  • Number of Positions Per Simulation 100 random positions per simulation
  • Number of Monte Carlo Simulations 50,000 simulations
  • Measure Sum of profit/loss at end of 100 trades
  • Benchmark Random entry and exit

Z-Score Plus

  • Entry
    • Overnight Z-Score Plus Enter at open of intraday session if z-score of prior overnight return is greater than +2.0.
    • Intraday Z-Score Plus Enter at close of intraday session if z-score of intraday return is greater than +2.0.
  • Exit Exit stock at close (ie the end of the intraday session) or at the open (ie at the end of the overnight session).

Below is the performance summary for the average plus z-score simulation compared with the benchmark.

measure Overnight - Z-Score Plus Intraday - Z-Score Plus benchmark
Net Profit -0.0886 1.1220 0.0043
Gross Profit 1.1266 1.7450 0.7924
Gross Loss -1.2152 -0.6229 -0.7881
Profit Factor 0.9757 3.2532 1.0578
No. of Wins 47.4482 46.4708 48.1027
No. of Losses 49.9139 43.4263 48.2516
No. of Even Trades 2.6379 10.0921 3.1989
Total Trades 100.0000 99.9891 99.5532
Winning Percentage 0.4872 0.5169 0.4992
Avg Trade Net Profit -0.0007 0.0110 0.0001
Average Win 0.0236 0.0369 0.0167
Average Loss -0.0241 -0.0138 -0.0167
Ratio Win/Loss 1.0049 2.9647 1.0382
Largest Win 0.1628 1.2204 0.1051
Largest Loss -0.1484 -0.1630 -0.0923

Z-Score Minus

The Z-score minus system enters long if the z-score is less than -2. The entries below are divided up between when the z-score was less than -2; overnight z-score minus and intraday z-score minus.

  • Entry
    • Overnight Z-Score Minus Long at open of intraday session if z-score of prior overnight return is less than -2.0.
    • Intraday Z-Score Minus Long at close of intraday session if z-score of return is less than -2.0.
  • Exit Exit long position at the close of the intraday session or open of intraday session.

Below is the performance summary for the average minus z-score simulation compared with the benchmark.

measure Overnight - Z-Score Minus Intraday - Z-Score Minus benchmark
Net Profit 0.2882 0.9669 0.0043
Gross Profit 1.2539 1.5097 0.7924
Gross Loss -0.9657 -0.5428 -0.7881
Profit Factor 1.3763 3.2035 1.0578
No. of Wins 52.3861 52.1084 48.1027
No. of Losses 45.2446 40.4689 48.2516
No. of Even Trades 2.3693 7.4209 3.1989
Total Trades 100.0000 99.9982 99.5532
Winning Percentage 0.5371 0.5629 0.4992
Avg Trade Net Profit 0.0026 0.0090 0.0001
Average Win 0.0238 0.0284 0.0167
Average Loss -0.0214 -0.0129 -0.0167
Ratio Win/Loss 1.1613 2.4247 1.0382
Largest Win 0.1681 0.9706 0.1051
Largest Loss -0.1280 -0.1310 -0.0923

Bin Plus

The Bin Plus system enters at the open/close if the stock return is in the 95th or greater percentile of overnight/intraday returns. The 95th percentile is determined based on the entire available trading history of the stock.

  • Entry Short stock at open/close if the overnight/intraday return is in the 95th+ percentile
  • Exit Exit short stock at close/open (ie the end/beginning of the intraday session)
measure Overnight - Bin Plus Intraday - Bin Plus benchmark
Net Profit -0.1414 0.8812 0.0043
Gross Profit 1.3134 1.5941 0.7924
Gross Loss -1.4548 -0.7129 -0.7881
Profit Factor 0.9459 2.4367 1.0578
No. of Wins 46.9182 46.8042 48.1027
No. of Losses 50.1164 44.7699 48.2516
No. of Even Trades 2.9654 8.4192 3.1989
Total Trades 100.0000 99.9933 99.5532
Winning Percentage 0.4833 0.5111 0.4992
Avg Trade Net Profit -0.0013 0.0084 0.0001
Average Win 0.0280 0.0341 0.0167
Average Loss -0.0291 -0.0156 -0.0167
Ratio Win/Loss 0.9900 2.2678 1.0382
Largest Win 0.1793 0.9230 0.1051
Largest Loss -0.1615 -0.1243 -0.0923

Bin Minus

The Bin Minus system enters long at the open/close if the stock is in the 5th or less percentile of overnight/intraday returns. The 5th percentile is determined based on the entire available trading history of the stock.

  • Entry Long stock at open/close if the overnight/intraday return is below the 5th percentile
  • Exit Exit long stock at close/open (ie the end or beginning of the intraday session)
measure Overnight - Bin Minus Intraday - Bin Minus benchmark
Net Profit 0.3852 0.7613 0.0043
Gross Profit 1.5838 1.4544 0.7924
Gross Loss -1.1986 -0.6931 -0.7881
Profit Factor 1.3934 2.2882 1.0578
No. of Wins 51.7103 52.1091 48.1027
No. of Losses 45.0758 40.2808 48.2516
No. of Even Trades 3.2140 7.6058 3.1989
Total Trades 100.0000 99.9957 99.5532
Winning Percentage 0.5346 0.5641 0.4992
Avg Trade Net Profit 0.0038 0.0070 0.0001
Average Win 0.0307 0.0282 0.0167
Average Loss -0.0265 -0.0173 -0.0167
Ratio Win/Loss 1.1872 1.7189 1.0382
Largest Win 0.2067 0.6846 0.1051
Largest Loss -0.1460 -0.1194 -0.0923

Daily - ALL Z-Score Plus

The next trading simulation is to examine by date where overnight and intraday returns have a Z-Score greater than 2.0. Then enter all stocks at the open/close and exit at close/open.

The table below shows the average number of stocks available per day that satisfy the Daily Z-Score Plus requirement.

measure number of stocks
Overnight - Daily - Z-Score Plus 9.71
Intraday - Daily - Z-Score Plus 9.64

The simulation standards are as follows:

  • Entry ALL stock(s) that qualify as follows
    • Intraday At open if z-score of overnight return(s) is greater than 2.0
    • Overnight At close if z-score of intraday return(s) is greater than 2.0
  • Exit Exit ALL stock(s) at close (ie the end of the intraday session) or the open (ie the end of the overnight session)
measure Overnight - Daily Z-Score Plus Intraday - Daily Z-Score Plus benchmark
Net Profit -0.2056 0.9355 0.0043
Gross Profit 0.7401 1.5060 0.7924
Gross Loss -0.9457 -0.5705 -0.7881
Profit Factor 0.8181 3.0359 1.0578
No. of Wins 45.3270 50.4366 48.1027
No. of Losses 54.1368 47.2861 48.2516
No. of Even Trades 0.5362 2.2773 3.1989
Total Trades 100.0000 100.0000 99.5532
Winning Percentage 0.4549 0.5164 0.4992
Avg Trade Net Profit -0.0013 0.0094 0.0001
Average Win 0.0163 0.0301 0.0167
Average Loss -0.0183 -0.0122 -0.0167
Ratio Win/Loss 0.9587 2.7785 1.0382
Largest Win 0.1146 0.9757 0.1051
Largest Loss -0.1053 -0.1456 -0.0923

Daily - ALL Z-Score Minus

The next trading simulation is to examine by date where overnight and intraday returns have a Z-Score less than -2.0. Then enter all stocks at the open/close and exit at close/open.

The table below shows the average number of stocks available per day that satisfy the Daily Z-Score Minus requirement.

measure number of stocks
Overnight - Daily - Z-Score Minus 10.81
Intraday - Daily - Z-Score Minus 9.21

The simulation standards are as follows:

  • Entry ALL stock(s) that qualify as follows
    • Intraday At open if z-score of overnight return(s) is less than -2.0
    • Overnight At close if z-score of intraday return(s) is less than -2.0
  • Exit Exit ALL stock(s) at close (ie the end of the intraday session) or the open (ie the end of the overnight session)
measure Overnight - Daily Z-Score Minus Intraday - Daily Z-Score Minus benchmark
Net Profit 0.3494 1.4627 0.0043
Gross Profit 0.9786 1.8868 0.7924
Gross Loss -0.6292 -0.4240 -0.7881
Profit Factor 1.6475 5.3046 1.0578
No. of Wins 55.7566 59.1766 48.1027
No. of Losses 43.5806 37.8066 48.2516
No. of Even Trades 0.6627 3.0168 3.1989
Total Trades 100.0000 100.0000 99.5532
Winning Percentage 0.5623 0.6104 0.4992
Avg Trade Net Profit 0.0027 0.0138 0.0001
Average Win 0.0182 0.0319 0.0167
Average Loss -0.0137 -0.0120 -0.0167
Ratio Win/Loss 1.2568 3.2881 1.0382
Largest Win 0.1162 1.2499 0.1051
Largest Loss -0.0831 -0.1225 -0.0923

Daily - Z-Score - 5-Max Plus

The next trading simulation is the same as the daily Z-score Plus shown above with the exception that entries are limited to 5 stocks rather than ALL of the stocks that have a z-score greater than 2.0. Examine - by date - which stocks have an overnight/intraday return with a Z-score greater than 2.0. Then enter a maximum of 5 stocks at the open/close and exit at close/open. If there are fewer than 5 stocks that satisfy the entry rule, then the system enters those stocks. If there are no stocks that satisfy the entry rule, then the system is flat.

measure Overnight - Daily Z-Score 5-Max Plus Intraday - Daily Z-Score 5-Max Plus benchmark
Net Profit -0.3019 1.5424 0.0043
Gross Profit 0.8805 2.2010 0.7924
Gross Loss -1.1824 -0.6586 -0.7881
Profit Factor 0.7743 3.7502 1.0578
No. of Wins 43.8802 49.8798 48.1027
No. of Losses 55.5676 47.8337 48.2516
No. of Even Trades 0.5521 2.2865 3.1989
Total Trades 100.0000 100.0000 99.5532
Winning Percentage 0.4403 0.5107 0.4992
Avg Trade Net Profit -0.0026 0.0155 0.0001
Average Win 0.0204 0.0438 0.0167
Average Loss -0.0211 -0.0135 -0.0167
Ratio Win/Loss 0.9627 3.5143 1.0382
Largest Win 0.1291 1.5759 0.1051
Largest Loss -0.1153 -0.1556 -0.0923

Daily - Z-Score - 5-Max Minus

The next trading simulation is the same as the daily Z-score Minus shown above with the exception that entries are limited to 5 stocks rather than ALL of the stocks that have a z-score less than -2.0. Examine - by date - which stocks have an overnight/intraday return with a Z-score less than -2.0. Then enter a maximum of 5 stocks at the open/close and exit at close/open. If there are fewer than 5 stocks that satisfy the entry rule, then the system enters those stocks. If there are no stocks that satisfy the entry rule, then the system is flat.

measure Overnight - Daily Z-Score 5-Max Minus Intraday - Daily Z-Score 5-Max Minus benchmark
Net Profit 0.2858 1.0386 0.0043
Gross Profit 0.8898 1.4523 0.7924
Gross Loss -0.6040 -0.4138 -0.7881
Profit Factor 1.5629 4.1950 1.0578
No. of Wins 54.5377 57.4522 48.1027
No. of Losses 44.7826 39.5027 48.2516
No. of Even Trades 0.6797 3.0451 3.1989
Total Trades 100.0000 100.0000 99.5532
Winning Percentage 0.5500 0.5929 0.4992
Avg Trade Net Profit 0.0019 0.0095 0.0001
Average Win 0.0165 0.0256 0.0167
Average Loss -0.0125 -0.0115 -0.0167
Ratio Win/Loss 1.2533 2.8073 1.0382
Largest Win 0.1126 0.9276 0.1051
Largest Loss -0.0825 -0.1241 -0.0923

Conclusion & Next Steps

Across the 483 stocks analyzed, overnight returns account for the majority of the total return. The effect on the market - and particularly retail traders - is not insignificant. As the authors of the paper “Night Moves: Is the Overnight Drift the Grandmother of All Market Anomalies?” note, there are three valid concerns inherent in the “overnight effect”:

  • Because retail traders are not allowed to trade outside of market hours, they “are potentially missing out on billions of dollars of returns due to mistimed trades”
  • The overnight effect might have implications for the long-term valuation of the entire equity market
  • Assuming our findings and those of others who have studied the effect are correct, this is one of the most consistent, significant and overlooked anomalies in finance, which can contribute to our understanding of the limits of market efficiency.

Further research and next steps:

  • Long-Short Trading System It would be interesting to test a long-short trading system where you are long overnight and short during the day.
  • Reporting in Context Create an automated report that identifies potential entry opportunities based on the preceding overnight or intraday returns.
  • Effect of 24-Hour Exchange Major stock exchanges are moving toward 24-hour exchanges. The NYSE announced plans to allow trading 22-hours per day from Monday through Friday. Some individual brokerages allow 24-hour trading. Crypto markets already trade 24-hours. Will the overnight affect go away when the trading world embraces around the clock trading? Time will tell.

Notes & Research

  • Buy the Close, Sell the Open Strategy Generates +1,100% Gains From 1993 - Link - DB
  • The curious case of rising stocks in the night-time - Link - DB
  • Exploiting the wonderfully weird overnight drift of stocks - Link - DB
  • 2 NightShares ETFs Close After Struggling to Gain Traction | etf.com - Link - DB
  • The Overnight Drift in U.S. Equity Returns - Liberty Street Economics - Link - DB
  • Extended-Hours Trading: Know the Risks | FINRA - Link - DB

Stocks

  • Paying Attention: Overnight Returns and the Hidden Cost of Buying at the Open - Link - DB
  • Statistical analysis of the overnight and daytime return - Link - DB
  • Overnight returns, daytime reversals, and future stock returns - Link - DB
  • Overnight returns of stock indexes: Evidence from ETFs and futures - Link - DB
  • A tug of war: Overnight versus intraday expected returns - Link - DB
  • Overnight stock returns and realized volatility - Link - DB
  • The relative importance of overnight sentiment versus trading-hour sentiment in volatility forecasting - Link - DB
  • VIX to S&P 500 Correlation Over the Weekend: Are Market Makers Using S&P 500 Weekend Returns to Price VIX on Monday Morning? - Link - DB
  • Forecasting realized volatility: The role of implied volatility, leverage effect, overnight returns, and volatility of realized volatility - Link - DB
  • Modeling the Stock Relation with Graph Network for Overnight Stock Movement Prediction - Link - DB
  • Night Moves: Is the Overnight Drift the Grandmother of All Market Anomalies? - Link - DB

Options

  • Why do option returns change sign from day to night? - ScienceDirect - Link - DB
    • Internet Appendix for “Why Do Option Returns Change Sign from Day to Night?”- Link - DB
  • Option Pricing with Overnight and Intraday Volatility - Link - DB