Complete Guide to Trading Earnings Volatility: IV Crush, VRP & Expected Move | FlashAlpha

Complete Guide to Trading Earnings Volatility: IV Crush, VRP & Expected Move

The complete earnings-vol playbook: IV ramp, IV crush, expected move, single-name VRP, dealer positioning, defined-risk structures, worked NVDA and AAPL examples, and the kinks that get traders run over.

T
Tomasz Dobrowolski Quant Engineer
Jun 7, 2026
39 min read
Earnings ImpliedVolatility IVCrush VRP Options Strategies EventVol
LIVE DATA
See NVDA earnings vol setup right now
Expected move, IV rank, VRP z-score and dealer positioning for the current earnings cycle. Switch to AAPL, TSLA, AMZN or any covered name.
Open NVDA Dashboard →

What is earnings-volatility trading?

Every quarter, public companies release financial results in a scheduled announcement window. In the days and hours before that announcement, implied volatility on the company's options inflates as market participants bid up optionality around the binary outcome. In the hours after the print, that premium collapses as the uncertainty resolves. This predictable IV ramp-and-crush cycle is the structural foundation every earnings-vol trader exploits.

The game has two sides. Premium sellers collect the inflated IV before the event and profit when IV collapses regardless of which direction the stock moves. Directional buyers bet that the actual price move will exceed the market-implied expected move - i.e., that the options are cheap relative to the realized move about to happen. Both approaches use the same core metrics; they just take opposite positions.

Unlike index-options vol trading, where macro flow and dealer hedging dominate the landscape, single-name earnings vol has idiosyncratic risk that the index diversifies away. A one-standard-deviation earnings miss on NVDA can move the stock 10-15% while SPY barely flinches. That gap between single-name risk and index risk is exactly where the earnings-vol trader earns edge.

The IV ramp and crush cycle

Understanding the mechanics of the cycle is non-negotiable before you trade it. The cycle has three phases.

Phase 1: IV ramp (T-10 to T-0)

Starting roughly ten trading days before an earnings announcement, market makers and sophisticated participants begin buying optionality, driving up implied volatility on the earnings-nearest expiration. The ramp is not linear. Typically it is slow in the first week, then accelerates in the final two to three trading days. By the session before the announcement, IV on the event expiry can be 40-100% above its trailing 30-day average for a large-cap like NVDA, and considerably higher for smaller or more volatile names.

The driver is uncertainty: nobody knows whether the company will beat, miss, or guide up or down, and the market prices that binary risk into optionality. Sellers require a premium to underwrite the tail risk; buyers pay it to hedge or speculate.

Phase 2: The market-implied expected move

The single most useful number you can read from the options chain before an earnings event is the straddle-implied expected move. Buy the at-the-money call and put at the same expiry (the earnings expiry) and add their prices. That sum, divided by the current stock price, gives the market-implied expected move over the event horizon — the magnitude the market is pricing for the post-earnings reaction. Strictly, the ATM straddle approximates the expected absolute move, which is about 0.8x a true one-standard-deviation move; in practice traders use straddle ÷ spot as the working "expected move" and treat it as an approximate 1σ band, but it is not a clean 1σ figure.

Expected Move from ATM Straddle $$ \text{Expected Move} \approx \frac{C_{\text{ATM}} + P_{\text{ATM}}}{S_0} $$

If NVDA is at \$950 and the nearest-expiry ATM straddle costs \$47.50, the market is pricing approximately a 5.0% move in either direction. That is the hurdle the realized move must clear for straddle buyers to profit on intrinsic value alone. Straddle sellers collect that \$47.50 in premium; their breakeven is any close between \$902.50 and \$997.50.

The FlashAlpha max-pain endpoint at /v1/maxpain/{ticker} returns the straddle price and ATM IV directly - you do not need to build them manually from the chain. For the move expressed as a percentage and the implied upper/lower price bounds, use /v1/expected-move/{ticker}.

Phase 3: IV crush

