Which endpoint signals helped? 30 light backtests across six options strategies | FlashAlpha
research · 234 min read

Which endpoint signals helped? 30 light backtests across six options strategies

Thirty endpoint-derived signal rules tested across six options strategies on SPY, QQQ and IWM, 2020 to 2025: a ranked matrix with Sharpe, drawdown and controls, a selected-versus-rejected test for every rule, 30 research profiles with trade ledgers, and a reproducible research pack.

F
Sep 17, 2026
234 min read
Research Backtesting OptionsData SPY QQQ IWM

Does an endpoint signal help you choose better trades? We tested 30 fixed rules built from FlashAlpha endpoint ingredients on SPY, QQQ and IWM options from 2020 to 2025. Each rule selected entry dates for the same six option structures, which gives 180 signal-and-trade combinations, each measured on the dates the rule selected against the dates it rejected.

The carry proxy selected put spreads averaging +0.25% per trade with an annualized monthly Sharpe of 1.84, against +0.07% and 0.01 for the same spread on every date the signal could be computed. Positive GEX did not rescue the iron condor: -0.21% on 37 selected dates. The highest average belonged to long calls in a positive delta-exposure state, +0.53% on 69 trades, but its selected-minus-rejected range still included zero. No rule cleared that bar; three fell entirely below it.

This follows the options-strategy backtest. That study compared payoffs on identical months. This one asks whether a signal improves when to enter them, on the same trade ledger, with the same risk metrics, priced from FlashAlpha's options archive, the same data behind the Historical API.

These are reconstructed endpoint ingredients with explicit research rules, not historical records of the production API scores. The 30 tests draw on ingredients associated with 32 of the 93 documented routes. Shared inputs count once; the remaining 61 routes are listed in the coverage ledger with the reason they were not tested.

Revision 2. The first edition, published earlier the same day, read every open-interest feature from the trade's own expiry, usually a weekly holding a median 6,157 contracts of open interest, with zero archived OI in 46 of 133 windows. This edition reads them from the monthly carrying the most open interest (median 1.7 million contracts). Rules, thresholds and trades are unchanged. The revision table shows what moved.

30
fixed signal rules
6
option structures
133
shared ETF-month windows
180
signal-and-trade cells
798
distinct option trades

Read this before the ranking

  • The number: average P&L after bid/ask spreads and $0.65 per contract each way, as a percentage of the value of 100 shares of the ETF at entry. On a $500 ETF, +0.20% is $100 per trade. It is not a return on margin or premium. The ledger CSVs keep basis points; 1 bp is 0.01%.
  • The schedule: select at the first monthly close, enter at the next close and exit ten sessions later. Front options target 35 days to expiry; calendars also use a back expiry near 65 days. No stops or rolls.
  • The sample: the six structures share 133 eligible ETF-month windows across 65 calendar months. Missing signal inputs reduce a rule's sample further. Within a row of the matrix, all six structures use exactly the same dates. Different rows can use different dates, so each row carries its own control.
  • The controls: compare a selected trade with the same structure on all feature-valid dates (the unfiltered control) and on the rejected dates. A higher selected average can still mean giving up profitable trades, so the download also reports P&L per eligible window with skipped windows set to zero.
  • Risk metrics: Sharpe, profit factor and max drawdown use the definitions from the strategy article: a monthly series averaged across the ETFs traded that month, Sharpe as its mean over its standard deviation times the square root of 12 with no risk-free rate, drawdown on the running total of that series. Small samples make all three fragile.
  • The scope: rankings are descriptive. Thresholds were fixed before the first run but after reading the earlier study, and the expiry rule was revised after the first run. There is no untouched holdout. Thirty related gates and six payoffs create many chances to find an attractive result.

Signal-and-trade profiles, ranked by Sharpe

These 22 profiles each selected at least 30 trades. That is a display cutoff, not evidence of statistical adequacy. Each rule's primary trade was chosen before calculating the results. Rank sorts the annualized monthly Sharpe of the selected trades; Rank by mean shows the order by average result. The last two columns say whether the gate beat its own control and its own rejected dates.

Rank# SignalSignal Trade Rank by meanMean # TradesN Mean after costsMean SharpeSharpe Max drawdownMax DD vs controlvs ctrl vs rejectedvs rej
1 Carry proxy score at least 60 Bull put spread 5 36 +0.25% 1.84 -1.12% +0.18% +0.26%
2 Positive normalized DEX Long call 1 69 +0.53% 1.25 -4.47% +0.22% +0.48%
3 IV at least 1.2 times RV Bull put spread 6 46 +0.19% 1.00 -1.19% +0.12% +0.20%
4 VIX exceeds SPX RV by five vol points Bull put spread 10 57 +0.09% 0.77 -1.24% 0.00% +0.01%
5 VRP above its prior 75th percentile Bull put spread 8 39 +0.14% 0.77 -1.19% +0.09% +0.14%
6 Charm exposure rises from prior month Long call 2 57 +0.38% 0.72 -12.93% +0.16% +0.31%
7 Positive 20-session momentum Long call 4 71 +0.30% 0.63 -7.94% 0.00% -0.01%
8 Annualized put premium at least 12% Bull put spread 7 76 +0.15% 0.40 -4.53% +0.07% +0.16%
9 Negative 20-session momentum Long call 3 61 +0.31% 0.33 -11.28% +0.01% +0.01%
10 Vanna exposure rises from prior month Long call 9 59 +0.09% 0.25 -8.57% -0.13% -0.27%
11 Put skew at least three vol points Bull put spread 11 114 +0.08% 0.23 -5.80% 0.00% -0.01%
12 Max pain above spot Long call 22 42 -0.31% 0.07 -9.36% -0.62% -0.91%
13 Put tail at least five vol points rich Bull put spread 12 103 0.00% -0.29 -9.25% -0.08% -0.38%
14 Negative normalized GEX Long straddle 21 90 -0.29% -0.37 -17.08% -0.11% -0.38%
15 Execution proxy score at least 60 Iron condor 14 44 -0.08% -0.48 -4.32% +0.01% +0.02%
16 Implied move exceeds the prior move Iron condor 16 78 -0.11% -0.50 -6.67% -0.01% -0.04%
17 Positive variance premium Iron condor 15 88 -0.09% -0.55 -6.43% +0.02% +0.05%
18 IV at least 1.2 times EWMA volatility Bull put spread 13 41 -0.02% -0.55 -4.50% -0.07% -0.11%
19 All four wing quotes within 10% Iron condor 17 122 -0.12% -0.82 -9.94% -0.02% -0.28%
20 Realized volatility cooling Iron condor 20 70 -0.21% -1.21 -10.53% -0.10% -0.21%
21 Positive delta-adjusted GEX Iron condor 18 71 -0.19% -1.33 -10.17% -0.09% -0.21%
22 Positive normalized GEX Iron condor 19 37 -0.21% -1.41 -7.83% -0.11% -0.15%

The control is each row's own feature-valid dates, selected and rejected together. For example, the delta-exposure control is +0.31% on 127 windows, while the long call on all 133 shared windows averaged +0.31%; mixing those two samples would flatter the signal. Not one of the 22 rules has a selected-minus-rejected range entirely above zero. 3 are entirely below it: put tail at least five vol points rich, all four wing quotes within 10%, max pain above spot. Sharpe ranking CSV · Ranking by mean · Full controls and uncertainty intervals

Running total per eligible month, 2020 to 2025, in % of the 100-share reference value (not compounded, skipped months add zero). Solid lines are the four best profiles by Sharpe on their selected dates; dashed lines are the unconditional long call and bull put spread on all 133 shared windows.
-5%+0%+5%+10%+15%+20%+25%+30%+35%202020212022202320242025
Carry score 60 (BPS)DEX positive (LC)IV/RV 1.2x (BPS)VIX - SPX RV 5 (BPS)Long call, every windowBull put spread, every window

Risk detail for the same profiles

Same order, same rows. Sharpe rewards steady monthly results over a few large wins: the carry proxy leads at 1.84 against 0.01 for the unconditional put spread on the same windows, while the top row by mean, positive delta exposure, is 1.25 against 0.53. Control Sharpe is the same structure on every feature-valid date.

