Help us double down on what's working, instead of guessing. Takes 5 seconds, totally optional.
research · 47 min read
When Not to Sell Options: Negative-Gamma Days Hold Most of the Losses
Selling same-day SPY and QQQ strangles from 2022 to 2026, negative-gamma days held 72% to 74% of SPY losses and 68% to 76% of QQQ losses, more than chance. Selling only on positive-gamma days lifted the Sharpe ratio of QQQ 0DTE strangles from +0.35 to +1.38.
Short answer: check dealer gamma first, and trust only a certified gamma flip. Across 17,100 SPY and QQQ option-selling strategies, the strongest same-day rule was to sell only when net GEX is positive and price sits above FlashAlpha's certified gamma flip. It beat random timing on both ETFs (p = 0.005 on SPY, 0.006 on QQQ).
We sold same-day SPY and QQQ strangles every trading day from January 2022 to October 2026 and split the results by the previous close's gamma exposure (GEX). Negative-gamma days were 60% to 63% of SPY trades but held 72% to 74% of the dollar losses and 71% to 78% of the worst days. QQQ showed the same pattern. Selling only on positive-gamma days, every strangle we tested made money on both ETFs: Sharpe ratios of +1.02 to +1.38 on QQQ and +0.18 to +0.66 on SPY, at midpoint fills. On QQQ 0DTE strangles the filter lifted the Sharpe ratio from +0.35 to +1.38, and it still made money with full bid/ask fills (−0.47 to +0.72).
+0.35 to +1.38Sharpe of QQQ 0DTE strangles: every day vs positive-GEX days only
72% to 74%of SPY short-premium losses fell on negative-gamma days, which were 60% to 63% of trades
2 of 2ETFs where selling above a certified gamma flip with positive GEX beat random timing (p ≤ 0.006)
8 of 8tests where losses clustered on negative-gamma days more than chance (p ≤ 0.049)
Before selling short-dated premium on SPY or QQQ, read two numbers from FlashAlpha at the previous close: net gamma exposure (GEX) and the certified gamma flip.
Net GEX positive and price above a certified flip: sell. Dealers are long gamma and their hedging dampens moves. This was the strongest same-day filter in the 17,100-strategy screen, on both ETFs.
Net GEX negative: skip the trade or cut the size. Dealers are short gamma and their hedging can amplify moves. These days held most of the losses.
No certified flip: use net GEX alone. When the option book cannot support a flip, FlashAlpha says so in gamma_flip_status instead of publishing a guess.
One call returns the regime, the flip and its certification, all computed from the same option chain. The study read the previous session's 15:55 ET snapshot. Fields: net_gex, net_gex_label, gamma_flip, gamma_flip_status, underlying_price.
A gamma flip is a regime boundary: above it dealer hedging dampens moves, below it hedging amplifies them. A flip that jumps when one strike's quote widens flips your regime label on noise, which is worse than having no level at all.
FlashAlpha certifies a flip only when it passes three checks:
Coverage: at least 75% of the open interest between spot and the level carries usable gamma.
Quote quality: on expiry day, at least 75% of that open interest has two-sided quotes worth more than their spread.
Stress test: every strike's gamma is scaled by 0.75 and 1.25, and the level must stay put. In validation, 436,507 stress variants moved no certified level beyond its tolerance.
When a check fails, the API still returns the level, with gamma_flip_status naming the check that failed. This backtest used the flip only on days it was certified, which was about 80% of SPY sessions and 68% of QQQ sessions. On the other days, flip-based filters stood aside. How certification works and how to trade the regime label explain the fields in detail.
Every trade in this study was picked and priced from this endpoint: the contract nearest the target delta at 09:35 ET, with open interest of at least 250 and a spread of at most 20%, then closed on the quote at 15:55 ET. Fields: type, expiry, strike, bid, ask, delta, open_interest, lastUpdate.
Same-day short strangles, sold at 09:35 ET and bought back at 15:55 ET, split by the previous close's GEX. "p" compares the real negative-gamma calendar with the same calendar shifted to 63-plus sessions away, over a thousand times: how often random timing caught the losses at least as well.
Negative-GEX days: share of trades, of dollar losses and of the worst 5% of trades
ETF
Strangle
Trades
Dollar losses
Worst 5% of trades
p
QQQ
0DTE, 0.10 delta
54%
71%
66%
0.031
QQQ
0DTE, 0.25 delta
55%
68%
67%
0.049
QQQ
1 week, 0.10 delta
59%
76%
81%
0.002
QQQ
1 week, 0.25 delta
60%
75%
77%
0.013
SPY
0DTE, 0.10 delta
60%
74%
71%
0.027
SPY
0DTE, 0.25 delta
63%
72%
76%
0.032
SPY
1 week, 0.10 delta
62%
73%
78%
0.008
SPY
1 week, 0.25 delta
63%
73%
75%
0.027
The worst single trades tell the same story. For 0.25-delta 0DTE strangles, the worst loss on a positive-GEX day was −$734 on QQQ and −$959 on SPY, against −$3,272 and −$3,074 on negative-GEX days: a quarter to a third of the size.
Selling only on positive-gamma days
Same-day short strangles, one per day, midpoint fills plus $1 per contract. Sharpe ratio of monthly P&L, total P&L and win rate on positive-GEX days, maximum drawdown and worst trade.
ETF
Strangle
Sharpe: every day
Sharpe: positive GEX
P&L: positive GEX
Win rate: positive GEX
Drawdown: every day
Drawdown: positive GEX
Worst trade: every day
Worst trade: positive GEX
QQQ
0DTE, 0.25 delta
+0.35
+1.38
$10,099
73%
−$6,402
−$2,856
−$3,272
−$734
QQQ
0DTE, 0.10 delta
+0.04
+1.06
$4,316
87%
−$4,122
−$1,535
−$2,702
−$833
QQQ
1 week, 0.25 delta
−0.25
+1.14
$4,094
69%
−$5,687
−$845
−$1,693
−$538
QQQ
1 week, 0.10 delta
−0.40
+1.02
$2,403
71%
−$3,712
−$445
−$1,100
−$378
SPY
0DTE, 0.25 delta
+0.26
+0.54
$2,980
72%
−$5,907
−$2,276
−$3,074
−$959
SPY
0DTE, 0.10 delta
+0.20
+0.66
$2,183
86%
−$3,052
−$1,377
−$2,478
−$760
SPY
1 week, 0.25 delta
−0.33
+0.25
$814
63%
−$4,724
−$1,218
−$1,434
−$556
SPY
1 week, 0.10 delta
−0.55
+0.18
$329
65%
−$3,725
−$690
−$814
−$320
The filter raised the Sharpe ratio and cut both the maximum drawdown and the worst trade in every case on both ETFs. QQQ gained the most: every filtered setup had a Sharpe ratio above +1.02. On SPY, 1-week strangles lost money when sold every day and made money when sold only on positive-GEX days.
How much fills matter
The figures above assume you sell at the midpoint, which limit orders on SPY and QQQ options often achieve. Worse fills cost money on every trade, so the table below shows each setup at four fill levels: every day / positive GEX only.
Sharpe ratio by fill: every day / positive GEX only. Near mid = a quarter of the way to bid/ask; halfway = half of the way; bid/ask = full spread. All include $1 per contract; all but mid add $0.01 per share.
ETF
Strangle
Mid
Near mid
Halfway
Bid/ask
QQQ
0DTE, 0.25 delta
+0.35 / +1.38
−0.08 / +1.03
−0.22 / +0.93
−0.47 / +0.72
QQQ
0DTE, 0.10 delta
+0.04 / +1.06
−0.60 / +0.46
−0.72 / +0.36
−0.95 / +0.15
QQQ
1 week, 0.25 delta
−0.25 / +1.14
−0.99 / +0.45
−1.25 / +0.20
−1.73 / −0.30
QQQ
1 week, 0.10 delta
−0.40 / +1.02
−1.41 / +0.08
−1.64 / −0.14
−2.08 / −0.60
SPY
0DTE, 0.25 delta
+0.26 / +0.54
−0.16 / +0.20
−0.26 / +0.12
−0.46 / −0.03
SPY
0DTE, 0.10 delta
+0.20 / +0.66
−0.57 / +0.04
−0.68 / −0.05
−0.90 / −0.23
SPY
1 week, 0.25 delta
−0.33 / +0.25
−1.12 / −0.49
−1.31 / −0.69
−1.66 / −1.07
SPY
1 week, 0.10 delta
−0.55 / +0.18
−1.76 / −1.01
−1.93 / −1.20
−2.25 / −1.57
The positive-GEX filter came out ahead at every fill level. With the full spread, selling every day lost money in every case, so how you fill matters as much as when you sell.
All four fill levels come from the bid and ask in the option chain endpoint at the moment of each trade, so you can price your own fill assumption the same way.
17,100 strategies: where the gamma filter works
To check that the result is not a lucky pick, we ran every combination: 2 ETFs, 6 structures (short put, short call, short strangle, put and call credit spreads, iron condor), 6 deltas from 0.10 to 0.40, 4 expiries from 0DTE to 1 month, 6 exits (same day, next day, at expiry, or take profit once 25%, 50% or 75% of the credit is earned) and 15 GEX and VRP filters; 0DTE trades only close the same day. That is 17,100 strategies, each priced at midpoint fills with the bid/ask result alongside.
For each filter we asked one question: does it raise the average Sharpe ratio across all trade designs by more than the same calendar shifted to random dates? "p" is the share of random calendars that did as well.
Same-day trades: sell when gamma is strongly positive. Positive GEX with price above the certified gamma flip beat random calendars on both ETFs (p = 0.006 on QQQ, 0.005 on SPY), as did GEX in the top quarter of its 60-session range on SPY (p = 0.003). Plain positive GEX passed on QQQ (p = 0.002) but not on SPY (p = 0.21).
Positions held overnight or to expiry: low gamma readings helped a little. Opening when GEX sat in the bottom quarter of its range beat random calendars on QQQ (p = 0.012) and SPY (p = 0.029). One likely reason: premium is richest after sell-offs, and held positions collect it as markets recover. This result does not survive the adjustment below.
Negative GEX and high VRP did not help. As filters on their own, they did no better than random timing on either ETF, and same-day trades did worse.
Taking profit early cut the risk of held positions. Across the 180 held-to-expiry designs, buying back once half the credit had been earned cut the maximum drawdown in 179 of them (median 28% smaller), raised the win rate in all of them and raised the Sharpe ratio in 147. For SPY 0.10-delta 1-month short puts sold every day, the drawdown fell from $57,739 to $28,214, for $60,376 less total profit.
The VRP filters read the previous close's 20-day volatility risk premium: implied minus realized volatility, in vol points. GEX rank filters compare the previous close's GEX with its own last 60 sessions from the GEX endpoint. Fields: vrp.vrp_20d, gex_conditioned.harvest_score.
We ran 84 of these tests (14 filters, 3 exit groups, 2 ETFs). The four same-day results above each have p below 0.01. Allowing for all 84 tests, the chance that they are false discoveries is about 12%, so treat them as strong leads rather than proof.
Pick an ETF, filter, structure and exit. Each cell is the Sharpe ratio at one delta and expiry; select a cell to chart it below.
QQQ, Positive GEX, short strangle, same-day exit: Sharpe ratio at midpoint fills.
Delta
0DTE
1 week
2 weeks
1 month
0.10
1.06507 trades
1.02429 trades
0.66155 trades
−0.42490 trades
0.16
1.04502 trades
1.02411 trades
0.81153 trades
−0.14495 trades
0.20
1.29497 trades
0.93403 trades
0.83152 trades
−0.08493 trades
0.25
1.38477 trades
1.14411 trades
0.97152 trades
0.02496 trades
0.30
1.50449 trades
0.63415 trades
0.97156 trades
0.03499 trades
0.40
1.24401 trades
0.98398 trades
0.90155 trades
0.13490 trades
All 17,100 option-selling strategies ranked by Sharpe
Every strategy with at least 60 trades, ranked by Sharpe ratio at midpoint fills. Open positions are valued every day at the 15:55 ET midpoint, so the Sharpe ratio and maximum drawdown include losses on trades that had not closed yet. Drawdown % is measured against the cash that fully funds the positions at their peak. "vs every day" is the Sharpe gain over selling the same trade every day. "Adjusted p" compares the strategy with the best of the 14 filters on random calendars for the same trade; below 0.05 would point to a real timing effect for that one strategy. Filter the list, sort any column, or chart a row.
Top 25 of 16,740 strategies with at least 60 trades, by Sharpe ratio at midpoint fills plus $1 per contract.
#
Strategy
Sharpe (mid)
Sharpe (bid/ask)
vs every day
Adjusted p
Trades
Win rate
Avg P&L
Total P&L
Max drawdown
1
SPY · Every dayShort put, 0.10 delta, 1 month, held to expiry
4.08
3.98
n/a
n/a
1,086
97%
+$147
+$159,182
−$57,7393.1%
2
SPY · Every dayShort put, 0.10 delta, 1 month, take profit at 50%
3.95
3.81
n/a
n/a
1,086
99%
+$91
+$98,805
−$28,2142.5%
3
QQQ · Every dayShort put, 0.10 delta, 1 month, held to expiry
3.87
3.73
n/a
n/a
1,060
97%
+$151
+$159,998
−$53,0783.1%
4
SPY · Every dayShort put, 0.10 delta, 1 month, take profit at 25%
3.72
3.49
n/a
n/a
1,086
99%
+$56
+$61,053
−$19,0432.3%
5
SPY · GEX risingShort put, 0.10 delta, 1 month, held to expiry
3.64
3.55
−0.44
0.96
535
97%
+$143
+$76,286
−$31,1763.0%
6
SPY · Every dayShort put, 0.10 delta, 1 month, take profit at 75%
3.57
3.47
n/a
n/a
1,086
98%
+$121
+$131,624
−$36,3302.6%
7
QQQ · Price below gamma flipShort put, 0.10 delta, 1 month, held to expiry
3.54
3.47
−0.33
0.86
385
97%
+$175
+$67,418
−$26,6382.5%
8
QQQ · Every dayShort put, 0.10 delta, 1 month, take profit at 75%
3.52
3.36
n/a
n/a
1,060
98%
+$123
+$130,240
−$35,1922.5%
9
QQQ · Positive VRPShort put, 0.10 delta, 1 month, take profit at 75%
3.52
3.42
−0.00
0.59
609
99%
+$134
+$81,781
−$33,0583.2%
10
QQQ · Negative GEXShort put, 0.10 delta, 1 month, held to expiry
3.50
3.41
−0.37
0.89
584
97%
+$158
+$92,278
−$42,7293.2%
11
QQQ · Positive VRPShort put, 0.10 delta, 1 month, held to expiry
3.48
3.39
−0.40
0.92
609
98%
+$161
+$98,108
−$32,9712.2%
12
QQQ · Every dayShort put, 0.10 delta, 1 month, take profit at 50%
3.40
3.22
n/a
n/a
1,060
99%
+$92
+$97,451
−$31,1702.9%
13
QQQ · GEX risingShort put, 0.10 delta, 1 month, held to expiry
3.36
3.22
−0.51
0.97
512
96%
+$144
+$73,518
−$33,9783.9%
14
QQQ · Price below gamma flipShort put, 0.10 delta, 1 month, take profit at 75%
3.36
3.29
−0.15
0.77
385
98%
+$143
+$55,092
−$13,2051.7%
15
QQQ · Price below gamma flipShort put, 0.10 delta, 1 month, take profit at 25%
3.36
3.23
+0.06
0.57
385
100%
+$73
+$28,189
−$9,7721.7%
16
SPY · Price below gamma flipShort put, 0.10 delta, 1 month, take profit at 25%
3.35
3.23
−0.37
0.89
516
100%
+$68
+$35,020
−$10,7981.6%
17
SPY · Positive VRPShort put, 0.10 delta, 1 month, held to expiry
3.33
3.27
−0.75
1.00
624
98%
+$157
+$98,204
−$29,9481.8%
18
SPY · Positive VRPShort put, 0.10 delta, 1 month, take profit at 50%
3.33
3.24
−0.62
0.99
624
99%
+$99
+$61,833
−$23,6562.3%
19
QQQ · Every dayShort put, 0.10 delta, 1 month, take profit at 25%
3.30
3.00
n/a
n/a
1,060
99%
+$57
+$60,130
−$24,8823.0%
20
SPY · Positive VRPShort put, 0.10 delta, 1 month, take profit at 75%
3.28
3.21
−0.29
0.95
624
99%
+$134
+$83,620
−$28,3342.2%
21
SPY · Price below gamma flipShort put, 0.16 delta, 1 month, take profit at 50%
3.26
3.18
+0.47
0.20
523
98%
+$154
+$80,297
−$20,6981.7%
22
SPY · Price below gamma flipShort put, 0.16 delta, 1 month, take profit at 25%
3.25
3.14
+0.17
0.46
523
99%
+$106
+$55,642
−$12,9731.6%
23
SPY · Price below gamma flipShort put, 0.10 delta, 1 month, take profit at 50%
3.23
3.16
−0.71
1.00
516
99%
+$106
+$54,872
−$16,0581.6%
24
QQQ · Positive VRPShort put, 0.10 delta, 1 month, take profit at 50%
3.22
3.09
−0.17
0.81
609
99%
+$98
+$59,496
−$31,1703.6%
25
SPY · Negative GEXShort put, 0.10 delta, 1 month, held to expiry
3.20
3.13
−0.88
1.00
667
98%
+$154
+$102,604
−$53,0123.4%
The top of the table is not a gamma trade. Selling a 0.10-delta, 1-month SPY put every day and holding it to expiry had the highest Sharpe ratio (+4.08), in a market that rose for most of the period, and 97% of its trades made money. It still shows why open positions matter: with up to 25 puts open at once, it fell $57,739 from its peak and lost $34,906 in a single day, although no closed trade lost more than $2,142. Every GEX and VRP filter lowered its Sharpe ratio.
What the account was worth, week by week
The solid line is total profit: closed trades plus every open position valued at that day's 15:55 ET midpoint from the option chain endpoint. The shaded band reaches each week's lowest day. For positions held overnight or to expiry, the dashed line shows profit on closed trades only, and the gap between the two is what open positions were worth. The grey line is the same trade sold every day.
Sharpe (mid)1.14
Sharpe (bid/ask)−0.30
Total P&L+$4,094
Trades411
Win rate69%
Max drawdown−$845
QQQ · Positive GEX: Short strangle, 0.25 delta, 1 week, same-day exit. Enable JavaScript to see the chart.
How we kept it honest
Written down first. The rules, fills, filters and pass criteria were fixed and committed before any SPY result was computed.
Tested out of sample. The idea came from QQQ. SPY was held back and tested once.
Priced from real quotes. Every trade was priced from archived bid and ask quotes at four fill levels, from the midpoint to the full spread, with a $1 commission per contract on every leg. The pre-registered tests used the stricter halfway fill. We chose to lead with midpoint fills after the results were in, so every headline figure is also shown at the other three fills.
Checked against luck. Each filter was compared with the same calendar shifted to random dates.
Pre-registered tests on SPY (the out-of-sample market), at the halfway fill fixed in advance. Pass requires all three criteria.
Hypothesis
Sharpe higher in every case
Drawdown smaller in every case
Sharpe gain (95% range)
Result
1-week short strangles, positive GEX
Yes
Yes
+0.68 (+0.10 to +1.65)
Confirmed
0DTE short strangles, positive GEX
Yes
Yes
+0.51 (−0.41 to +1.71)
Not confirmed
Iron condors, positive GEX
Yes
Yes
+0.92 (−0.27 to +3.41)
Not confirmed
Positive GEX and positive VRP
Yes
Yes
+0.56 (−0.06 to +1.54)
Not confirmed
The 1-week strangle test passed every criterion on SPY. The 0DTE and iron condor tests improved in every case, but their gains were not large enough to rule out chance on SPY alone. Adding the variance risk premium to GEX did not help: days where implied volatility ran above recent realized volatility were, if anything, worse for same-day selling.
Use it live
The whole rule runs on four endpoints, one per step. The rule itself needs one call per day. FlashAlpha's GEX endpoint returns net_gex, gamma_flip and gamma_flip_status in the same response, computed from the same option chain, so the regime and the level always agree. The historical GEX endpoint replays the exact 15:55 ET reading this study used, certification included.
import requests
KEY = "YOUR_API_KEY"
LAB = "https://lab.flashalpha.com"
HIST = "https://historical.flashalpha.com"
H = {"X-Api-Key": KEY}
# 1. Regime and certified flip: yesterday's 15:55 ET reading (Historical API, Alpha plan)
gex = requests.get(f"{HIST}/v1/exposure/gex/SPY", params={"at": "2026-10-22T15:55:00"}, headers=H).json()
# 2. Spot at the open (stock quote)
spot = requests.get(f"{LAB}/stockquote/SPY", headers=H).json()["mid"]
# 3. Decide
certified = gex["gamma_flip_status"] == "available"
if gex["net_gex"] < 0:
raise SystemExit("negative gamma: skip or cut size")
strongest = certified and spot > gex["gamma_flip"]
# 4. Pick a 0.25-delta put and call, 4 to 10 days out (option chain, Growth plan)
chain = requests.get(f"{LAB}/optionquote/SPY", headers=H).json()
def pick(kind, target=0.25):
ok = [q for q in chain if q["type"] == kind and q["open_interest"] >= 250
and q["ask"] > 0 and (q["ask"] - q["bid"]) / q["mid"] <= 0.20]
return min(ok, key=lambda q: abs(abs(q["delta"]) - target))
put, call = pick("P"), pick("C")
print("strongest regime" if strongest else "positive GEX", put["strike"], call["strike"])
# 5. Close at 15:55 ET: read the same contracts from the option chain again
Full-chain GEX for SPY and QQQ is on the Growth plan. To reproduce this backtest, or run your own version of the 17,100-strategy screen, the Historical API on the Alpha plan replays GEX, the certified flip and the full option chain at any past minute.
How the backtest works
Every step of the backtest, the FlashAlpha endpoint and fields it read, and a Python script that rebuilds any of the 17,100 strategies from the Historical API.
Alpha members
This section is for Alpha members
Alpha members get every step of the backtest with the endpoint and fields it used, and a Python script that rebuilds any strategy in this study from the Historical API.
Short strangles have unlimited risk. The filter reduced the worst days; it did not remove them.
One period of under five years and two ETFs. The SPY loss-concentration check was added after the pre-registered results were seen; it was run once, without tuning.
Iron condors, which cap risk, pay four spreads instead of two. Even at midpoint fills, they lost money in three of four cases with the filter.
Midpoint fills are a best case and are harder to get in fast markets. The fill table shows what worse fills do.
Short puts and strangles held for weeks can show large losses while open even when most of them expire worthless. Check the drawdown and worst day, not only the win rate.
The 17,100-strategy screen was run after the main results. Filters that use the gamma flip only include days with a certified flip (80% of SPY and 68% of QQQ sessions, fewer for QQQ in 2022), so part of their result can come from which days are left out.
Cite this research
FlashAlpha Research. "When Not to Sell Options: Negative-Gamma Days Hold Most of the Losses." 23 October 2026. https://flashalpha.com/articles/when-not-to-sell-options-negative-gamma-spy-qqq-short-premium-backtest
Frequently asked questions
Should you sell options on negative gamma days?
The evidence says skip or cut size. Selling same-day SPY and QQQ strangles from 2022 to 2026, negative-GEX days were 60% to 63% of SPY trades but held 72% to 74% of the dollar losses and 71% to 78% of the worst 5% of trades. On QQQ the figures were 54% to 60%, 68% to 76% and 66% to 81%.
Does gamma exposure predict volatility?
It predicts how much the market is likely to move, not which way. Dealers who are long gamma hedge against the move and dampen it; dealers who are short gamma hedge with the move and can amplify it. In this test, losses for option sellers clustered on negative-gamma days.
Is selling 0DTE strangles profitable?
Selling a 0.25-delta QQQ 0DTE strangle at 09:35 every day, filled at the midpoint, had a Sharpe ratio of +0.35. Selling only on positive-GEX days raised it to +1.38. On SPY the filter raised it from +0.26 to +0.54. Fills matter: with full bid/ask fills, selling QQQ every day lost money, while the positive-GEX days still made money (Sharpe +0.72).
How do I check the gamma regime before selling?
Read net GEX and the gamma flip for the symbol. FlashAlpha's GEX endpoint returns net_gex, net_gex_label, gamma_flip and gamma_flip_status in one response. Use the flip only when gamma_flip_status is available, which means it is certified. This study used the previous session's 15:55 ET reading, so the decision is made before the open.
What is a certified gamma flip?
A gamma flip that FlashAlpha has checked for open-interest coverage, quote quality and single-strike stress before publishing it as available. If a check fails, the level is still returned with gamma_flip_status naming the failed check, and a regime rule should not use it. In this backtest, selling same-day premium only when net GEX was positive and price was above a certified flip beat random timing on both SPY and QQQ.
Which option-selling strategy had the best Sharpe ratio?
Of the 17,100 SPY and QQQ strategies tested, selling a 0.10-delta, 1-month SPY put every day and holding it to expiry had the highest Sharpe ratio, +4.08 at midpoint fills with open positions valued daily, from 2022 to 2026. It also fell $57,739 from its peak while positions were open. GEX filters lowered its Sharpe ratio. GEX helped most for same-day trades: selling when gamma was strongly positive beat random timing on both ETFs.
Can I reproduce this backtest?
Yes. The Historical API on the Alpha plan replays GEX and the option chains at any past minute, which is everything this test used.
For option sellers on SPY and QQQ from 2022 to 2026, most of the losses and most of the worst days came when dealers were short gamma. Checking GEX before selling, and standing aside when it is negative, removed most of the drawdown on both ETFs and made every strangle setup we tested profitable at midpoint fills. Adding the certified gamma flip gave the strongest same-day rule of the 9,000 strategies we tested.