Once the announcement is made and the outcome is known, the uncertainty that inflated IV evaporates. Even if the stock moves exactly what the market priced, IV on the event expiry will collapse by 50-80% the morning after the print. This is IV crush: not a failure of the market to move, but the mechanical resolution of priced uncertainty.

IV Crush: Variance Decomposition $$ \sigma_{\text{pre}}^2 \cdot T_{\text{pre}} = \sigma_{\text{event}}^2 + \sigma_{\text{post}}^2 \cdot T_{\text{post}} $$

The logic is variance additivity: total near-term variance (left side) is the sum of the event-jump variance and the post-event background variance. The earnings announcement resolves σ2event to zero overnight. What remains drives the post-event ATM IV:

Post-Event IV $$ \sigma_{\text{post}} = \sqrt{\frac{\sigma_{\text{pre}}^2 \cdot T_{\text{pre}} - \sigma_{\text{event}}^2}{T_{\text{post}}}} $$

where σ2event is the market-attributed event variance (extracted from the term-structure kink at the earnings expiry via /v1/earnings/expected-move/{symbol}), and T is time in years. For NVDA earnings, the event variance can represent 60-80% of front-expiry total variance; for AAPL, it tends toward 30-50%. The larger that fraction, the more severe the crush when the event resolves. The magnitude of the crush is precisely what you are underwriting when you sell pre-earnings premium.

For the complete mechanics of IV crush including historical distribution by ticker, see IV crush around earnings explained.

The mechanics in detail

Pre-earnings IV ramp: what to watch

The ramp itself is informative. A steep, early ramp (starting T-10 or earlier) often indicates unusual positioning or a known catalyst beyond the earnings date itself - a product launch, regulatory decision, or macro event that will resolve around the same time. A muted ramp that spikes only in the final session can indicate that institutional sellers are aggressively supplying premium, keeping IV artificially low - which makes buying vol into the event potentially attractive.

Watch the spread between the event-expiry IV and the next expiry beyond the event. If the event expiry is pricing an 8% move but the following weekly shows IV 40% below it, that spread quantifies the event premium the market has assigned to the binary announcement.

Single-name VRP vs index VRP

The volatility risk premium (VRP) is the structural tendency for implied volatility to exceed subsequently realized volatility. On SPY and other index products, VRP exists because investors pay for crash protection - the demand for downside hedges keeps index IV persistently elevated relative to realized vol. Single-name VRP works differently, and understanding that difference is critical for earnings traders.

Outside of earnings windows, many individual stocks show negative average VRP - their options are priced cheap because directional speculators dominate the demand side and push IV down below subsequent realized vol. During earnings windows, the relationship flips sharply: event uncertainty drives IV to a premium that, on average across the universe, exceeds the realized move. But the distribution is wide. For any single name on any single earnings date, the realized move can dwarf the implied expected move.

For a deep comparison of single-stock versus index VRP and how earnings events distort the premium, see single-stock VRP: earnings vs SPY index.

Reading the data before you trade

The expected move

Pull the ATM straddle price and ATM IV from /v1/maxpain/{ticker}, and the expected move as a percentage plus the implied upper/lower bounds from /v1/expected-move/{ticker}. Then compare the implied move to the historical distribution of actual earnings moves for the same ticker over the past eight to twelve quarters. If the market is pricing a 6% move but the name has only moved more than 4% in two of the last eight quarters, the premium looks rich on a historical-frequency basis.

import requests

HEADERS = {"X-Api-Key": "YOUR_KEY"}

# /v1/maxpain returns the straddle price and ATM IV
mp = requests.get(
    "https://lab.flashalpha.com/v1/maxpain/NVDA", headers=HEADERS
).json()
em = mp["expected_move"]
print(f"Straddle cost:   ${em['straddle_price']:.2f}")
print(f"ATM IV:          {em['atm_iv']:.1f}%")
print(f"Max pain in EM:  {em['max_pain_within_expected_range']}")