Rank# SignalSignal Trade SharpeSharpe Control SharpeCtrl Sharpe Profit factorPF Win rateWin Avg winAvg win Avg lossAvg loss TradesN
1 Carry proxy score at least 60 Bull put spread 1.84 0.01 2.88 75.0% +0.51% -0.53% 36
2 Positive normalized DEX Long call 1.25 0.53 2.05 58.0% +1.79% -1.20% 69
3 IV at least 1.2 times RV Bull put spread 1.00 0.01 2.28 73.9% +0.46% -0.57% 46
4 VIX exceeds SPX RV by five vol points Bull put spread 0.77 0.14 1.46 66.7% +0.42% -0.58% 57
5 VRP above its prior 75th percentile Bull put spread 0.77 -0.05 1.72 76.9% +0.45% -0.87% 39
6 Charm exposure rises from prior month Long call 0.72 0.30 1.61 54.4% +1.86% -1.38% 57
7 Positive 20-session momentum Long call 0.63 0.42 1.52 54.9% +1.60% -1.28% 71
8 Annualized put premium at least 12% Bull put spread 0.40 0.14 1.58 75.0% +0.56% -1.06% 76
9 Negative 20-session momentum Long call 0.33 0.42 1.40 55.7% +1.94% -1.75% 61
10 Vanna exposure rises from prior month Long call 0.25 0.30 1.12 49.2% +1.76% -1.52% 59
11 Put skew at least three vol points Bull put spread 0.23 0.14 1.33 72.8% +0.47% -0.94% 114
12 Max pain above spot Long call 0.07 0.46 0.70 45.2% +1.58% -1.87% 42
13 Put tail at least five vol points rich Bull put spread -0.29 0.14 1.00 68.9% +0.43% -0.96% 103
14 Negative normalized GEX Long straddle -0.37 -0.27 0.62 37.8% +1.27% -1.23% 90
15 Execution proxy score at least 60 Iron condor -0.48 -0.72 0.70 56.8% +0.31% -0.59% 44
16 Implied move exceeds the prior move Iron condor -0.50 -0.72 0.63 53.8% +0.36% -0.67% 78
17 Positive variance premium Iron condor -0.55 -0.81 0.64 51.1% +0.33% -0.54% 88
18 IV at least 1.2 times EWMA volatility Bull put spread -0.55 -0.08 0.93 58.5% +0.49% -0.74% 41
19 All four wing quotes within 10% Iron condor -0.82 -0.72 0.62 53.3% +0.37% -0.68% 122
20 Realized volatility cooling Iron condor -1.21 -0.81 0.45 51.4% +0.33% -0.77% 70
21 Positive delta-adjusted GEX Iron condor -1.33 -0.74 0.39 42.3% +0.29% -0.54% 71
22 Positive normalized GEX Iron condor -1.41 -0.74 0.36 40.5% +0.29% -0.54% 37

Sharpe ranking CSV

The matrix: the same signal, six different trades

Each cell is the mean after costs, as % of the 100-share value, for the dates the signal selected. Every cell in a row uses exactly the same dates, so the trade count is one number per row. Rows follow the Sharpe order of the ranked table; rows with fewer than 30 trades come last and are marked so you can see where the evidence runs out. A dash means no selected trades.

SignalSignal TradesN Long callLC Bull call spreadBCS Bull put spreadBPS Iron condorIC Call calendarCC Long straddleLS
Carry proxy score at least 60 36 +0.78% +0.37% +0.25% -0.10% -0.20% -0.14%
Positive normalized DEX 69 +0.53% +0.18% +0.11% -0.16% -0.17% -0.02%
IV at least 1.2 times RV 46 +0.66% +0.29% +0.19% -0.11% -0.18% -0.11%
VIX exceeds SPX RV by five vol points 57 +0.04% -0.02% +0.09% -0.01% -0.15% -0.42%
VRP above its prior 75th percentile 39 +0.52% +0.22% +0.14% -0.10% -0.20% -0.10%
Charm exposure rises from prior month 57 +0.38% +0.12% 0.00% -0.20% -0.16% +0.06%
Positive 20-session momentum 71 +0.30% +0.09% +0.03% -0.16% -0.16% -0.06%
Annualized put premium at least 12% 76 +0.24% +0.09% +0.15% -0.01% -0.19% -0.43%
Negative 20-session momentum 61 +0.31% +0.11% +0.14% -0.04% -0.19% -0.29%
Vanna exposure rises from prior month 59 +0.09% +0.04% +0.14% +0.04% -0.16% -0.49%
Put skew at least three vol points 114 +0.21% +0.06% +0.08% -0.07% -0.17% -0.26%
Max pain above spot 42 -0.31% -0.14% +0.01% +0.05% -0.16% -0.58%
Put tail at least five vol points rich 103 +0.05% -0.05% 0.00% -0.11% -0.20% -0.22%
Negative normalized GEX 90 +0.35% +0.14% +0.14% -0.05% -0.15% -0.29%
Execution proxy score at least 60 44 +0.05% +0.03% +0.01% -0.08% -0.22% -0.26%
Implied move exceeds the prior move 78 +0.32% +0.10% +0.06% -0.11% -0.20% -0.12%
Positive variance premium 88 +0.40% +0.16% +0.11% -0.09% -0.15% -0.16%
IV at least 1.2 times EWMA volatility 41 +0.32% +0.07% -0.02% -0.22% -0.21% +0.10%
All four wing quotes within 10% 122 +0.31% +0.10% +0.06% -0.12% -0.18% -0.12%
Realized volatility cooling 70 +0.08% -0.04% -0.08% -0.21% -0.21% -0.01%
Positive delta-adjusted GEX 71 +0.40% +0.10% +0.04% -0.19% -0.20% +0.02%
Positive normalized GEX 37 +0.20% +0.01% -0.05% -0.21% -0.21% +0.09%
Wings at least one vol point rich 4 -0.81% -0.39% -0.12% +0.09% -0.36% -0.68%
Lagged call volume exceeds puts by 1.5 times 3 +1.07% +0.40% +0.15% -0.30% -0.58% +0.54%
Call OI change exceeds put OI change 26 +0.73% +0.22% +0.09% -0.24% -0.16% +0.26%
Front IV exceeds back by two vol points 9 +1.50% +0.62% +0.49% -0.03% -0.14% -0.07%
Max pain within 1% of spot 15 +0.56% +0.13% +0.11% -0.14% -0.24% +0.01%
OI concentration proxy score at least 80 0 - - - - - -
Put IV exceeds SVI fit by one vol point 2 +1.18% +0.42% +0.52% +0.18% -0.11% -0.25%
Back IV exceeds front by two vol points 4 -2.43% -1.36% -0.77% -0.29% -0.75% -0.50%

LC long call, BCS bull call spread, BPS bull put spread, IC iron condor, CC call calendar, LS long straddle. Grey rows have fewer than 30 trades.

* fewer than 30 trades. Unfiltered reference on all 133 shared windows: long call +0.31%, bull call spread +0.10%, bull put spread +0.09%, iron condor -0.10%, call calendar -0.17%, long straddle -0.18%. Use each row's own control in the download for a sample-matched comparison. Matrix CSV

Did the gate help? Selected minus rejected, with 95% ranges

This is the question the ranking cannot answer on its own. For each rule with at least 30 trades, the dot is the selected average minus the rejected average, and the bar is the 95% month-block bootstrap range of that difference. A bar that stays above zero would say the gate picked better dates than it skipped; none does. A bar that stays below zero says the gate skipped its best dates.

SignalTradeSelected minus rejected, 95% rangeDifferenceDiff95% range
Positive normalized DEXLong call+0.48%-0.35% to +1.29%
Charm exposure rises from prior monthLong call+0.31%-0.43% to +1.14%
Carry proxy score at least 60Bull put spread+0.26%-0.15% to +0.62%
IV at least 1.2 times RVBull put spread+0.20%-0.16% to +0.57%
Annualized put premium at least 12%Bull put spread+0.16%-0.18% to +0.46%
VRP above its prior 75th percentileBull put spread+0.14%-0.25% to +0.52%
Positive variance premiumIron condor+0.05%-0.29% to +0.42%
Execution proxy score at least 60Iron condor+0.02%-0.24% to +0.28%
Negative 20-session momentumLong call+0.01%-0.91% to +0.94%
VIX exceeds SPX RV by five vol pointsBull put spread+0.01%-0.35% to +0.33%
Put skew at least three vol pointsBull put spread-0.01%-0.36% to +0.43%
Positive 20-session momentumLong call-0.01%-0.96% to +0.91%
Implied move exceeds the prior moveIron condor-0.04%-0.33% to +0.25%
IV at least 1.2 times EWMA volatilityBull put spread-0.11%-0.48% to +0.29%
Positive normalized GEXIron condor-0.15%-0.39% to +0.07%
Realized volatility coolingIron condor-0.21%-0.53% to +0.07%
Positive delta-adjusted GEXIron condor-0.21%-0.48% to +0.06%
Vanna exposure rises from prior monthLong call-0.27%-1.05% to +0.49%
All four wing quotes within 10%Iron condor-0.28%-0.59% to -0.02%
Negative normalized GEXLong straddle-0.38%-0.90% to +0.10%
Put tail at least five vol points richBull put spread-0.38%-0.72% to -0.04%
Max pain above spotLong call-0.91%-1.69% to -0.10%

