Skip to main content
Python function: getOptionsQuotes()
SpecificationValue
Delivery Frequencycontinuous
Data Frequencyreal-time, intraday (1-min), daily
Reporting LagSame as Options Quotes
Coverage5,000+ U.S. equity options symbols — full Greeks and IV surface
HistorySince 2007-01-02
AvailabilityFree

Product Overview

Overview

This reference documents the methodology behind the options Greeks and implied volatility values delivered through getOptionsQuotes and screenOptions. Understanding how these values are computed is essential for interpreting them correctly in risk management, trading, and backtesting workflows. Scalar Field’s options Greeks are not simply back-solved from raw market quotes. They are derived from a Smooth Market Value (SMV) system that cleans, normalizes, and fits a non-arbitrageable smooth curve through strike implied volatilities. This produces more consistent and reliable Greeks than raw quote-derived values, especially for illiquid strikes, wide bid-ask spreads, and deep out-of-the-money options.

Greeks Reference

Delta

Delta measures the rate of change of the option’s theoretical value with respect to a $1 change in the underlying asset’s price.
  • Call delta ranges from 0 to +1. A delta of 0.50 means the option price moves ~0.50fora0.50 for a 1 move in the underlying.
  • Put delta ranges from -1 to 0.
  • Deep in-the-money options approach delta ±1; deep out-of-the-money options approach 0.
  • Delta also approximates the probability that the option expires in-the-money (under risk-neutral measure).

Gamma

Gamma measures the rate of change of delta with respect to a $1 change in the underlying price — the “delta of delta.”
  • Gamma is highest for at-the-money options near expiration.
  • High gamma means delta is changing rapidly, requiring more frequent hedging.
  • Gamma is always positive for long option positions.

Theta

Theta measures the rate of time decay — how much the option’s value decreases as one calendar day passes, all else equal.
  • Theta is typically negative for long option positions (time decay erodes value).
  • Time decay accelerates as expiration approaches, especially for at-the-money options.
  • The system also computes a driftless theta that removes the drift component for more precise decay measurement.

Vega

Vega measures the sensitivity of the option’s value to a 1-percentage-point change in implied volatility.
  • Vega is highest for at-the-money options with longer time to expiry.
  • Both calls and puts have positive vega (higher volatility increases option value).

Rho

Rho measures the sensitivity of the option’s value to a 1-percentage-point change in the risk-free interest rate.
  • Call rho is positive (higher rates increase call value); put rho is negative.
  • Rho is more significant for longer-dated options.

Phi

Phi (sometimes called “dividend rho”) measures the sensitivity of the option’s value to a 1-percentage-point change in the dividend yield of the underlying.
  • Call phi is negative (higher dividends decrease call value); put phi is positive.
  • Relevant for dividend-paying underlyings, especially around ex-dividend dates.

Implied Volatility Methodology

The Problem with Raw Implied Volatility

Computing implied volatility by simply inverting the Black-Scholes formula on raw market quotes produces several well-known problems:
  • Call/put IV divergence: The same strike can produce different implied volatilities from the call quote versus the put quote.
  • Unreliable wings: Out-of-the-money options with very low premium produce noisy, unstable IVs.
  • Bid-ask contamination: Wide spreads on illiquid options distort the implied vol surface.
  • Negative IVs: In extreme cases, raw inversion can fail entirely.

Smooth Market Value (SMV) System

To address these issues, the pipeline uses a Smooth Market Value (SMV) system that produces a clean, consistent implied volatility surface:

Step 1: Quote Cleaning and Normalization

Raw option quotes (bid/ask for calls and puts at each strike) are ingested and cleaned. Obvious outliers, stale quotes, and crossed markets are filtered.

Step 2: Residual Yield Rate via Put-Call Parity

A residual yield rate is solved using put-call parity relationships across strikes. This residual captures:
  • Hard-to-borrow costs: Stocks that are expensive to short will exhibit a put-call parity violation that the residual yield absorbs.
  • Dividend assumptions: Different market participants may price different dividend expectations; the residual yield normalizes this.
  • Interest rate variations: The effective funding rate may differ from the risk-free rate by strike and expiration.
By solving for this residual, the system aligns call and put implied volatilities at each strike, producing a consistent view across the entire option chain.

Step 3: Modified Binomial Pricing Engine

Implied volatilities are computed using a modified binomial pricing engine rather than Black-Scholes alone. The binomial model:
  • Handles American-style options (early exercise) correctly — critical since most U.S. equity options are American.
  • Incorporates discrete dividends sourced from Wall Street Horizon dividend forecasts, rather than assuming a continuous dividend yield.
  • Uses strike-specific interest rates that can vary by expiration and moneyness.

Step 4: Smooth Curve Fitting

The system fits a non-arbitrageable smooth curve through the strike implied volatilities:
  • The curve passes through (or near) the bid-ask mid-IVs for each strike.
  • Arbitrage constraints ensure the curve cannot produce negative butterfly spreads or calendar spread violations.
  • The smoothing process distills the IV surface into key summary factors: at-the-money IV, skew slope (how IV changes with strike), and skew curvature (the convexity of the skew). These factors are comparable across different underlyings and over time.