# /v1/expected-move returns the move % and the implied price bounds
xm = requests.get(
    "https://lab.flashalpha.com/v1/expected-move/NVDA", headers=HEADERS
).json()
m = xm["expected_moves"][0]   # nearest expiry
print(f"Implied move:    {m['expectedMovePct']:.1f}%")
print(f"Lower bound:     ${m['lowerBound']:.2f}")
print(f"Upper bound:     ${m['upperBound']:.2f}")

IV rank and IV percentile

Absolute IV levels are misleading. A stock with an IV of 60% sounds expensive until you learn that IV has been between 55% and 120% over the prior year - in which case 60% is actually near the bottom of its range. IV rank contextualizes the current level within the trailing twelve-month range.

IV Rank $$ \text{IV Rank} = \frac{\text{IV}_{\text{current}} - \text{IV}_{52\text{w low}}}{\text{IV}_{52\text{w high}} - \text{IV}_{52\text{w low}}} \times 100 $$

IV percentile answers a different question: what percentage of days over the prior year had IV below the current level? For earnings trades, both are useful. IV rank above 70 combined with IV percentile above 70 suggests the current pre-earnings ramp is elevated relative to this name's own history - a prerequisite for a statistically motivated premium sale. IV rank below 40 heading into an earnings event is a warning flag that IV has not ramped meaningfully, which reduces the expected crush and the appeal of short-volatility structures.

IV rank is exposed as the iv_rank_30d screener metric via POST /v1/screener. For a same-name richness read from the comprehensive volatility endpoint /v1/volatility/{ticker}, use the iv_rv_spreads.assessment field, which classifies the IV-minus-RV premium into one of six regimes (very_high_premium, healthy_premium, moderate_premium, thin_premium, negative_spread, danger_zone). For a detailed breakdown of when to use each and how they diverge, see IV rank vs IV percentile: which to use.

Earnings VRP: implied vs realized over the event

Beyond the general IV rank, you want the event-specific VRP. This isolates how much of the pre-earnings IV premium has historically been captured as profit by premium sellers, and the FlashAlpha VRP endpoint at /v1/vrp/{ticker} provides this in z-score and percentile form.

r = requests.get(
    "https://lab.flashalpha.com/v1/vrp/NVDA",
    headers={"X-Api-Key": "YOUR_KEY"}
)
d = r.json()

vrp = d["vrp"]
print(f"NVDA VRP z-score:   {vrp['z_score']:.2f}")
print(f"VRP percentile:     {vrp['percentile']}")
# Richness classification comes from /v1/volatility's iv_rv_spreads.assessment
print(f"VRP regime:         {d['regime']['vrp_regime']}")

A VRP z-score above 1.5 (roughly the 90th percentile) historically indicates the event premium is rich relative to this name's earnings-over-event realized-vol history. That is the signal to tilt toward selling structures. A z-score below 0.5 or negative suggests the market is underpricing the potential move - a tilt toward buying vol or at minimum reducing size on premium sales.

For the full theoretical basis of this comparison, see realized vs implied volatility risk premium.

Pre-earnings put skew and what it means for structure selection

Into earnings, put skew almost always widens: the market bids downside protection ahead of the binary event, pushing 25-delta put IV above 25-delta call IV. The magnitude of that skew premium tells you something structural before you decide which strikes to sell.

Pull /v1/volatility/{symbol} and look at skew_profiles[] for the event expiry. The field skew_25d gives you put_25d_iv minus call_25d_iv in percentage points; smile_ratio is put_25d_iv divided by call_25d_iv. Alternatively, /v1/surface/{symbol} lets you read the full vol surface grid and compare IV across strikes at the event expiry slice directly. A skew_25d of 4-6 points is elevated but normal into a large-cap earnings event. A skew_25d above 8-10 points signals the market is pricing a meaningful downside tail - traders are aggressively buying put protection, often because the options flow or the news environment has tilted bearish.