Tick = selected mean minus rejected mean; bar = 95% month-block bootstrap range (1,000 resamples). Darker bars do not cross zero. Axis from -1.69% to +1.29%.

What the results suggest

  1. The highest average is still a bullish option trade. Positive delta exposure selected 69 long calls averaging +0.53%, with Sharpe 1.25 against 0.53 for every eligible call. Its 95% range for the selected mean was -0.08% to +1.15%, and the selected-minus-rejected range was -0.35% to +1.29%. This does not establish predictive power: the rejected calls still averaged +0.05%, so skipping them cost 0.02% per eligible window.

  2. Carry and IV/RV are the research candidates. The carry proxy selected 36 put spreads averaging +0.25%; the IV/RV rule selected 46 averaging +0.19%. Their rejected trades averaged -0.01% and -0.01%, which is why both improve Sharpe (1.84 and 1.00 against 0.01) and cut the drawdown (-1.12% and -1.19% against -6.49%). Counted per eligible window with skips worth zero, the improvement is under 0.01% for both. Both selected-minus-rejected ranges include zero.

  3. A gamma label did not make the condor work. Positive normalized GEX selected 37 condors averaging -0.21%, against -0.10% on all 127 GEX-valid windows; delta-adjusted GEX did no better at -0.19%. Negative GEX selected 90 long straddles averaging -0.29%, worse than the +0.09% on positive-state dates. These one-expiry, lagged-OI proxies do not validate or refute a complete intraday dealer model.

  4. Which expiry you read matters more than the signal. In the first edition, max pain above spot ranked second with +0.67% on 34 calls. Read from the monthly instead of a thin weekly, the same rule selects 42 calls averaging -0.31%, with a selected-minus-rejected range of -1.69% to -0.10%: it skipped the best dates. The exposure family moved from 70-87 usable windows, with 2022 almost absent, to 127-133.

  5. Two liquidity-related filters skipped their best dates. The five-vol-point tail gate selected 103 put spreads averaging 0.00%; its 30 rejected trades averaged +0.38%. The 10% wing-quote filter selected 122 condors averaging -0.12%; the 11 rejected trades averaged +0.16%. Both ranges sit entirely below zero. A rich bought wing makes a credit spread less attractive, and tight quotes coincide with the calm months that condors do not need.

  6. Some attractive numbers have almost no sample. Surface richness selected 2 put spreads, lagged call volume selected 3 calls and the OI pin score selected none, because the proxy never reached 80 on a monthly chain. None of them belongs near a leaderboard on these counts.

The chronological split is a useful check, not a holdout: carry averaged +0.27% on 25 trades in 2020-2023 and +0.21% on 11 in 2024-2025. IV/RV averaged +0.22% on 32 and +0.12% on 14. Both later samples are small. Year, period and ETF slices

Small samples: measured, not ranked

SignalSignal Trade TradesN Mean after costsMean SharpeSharpe Win rateWin
Wings at least one vol point rich Iron condor 4 +0.09% 1.07 75.0%
Lagged call volume exceeds puts by 1.5 times Long call 3 +1.07% 1.02 66.7%
Call OI change exceeds put OI change Long call 26 +0.73% 0.79 65.4%
Front IV exceeds back by two vol points Call calendar 9 -0.14% -0.57 44.4%
Max pain within 1% of spot Iron condor 15 -0.14% -1.06 46.7%
OI concentration proxy score at least 80 Iron condor 0 n/a n/a n/a
Put IV exceeds SVI fit by one vol point Bull put spread 2 +0.52% n/a 100.0%
Back IV exceeds front by two vol points Call calendar 4 -0.75% n/a 0.0%

Research profiles

Profiles follow the Sharpe order of the ranked table, with the small samples last. Each profile states the rule, the intended exposure, the measured result and the next test. The formula describes this experiment exactly; differences from native endpoint definitions are deliberate and disclosed. IV and RV are decimal annualized volatility unless a formula explicitly multiplies by 100. The tiles are shaded on a common scale per metric; the sparkline is the running total per eligible month, with the same structure on every eligible date as the grey reference.

Carry proxy score at least 60

Trades36
Mean+0.25%
Median+0.43%
Win rate75.0%
Sharpe1.84
Profit factor2.88
Max drawdown-1.12%
Worst trade-2.24%
Running total+5.1% vs +0.1%
Setup Compute round(50 + clip(200*(ATM_IV - RV20), -50, 50)) >= 60 at the signal close. When it passes, enter the bull put spread under the common schedule.
Exposure Uses the vol-carry score's fallback transformation to select put spreads. Production computes RV20 from 60 stored closes with the same sample-standard-deviation formula, so the inputs match; the proxy omits only the percentile branch that production prefers when VRP history exists.

Endpoint ingredients /v1/strategies/vol-carry/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 36 selected trades from 127 feature-valid windows. Mean after costs +0.25%; median +0.43%; win rate 75.0%; worst trade -2.24%. The unfiltered control averaged +0.07% with Sharpe 0.01; rejected dates averaged -0.01%. P&L per eligible window, including zero for skips, was +0.07%, a change of +0.01% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.06% to +0.48%; selected minus rejected is +0.26% with a range of -0.15% to +0.62%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Reconstruct the percentile branch from daily VRP history and compare it with this fallback score on the same dates.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Positive normalized DEX

Trades69
Mean+0.53%
Median+0.59%
Win rate58.0%
Sharpe1.25
Profit factor2.05
Max drawdown-4.47%
Worst trade-4.21%
Running total+27.8% vs +17.6%
Setup Compute sum(delta*lagged_OI*100*S) / sum(abs(contributions)) > 0 at the signal close. When it passes, enter the long call under the common schedule.
Exposure Buys a call when the monthly-expiry delta exposure proxy is positive. Open interest does not reveal whether dealers own or are short those contracts.

Endpoint ingredients /v1/exposure/dex/{symbol}, /v1/exposure/summary/{symbol}, /v1/exposure/sheet/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 69 selected trades from 127 feature-valid windows. Mean after costs +0.53%; median +0.59%; win rate 58.0%; worst trade -4.21%. The unfiltered control averaged +0.31% with Sharpe 0.53; rejected dates averaged +0.05%. P&L per eligible window, including zero for skips, was +0.29%, a change of -0.02% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.08% to +1.15%; selected minus rejected is +0.48% with a range of -0.35% to +1.29%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Compare against same-date stock exposure and a negative-DEX control.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

IV at least 1.2 times RV

Trades46
Mean+0.19%
Median+0.35%
Win rate73.9%
Sharpe1.00
Profit factor2.28
Max drawdown-1.19%
Worst trade-2.24%
Running total+4.2% vs +0.1%
Setup Compute ATM_IV / RV20 >= 1.20 at the signal close. When it passes, enter the bull put spread under the common schedule.
Exposure Sells a put spread when implied volatility is rich relative to recent realized volatility. Directional equity exposure remains part of the trade.

Endpoint ingredients /v1/stock/{symbol}/summary, /v1/volatility/{symbol}, /v1/vrp/{symbol}, /v1/vrp/{symbol}/history, /v1/strategies/vol-carry/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 46 selected trades from 127 feature-valid windows. Mean after costs +0.19%; median +0.35%; win rate 73.9%; worst trade -2.24%. The unfiltered control averaged +0.07% with Sharpe 0.01; rejected dates averaged -0.01%. P&L per eligible window, including zero for skips, was +0.07%, a change of 0.00% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.05% to +0.39%; selected minus rejected is +0.20% with a range of -0.16% to +0.57%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Test 1.10 and 1.30 on new data, retaining the original 1.20 rule as the reference.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

VIX exceeds SPX RV by five vol points

