Figure 2 of the 2019 paper "Celebrating Three Decades of Worldwide Stock Market Manipulation" shows that 29 Jan 1993 to 31 Oct 2019, overnight returns (from close to open) of SPY were 1232% while intraday returns (from open to close) were –14%.
Surprisingly, the opposite holds for the S&P500 index i.e. intraday returns beat overnight returns. To demonstrate this, we can download a file "^GSPC.csv" from Yahoo Finance and run this script:
import pandas as pd
import matplotlib.pyplot as plt
prices = pd.read_csv("^GSPC.csv", parse_dates = ["Date"]).set_index("Date")
indayRet = (prices["Close"] / prices["Open"]).cumprod() - 1
nightRet = (prices["Open"] / prices["Close"].shift(1)).cumprod() - 1
plt.plot(nightRet, label = "Overnight")
plt.plot(indayRet, label = "Intraday")
plt.legend(frameon = False)
plt.show()
Over the same period, cumulative overnight and intraday returns of S&P500 were 25% and 457% respectively.
Could dividends explain the opposite conclusions? They shouldn't because the returns of SPY and S&P500 both included dividends.
Anyway, I ran the same script for SPY prices without dividends, and found that cumulative overnight and intraday returns were 706% and –14% respectively.
Question
Why do intraday returns beat overnight returns for S&P500, while the opposite holds for SPY?