For structure construction, elevated put skew has two implications. First, short strangles or iron condors with symmetric wings are implicitly selling rich puts and cheap calls - the put side has more premium to collect, but also more realized-move risk if the market is correct about the downside tail. Consider widening the put wing slightly relative to the call wing to account for the asymmetric realized-move distribution. Second, for long straddle buyers, elevated skew into the event is a signal that the market expects a directional (likely downside) move, not a symmetric one; a long put or long put spread may offer better risk/reward than a symmetric straddle if you share that directional view.

Dealer positioning around the event

The gamma exposure (GEX) and dealer positioning around the earnings strikes creates structural support and resistance zones that interact with the price action immediately after the print. If large open interest has accumulated at a call strike 5% above current price, dealers who are short those calls may be forced to buy the underlying aggressively if the stock gaps up through that strike - amplifying the post-earnings move. Conversely, large put OI below current price can create a gravitational pull toward max-pain territory if the stock opens inside the expected move.

Pull /v1/exposure/gex/{ticker} for net GEX and the gamma flip, /v1/exposure/levels/{ticker} for the call/put walls, and /v1/maxpain/{ticker} together to see where dealer hedging forces are concentrated relative to the implied expected-move range.

The playbook: structures and when to use them

Selling the crush: straddles and strangles

The most direct expression of a short-vol view into earnings is selling the ATM straddle. You sell the ATM call and ATM put at the event expiry, collecting the full premium. Your profit zone is any close between the two breakevens (current price ± straddle cost). Your loss is unlimited in both directions beyond those breakevens.

The practical problem with short straddles is gap risk. A stock that moves 20% on earnings blows through breakevens in a single print. Naked short straddles are unsuitable for most traders because the tail risk is unlimited and the event can produce a 3-sigma move with no warning.

Short strangles are slightly more forgiving: you sell an OTM call and OTM put, collecting less premium but with wider breakevens. The same unlimited tail risk applies.

Defined-risk structures: iron condors

The iron condor is the standard defined-risk earnings structure. You sell the OTM strangle (short call + short put) and buy a further-OTM strangle (long call + long put) to cap your loss. The result: limited premium collected, limited maximum loss, profit if the stock stays inside the short strikes.

A typical earnings iron condor setup: with NVDA at \$950 and a 5% implied move, sell the \$850 put and \$1,050 call, buy the \$820 put and \$1,080 call, all at the event expiry. The short strikes sit just outside the 1-SD expected move; the long strikes define your max loss.

Iron Condor Max Profit and Max Loss $$ \text{Max Profit} = \text{Net Premium Collected} $$ $$ \text{Max Loss} = \text{Wing Width} - \text{Net Premium Collected} $$

Iron condors are particularly effective when the VRP z-score is elevated (premium is rich), IV rank is high (you are selling near the top of the range), and the historical move distribution shows the stock rarely closes outside the 1-SD range.

Buying the move: long straddles and debit spreads

If the VRP signal suggests the market is underpricing the event - or if the name has a history of delivering outsized moves relative to implied - the tilt is toward buying vol. A long straddle profits if the realized move exceeds the straddle cost in either direction. A long strangle is cheaper but requires a larger move to profit.

Debit spreads allow directional bets with defined risk. A long call spread (buy ATM call, sell OTM call) captures upside if you have a directional view on the print, at lower cost than a naked long call. The trade-off is a capped profit.

Calendars across the event

A calendar spread sells the near-term event expiry and buys a later expiry at the same strike. The rationale: the near-term expiry is expensive due to the earnings premium; the far expiry will retain its IV after the crush. If the stock stays near your calendar strike, you collect as the near-term decays and the long leg holds value.

Calendars are appealing when the event expiry IV is elevated but the next expiry is relatively cheap - a wide term-structure spread. The risk is a large post-earnings move away from your strike, which collapses the calendar's value on both legs simultaneously. Calendars are particularly useful when you believe the event is being priced fairly but want to position for a slow drift back toward a specific strike in the weeks after the print.

Risk and sizing

The move can exceed the implied