Trades57
Mean+0.09%
Median+0.26%
Win rate66.7%
Sharpe0.77
Profit factor1.46
Max drawdown-1.24%
Worst trade-2.36%
Running total+3.3% vs +2.1%
Setup Compute previous_close_VIX - 100*RV20_SPX >= 5 at the signal close. When it passes, enter the bull put spread under the common schedule.
Exposure Sells an ETF put spread when lagged VIX exceeds SPX realized volatility. The same macro state is shared by all three ETFs.

Endpoint ingredients /v1/macro/vix-state. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 57 selected trades from 133 feature-valid windows. Mean after costs +0.09%; median +0.26%; win rate 66.7%; worst trade -2.36%. The unfiltered control averaged +0.09% with Sharpe 0.14; rejected dates averaged +0.08%. P&L per eligible window, including zero for skips, was +0.04%, a change of -0.05% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.16% to +0.30%; selected minus rejected is +0.01% with a range of -0.35% to +0.33%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Compare SPY alone with QQQ and IWM before treating one SPX state as universal.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

VRP above its prior 75th percentile

Trades39
Mean+0.14%
Median+0.33%
Win rate76.9%
Sharpe0.77
Profit factor1.72
Max drawdown-1.19%
Worst trade-2.24%
Running total+3.0% vs -0.7%
Setup Compute 100 * count(prior_month_VRP < current_VRP) / N >= 75 at the signal close. When it passes, enter the bull put spread under the common schedule.
Exposure Sells a put spread when IV minus RV is high relative to up to 12 earlier monthly observations. At least six prior observations are required. This is not the endpoint daily-history percentile.

Endpoint ingredients /v1/stock/{symbol}/summary, /v1/volatility/{symbol}, /v1/vrp/{symbol}, /v1/vrp/{symbol}/history, /v1/strategies/vol-carry/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 39 selected trades from 122 feature-valid windows. Mean after costs +0.14%; median +0.33%; win rate 76.9%; worst trade -2.24%. The unfiltered control averaged +0.05% with Sharpe -0.05; rejected dates averaged 0.00%. P&L per eligible window, including zero for skips, was +0.05%, a change of 0.00% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.16% to +0.41%; selected minus rejected is +0.14% with a range of -0.25% to +0.52%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Reconstruct daily history and compare a daily percentile with this monthly proxy.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Charm exposure rises from prior month

Trades57
Mean+0.38%
Median+0.53%
Win rate54.4%
Sharpe0.72
Profit factor1.61
Max drawdown-12.93%
Worst trade-4.57%
Running total+17.0% vs +9.4%
Setup Compute CHEX_this_month - CHEX_previous_month > 0; CHEX=sum(charm*lagged_OI*100) at the signal close. When it passes, enter the long call under the common schedule.
Exposure Buys a call after the charm exposure proxy rises. This is an explicit directional research hypothesis; native charm totals are not a validated buy signal.

Endpoint ingredients /v1/exposure/chex/{symbol}, /v1/exposure/summary/{symbol}, /v1/exposure/sheet/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 57 selected trades from 118 feature-valid windows. Mean after costs +0.38%; median +0.53%; win rate 54.4%; worst trade -4.57%. The unfiltered control averaged +0.22% with Sharpe 0.30; rejected dates averaged +0.08%. P&L per eligible window, including zero for skips, was +0.18%, a change of -0.04% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.32% to +1.13%; selected minus rejected is +0.31% with a range of -0.43% to +1.14%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Hold the contract universe fixed, compare with stock beta and use an untouched period.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Positive 20-session momentum

Trades71
Mean+0.30%
Median+0.39%
Win rate54.9%
Sharpe0.63
Profit factor1.52
Max drawdown-7.94%
Worst trade-4.21%
Running total+12.4% vs +14.3%
Setup Compute ln(S / S_20_sessions_ago) > 0 at the signal close. When it passes, enter the long call under the common schedule.
Exposure Buys upside after a rising month. This tests continuation, with the long call still carrying bullish market exposure.

Endpoint ingredients /stockquote/{ticker}, /v1/stock/{symbol}/summary. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 71 selected trades from 132 feature-valid windows. Mean after costs +0.30%; median +0.39%; win rate 54.9%; worst trade -4.21%. The unfiltered control averaged +0.30% with Sharpe 0.42; rejected dates averaged +0.31%. P&L per eligible window, including zero for skips, was +0.16%, a change of -0.14% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.27% to +0.82%; selected minus rejected is -0.01% with a range of -0.96% to +0.91%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Match the call against a 50-share position on the same selected dates.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Annualized put premium at least 12%

Trades76
Mean+0.15%
Median+0.43%
Win rate75.0%
Sharpe0.40
Profit factor1.58
Max drawdown-4.53%
Worst trade-3.90%
Running total+4.4% vs +2.1%
Setup Compute (put25_mid / put25_strike) * 365 / DTE >= 0.12 at the signal close. When it passes, enter the bull put spread under the common schedule.
Exposure Uses a cash-secured-put premium-yield ingredient to select put spreads. Annualized quoted premium is neither expected return nor the return on spread collateral.

Endpoint ingredients /v1/strategies/yield-enhancement/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 76 selected trades from 133 feature-valid windows. Mean after costs +0.15%; median +0.43%; win rate 75.0%; worst trade -3.90%. The unfiltered control averaged +0.09% with Sharpe 0.14; rejected dates averaged 0.00%. P&L per eligible window, including zero for skips, was +0.09%, a change of 0.00% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.15% to +0.41%; selected minus rejected is +0.16% with a range of -0.18% to +0.46%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Test the native cash-secured-put payoff with cash yield and assignment modeled.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Negative 20-session momentum

Trades61
Mean+0.31%
Median+0.77%
Win rate55.7%
Sharpe0.33
Profit factor1.40
Max drawdown-11.28%
Worst trade-4.57%
Running total+5.9% vs +14.3%
Setup Compute ln(S / S_20_sessions_ago) < 0 at the signal close. When it passes, enter the long call under the common schedule.
Exposure Buys upside after a falling month. This is a mean-reversion hypothesis, not a forecast supplied by the quote endpoint. Its selected dates are exactly the dates the momentum rule rejects.

Endpoint ingredients /stockquote/{ticker}, /v1/stock/{symbol}/summary. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 61 selected trades from 132 feature-valid windows. Mean after costs +0.31%; median +0.77%; win rate 55.7%; worst trade -4.57%. The unfiltered control averaged +0.30% with Sharpe 0.42; rejected dates averaged +0.30%. P&L per eligible window, including zero for skips, was +0.14%, a change of -0.16% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.46% to +1.07%; selected minus rejected is +0.01% with a range of -0.91% to +0.94%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Compare positive and negative momentum within each year and ETF, then test a new period.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Vanna exposure rises from prior month

Trades59
Mean+0.09%
Median-0.11%
Win rate49.2%
Sharpe0.25
Profit factor1.12
Max drawdown-8.57%
Worst trade-4.21%
Running total+4.9% vs +9.4%
Setup Compute VEX_this_month - VEX_previous_month > 0; VEX=sum(vanna*lagged_OI*100*S) at the signal close. When it passes, enter the long call under the common schedule.
Exposure Buys a call after the exposure proxy rises. The monthly expiry rolls from month to month, so this change mixes contract roll, OI and Greek effects.

Endpoint ingredients /v1/exposure/vex/{symbol}, /v1/exposure/summary/{symbol}, /v1/exposure/sheet/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 59 selected trades from 118 feature-valid windows. Mean after costs +0.09%; median -0.11%; win rate 49.2%; worst trade -4.21%. The unfiltered control averaged +0.22% with Sharpe 0.30; rejected dates averaged +0.36%. P&L per eligible window, including zero for skips, was +0.04%, a change of -0.18% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.56% to +0.72%; selected minus rejected is -0.27% with a range of -1.05% to +0.49%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Decompose changes on a fixed contract universe before interpreting them as hedge demand.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Put skew at least three vol points

Trades114
Mean+0.08%
Median+0.32%
Win rate72.8%
Sharpe0.23
Profit factor1.33
Max drawdown-5.80%
Worst trade-3.90%
Running total+3.0% vs +2.1%
Setup Compute IV_put25 - IV_call25 >= 0.03 at the signal close. When it passes, enter the bull put spread under the common schedule.
Exposure Sells a put spread when downside IV exceeds upside IV by three volatility points. This research convention is put minus call, stated explicitly because the endpoints differ.

