No gods, no kings, only NOPE — or divining the future with options flows. [Part 3: Hedge Winding, Unwinding, and the NOPE]
We’re on the last post of this series (“A Gentle Introduction to NOPE”), where we get to use all the Big Boy Concepts (TM) we’ve discussed in the prior posts and put them all together. Some words before we begin:
- This post will be massively theoretical, in the sense that my own speculation and inferences will be largely peppered throughout the post. Are those speculations right? I think so, or I wouldn’t be posting it, but they could also be incorrect.
- I will briefly touch on using the NOPE this slide, but I will make a secondary post with much more interesting data and trends I’ve observed. This is primarily for explaining what NOPE is and why it potentially works, and what it potentially measures.
My advice before reading this is to glance at my prior posts, and either read those fully or at least make sure you understand the tl;drs:
Depending on popular demand, I will also make a last-last post called FAQ, where I’ll tabulate interesting questions you guys ask me in the comments!
So a brief recap before we begin.
Market Maker (“Mr. MM”): An individual or firm who makes money off the exchange fees and bid-ask spread for an asset, while usually trying to stay neutral about the direction the asset moves.
Delta-gamma hedging: The process Mr. MM uses to stay neutral when selling you shitty OTM options, by buying/selling shares (usually) of the underlying as the price moves.
Law of Surprise [Lily-ism]: Effectively, the expected profit of an options trade is zero for both the seller and the buyer.
Random Walk: A special case of a deeper probability probability called a martingale, which basically models stocks or similar phenomena randomly moving every step they take (for stocks, roughly every millisecond). This is one of the most popular views of how stock prices move, especially on short timescales.
Future Expected Payoff Function [Lily-ism]: This is some hidden function that every market participant has about an asset, which more or less models all the possible future probabilities/values of the assets to arrive at a “fair market price”. This is a more generalized case of a pricing model like Black-Scholes, or DCF.
Counter-party: The opposite side of your trade (if you sell an option, they buy it; if you buy an option, they sell it).
Price decoherence ]Lily-ism]: A more generalized notion of IV Crush, price decoherence happens when instead of the FEPF changing gradually over time (price formation), the FEPF rapidly changes, due usually to new information being added to the system (e.g. Vermin Supreme winning the 2020 election).
One of the most popular gambling events for option traders to play is earnings announcements, and I do owe the concept of NOPE to hypothesizing specifically about the behavior of stock prices at earnings. Much like a black hole in quantum mechanics, most conventional theories about how price should work rapidly break down briefly before, during, and after ER, and generally experienced traders tend to shy away from playing earnings, given their similar unpredictability.
Before we start: what is NOPE? NOPE is a funny backronym from Net Options Pricing Effect, which in its most basic sense, measures the impact option delta has on the underlying price, as compared to share price. When I first started investigating NOPE, I called it OPE (options pricing effect), but NOPE sounds funnier.
The formula for it is dead simple, but I also have no idea how to do LaTeX on reddit, so this is the best I have:
Since I’ve already encountered this, put delta in this case is the absolute value (50 delta) to represent a put. If you represent put delta as a negative (the conventional way), do not subtract it; add it.
To keep this simple for the non-mathematically minded: the NOPE today is equal to the weighted sum (weighted by volume) of the delta of every call minus the delta of every put for all options chains extending from today to infinity. Finally, we then divide that number by the # of shares traded today in the market session (ignoring pre-market and post-market, since options cannot trade during those times).
Effectively, NOPE is a rough and dirty way to approximate the impact of delta-gamma hedging as a function of share volume, with us hand-waving the following factors:
- To keep calculations simple, we assume that all counter-parties are hedged. This is obviously not true, especially for idiots who believe theta ganging is safe, but holds largely true especially for highly liquid tickers, or tickers will designated market makers (e.g. any ticker in the NASDAQ, for instance).
- We assume that all hedging takes place via shares. For SPY and other products tracking the S&P, for instance, market makers can actually hedge via futures or other options. This has the benefit for large positions of not moving the underlying price, but still makes up a fairly small amount of hedges compared to shares.
Winding and Unwinding
I briefly touched on this in a past post, but two properties of NOPE seem to apply well to ER/ER-like behavior (aka any binary catalyst event):
- NOPE measures sentiment — In general, the options market is seen as better informed than share traders (e.g. insiders trade via options, because of leverage + easier to mask positions). Therefore, a heavy call/put skew is usually seen as a bullish sign, while the reverse is also true.
- NOPE measures system stability
I’m not going to one-sentence explain #2, because why say in one sentence what I can write 1000 words on. In short, NOPE intends to measure sensitivity of the system (the ticker) to disruption. This makes sense, when you view it in the context of delta-gamma hedging. When we assume all counter-parties are hedged, this means an absolutely massive amount of shares get sold/purchased when the underlying price moves. This is because of the following:
a) Assume I, Mr. MM sell 1000 call options for NKLA 25C 10/23 and 300 put options for NKLA 15p 10/23. I’m just going to make up deltas because it’s too much effort to calculate them — 30 delta call, 20 delta put.
This implies Mr. MM needs the following to delta hedge: (1000 call options * 30 shares to buy for each) [to balance out writing calls) — (300 put options * 20 shares to sell for each) = 24,000 net shares Mr. MM needs to acquire to balance out his deltas/be fully neutral.
b) This works well when NKLA is at $20. But what about when it hits $19 (because it only can go down, just like their trucks). Thanks to gamma, now we have to recompute the deltas, because they’ve changed for both the calls (they went down) and for the puts (they went up).
Let’s say to keep it simple that now my calls are 20 delta, and my puts are 30 delta. From the 24,000 net shares, Mr. MM has to now have:
(1000 call options * 20 shares to have for each) — (300 put options * 30 shares to sell for each) = 11,000 shares.
Therefore, with a $1 shift in price, now to hedge and be indifferent to direction, Mr. MM has to go from 24,000 shares to 11,000 shares, meaning he has to sell 13,000 shares ASAP, or take on increased risk. Now, you might be saying, “13,000 shares seems small. How would this disrupt the system?”
(This process, by the way, is called hedge unwinding)
It won’t, in this example. But across thousands of MMs and millions of contracts, this can — especially in highly optioned tickers — make up a substantial fraction of the net flow of shares per day. And as we know from our desk example, the buying or selling of shares directly changes the price of the stock itself.
This, by the way, is why the NOPE formula takes the shape it does. Some astute readers might notice it looks similar to GEX, which is not a coincidence. GEX however replaces daily volume with open interest, and measures gamma over delta, which I did not find good statistical evidence to support, especially for earnings.
So, with our example above, why does NOPE measure system stability? We can assume for argument’s sake that if someone buys a share of NKLA, they’re fine with moderate price swings (+- $20 since it’s NKLA, obviously), and in it for the long/medium haul. And in most cases this is fine — we can own stock and not worry about minor swings in price. But market makers can’t* (they can, but it exposes them to risk), because of how delta works. In fact, for most institutional market makers, they have clearly defined delta limits by end of day, and even small price changes require them to rebalance their hedges.
This over the whole market adds up to a lot shares moving, just to balance out your stupid Robinhood YOLOs. While there are some tricks (dark pools, block trades) to not impact the price of the underlying, the reality is that the more options contracts there are on a ticker, the more outsized influence it will have on the ticker’s price. This can technically be exactly balanced, if option put delta is equal to option call delta, but never actually ends up being the case. And unlike shares traded, the shares representing the options are more unstable, meaning they will be sold/bought in response to small price shifts. And will end up magnifying those price shifts, accordingly.
NOPE and Earnings
So we have a new shiny indicator, NOPE. What does it actually mean and do?
There’s much literature going back to the 1980s that options markets do have some level of predictiveness towards earnings, which makes sense intuitively. Unlike shares markets, where you can continue to hold your share even if it dips 5%, in options you get access to expanded opportunity to make riches… and losses. An options trader betting on earnings is making a risky and therefore informed bet that he or she knows the outcome, versus a share trader who might be comfortable bagholding in the worst case scenario.
As I’ve mentioned largely in comments on my prior posts, earnings is a special case because, unlike popular misconceptions, stocks do not go up and down solely due to analyst expectations being meet, beat, or missed. In fact, stock prices move according to the consensus market expectation, which is a function of all the participants’ FEPF on that ticker. This is why the price moves so dramatically — even if a stock beats, it might not beat enough to justify the high price tag (FSLY); even if a stock misses, it might have spectacular guidance or maybe the market just was assuming it would go bankrupt instead.
To look at the impact of NOPE and why it may play a role in post-earnings-announcement immediate price moves, let’s review the following cases:
- Stock Meets/Exceeds Market Expectations (aka price goes up) — In the general case, we would anticipate post-ER market participants value the stock at a higher price, pushing it up rapidly. If there’s a high absolute value of NOPE on said ticker, this should end up magnifying the positive move since:
a) If NOPE is high negative — This means a ton of put buying, which means a lot of those puts are now worthless (due to price decoherence). This means that to stay delta neutral, market makers need to close out their sold/shorted shares, buying them, and pushing the stock price up.
b) If NOPE is high positive — This means a ton of call buying, which means a lot of puts are now worthless (see a) but also a lot of calls are now worth more. This means that to stay delta neutral, market makers need to close out their sold/shorted shares AND also buy more shares to cover their calls, pushing the stock price up.
2) Stock Meets/Misses Market Expectations (aka price goes down) — Inversely to what I mentioned above, this should push to the stock price down, fairly immediately. If there’s a high absolute value of NOPE on said ticker, this should end up magnifying the negative move since:
a) If NOPE is high negative — This means a ton of put buying, which means a lot of those puts are now worth more, and a lot of calls are now worth less/worth less (due to price decoherence). This means that to stay delta neutral, market makers need to sell/short more shares, pushing the stock price down.
b) If NOPE is high positive — This means a ton of call buying, which means a lot of calls are now worthless (see a) but also a lot of puts are now worth more. This means that to stay delta neutral, market makers need to sell even more shares to keep their calls and puts neutral, pushing the stock price down.
Based on the above two cases, it should be a bit more clear why NOPE is a measure of sensitivity to system perturbation. While we previously discussed it in the context of magnifying directional move, the truth is it also provides a directional bias to our “random” walk. This is because given a price move in the direction predicted by NOPE, we expect it to be magnified, especially in situations of price decoherence. If a stock price goes up right after an ER report drops, even based on one participant deciding to value the stock higher, this provides a runaway reaction which boosts the stock price (due to hedging factors as well as other participants’ behavior) and inures it to drops.
NOPE and NOPE_MAD
I’m going to gloss over this section because this is more statistical methods than anything interesting. In general, if you have enough data, I recommend using NOPE_MAD over NOPE. While NOPE in theory represents a “real” quantity (net option delta over net share delta), NOPE_MAD (the median absolute deviation of NOPE) does not. NOPE_MAD simply answer/compare the following:
- How exceptional is today’s NOPE versus historic baseline (30 days prior)?
- How do I compare two tickers’ NOPEs effectively (since some tickers, like TSLA, have a baseline positive NOPE, because Elon memes)? In the initial stages, we used just a straight numerical threshold (let’s say NOPE >= 20), but that quickly broke down. NOPE_MAD aims to detect anomalies, because anomalies in general give you tendies.
I might add the formula later in Mathenese, but simply put, to find NOPE_MAD you do the following:
- Calculate today’s NOPE score (this can be done end of day or intraday, with the true value being EOD of course)
- Calculate the end of day NOPE scores on the ticker for the previous 30 trading days
- Compute the median of the previous 30 trading days’ NOPEs
- From the median, find the 30 days’ median absolute deviation (https://en.wikipedia.org/wiki/Median_absolute_deviation)
- Find today’s deviation as compared to the MAD calculated by: [(today’s NOPE) — (median NOPE of last 30 days)] / (median absolute deviation of last 30 days)
This is usually reported as sigma (σ), and has a few interesting properties:
- The mean of NOPE_MAD for any ticker is almost exactly 0.
- [Lily’s Speculation’s Speculation] NOPE_MAD acts like a spring, and has a tendency to reverse direction as a function of its magnitude. No proof on this yet, but exploring it!
Using the NOPE to predict ER
So the last section was a lot of words and theory, and a lot of what I’m mentioning here is empirically derived (aka I’ve tested it out, versus just blabbered).
In general, the following holds true:
- 3 sigma NOPE_MAD tends to be “the threshold”: For very low NOPE_MAD magnitudes (+- 1 sigma), it’s effectively just noise, and directionality prediction is low, if not non-existent. It’s not exactly like 3 sigma is a play and 2.9 sigma is not a play; NOPE_MAD accuracy increases as NOPE_MAD magnitude (either positive or negative) increases.
- NOPE_MAD is only useful on highly optioned tickers: In general, I introduce another parameter for sifting through “candidate” ERs to play: option volume * 100/share volume. When this ends up over let’s say 0.4, NOPE_MAD provides a fairly good window into predicting earnings behavior.
- NOPE_MAD only predicts during the after-market/pre-market session: I also have no idea if this is true, but my hunch is that next day behavior is mostly random and driven by market movement versus earnings behavior. NOPE_MAD for now only predicts direction of price movements right between the release of the ER report (AH or PM) and the ending of that market session. This is why in general I recommend playing shares, not options for ER (since you can sell during the AH/PM).
- NOPE_MAD only predicts direction of price movement: This isn’t exactly true, but it’s all I feel comfortable stating given the data I have. On observation of ~2700 data points of ER-ticker events since Mar 2019 (SPY 500), I only so far feel comfortable predicting whether stock price goes up (>0 percent difference) or down (<0 price difference). This is +1 for why I usually play with shares.
#0) As a baseline/null hypothesis, after ER on the SPY500 since Mar 2019, 50–51% price movements in the AH/PM are positive (>0) and ~46–47% are negative (<0).
#1) For NOPE_MAD >= +3 sigma, roughly 68% of price movements are positive after earnings.
#2) For NOPE_MAD <= -3 sigma, roughly 29% of price movements are positive after earnings.
#3) When using a logistic model of only data including NOPE_MAD >= +3 sigma or NOPE_MAD <= -3 sigma, and option/share vol >= 0.4 (around 25% of all ERs observed), I was able to achieve 78% predictive accuracy on direction.
Like all models, NOPE is wrong, but perhaps useful. It’s also fairly new (I started working on it around early August 2020), and in fact, my initial hypothesis was exactly incorrect (I thought the opposite would happen, actually). Similarly, as commenters have pointed out, the timeline of data I’m using is fairly compressed (since Mar 2019), and trends and models do change. In fact, I’ve noticed significantly lower accuracy since the coronavirus recession (when I measured it in early September), but I attribute this mostly to a smaller date range, more market volatility, and honestly, dumber option traders (~65% accuracy versus nearly 80%).
My advice so far if you do play ER with the NOPE method is to use it as following:
- Buy/short shares approximately right when the market closes before ER. Ideally even buying it right before the earnings report drops in the AH session is not a bad idea if you can.
- Sell/buy to close said shares at the first sign of major weakness (e.g. if the NOPE predicted outcome is incorrect).
- Sell/buy to close shares even if it is correct ideally before conference call, or by the end of the after-market/pre-market session.
- Only play tickers with high NOPE as well as high option/share vol.
In my next post, which may be in a few days, I’ll talk about potential use cases for SPY and intraday trends, but I wanted to make sure this wasn’t like 7000 words by itself.