The ATM straddle price is a close approximation of the expected absolute move, but it is not a precise 1-standard-deviation range. Under lognormality, the ATM straddle cost is approximately 0.8× the true 1σ move — roughly 20% below — because the straddle payoff is convex and option pricing reflects the expected absolute value of a log-normal rather than a clean normal 1-SD interval. In practice, treat the straddle-implied move as a useful approximation of the 1-SD range, not an exact equality. Statistically, about 68% of realized moves should land inside a true 1-SD range, meaning roughly one in three earnings events should produce a move exceeding the approximate implied level. Over any reasonable sample of earnings trades, you will encounter tail realizations. Size accordingly.

A common framework: risk no more than 2% of portfolio per earnings event on defined-risk structures, and no more than 0.5% on undefined-risk structures (short straddles / strangles). This allows you to sustain a string of tail events without material account damage.

Gap risk is binary and unavoidable

Unlike intraday positions where you can manage through a slow adverse move, earnings positions are exposed to overnight gap risk. The stock closes at \$950, the company reports, and the stock opens at \$820. You have no opportunity to manage between those two prices. Every earnings structure must be sized as if the worst-case gap is fully realized, because occasionally it will be.

For iron condors, the maximum loss is the wing width minus premium received. Make sure that maximum loss is sized to 2% of portfolio or less. For undefined-risk structures, the maximum loss is theoretically unlimited, which is why most disciplined earnings traders use defined-risk structures exclusively around announcements.

The kinks and common mistakes

Selling into a print and getting run over

The most common mistake is selling the straddle or strangle the day before earnings on a name that is in a fundamental deterioration cycle. IV looks high; the VRP signal might even look elevated. But the realized move ends up being 15% down because the company misses across every metric and guides down. The premium collected absorbs a fraction of the loss.

The check: look at the direction of the VRP signal. A high z-score in a name with consistently positive surprise history is a better risk than the same z-score in a name under analyst estimate revision pressure. The quantitative VRP signal is not a silver bullet against fundamental gap risk.

Headline IV is high but not rich versus the name's own history

Saying "TSLA IV is 90%" conveys nothing about whether it is cheap or expensive. TSLA IV regularly exceeds 80% outside of earnings; 90% into an earnings event could be entirely unremarkable for that name. The correct comparison is IV rank (where is the current IV within the 52-week range?) and IV percentile (what fraction of days had lower IV?). Confusing absolute IV levels with richness is one of the most pervasive errors among options newcomers.

Ignoring the historical move distribution

The straddle tells you the market's implied move. The historical distribution tells you the track record. Both matter. A name that has moved more than 10% in six of the last eight earnings events should not be traded with iron condor short strikes at 5% - the structure is mispriced against its own history regardless of what the current IV rank says. Always overlay the historical distribution on the implied expected move before finalizing structure and strike selection.

Wrong expiry: the event must be captured

If you sell the nearest Friday expiry and earnings are announced the following Monday before open, you have not sold earnings IV at all. You have sold the weekly premium into a weekend where the event risk sits entirely in the following expiry. The earnings premium is in the first expiry that fully captures the announcement. Verify the event date, verify the reporting time (before open vs after close), and confirm your short expiry captures the full event window.

Confirmed vs estimated earnings dates are not the same. FlashAlpha's earnings calendar at /v1/earnings/calendar flags whether each date is confirmed by the company or still an estimate. Never structure an earnings trade around an estimated date - the actual announcement can come a week earlier or later, completely changing which expiry captures the event.

Liquidity in single-name options

SPY and SPX options have bid-ask spreads of \$0.02-0.10. A small-cap with an earnings catalyst might have spreads of \$0.50-2.00 on the near-term options. Wide spreads mean you are paying a significant portion of your maximum profit in transaction costs just to enter and exit the trade. Check the spread as a percentage of premium collected: if the spread is more than 10-15% of the straddle midpoint, the trade becomes economically marginal. Earnings vol trading is most efficient on large-cap, high-open-interest names where spreads are tight.

