Earnings Expected Move API - Implied Move Decomposition - FlashAlpha Lab API
Lab API Earnings Expected Move

Earnings Expected Move API

Live earnings-implied move decomposition for the next event, splitting the front-expiry straddle into the earnings-jump component vs. baseline diffusion drift using the pre/post-event SVI term structure.

Endpoint

GET /v1/earnings/expected-move/{symbol}
Auth required (X-Api-Key) Rate Limited: Yes Growth plan+

Parameters

Name In Required Default Description
symbol path yes - Underlying symbol (case-insensitive).
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/earnings/expected-move/AAPL"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/earnings/expected-move/AAPL",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"Earnings-implied move: {data['expected_move']['earnings_implied_pct']}%")
const resp = await fetch(
  "https://lab.flashalpha.com/v1/earnings/expected-move/AAPL",
  { headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log("Earnings-implied move: " + data.expected_move.earnings_implied_pct + "%");

Response

{
  "symbol": "AAPL",
  "underlying_price": 212.34,
  "as_of": "2026-06-05T15:42:10Z",
  "earnings_date": "2026-06-09",
  "session": "amc",
  "days_to_event": 4,
  "expected_move": {
    "raw_straddle_pct": 5.1,
    "earnings_implied_pct": 4.6,
    "baseline_drift_pct": 1.2,
    "earnings_iv": 68.4,
    "term_iv_post_event": 41.2,
    "term_kink_pct": 27.2
  }
}

Key Response Fields

Field Description
underlying_priceSpot (quote mid) used for the decomposition.
sessionReporting session of the event (bmo/amc).
expected_moveNull when the pre/post-event expiry IVs cannot be resolved from the live term structure (no valid straddling expiries).
expected_move.raw_straddle_pctTotal expected move (%) implied by the front straddle.
expected_move.earnings_implied_pctPortion of the move (%) attributed to the earnings jump.
expected_move.baseline_drift_pctPortion of the move (%) attributed to ordinary baseline diffusion.
expected_move.earnings_ivATM IV (%) of the pre-event (front) expiry.
expected_move.term_iv_post_eventATM IV (%) of the first post-event expiry.
expected_move.term_kink_pctTerm-structure kink (%) across the event - elevation of front vs. post-event IV.

Errors

Status Description
403Caller is below the Growth tier.
404no_data - no upcoming earnings for the symbol; or symbol_not_found - no live market data for the symbol.

About

Decomposes the front-expiry straddle for the next earnings event into the earnings-jump component versus ordinary baseline diffusion drift, using the pre/post-event SVI term structure. The term_kink_pct measures how much the front (pre-event) IV is elevated above the first post-event expiry.

When the pre/post-event expiry IVs cannot be resolved from the live term structure, expected_move is null - the surrounding event metadata is still returned.

Common Use Cases

  • Strip baseline_drift_pct out of raw_straddle_pct to isolate the true earnings premium before pricing a trade
  • Size a pre-earnings position against the earnings_implied_pct jump estimate rather than the raw straddle
  • Gauge term-structure steepness into the event via term_kink_pct to judge how richly the front expiry is bid
  • Compare earnings_iv against term_iv_post_event to estimate the post-print IV crush you would harvest selling premium
  • Set straddle/strangle break-evens off earnings_implied_pct applied to underlying_price
  • Skip or flag symbols where expected_move is null (no resolvable straddling expiries) so downstream logic does not trade on stale inputs

Related reading

Complementary endpoints

Ready to build?

Get your free API key and start pulling live options data in 30 seconds.