Endpoint ingredients /v1/strategies/skew/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 114 selected trades from 133 feature-valid windows. Mean after costs +0.08%; median +0.32%; win rate 72.8%; worst trade -3.90%. The unfiltered control averaged +0.09% with Sharpe 0.14; rejected dates averaged +0.09%. P&L per eligible window, including zero for skips, was +0.07%, a change of -0.01% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.14% to +0.29%; selected minus rejected is -0.01% with a range of -0.36% to +0.43%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Compare the three-point gate with stricter gates on new data; inspect whether it excludes any loss months.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Max pain above spot

Trades42
Mean-0.31%
Median-0.22%
Win rate45.2%
Sharpe0.07
Profit factor0.70
Max drawdown-9.36%
Worst trade-4.57%
Running total+1.1% vs +15.7%
Setup Compute (max_pain_strike - S)/S > 0 at the signal close. When it passes, enter the long call under the common schedule.
Exposure Buys a call when the monthly-expiry payout-minimizing strike is above spot. A payout minimum does not itself imply a price attraction force.

Endpoint ingredients /v1/maxpain/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 42 selected trades from 133 feature-valid windows. Mean after costs -0.31%; median -0.22%; win rate 45.2%; worst trade -4.57%. The unfiltered control averaged +0.31% with Sharpe 0.46; rejected dates averaged +0.60%. P&L per eligible window, including zero for skips, was -0.10%, a change of -0.41% versus the unfiltered control.

The selected-mean 95% exploratory range is -1.04% to +0.49%; selected minus rejected is -0.91% with a range of -1.69% to -0.10%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Compare the distance shrinking with plain market appreciation on the same dates.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Put tail at least five vol points rich

Trades103
Mean0.00%
Median+0.26%
Win rate68.9%
Sharpe-0.29
Profit factor1.00
Max drawdown-9.25%
Worst trade-3.90%
Running total-3.7% vs +2.1%
Setup Compute IV_put10 - mean(IV_ATM_call, IV_ATM_put) >= 0.05 at the signal close. When it passes, enter the bull put spread under the common schedule.
Exposure Selects a put spread when its far-downside wing is expensive. That wing is bought, so the condition does not directly sell the expensive tail.

Endpoint ingredients /v1/strategies/tail-pricing/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 103 selected trades from 133 feature-valid windows. Mean after costs 0.00%; median +0.26%; win rate 68.9%; worst trade -3.90%. The unfiltered control averaged +0.09% with Sharpe 0.14; rejected dates averaged +0.38%. P&L per eligible window, including zero for skips, was 0.00%, a change of -0.09% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.24% to +0.21%; selected minus rejected is -0.38% with a range of -0.72% to -0.04%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Compare with a structure that sells the measured richness while documenting its changed tail risk.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Negative normalized GEX

Trades90
Mean-0.29%
Median-0.53%
Win rate37.8%
Sharpe-0.37
Profit factor0.62
Max drawdown-17.08%
Worst trade-2.88%
Running total-7.7% vs -6.5%
Setup Compute normalized_GEX < 0 at the signal close. When it passes, enter the long straddle under the common schedule.
Exposure Buys a straddle in a negative-GEX proxy state. The hypothesis is a larger move, but the trade still has to pay for implied volatility and execution.

Endpoint ingredients /v1/exposure/gex/{symbol}, /v1/exposure/summary/{symbol}, /v1/exposure/sheet/{symbol}, /v1/exposure/term-structure/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 90 selected trades from 127 feature-valid windows. Mean after costs -0.29%; median -0.53%; win rate 37.8%; worst trade -2.88%. The unfiltered control averaged -0.18% with Sharpe -0.27; rejected dates averaged +0.09%. P&L per eligible window, including zero for skips, was -0.21%, a change of -0.02% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.69% to +0.13%; selected minus rejected is -0.38% with a range of -0.90% to +0.10%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Score subsequent move size against the entry premium before optimizing the exit.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Execution proxy score at least 60

Trades44
Mean-0.08%
Median+0.07%
Win rate56.8%
Sharpe-0.48
Profit factor0.70
Max drawdown-4.32%
Worst trade-3.14%
Running total-3.1% vs -8.3%
Setup Compute round(100*(0.7*exp(-(ATM_spread_pct+OI_weighted_spread_pct)/6)+0.3*min(ATM_OI/5000,1))) >= 60 at the signal close. When it passes, enter the iron condor under the common schedule.
Exposure Selects condors with a high execution-score proxy, using the monthly expiry and lagged OI. High quoted liquidity does not establish positive expected P&L.

Endpoint ingredients /v1/liquidity/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 44 selected trades from 132 feature-valid windows. Mean after costs -0.08%; median +0.07%; win rate 56.8%; worst trade -3.14%. The unfiltered control averaged -0.09% with Sharpe -0.72; rejected dates averaged -0.10%. P&L per eligible window, including zero for skips, was -0.03%, a change of +0.07% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.31% to +0.14%; selected minus rejected is +0.02% with a range of -0.24% to +0.28%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Verify which depth and OI conventions the native score uses before testing a new threshold.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Implied move exceeds the prior move

Trades78
Mean-0.11%
Median+0.03%
Win rate53.8%
Sharpe-0.50
Profit factor0.63
Max drawdown-6.67%
Worst trade-3.14%
Running total-4.7% vs -8.3%
Setup Compute ATM_IV * sqrt(14/365) / abs(S / S_10_sessions_ago - 1) >= 1.5 at the signal close. When it passes, enter the iron condor under the common schedule.
Exposure Sells an iron condor when a two-week implied move exceeds the previous ten-session net move. A small net move can conceal a volatile path.

Endpoint ingredients /v1/expected-move/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 78 selected trades from 132 feature-valid windows. Mean after costs -0.11%; median +0.03%; win rate 53.8%; worst trade -3.14%. The unfiltered control averaged -0.10% with Sharpe -0.72; rejected dates averaged -0.08%. P&L per eligible window, including zero for skips, was -0.07%, a change of +0.03% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.33% to +0.09%; selected minus rejected is -0.04% with a range of -0.33% to +0.25%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Replace the previous net move with realized path volatility and keep the payoff unchanged.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Positive variance premium

Trades88
Mean-0.09%
Median+0.02%
Win rate51.1%
Sharpe-0.55
Profit factor0.64
Max drawdown-6.43%
Worst trade-2.07%
Running total-4.1% vs -9.2%
Setup Compute ATM_IV^2 - RV20^2 > 0 at the signal close. When it passes, enter the iron condor under the common schedule.
Exposure Sells an iron condor when implied variance exceeds trailing realized variance. The same premium condition can behave differently on the put and call sides.

Endpoint ingredients /v1/stock/{symbol}/summary, /v1/volatility/{symbol}, /v1/vrp/{symbol}, /v1/vrp/{symbol}/history, /v1/strategies/vol-carry/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 88 selected trades from 127 feature-valid windows. Mean after costs -0.09%; median +0.02%; win rate 51.1%; worst trade -2.07%. The unfiltered control averaged -0.11% with Sharpe -0.81; rejected dates averaged -0.15%. P&L per eligible window, including zero for skips, was -0.07%, a change of +0.04% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.25% to +0.05%; selected minus rejected is +0.05% with a range of -0.29% to +0.42%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Separate put-side and call-side P&L before adding another volatility threshold.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

IV at least 1.2 times EWMA volatility

Trades41
Mean-0.02%
Median+0.16%
Win rate58.5%
Sharpe-0.55
Profit factor0.93
Max drawdown-4.50%
Worst trade-2.24%
Running total-2.6% vs -1.2%
Setup Compute ATM_IV / EWMA_vol >= 1.20; h = 0.94*h + 0.06*r^2 at the signal close. When it passes, enter the bull put spread under the common schedule.
Exposure Sells a put spread against a volatility estimate that weights recent squared returns more heavily. It tests whether replacing the RV denominator improves selection.

Endpoint ingredients /v1/volatility/forecast/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 41 selected trades from 116 feature-valid windows. Mean after costs -0.02%; median +0.16%; win rate 58.5%; worst trade -2.24%. The unfiltered control averaged +0.05% with Sharpe -0.08; rejected dates averaged +0.09%. P&L per eligible window, including zero for skips, was -0.01%, a change of -0.06% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.37% to +0.28%; selected minus rejected is -0.11% with a range of -0.48% to +0.29%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Hold the dates fixed when comparing EWMA and sample-standard-deviation RV.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

All four wing quotes within 10%

Trades122
Mean-0.12%
Median+0.03%
Win rate53.3%
Sharpe-0.82
Profit factor0.62
Max drawdown-9.94%
Worst trade-3.14%
Running total-9.1% vs -8.4%
Setup Compute max((ask-bid)/mid for C25,C10,P25,P10) <= 0.10 at the signal close. When it passes, enter the iron condor under the common schedule.
Exposure Selects condors with four relatively tight signal-day wing quotes. It is an execution condition, not a directional forecast or a promise about exit spreads.