Binary gap risk in defined-risk structures

Even defined-risk structures can produce losses that feel catastrophic if you are oversized. An iron condor with \$30 max loss on a \$1 premium collected is technically defined-risk, but a 30:1 max-loss-to-max-gain ratio means a single adverse event wipes out 30 successful trades. The ratio matters. Look for structures where the max-loss-to-max-gain ratio is 3:1 or lower, or size multiple smaller trades to keep the aggregate risk within portfolio limits.

Worked examples

NVDA: selling premium into a rich print

NVDA reports after market close. With the stock at \$950, the event-expiry ATM straddle is priced at \$57 (6.0% implied move). The FlashAlpha VRP endpoint returns a z-score of 1.9, placing the earnings premium in the 94th percentile of this name's event-vol history. IV rank is 78. Historical earnings moves over the last eight quarters: 8.5%, 11.2%, 4.3%, 7.1%, 3.9%, 5.8%, 9.4%, 6.2% - two of eight exceeded 10%, five of eight stayed inside 8%.

Setup: The VRP signal is rich (94th percentile); IV rank confirms elevated positioning (78). Historical distribution shows the stock tends to stay inside 8-9% in most events. The \$57 straddle price implies a 6% move - inside the typical realized range, but the tail (the 10%+ events) is real.

Structure: Iron condor. Short the \$855 put and \$1,055 call (±10.5% from spot, wider than the 1-SD implied), long the \$825 put and \$1,085 call (±3% further for protection). Net premium: approximately \$18. Max loss: \$30 - \$18 = \$12 per condor per side (wing width \$30, premium \$18). Break-even: \$837-1,073. The condor profits if NVDA closes within roughly 12.9% in either direction.

Sizing: On a \$100,000 portfolio with a 2% max-loss rule, maximum risk is \$2,000. At \$12 max loss per condor, that allows 16 condors. Actual entry: 10 condors (risking \$1,200, or 1.2% of portfolio) to keep room for adjustment.

Outcome management: If NVDA gaps down to \$870 (inside the short put at \$855), the condor is intact. If it opens at \$820 (below the short put), the position is at max loss on the put side. Close immediately; do not hold through the day hoping for recovery. Earnings gap moves do not typically mean-revert the same day.

AAPL: buying vol into a compressed print

AAPL reports after close. Stock at \$195. Event-expiry ATM straddle: \$7.20 (3.7% implied move). VRP z-score: 0.3 (30th percentile - premium is not elevated versus history). IV rank: 52. Historical moves over eight quarters: 4.7%, 2.1%, 6.3%, 3.8%, 5.2%, 1.9%, 4.4%, 7.1% - four of eight exceeded 4%, two exceeded 5%. The implied 3.7% move is at the low end of the historical distribution.

Setup: Premium is not rich (VRP z-score 0.3), and historical data shows moves frequently exceed the implied level. Selling vol here offers poor expected value. The tilt is toward buying vol or passing entirely.

Structure: Long straddle at \$195 strike, paying \$7.20. Breakevens: \$187.80 and \$202.20. If AAPL delivers a 5% move (as it has done in half the last eight quarters), the straddle gains approximately \$2.55 in intrinsic value net of cost, a 35% return on the premium paid.

Risk: The maximum loss is the \$7.20 paid if AAPL closes exactly at \$195 after the announcement. In practice, a 2-3% move that leaves the straddle with minimal intrinsic value and crushed IV will produce a 50-70% loss on the premium. Size accordingly - long straddles into earnings are typically small-percentage-of-portfolio positions (0.5-1%) because the most likely outcome is a partial or total premium loss.

Screen upcoming earnings events for rich premium

The FlashAlpha earnings screener ranks upcoming events by VRP z-score, IV rank, and expected-move richness - all in one API call.

Earnings API Docs

Tooling: FlashAlpha endpoints and MCP connector

Every analysis described in this guide is available programmatically. The full earnings-vol workflow uses the following endpoints:

