Reconciling Daily SPY Returns Across Trading Sessions
Summary
The document explains why summing SPY’s daily close-minus-open changes does not match the difference between its first opening price and final closing price over the same period. The calculation captures only price movement within each regular session, so it omits overnight gaps between one close and the next open. The answer also identifies distributions and fund expenses as relevant to comparing price changes over time.
For a series that captures consecutive daily price movement, the answer recommends using each close minus the previous close. That measure includes opening gaps and reflects dividend and expense accruals in the price series as described in the discussion. The example comes from a question using Yahoo Finance data, but no adjusted-price methodology or detailed treatment of distributions and fees is provided. The distinction matters when measuring returns over a multi-day holding period: intraday changes alone do not represent the full path from the initial open to the final close.
Key ideas
- Daily close-minus-open changes omit overnight movement between sessions.
- Close-to-previous-close changes capture overnight opening gaps as well as regular-session price movement.
- Dividends and fund expenses can affect comparisons between accumulated daily changes and endpoint prices.
- Choose a return measure that matches the holding period and the components being analyzed.
Tags
Full text
# Why SPY gaining value overnight? # Why SPY gaining value overnight? I am just learning quantitive finance and most likely missing something really obvious here, but why is S&P500 gaining value outside of trading hours? Or is it? I took following data from Yahoo Finance API SPY First Open 2010.1.1 value = 112.370003 SPY Last Close 2017.1.1 value = 223.52999900000003 Last Close - First Open = 111.15999600000004 Next, I created series for daily value change. Series is Close - Open for each day between 2010.1.1 - 2017.1.1 I ran a sum() for my daily change for this time periods. It's sum of all daily change values and it's value = 73.64011700000037 Why it's not equal to 111.15999600000004? Below my link to my iPython notebook with the code. https://nbviewer.jupyter.org/gist/HintikkaKimmo/1ca2fe904eb504641eb7d137976d0208 ## Answer by amdopt (score 3, accepted) https://quant.stackexchange.com/a/32924 > Next, I created series for daily value change. Series is Close - Open for each day between 2010.1.1 - 2017.1.1 I ran a sum() for my daily change for this time periods. It's sum of all daily change values and it's value = 73.64011700000037 Why it's not equal to 111.15999600000004? By summing Close - Open for each day you are missing several things: (1) dividends, (2)fund expense fees and (3)any other fees associated with the fund (4) extended hours trading. Using Close - Previous Close will capture dividend accruals as well as any fund expense accruals and any gap openings that are the result of extended hours trading.
Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.