Endpoint ingredients /v1/liquidity/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 122 selected trades from 133 feature-valid windows. Mean after costs -0.12%; median +0.03%; win rate 53.3%; worst trade -3.14%. The unfiltered control averaged -0.10% with Sharpe -0.72; rejected dates averaged +0.16%. P&L per eligible window, including zero for skips, was -0.11%, a change of -0.01% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.28% to +0.04%; selected minus rejected is -0.28% with a range of -0.59% to -0.02%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Track entry and exit spreads separately; check which dates the signal-day filter removes.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Realized volatility cooling

Trades70
Mean-0.21%
Median+0.02%
Win rate51.4%
Sharpe-1.21
Profit factor0.45
Max drawdown-10.53%
Worst trade-3.14%
Running total-9.6% vs -9.2%
Setup Compute RV5 / RV20 < 1 at the signal close. When it passes, enter the iron condor under the common schedule.
Exposure Sells an iron condor when recent close-to-close volatility is below its longer baseline. The question is whether calmer recent prices predict a quieter holding period.

Endpoint ingredients /v1/stock/{symbol}/summary, /v1/volatility/realized/{symbol}, /v1/volatility/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 70 selected trades from 127 feature-valid windows. Mean after costs -0.21%; median +0.02%; win rate 51.4%; worst trade -3.14%. The unfiltered control averaged -0.11% with Sharpe -0.81; rejected dates averaged +0.01%. P&L per eligible window, including zero for skips, was -0.11%, a change of 0.00% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.46% to +0.01%; selected minus rejected is -0.21% with a range of -0.53% to +0.07%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Compare the subsequent realized move with the entry straddle price on selected and rejected dates.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Positive delta-adjusted GEX

Trades71
Mean-0.19%
Median-0.12%
Win rate42.3%
Sharpe-1.33
Profit factor0.39
Max drawdown-10.17%
Worst trade-2.07%
Running total-9.7% vs -8.3%
Setup Compute sum(sign*abs(delta)*gamma*lagged_OI*100*S^2*0.01) > 0 at the signal close. When it passes, enter the iron condor under the common schedule.
Exposure Sells an iron condor when delta-weighted gamma exposure is positive. It changes which strikes matter relative to ordinary GEX.

Endpoint ingredients /v1/exposure/sheet/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 71 selected trades from 127 feature-valid windows. Mean after costs -0.19%; median -0.12%; win rate 42.3%; worst trade -2.07%. The unfiltered control averaged -0.10% with Sharpe -0.74; rejected dates averaged +0.02%. P&L per eligible window, including zero for skips, was -0.11%, a change of -0.01% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.34% to -0.04%; selected minus rejected is -0.21% with a range of -0.48% to +0.06%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Compare DAG and GEX on exactly the same dates, especially where their signs disagree.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Positive normalized GEX

Trades37
Mean-0.21%
Median-0.16%
Win rate40.5%
Sharpe-1.41
Profit factor0.36
Max drawdown-7.83%
Worst trade-1.96%
Running total-7.3% vs -8.3%
Setup Compute sum(sign*gamma*lagged_OI*100*S^2*0.01) / sum(abs(contributions)) > 0 at the signal close. When it passes, enter the iron condor under the common schedule.
Exposure Sells an iron condor in a positive-GEX proxy state. The proxy reads one expiry, the monthly carrying the most open interest, with lagged settled OI; it does not establish actual dealer positions.

Endpoint ingredients /v1/exposure/gex/{symbol}, /v1/exposure/summary/{symbol}, /v1/exposure/sheet/{symbol}, /v1/exposure/term-structure/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 37 selected trades from 127 feature-valid windows. Mean after costs -0.21%; median -0.16%; win rate 40.5%; worst trade -1.96%. The unfiltered control averaged -0.10% with Sharpe -0.74; rejected dates averaged -0.05%. P&L per eligible window, including zero for skips, was -0.06%, a change of +0.04% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.41% to -0.01%; selected minus rejected is -0.15% with a range of -0.39% to +0.07%. Neither range adjusts for trying multiple signals or uncertain data vintages.

Test next Repeat with all expirations, verified OI availability and a hedge-flow interpretation fixed in advance.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Wings at least one vol point rich

Trades4
Mean+0.09%
Median+0.21%
Win rate75.0%
Sharpe1.07
Profit factor2.06
Max drawdown-0.36%
Worst trade-0.36%
Running total+0.4% vs -8.4%
Setup Compute (IV_put25 + IV_call25)/2 - ATM_IV >= 0.01 at the signal close. When it passes, enter the iron condor under the common schedule.
Exposure Sells an iron condor when the 25-delta wings are rich relative to ATM. Both short wings and purchased protection influence the result.

Endpoint ingredients /v1/volatility/skew-term/{symbol}, /v1/volatility/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 4 selected trades from 133 feature-valid windows. Mean after costs +0.09%; median +0.21%; win rate 75.0%; worst trade -0.36%. The unfiltered control averaged -0.10% with Sharpe -0.72; rejected dates averaged -0.10%. P&L per eligible window, including zero for skips, was 0.00%, a change of +0.10% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.36% to +0.32%; selected minus rejected is +0.20% with a range of -0.20% to +0.46%. With fewer than 30 trades, treat this as a small-sample illustration; the ranges are particularly fragile.

Test next Expand the sample before interpreting the mean; retain the same one-point threshold.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Lagged call volume exceeds puts by 1.5 times

Trades3
Mean+1.07%
Median+1.38%
Win rate66.7%
Sharpe1.02
Profit factor2.18
Max drawdown-2.71%
Worst trade-2.71%
Running total+3.2% vs +15.7%
Setup Compute lagged_monthly_expiry_call_volume / put_volume >= 1.5 at the signal close. When it passes, enter the long call under the common schedule.
Exposure Buys a call after call volume exceeds put volume. The counts include both buyers and sellers, use a two-session lag, and are not classified aggressor flow.

Endpoint ingredients /v1/strategies/flow-anomaly/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 3 selected trades from 133 feature-valid windows. Mean after costs +1.07%; median +1.38%; win rate 66.7%; worst trade -2.71%. The unfiltered control averaged +0.31% with Sharpe 0.46; rejected dates averaged +0.29%. P&L per eligible window, including zero for skips, was +0.02%, a change of -0.29% versus the unfiltered control.

The selected-mean 95% exploratory range is -2.71% to +4.54%; selected minus rejected is +0.77% with a range of -3.04% to +4.22%. With fewer than 30 trades, treat this as a small-sample illustration; the ranges are particularly fragile.

Test next Reconstruct trade classification and compare signed flow with unsigned volume.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Call OI change exceeds put OI change

Trades26
Mean+0.73%
Median+1.05%
Win rate65.4%
Sharpe0.79
Profit factor2.13
Max drawdown-10.46%
Worst trade-3.47%
Running total+12.1% vs +15.7%
Setup Compute sum(call_OI_lag2 - call_OI_lag3) - sum(put_OI_lag2 - put_OI_lag3) > 0 at the signal close. When it passes, enter the long call under the common schedule.
Exposure Buys a call when matched-contract call OI increases more than put OI. Opening contracts can represent hedges, spreads or outright positions.

Endpoint ingredients /v1/exposure/narrative/{symbol}, /v1/exposure/oi-diff/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 26 selected trades from 133 feature-valid windows. Mean after costs +0.73%; median +1.05%; win rate 65.4%; worst trade -3.47%. The unfiltered control averaged +0.31% with Sharpe 0.46; rejected dates averaged +0.21%. P&L per eligible window, including zero for skips, was +0.14%, a change of -0.17% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.29% to +1.60%; selected minus rejected is +0.52% with a range of -0.45% to +1.36%. With fewer than 30 trades, treat this as a small-sample illustration; the ranges are particularly fragile.

Test next Require documented OI release times and separate expiry rolls from new positions.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Front IV exceeds back by two vol points

Trades9
Mean-0.14%
Median0.00%
Win rate44.4%
Sharpe-0.57
Profit factor0.35
Max drawdown-0.60%
Worst trade-0.80%
Running total-0.3% vs -12.6%
Setup Compute IV_back_call50 - IV_front_call50 <= -0.02 at the signal close. When it passes, enter the call calendar under the common schedule.
Exposure Buys the back-month call and sells the front-month call when front IV is richer. The hoped-for convergence can still be outweighed by spot movement and spreads.