Endpoint What it returns Tier
/v1/earnings/expected-move/{symbol} Earnings-implied move decomposition: jump vs baseline diffusion, term kink Growth ($239/mo)
/v1/earnings/iv-crush/{symbol} Expected IV crush %, historical crush distribution (median, p25, p75) Growth ($239/mo)
/v1/earnings/vrp/{symbol} Earnings VRP: implied vs realized, z-score, richness assessment, directional bias Alpha ($1,199/mo)
/v1/earnings/dealer-positioning/{symbol} Event-scoped dealer exposure: gamma flip, call/put walls, GEX by DTE bucket Alpha ($1,199/mo)
/v1/earnings/strategies/{symbol} Strategy-suitability scores (0-100) for straddle, condor, calendar, diagonal Alpha ($1,199/mo)
/v1/vrp/{symbol} VRP z-score, percentile, GEX-conditioned regime, macro context Alpha ($1,199/mo)
/v1/exposure/gex/{symbol} Gamma exposure by strike; full-chain includes post-event positioning Growth ($239/mo)
/v1/maxpain/{symbol} Max pain strike, straddle implied move, ATM IV Basic
/v1/earnings/calendar Upcoming earnings: confirmed vs estimated flag, reporting session, importance Growth ($239/mo)
/v1/earnings/screener Cross-sectional ranked list: VRP richness, cheapest move, highest crush Alpha ($1,199/mo)
/v1/volatility/{symbol} IV rank, IV percentile, realized vol, skew profiles, term structure Growth ($239/mo)
/v1/earnings/history/{symbol} Historical earnings moves, EPS surprises, IV levels pre/post event by quarter Growth ($239/mo)

MCP connector for AI workflows

If you use an AI assistant with MCP (Model Context Protocol) support, you can connect the full FlashAlpha earnings-vol toolset directly. Add the following URL to your MCP configuration:

https://lab.flashalpha.com/mcp-oauth/earnings

Alternatively, if you use an API key directly: https://lab.flashalpha.com/mcp/earnings?apiKey=YOUR_KEY. Once connected, your assistant can query expected moves, VRP signals, IV rank, and the earnings calendar in natural language without you writing API calls manually. See the MCP setup guide for configuration details.

A complete pre-earnings workflow

import requests

BASE = "https://lab.flashalpha.com"
HEADERS = {"X-Api-Key": "YOUR_KEY"}
TICKER = "NVDA"

# 1. Straddle price + ATM IV from /v1/maxpain; move % + bounds from /v1/expected-move
mp = requests.get(f"{BASE}/v1/maxpain/{TICKER}", headers=HEADERS).json()
print(f"Straddle:     ${mp['expected_move']['straddle_price']:.2f}")
xm = requests.get(f"{BASE}/v1/expected-move/{TICKER}", headers=HEADERS).json()
print(f"Implied move: {xm['expected_moves'][0]['expectedMovePct']:.1f}%")

# 2. Volatility context: ATM IV, IV-RV spread, and the premium assessment
vol = requests.get(f"{BASE}/v1/volatility/{TICKER}", headers=HEADERS).json()
print(f"ATM IV:       {vol['atm_iv']:.1f}%")
print(f"VRP (30d):    {vol['iv_rv_spreads']['vrp_30d']:+.1f}%  ({vol['iv_rv_spreads']['assessment']})")

# 3. VRP z-score  -  is the premium statistically rich?
vrp = requests.get(f"{BASE}/v1/vrp/{TICKER}", headers=HEADERS).json()
print(f"VRP z-score:  {vrp['vrp']['z_score']:.2f}")
print(f"VRP regime:   {vrp['regime']['vrp_regime']}")

# 4. Dealer positioning: gamma flip from /v1/exposure/gex, walls from /v1/exposure/levels
gex = requests.get(f"{BASE}/v1/exposure/gex/{TICKER}", headers=HEADERS).json()
levels = requests.get(f"{BASE}/v1/exposure/levels/{TICKER}", headers=HEADERS).json()["levels"]
print(f"Call wall:    ${levels['call_wall']}")
print(f"Put wall:     ${levels['put_wall']}")
print(f"Gamma flip:   ${gex['gamma_flip']}")

