Nothing traded over the weekend. Implied volatility moved anyway.
Over one weekend not one of 14,230 SPY contracts changed price, volume or open interest — and implied volatility moved on 13,727 of them. Here is what that actually means for weekend theta.
There is a question that comes up in every options forum, roughly monthly, and gets answered confidently in both directions: does theta decay over the weekend? Half the replies say yes, the market prices three days of decay into Friday's close. The other half say no, decay follows trading time, not calendar time, and the weekend is free. Both camps have someone quoting a textbook.
I had no strong view either way. What I did have was a database that had been taking a snapshot of the whole SPY option chain every fifteen minutes, including through weekends, for reasons that had nothing to do with this argument. So instead of having the opinion I went and looked.
What the weekend actually looks like in the data
Take one weekend — 15 and 16 August 2026 — and the 23 snapshots taken across it. Every snapshot holds the full chain: last price, bid, ask, volume, open interest and the provider's implied volatility for every contract. Comparing the first Saturday snapshot to the last Sunday one, on 14,230 contracts:
| What changed between Saturday and Sunday | Contracts |
|---|---|
| Last traded price | 0 |
| Volume | 0 |
| Open interest | 0 |
| Implied volatility | 13,265 ↑ 462 ↓ |
The first three zeros are exactly what you would expect, and they are worth stating anyway because they are the control. Nothing traded. Nobody opened or closed a position. The chain was frozen solid, which is the whole point of a market being shut.
The fourth line is the interesting one. Implied volatility moved on 13,727 of those contracts between two adjacent snapshots, fifteen minutes apart, on a Saturday. Over the full weekend it rose on 13,265 of them and fell on 462 — overwhelmingly in one direction. The median move was small: about 0.63% of the contract's own IV level. But it was there, it was systematic, and it happened while the market was closed and no trade occurred anywhere in the world.
Where a number that nobody traded comes from
Implied volatility is not observed. This is the part that trips people up, including me for longer than I would like to admit. Nobody publishes an IV. It is inverted from the price: you take the option's price, the underlying's price, the strike, the risk-free rate and the time left until expiry, and you solve backwards for the volatility figure that would make a pricing model output that price.
Now hold four of those five inputs still. Over the weekend the option's price is frozen — nothing traded. The underlying's price is frozen. The strike never moves. Rates are not moving on a Sunday. But time to expiry keeps shrinking, because the calendar does not care that the exchange is shut.
An option with less time left is worth less, all else equal. So if the price has not fallen and time has, the only input left to absorb the difference is volatility — and the number the model solves for goes up. That is the entire mechanism. The weekend "volatility drift" is not the market repricing risk. It is arithmetic on a frozen price against a moving clock.
Which also explains the direction: 13,265 up against 462 down is not a market view, it is a formula being run on a stale number. The 462 exceptions are mostly contracts whose price is a few cents, where the inversion is unstable enough that rounding wins.
So does theta decay over the weekend?
Both camps are describing something real, and they are talking past each other because "decay" is doing two jobs in one word.
Yes, in the model. Theta, as every pricing model computes it, is per calendar day. GammaGrid divides by 365, not by 252, and so does everything else that quotes a theta figure. On a Friday-to-Monday interval the model charges three days of decay, not one. If you are looking at a theta number on a screen, it is counting the weekend.
No, in the tape. Nothing was paid. No price moved, because no price could move. The decay does not happen over the weekend; it happens when the market reopens and the first trades reprice options that are now three days closer to expiry.
The practical version, which is what the forum argument is actually about: you do not lose money over the weekend. You lose it at Monday's open, and the amount corresponds to three calendar days. Whether the market gives it all back depends on what happens over the weekend in the world, which is a separate bet and the reason weekend gaps exist at all.
What this breaks if you are not careful
This is not only trivia. A tool that records the chain while the market is shut and then treats those readings as observations will produce three specific wrong answers, and I know because it produced all three here before I noticed.
- Volume-weighted average IV develops a weekend hump. The average is computed over contracts whose IV is drifting up on a frozen price. Plotted against time it looks like volatility rising into Monday. Nothing of the sort occurred.
- Day-over-day open interest comparisons compare Friday with Friday. Saturday's snapshot is a copy of Friday's, so a naive "yesterday versus today" reads a change of zero on Saturday and Sunday, then a double-size jump on Monday.
- Anything with a rolling baseline gets padded with duplicates. Two sevenths of a "last N days" window is the same day repeated, which flattens the deviation and makes genuinely unusual activity look ordinary.
The fix is not clever, it is just deliberate: aggregate by trading day rather than calendar day, and anchor the day to New York rather than to UTC or to wherever the server happens to be. GammaGrid now also stops collecting while the market is closed — one snapshot per closed day as a safety net, and the rest skipped, because measured against a year of data those snapshots contained no new information about price, volume or open interest at all. Only that drifting IV, which is an artifact of the question rather than an answer to it.
The part you cannot check without a recording
Every number above required one thing that most options tools structurally do not have: something was writing down the chain while nothing was happening.
A live options screen cannot answer this. It shows you the chain as it is right now, and a minute later that view is gone forever. You cannot ask it what implied volatility read at 3pm on a Saturday, or whether the contract's price moved between two moments when the exchange was shut, because it never kept either one. The question is not hard — it is unanswerable without a record, which is why it gets settled by quoting textbooks at each other instead.
That is the argument for keeping history, and it is a fairly boring argument until the moment you want to check something. Then it is the whole thing.
If you want to check this yourself
Nothing here needs my data. Pick a liquid ticker, record the chain on a Friday evening and again on a Sunday, and compare the two contract by contract. You will find prices identical and implied volatility slightly higher, and you will have settled the argument for yourself in one weekend, which is roughly how long the forum thread stays open anyway.
If you would rather not build the recording part, that is what GammaGrid does — it takes the snapshot on a schedule and keeps every one of them, so questions like this become a query rather than an argument.
Ask your own chain what it did last weekend
GammaGrid records the whole chain on a schedule and keeps every snapshot, so the price, the greeks and the implied volatility of any contract can be read back for any moment it was collected. The hosted version is open and free while it is in beta.
Open GammaGrid →Would rather run it yourself? It is open source: github.com/gammagrid/gammagrid