Endpoint ingredients /v1/strategies/term-structure/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 9 selected trades from 133 feature-valid windows. Mean after costs -0.14%; median 0.00%; win rate 44.4%; worst trade -0.80%. The unfiltered control averaged -0.17% with Sharpe -2.19; rejected dates averaged -0.17%. P&L per eligible window, including zero for skips, was -0.01%, a change of +0.16% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.50% to +0.24%; selected minus rejected is +0.04% with a range of -0.33% to +0.42%. With fewer than 30 trades, treat this as a small-sample illustration; the ranges are particularly fragile.

Test next Measure front-leg and back-leg P&L separately and test more eligible dates.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Max pain within 1% of spot

Trades15
Mean-0.14%
Median-0.13%
Win rate46.7%
Sharpe-1.06
Profit factor0.61
Max drawdown-3.39%
Worst trade-1.23%
Running total-2.4% vs -8.4%
Setup Compute abs(max_pain_strike - S)/S <= 0.01 at the signal close. When it passes, enter the iron condor under the common schedule.
Exposure Sells an iron condor when spot is near the payout-minimizing strike. The ten-session exit occurs before expiry, when the pinning hypothesis may matter most.

Endpoint ingredients /v1/maxpain/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 15 selected trades from 133 feature-valid windows. Mean after costs -0.14%; median -0.13%; win rate 46.7%; worst trade -1.23%. The unfiltered control averaged -0.10% with Sharpe -0.72; rejected dates averaged -0.09%. P&L per eligible window, including zero for skips, was -0.02%, a change of +0.08% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.55% to +0.26%; selected minus rejected is -0.04% with a range of -0.45% to +0.38%. With fewer than 30 trades, treat this as a small-sample illustration; the ranges are particularly fragile.

Test next Test an expiry-aligned holding period as a separate experiment.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

OI concentration proxy score at least 80

Trades0
Meann/a
Mediann/a
Win raten/a
Sharpen/a
Profit factorn/a
Max drawdownn/a
Worst traden/a
Running total+0.0% vs -8.4%
Setup Compute round(100*clip(max(0,1-5*abs(S-KmaxOI)/S)*(0.7+0.3*OI_concentration),0,1)) >= 80 at the signal close. When it passes, enter the iron condor under the common schedule.
Exposure Sells an iron condor only when the monthly-expiry OI concentration proxy is high. It is neither a calibrated pin probability nor a 0DTE replay.

Endpoint ingredients /v1/strategies/expiry-positioning/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample No selected trades from 133 feature-valid windows. There is no estimated win rate or trade return. Zero activity is not evidence of a profitable signal.

Test next Study score coverage before changing the threshold; do not choose a replacement from these outcomes.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Put IV exceeds SVI fit by one vol point

Trades2
Mean+0.52%
Median+0.52%
Win rate100.0%
Sharpen/a
Profit factorn/a
Max drawdown0.00%
Worst trade+0.19%
Running total+1.0% vs +2.1%
Setup Compute mean(observed_put_IV - SVI_fitted_IV) >= 0.01 for 0.8*S <= K < S at the signal close. When it passes, enter the bull put spread under the common schedule.
Exposure Sells a put spread when at least five clean OTM put quotes exceed the saved SVI fit. The saved fit is a historical reconstruction with unverified original publication time.

Endpoint ingredients /v1/surface/{symbol}, /v1/surface/svi/{symbol}, /v1/adv_volatility/{symbol}, /v1/strategies/surface-anomaly/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 2 selected trades from 133 feature-valid windows. Mean after costs +0.52%; median +0.52%; win rate 100.0%; worst trade +0.19%. The unfiltered control averaged +0.09% with Sharpe 0.14; rejected dates averaged +0.08%. P&L per eligible window, including zero for skips, was +0.01%, a change of -0.08% versus the unfiltered control.

The selected-mean 95% exploratory range is +0.19% to +0.86%; selected minus rejected is +0.45% with a range of 0.00% to +0.91%. With fewer than 30 trades, treat this as a small-sample illustration; the ranges are particularly fragile.

Test next Verify fit vintages and fit quality, then test quote-level residuals on a larger sample.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

Back IV exceeds front by two vol points

Trades4
Mean-0.75%
Median-0.71%
Win rate0.0%
Sharpen/a
Profit factor0.00
Max drawdown-1.00%
Worst trade-1.55%
Running total-1.0% vs -12.6%
Setup Compute IV_back_call50 - IV_front_call50 >= 0.02 at the signal close. When it passes, enter the call calendar under the common schedule.
Exposure Buys the back-month call and sells the front-month call when the back is richer. This is a fixed-maturity research gate, not the native earliest-to-latest curve.

Endpoint ingredients /v1/strategies/term-structure/{symbol}. This experiment reconstructs the stated ingredient and gate; it does not replay the full native response.

In the sample 4 selected trades from 133 feature-valid windows. Mean after costs -0.75%; median -0.71%; win rate 0.0%; worst trade -1.55%. The unfiltered control averaged -0.17% with Sharpe -2.19; rejected dates averaged -0.15%. P&L per eligible window, including zero for skips, was -0.02%, a change of +0.15% versus the unfiltered control.

The selected-mean 95% exploratory range is -0.99% to -0.01%; selected minus rejected is -0.59% with a range of -0.89% to +0.18%. With fewer than 30 trades, treat this as a small-sample illustration; the ranges are particularly fragile.

Test next Compare with the opposite slope using a broader sample and matched strikes.

Ledger: Selected and rejected trade ledger. Filter active=True to reproduce the profile; active=False gives its control dates.

What changed in revision 2

The first edition read open interest, volume and Greeks for the exposure, max-pain, pin, volume, OI-shift and execution rules from the same expiry as the trade: the expiry nearest 35 days. On SPY that is usually a Monday or Wednesday weekly. Across the 133 shared windows it held a median 6,157 contracts of open interest against a median 1.7 million on the monthly, and the archive records zero open interest for it in 46 windows, all in 2020-2022. Those windows dropped out as "feature unavailable", so the ten affected rules were measured on 70-87 windows with the 2022 bear market almost absent, and their long-call control sat at +0.51% to +0.62% against +0.31% on the full sample. That, not the signals, put four of them at the top of the first ranking.

Revision 2 reads those features from the expiry carrying the most lagged open interest within 30-60 days of the signal, which is the monthly in every window (median 46 days to expiry). The trade itself, the quote-derived rules, the thresholds, costs, lags, cohort and bootstrap are unchanged. This change was made after the first results were known, which is one more reason to treat the study as exploratory.

RuleRule Trade Windows v1 Windows v2 Trades v1N v1 Trades v2N v2 Mean v1Mean v1 Mean v2Mean v2
Positive normalized DEX Long call 87 127 45 69 +0.34% +0.53%
Charm exposure rises from prior month Long call 70 118 36 57 +0.76% +0.38%
Vanna exposure rises from prior month Long call 70 118 35 59 +0.52% +0.09%
Max pain above spot Long call 87 133 34 42 +0.67% -0.31%
Negative normalized GEX Long straddle 87 127 48 90 -0.07% -0.29%
Execution proxy score at least 60 Iron condor 86 132 1 44 +0.33% -0.08%
Positive delta-adjusted GEX Iron condor 87 127 46 71 -0.20% -0.19%
Positive normalized GEX Iron condor 87 127 39 37 -0.23% -0.21%
Lagged call volume exceeds puts by 1.5 times Long call 87 133 12 3 +0.21% +1.07%
Call OI change exceeds put OI change Long call 87 133 27 26 +0.04% +0.73%
Max pain within 1% of spot Iron condor 87 133 21 15 -0.31% -0.14%
OI concentration proxy score at least 80 Iron condor 87 133 0 0 n/a n/a

Backtest it yourself

Every trade and every signal in this article was priced from FlashAlpha's options archive: end-of-day bid and ask quotes, implied volatility, Greeks and open interest for the contracts in each month's chain, plus underlying closes, SVI fits and macro closes. The Historical API serves the same archive at one-minute resolution, back to January 3, 2017 for SPY, QQQ, IWM and eleven other symbols, with 8+ years of history on 54 symbols and 204 symbols in total.

This study
  • Three ETFs, one signal a month at the close, ten-session exit
  • Signals rebuilt from end-of-day chains, lagged OI and saved fits
  • Thirty fixed proxies for 32 routes, one expiry per feature
  • No intraday state, no classified flow, no 0DTE