# 5. Confirm event date
cal = requests.get(f"{BASE}/v1/earnings/calendar?symbols={TICKER}", headers=HEADERS).json()
for e in cal["events"][:1]:
    confirmed = "confirmed" if e["is_confirmed"] else "estimated"
    print(f"Event date:   {e['earnings_date']} ({confirmed}, {e['timing']})")

Frequently asked questions

Does VRP work on single names or just the index?

Both, and they behave very differently. Index VRP (SPY, SPX) is a structural phenomenon: investors persistently pay for crash protection, keeping index IV above realized. Single-name VRP is cyclical and event-driven. Outside earnings, many names show negative average VRP (options are cheap). Around earnings, the event premium typically flips VRP positive. The FlashAlpha VRP endpoint measures event-specific VRP for individual tickers, not just the index. The z-score and percentile are computed against that name's own earnings-event history, not against the index or all stocks.

How do I see the expected move into a print?

The /v1/maxpain/{ticker} endpoint returns the ATM straddle price and ATM IV directly - no chain-building required. For the implied move as a percentage and the resulting upper and lower bounds, call /v1/expected-move/{ticker}. The /v1/earnings/expected-move/{ticker} endpoint is more event-specific and decomposes the move into earnings-jump versus baseline-diffusion components with days-to-event context.

Is there a persona MCP connector for earnings?

Yes. Add https://lab.flashalpha.com/mcp-oauth/earnings (OAuth-based, recommended) or https://lab.flashalpha.com/mcp/earnings with an API key parameter. This surfaces the earnings-vol toolset (expected move, IV crush projection, VRP signal, earnings calendar) directly inside your AI workflow.

What is the best structure for earnings: straddle, strangle, or iron condor?

For most traders, the iron condor is the default: defined risk, premium collected, profit if the stock stays inside the expected-move range. Short straddles and strangles carry unlimited risk and are appropriate only for traders with explicit risk limits, significant capital, and experience managing through tail events. Long straddles are appropriate when VRP z-score is low and the historical distribution shows frequent outsized moves. Match structure to signal: rich premium favors selling structures; cheap premium (or a directional view) favors buying structures.

How early should I enter an earnings trade?

For premium-selling structures, entering one to two days before the event captures the peak of the IV ramp without exposing you to prolonged overnight risk. Entering a week before can improve premium capture if IV continues to ramp, but it adds gamma risk over more sessions and may force early management if the stock moves significantly before the event. For premium-buying structures (long straddles), entering two to four days before allows time for the IV ramp to continue working in your favor; entering same-day captures maximum theta decay but minimum IV expansion benefit.

What if the earnings date is not confirmed?

Do not structure an earnings trade around an estimated date. Confirmed dates are flagged in the FlashAlpha earnings calendar (/v1/earnings/calendar) with "status": "confirmed". If the date is estimated, either wait for confirmation or use a calendar spread structure that is resilient to the event falling in a different expiry window. An iron condor entered into the wrong expiry does not benefit from IV crush after the event; it just loses theta against a flat stock.

Should I close the position before the announcement or hold through it?

This depends entirely on the structure. If you are long vol (long straddle or strangle), holding through the event is the point - you need the move to realize. If you are short vol (iron condor), closing before the announcement eliminates gap risk but also surrenders the final IV crush profit. Most structured premium sellers hold through the announcement and close the morning after - capturing the crush but accepting overnight binary gap risk. Never hold a naked short straddle or strangle through an announcement without knowing your max-loss threshold and having a stop plan in place.

Related reading

Live Market Pulse

Get tick-by-tick visibility into market shifts with full-chain analytics streaming in real time.

Intelligent Screening

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

Execution-Ready

Instantly send structured orders to Interactive Brokers right from your scan results.

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!