Edges
Options Price Target Timing: 11 Methods to Estimate When Price Arrives
Options price target timing answers one question every trader asks but rarely calculates correctly: "I think this stock is going to $X — when is it likely to get there?" The answer depends on more than gut feel. It depends on volatility, drift, asset behavior, and how far the target is from current price. This guide covers all 11 methods — from a 30-second back-of-napkin estimate to full Monte Carlo simulation — and tells you exactly which one to use and when.
Each method is explained in plain English first, then the math. If you only want the decision shortcut, jump to the Quick-Pick Guide below.
What "First Passage Time" Means in Plain English
First passage time is the expected time for a price to cross a target level for the first time. It is not the same as "when will price close above X" — it is the first moment price touches that level, whether intraday or at close.
Why does the method choice matter? Because different assets behave differently:
- Equities trend. They have drift.
- Volatility indices (VIX) mean-revert. They pull back toward a long-run average.
- Interest rates can go negative. Their math is different from equity math.
- Some assets have jumps — earnings releases, macro events — that GBM doesn't capture.
Choose the wrong engine and your ETA could be off by months.
Quick-Pick Guide: Which Engine to Use
Pick your scenario, follow the path:
Layer 1: The 11 Engines
M1 — 1σ Volatility Clock
Plain English: Uses implied volatility to ask "how long before the target is 1 standard deviation away?" Fast, universal, not very precise. Your starting point.
When to use: Quick sanity check on any equity or index target. Symmetric moves, short horizon (days to weeks). No drift assumption needed.
The math:
Where = target price, = current price, = annualized implied volatility (decimal).
SPY Daily Price Path — First Touch of $780 Target (~20 Calendar Days)
M2 — GBM Drift (Risk-Neutral)
Plain English: Adds the stock's expected drift (risk-free rate minus dividend yield) to the volatility estimate. Better than M1 when the stock has a clear directional bias over weeks or months.
When to use: Multi-week to multi-month directional trade where drift matters. Index targets with known rate environment.
The math:
M3 — Inverse Gaussian / Wald Distribution
Plain English: The mathematically exact solution for "when does a drifting random walk first cross a target?" Unlike M2 which gives only a mean, M3 gives you a full probability distribution — you can say "70% chance it arrives within 30 days."
When to use: Barrier products, knock-in/knock-out options, any situation where you need confidence intervals not just a single number.
The distribution uses two parameters — mean passage time (μ_IG) and shape (λ_IG) — to produce a cumulative probability: "probability that target is hit by time T." Use this when you need to answer "what date corresponds to 80% probability?"
What is the Inverse Gaussian distribution?
Named after Wald (1947), it is the exact probability distribution of the first time a Brownian motion with drift crosses a fixed boundary. It is asymmetric — the tail extends right because there is always some chance the price takes a very long path to reach the target. For options traders: this is the theoretical basis for barrier option pricing formulas.
Cumulative Probability of SPY Hitting $780 by Each Date — M3 First-Passage Distribution
M4 — Digital Option Inversion (Probability ETA)
Plain English: Reads the Black-Scholes formula backwards. Instead of asking "what is the probability of reaching X by date T?", you ask "what date T gives me a 70% probability?" Most useful for client-facing statements.
When to use: Any time you need to say "there is a 70% probability price reaches X by [date]." Index structuring, sell-side flow, retail communication.
The math:
for upside target. Invert: set the desired probability P, solve for T.
M5 — Implied Probability Ladder (Live Chain Scan)
Plain English: Instead of calculating anything, you read the answer directly from the live options chain. Each expiry's delta on the target strike tells you the market-implied probability of reaching that strike by that date. Find where that probability crosses your threshold — that's your ETA.
When to use: Any time you have live options chain access. This is the most accurate method for near-term targets because it incorporates the full vol surface, skew, and market sentiment automatically.
How to read it: For an upside target, find the call at that strike across each available expiry. The delta (roughly equal to N(d2)) is the probability of reaching that strike. When delta crosses 0.50, that expiry is your 50% ETA. Interpolate between expiries for finer resolution.
Implied Probability Ladder — 780 Strike Call Delta Rising Across Expiries (M5)
For how to pull this data programmatically, see Options Chain API: AlphaVantage vs Alpaca for Quant Traders.
M6 — Merton Jump-Diffusion
Plain English: Extends GBM to include sudden price jumps — like earnings announcements, Fed decisions, or macro data. The jump component means the price can skip past your target without a smooth arrival, which changes the timing estimate materially.
When to use: Earnings event ETAs. Any binary catalyst where price could gap 3–10% overnight. Downside target timing where crashes are possible.
The key parameters you need: λ (how often jumps happen per year), average jump size, and jump size variability. These require at least 2 years of daily returns to estimate reliably.
How do jumps change the ETA estimate?
Without jumps, a 5% target might take 30 days by M1. With earnings in 3 days and a typical jump size of ±4%, there is a meaningful probability of reaching the target in 3 days (via the jump) or not at all (if the jump goes the wrong way). M6 incorporates both scenarios. The effective volatility is σ_eff² = σ² + λ(μ_J² + σ_J²) — always higher than diffusion-only vol, which compresses the ETA.
M7 — Ornstein-Uhlenbeck (Mean-Reverting Assets)
Plain English: Designed for assets that pull back toward a long-run average — like VIX, credit spreads, or interest rates. If VIX is at 28 and its long-run mean is 18, how long before it returns to 20? M7 answers that.
When to use: VIX target ETA. Spread convergence timing. Rate normalization. Pairs trading target exit timing. Do NOT use for trending equities.
The math:
Where κ = reversion speed, θ = long-run mean, x₀ = current level, b = target level.
VIX Mean-Reversion to Target — M7 Ornstein-Uhlenbeck in Action
M8 — Regime-Switching (Hamilton)
Plain English: Markets alternate between bull and bear regimes with different drift and volatility in each. M8 blends the ETA from each regime, weighted by how likely you are to be in each state right now.
When to use: Long-horizon targets (3–12 months) where regime matters. Assets with clearly bimodal behavior (pre/post Fed pivot, VIX high/low regimes). When you believe current macro state affects your ETA significantly.
M9 — Bachelier Normal Model
Plain English: The original 1900 price model. Treats price moves as absolute (dollar amounts), not percentage moves. This matters for interest rates and spreads that can go to zero or negative.
When to use: Rate targets ("when does 10Y reach 4.5%?"), credit spread convergence, swaption ETA, any target where negative values are structurally possible.
M10 — Monte Carlo Full Simulation
Plain English: Simulate thousands of possible price paths. For each path, record when it first hits your target. The distribution of those times is your answer. Monte Carlo is the most flexible — you can plug in any dynamics, vol surface, jumps, or correlations.
When to use: Complex structured products. Stress scenario ETAs. When no closed-form solution exists. When you need the full distribution of outcomes, not just a mean.
The simulation loop (Python pseudocode):
import numpy as np
def monte_carlo_eta(S0, target, mu, sigma, dt=1/252, N=10000):
hit_times = []
for _ in range(N):
S = S0
t = 0
while S < target and t < 2.0: # 2-year max horizon
S *= np.exp((mu - sigma**2/2)*dt + sigma*np.sqrt(dt)*np.random.randn())
t += dt
if S >= target:
hit_times.append(t * 365) # convert to days
return {
"P50_days": np.percentile(hit_times, 50),
"P25_days": np.percentile(hit_times, 25),
"P75_days": np.percentile(hit_times, 75),
"pct_never_hit": (N - len(hit_times)) / N * 100
}
How many simulation paths do you need?
For P50 ETA: 1,000 paths is usually sufficient (error < 5%). For P10 or P90 tail estimates: 10,000+ paths. For P1 (extreme scenarios): 100,000+. Variance reduction techniques (antithetic variates, control variates) can cut required paths by 5–10x. In practice, 10,000 paths with antithetic variates is a good default for options-desk work.
M11 — Extreme Value Theory (Far-Tail Targets)
Plain English: For targets that are very far from current price — 3+ standard deviations away — all the GBM-based methods dramatically underestimate the time. EVT uses the statistical theory of extreme events to model the tail directly from historical data.
When to use: 3σ+ price targets. Black swan hedge timing. "When does SPY hit 900?" type questions. Tail-risk hedging desks.
Layer 2: Improving Your Volatility Input
Every engine above takes a volatility input σ. Using a better σ improves any engine's output directly. These are your options from simplest to most sophisticated:
| Flat ATM IV | GARCH Conditional Vol | Local Vol Surface | Heston Stochastic Vol | |
|---|---|---|---|---|
| What it is | Single number from ATM straddle price | Vol forecast from realized returns (time-varying) | Strike and time-varying σ(K,T) from full chain | Vol is itself a random mean-reverting process |
| When to use | Quick checks, M1, M2 baseline | M2, M6, M7, M8 — any engine needing forward vol | M3, M4, M10 — any precision pricing | M10 Monte Carlo, exotic products |
| Complexity | Low — one option quote | Medium — requires return history + model fit | High — requires full options chain calibration | High — 5 parameters, semi-closed form |
| Limitation | Ignores skew and term structure | Backward-looking; misses event vol | Flat forward vol dynamics; poor for exotics | Complex calibration; unstable in stress |
| Desk use | Universal starting point | Risk management, quant equity | Equity vol desks | Exotics, index vol |
Engine × Input Matrix
Valid combinations at a glance. market = input already embedded in chain prices.
| Engine | Flat IV | GARCH | Local Vol | Heston | SABR |
|---|---|---|---|---|---|
| M1 — 1σ Clock | ✓ | ✓ | — | — | — |
| M2 — GBM Drift | ✓ | ✓ | ✓ | — | — |
| M3 — Inv. Gaussian | ✓ | ✓ | ✓ | — | — |
| M4 — Digital Inversion | ✓ | — | ✓ | sim | ✓ |
| M5 — Chain Scan | market | — | market | market | market |
| M6 — Jump-Diffusion | ✓ | ✓ | — | — | — |
| M7 — OU Mean-Rev | ✓ | ✓ | — | — | — |
| M8 — Regime-Switch | ✓ | ✓ | — | — | — |
| M9 — Bachelier | σ_abs | ✓ | — | — | ✓ |
| M10 — Monte Carlo | any | ✓ | ✓ | ✓ | ✓ |
| M11 — EVT / Tail | — | — | — | — | — |
Worked Example: SPY Target $780 from $756
SPY ETA — Full Calculation Across Methods
Inputs: Spot = 756 Target = 780 Move = +3.2% ATM IV = 13.5% r = 5.3% q = 1.3%
d = ln(780/756) = 0.0312 μ_eff = (0.053 - 0.013) - 0.135²/2 = 0.0309
Results: M1 (1σ Clock): 19.5 days ← ignores drift M2 (GBM Drift): 368 days ← μ_eff ≈ σ²/2, drift barely works M3 (Inv. Gaussian): μ_IG = 1.01y, shape λ = 0.053 (full distribution) M4 (50% probability): ~23 days ← most useful for this scenario M5 (Chain Scan): find expiry where 780C delta ≈ 0.50 → live chain M11 (EVT): not applicable — 3.2% is not a tail event
Which to trust: M2 diverges here (μ_eff ≈ σ²/2). Use M1 (19.5 days) as lower bound and M4 (~23 days) as the calibrated probability-based answer. M5 live chain read is the gold standard if you have options data access.
Decision Summary: Plain English Cheat Sheet
Under 2 minutes:
- M1 — just ATM IV, any equity
- M4 — probability statement, any equity
- M5 — live chain, real-time answer
5–15 minutes:
- M2 — add drift, multi-week target
- M3 — need confidence interval
- M7 — VIX or spread target
30+ minutes:
- M6 — earnings event, need jump model
- M8 — long-horizon with regime context
- M10 — complex structure, full simulation
- M11 — extreme far-out target
Equities and indices: M1, M2, M3, M4, M5, M6, M8, M10
VIX, credit spreads, pairs: M7 (Ornstein-Uhlenbeck only)
Interest rates, swaptions: M9 (Bachelier) — allows negative
Far-tail / extreme scenarios: M11 (EVT) — all others underestimate
Earnings / binary events: M6 (jump-diffusion) or M10 (Monte Carlo)
Only ATM IV: M1 → fast sanity check
ATM IV + rates + dividends: M2 or M4
Full options chain: M5 → most accurate, zero model risk
2+ years historical returns: M6 (jumps), M7 (mean-rev), M8 (regime)
No data / quick answer: M1, always available
Internal Links
For options chain data to run M4 and M5, see Options Chain API: AlphaVantage vs Alpaca for Quant Traders — covers pulling live greeks and historical chains with real AAPL and SPY examples.
For validating these timing estimates against historical data, see Backtesting a Trading Strategy: What the Numbers Actually Tell You.
Key References
| Author(s) | Year | Work |
|---|---|---|
| Black & Scholes | 1973 | The Pricing of Options and Corporate Liabilities |
| Merton | 1976 | Option Pricing When Underlying Stock Returns are Discontinuous |
| Breeden & Litzenberger | 1978 | Prices of State-Contingent Claims Implicit in Option Prices |
| Hamilton | 1989 | A New Approach to the Economic Analysis of Nonstationary Time Series |
| Heston | 1993 | A Closed-Form Solution for Options with Stochastic Volatility |
| Dupire | 1994 | Pricing with a Smile |
| Reiner & Rubinstein | 1991 | Breaking Down the Barriers |
| Wald | 1947 | Sequential Analysis |
| Siegert | 1951 | On the First Passage Time Probability Problem |
| Pickands | 1975 | Statistical Inference Using Extreme Order Statistics |
| Bachelier | 1900 | Théorie de la spéculation |
| Boyle | 1977 | Options: A Monte Carlo Approach |