With the Historical API
  • Any minute since 3 January 2017: test the signal at 10:30 and the exit at 15:30, or any schedule
  • The native scores themselves, replayed leak-free with ?at=: /v1/exposure/gex, /v1/maxpain, /v1/vrp, /v1/strategies/vol-carry, /v1/liquidity, /v1/expected-move
  • GET /v1/optionquote/{symbol}?at= returns every leg's bid, ask, implied volatility, Greeks and open interest at that minute, all expiries
  • 204 symbols, 54 with 8+ years of history, unlimited daily requests on the Alpha plan

The Historical API is part of the Alpha plan, from $1,199/mo, with unlimited daily requests on the same key as the live API.

Open the Historical Playground Read the docs Compare plans

How the backtest works

Trade accounting. We reuse the prior study's exact option trade outcomes, then independently check their raw quotes and cash flows. Long call buys a 50-delta call; bull call spread buys 50 and sells 25; bull put spread sells 25 and buys 10; condor sells 25-delta wings and buys 10-delta protection; calendar sells the ATM front call and buys the same strike in the back expiry; straddle buys an ATM call and put. Delta tolerance is 0.10. Buys pay ask, sells receive bid, plus $0.65 per contract per side.

Quote and date selection. The baseline requires positive uncrossed quotes on signal, entry and exit dates, displayed size for the trade and a signal spread at most the larger of $0.10 or 30% of midpoint. Windows spanning ex-dividend dates are excluded where the structure has a short call. The common six-structure cohort inherits those exclusions, including for long-only structures. Missing future quotes also exclude trades, so the retained sample can be biased.

Signal inputs. Read-only archive extracts contain signal-day option IV/Greeks and full strikes for expirations 30-80 days out, lagged option OI/volume, saved SVI fits and macro closes. Quote-derived rules (ATM IV, skew, tail, wings, term slope, put yield, wing spreads, surface residuals) read the trade's own front expiry, nearest 35 days within 30-45. OI-based rules (exposure, DAG, vanna and charm changes, max pain, pin score, call/put volume, OI shift, execution score) read the expiry carrying the most lagged open interest within 30-60 days, the monthly. Neither is an all-expiry model. Quote-derived IV requires 1%-300% decimal-vol bounds expressed as 0.01-3.00, valid quotes and the same spread check. No rejected selected contract is replaced with an easier quote.

Open interest. OI and option volume come from two observed trading sessions before the signal, and OI changes compare that day with the preceding session. Exact duplicate OI records are collapsed; conflicting duplicates abort the run. Greek exposure requires matched, valid Greeks covering at least 90% of lagged OI for the chosen expiry. These availability lags reduce same-day leakage risk but do not certify the original data publication vintage. Call-positive/put-negative GEX is a convention, not an observation of who holds the positions.

Volatility. RV5/RV20 use sample standard deviation of the last 5/20 unadjusted log returns, annualized by sqrt(252), the same formula the production vol-carry score applies to its stored closes. EWMA uses 60 returns, starts from the mean square of the first 20 and updates the remaining 40 with lambda 0.94. It is a fixed EWMA experiment, not a HAR/GARCH forecast replay. ATM IV is the mean of the nearest-spot call and put IV. Term slope uses the 50-delta calls in front and back expiries. Macro VIX and the 21 SPX closes needed for RV all precede the signal date.

Surface and changes. Surface residuals use the saved signal-date SVI forward and parameters, with w(k)=a+b[rho(k-m)+sqrt((k-m)^2+sigma^2)] and fitted IV=sqrt(w/T). Negative fitted variance is rejected; at least five clean OTM puts are required. SVI vintages are not certified. Vanna/charm changes compare consecutive available monthly calculations only when the previous scheduled observation was valid; the monthly expiry rolls, so the universe is not fixed.

Controls and risk metrics. The unfiltered control is the same structure on every feature-valid window of that rule. P&L per eligible window counts skipped windows as zero with no interest; its change versus the control equals minus the rejected trades' total divided by the eligible count, so it is positive exactly when the rejected dates lost money. Sharpe, profit factor and max drawdown follow the strategy article: months are lined up, each month's figure is the mean across the ETFs traded that month, Sharpe is the mean of that series over its standard deviation times sqrt(12) with no risk-free rate, max drawdown is the largest peak-to-trough fall of the running total (not compounded), profit factor is gross gains over gross losses. Control Sharpe applies the same recipe to every eligible window.

Uncertainty. We resample complete calendar months 1,000 times, keeping ETF observations in a month together, with seed 20260917. The mean and selected-minus-rejected intervals are percentile bootstrap summaries. They do not correct for serial dependence, multiple testing, correlated payoffs, retrospective choices or vintage errors. 9,204 selected signal/strategy observations reuse only 798 distinct option trades.

What is missing. Early assignment, margin, collateral interest, financing, taxes, impact and intraday account paths are not modeled. These are EOD historical quote simulations, not continuous account returns or executable track records. No endpoint has established a persistent edge from this exercise.

Which endpoints were not tested?

All 93 documented routes appear in the endpoint coverage matrix. 32 have an ingredient proxy in this experiment; none has been certified as an exact historical production-score replay. The other 61 are not assigned invented returns.

Group Why it is outside this test
Classified flow and dealer premium Daily call/put volume does not reproduce aggressor classification, opening/closing state or session flow.
0DTE and pin probabilities A monthly ten-session trade cannot test a same-day forecast. Intraday paths and correctly timed state are required.
Earnings Requires event-specific histories and pre-event information vintages. The prior 12-event examples do not validate these signals.
Dispersion, baskets and spot-vol correlation Requires aligned constituent or daily IV histories beyond this monthly extraction.
Utilities, screeners, reference and account routes A calculator or metadata response needs an explicit trading hypothesis and historical input universe before it has a return to rank.

Download and reproduce

Suggested citation: FlashAlpha Research. Which endpoint signals helped? 30 light backtests across six options strategies. 17 September 2026, revision 2. Based on endpoint-light-backtest-v2.

Questions readers ask

Which signal performed best?

By Sharpe ratio, the order of the tables, the carry proxy ahead of a bull put spread, 1.84 on 36 trades. By average result, positive delta exposure ahead of a long call, +0.53% on 69 trades. Neither has a selected-minus-rejected range that clears zero, so neither is evidence of an edge.

What does the percentage mean?

Every result is a percentage of the value of 100 shares of the ETF when the trade was opened. A put spread at +0.25% on a $500 ETF made about $125 on a $50,000 reference position. It is not a return on the option premium, the margin or an account. The ledgers keep basis points, and one basis point is 0.01%.

Did any signal beat taking every trade?

On the selected dates, most did. Counted per eligible window, with skipped dates worth zero, the few rules that came out ahead did so by at most +0.07% per window, and those were condor rules skipping losing months. Every long-call rule skipped profitable months.

Why did max pain fall from second place to last?

Because the first edition read it from a weekly expiry with almost no open interest, on a sample that mostly excluded 2022. Read from the monthly on the full sample, the same rule skipped the best call months. The rule did not change; the input did. The revision table above shows every rule that moved.

Are these the production endpoint scores?

No. They are reconstructed ingredients with fixed research gates, computed from end-of-day archives with lagged open interest. Production scores use live chains, all expiries and, for vol-carry, a percentile branch that this study omits. The coverage ledger lists every route and what was and was not replayed.

Where does the data come from?

From FlashAlpha's options archive, read directly: end-of-day quotes, implied volatility, Greeks and open interest for every contract in each month's chain, plus underlying closes, SVI fits and macro closes. The Historical API serves the same archive at one-minute resolution back to January 2017. The research pack contains the exact SQL, raw responses and hashes.

Where should the next hour of research go?

Start with the carry and IV/RV put-spread ledgers. Their rejected dates were slightly negative, their Sharpe and drawdown improved against the unconditional spread, and their chronological halves point the same way. Check the worst dates, replay the native vol-carry percentile with the Historical API, and test the frozen rule on new months. One successful comparison on new dates would be worth more than another hundred filters.

Permanent article URL: flashalpha.com/articles/flashalpha-api-endpoints-signals-formulas-research-guide

Download checksums and source identifiers

Live Market Pulse

Get fast visibility into market shifts with full-chain analytics over low-latency REST and MCP polling.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Export-Ready

Export structured signals to your own execution stack or broker integration - FlashAlpha delivers the analytics, you keep control of order routing.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!