Step 5: Wing Treatment

For deep out-of-the-money options where premium is minimal and raw IVs become unreliable:
  • The system extrapolates the rational slope of the volatility skew into the wings.
  • This produces more realistic IVs for far-OTM strikes than raw quote inversion would.
  • When current market data provides low confidence (e.g., very illiquid names), the system incorporates historical IV information to stabilize the surface.

Implied Volatility Fields

FieldDescription
mid_ivSmoothed implied volatility at the theoretical mid-price. This is the primary IV value.
bid_ivImplied volatility computed at the bid price.
ask_ivImplied volatility computed at the ask price.
implied_volMid implied volatility (used in screenOptions output).

Call/Put Equality Principle

A core design principle of the Greeks and IV computation is the equality of calls and puts at the same strike:
  • Unified implied volatility: Calls and puts at the same strike and expiration share nearly the same implied volatility. The residual yield rate solved via put-call parity (Step 2 above) is specifically designed to align call and put IVs, eliminating the divergence that raw quote inversion typically produces.
  • Equivalent premiums: Put-call parity isolates the equivalent premium in the call and put at each strike. With equivalent premiums, the risk can be managed using consistent Greeks.
  • Call delta + |put delta| = 1: Because the IVs are aligned, the call delta and the absolute value of the put delta add up to one at every strike — a fundamental relationship that breaks down when call and put IVs diverge.
  • One set of Greeks per strike: A single delta, gamma, theta, vega, rho, and phi number is calculated for each strike across both the call and the put. There are no separate conflicting “call Greeks” and “put Greeks.”

Hard-to-Borrow Stocks

Call and put implied volatilities frequently diverge for hard-to-borrow stocks, where the cost of shorting the underlying distorts the put-call parity relationship. For example, a heavily shorted stock might show raw put IVs significantly higher than call IVs at the same strike. The residual yield rate absorbs this borrow cost. For hard-to-borrow names, the residual rate effectively represents the market’s implied borrow rate. By solving for this rate — sometimes sloping it by strike to capture moneyness-dependent borrow dynamics — the system realigns call and put IVs, producing consistent Greeks even for the most distorted option chains. This means you can compare Greeks and IVs across calls and puts on the same underlying without worrying about inconsistencies introduced by different IV assumptions at the same strike.

Greeks Computation

Once the smooth IV surface is established, Greeks are derived analytically from the modified binomial pricing engine:
  • All Greeks are computed from the smoothed IV, not raw market quotes.
  • A single delta, gamma, theta, vega, rho, and phi is produced per strike — consistent across both the call and the put at that strike.
  • Input parameters include the smoothed IV, risk-free rate, dividend forecast, time to expiry, and underlying price.
This approach produces Greeks that are:
  • Internally consistent: No arbitrage between call and put Greeks at the same strike.
  • Stable: Small changes in raw quotes do not produce large jumps in Greeks.
  • Reliable in the wings: OTM options have sensible Greeks even when raw quotes are noisy.

Accessing Greeks Data

Greeks are available through two functions:

Via getOptionsQuotes

Full Greeks (delta, gamma, theta, vega, rho, phi) with bid/mid/ask IVs for specific option symbols:
from scalarlib import getOptionsQuotes

# Live Greeks for a specific contract
quotes = getOptionsQuotes(tickers=['AAPL260213C00280000'])
df = quotes['AAPL260213C00280000']
print(f"Delta: {df['delta'].iloc[0]:.4f}")
print(f"Mid IV: {df['mid_iv'].iloc[0]:.4f}")

Via screenOptions

Greeks for all contracts on an underlying, with filtering:
from scalarlib import screenOptions

# All AAPL options with delta between 0.3 and 0.7
contracts = screenOptions(
    tickers=['AAPL'],
    delta_range=(0.3, 0.7),
    iv_range=(0.15, 0.50)
)
df = contracts['AAPL']
print(df[['symbol', 'delta', 'gamma', 'theta', 'vega', 'implied_vol']].head())

Column Definitions

Greeks Columns (from getOptionsQuotes)

ColumnTypeDescription
deltafloat64Sensitivity to $1 change in underlying price. Calls: [0, 1]. Puts: [-1, 0].
gammafloat64Rate of change of delta per $1 underlying move. Always positive for long positions.
thetafloat64Daily time decay (negative for long positions).
vegafloat64Sensitivity to 1pp change in implied volatility.
rhofloat64Sensitivity to 1pp change in risk-free rate.
phifloat64Sensitivity to 1pp change in dividend yield.

Greeks Columns (from screenOptions)

ColumnTypeDescription
deltafloat64Sensitivity to $1 change in underlying price.
gammafloat64Rate of change of delta.
thetafloat64Daily time decay.
vegafloat64Sensitivity to volatility change.
implied_volfloat64Smoothed mid implied volatility.