The Greeks and Option Risk Management › Delta: Sensitivity to the Underlying Price

Michael BrenndoerferNovember 29, 20259 min read
Quantitative FinanceAll chapters
Part 5 of 15Stochastic Calculus and Pricing Theory
Chapter 31The Greeks and Option Risk Management › Delta: Sensitivity to the Underlying Price
Reading section 2 of 14 · Delta: Sensitivity to the Underlying Price · 9 minSection 2 of 14 · 9 min

Book contents

Section 2 of 14 · 9 min read

The Greeks and Option Risk Management › Delta: Sensitivity to the Underlying PriceOne section · Sections in this chapter2 / 14 ↓
Reading tools Definitions & inline links

Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.

Article links

Make inline references clickable

Delta (Δ\Delta) measures the rate of change of an option's price with respect to changes in the underlying asset's price. To understand why this matters, imagine you hold a call option and the stock price rises by one dollar. How much does your option become worth? Delta answers this question as the fundamental sensitivity measure.

Mathematically, delta is the first partial derivative of the option price with respect to the spot price:

Δ=∂V∂S\Delta = \frac{\partial V}{\partial S}

where:

  • Δ\Delta: option delta
  • VV: option value
  • SS: underlying asset price

The partial derivative notation indicates that we are measuring how the option value changes when only the stock price moves, holding all other variables constant. This is a key conceptual point: delta isolates the effect of price movements from other factors like time decay or volatility changes.

Delta for European Options

Building on the Black-Scholes formula from the previous chapter, we can derive explicit formulas for delta. The Black-Scholes framework provides closed-form solutions, meaning we can write down exact expressions for these sensitivities rather than having to estimate them numerically. Recall that for a European call option:

C=S0N(d1)−Ke−rTN(d2)C = S_0 N(d_1) - K e^{-rT} N(d_2)

where:

  • CC: European call option price
  • S0S_0: current stock price
  • KK: strike price
  • rr: risk-free interest rate
  • TT: time to expiration
  • N(⋅)N(\cdot): cumulative standard normal distribution function
  • d1=ln⁡(S0/K)+(r+σ2/2)TσTd_1 = \frac{\ln(S_0/K) + (r + \sigma^2/2)T}{\sigma\sqrt{T}}: probability factor adjusting for time and volatility
  • d2=d1−σTd_2 = d_1 - \sigma\sqrt{T}: probability factor adjusting for volatility drag
  • S0N(d1)S_0 N(d_1): expected value of the asset at expiration, conditional on the option being in-the-money
  • Ke−rTN(d2)Ke^{-rT} N(d_2): present value of the strike price, weighted by the probability of exercise

To find delta, we need to differentiate this expression with respect to the stock price S0S_0. This requires careful application of calculus because both terms depend on S0S_0, and d1d_1 and d2d_2 themselves are functions of S0S_0. The stock price appears explicitly in the first term and implicitly through the d1d_1 and d2d_2 terms that sit inside the cumulative normal distribution functions.

Taking the partial derivative with respect to S0S_0 requires applying the product and chain rules:

∂C∂S0=∂∂S0[S0N(d1)−Ke−rTN(d2)]=1⋅N(d1)+S0N′(d1)∂d1∂S0−Ke−rTN′(d2)∂d2∂S0(product and chain rules)\begin{aligned} \frac{\partial C}{\partial S_0} &= \frac{\partial}{\partial S_0} [S_0 N(d_1) - K e^{-rT} N(d_2)] \\ &= 1 \cdot N(d_1) + S_0 N'(d_1) \frac{\partial d_1}{\partial S_0} - K e^{-rT} N'(d_2) \frac{\partial d_2}{\partial S_0} && \text{(product and chain rules)} \end{aligned}

The first term, N(d1)N(d_1), comes from differentiating S0S_0 directly. The second and third terms arise from the chain rule: when we differentiate N(d1)N(d_1) and N(d2)N(d_2), we get the standard normal probability density function N′(⋅)N'(\cdot) evaluated at d1d_1 and d2d_2, multiplied by the derivatives of d1d_1 and d2d_2 with respect to S0S_0.

When we work through this calculation, the terms involving the derivatives of N(⋅)N(\cdot) cancel out. Specifically, we can show that S0N′(d1)=Ke−rTN′(d2)S_0 N'(d_1) = K e^{-rT} N'(d_2), and since ∂d1∂S0=∂d2∂S0\frac{\partial d_1}{\partial S_0} = \frac{\partial d_2}{\partial S_0}, these terms exactly offset. These terms cancel because of the risk-neutral framework and the Black-Scholes model structure. This yields the simple result:

Δcall=N(d1)\Delta_{\text{call}} = N(d_1)

where:

  • Δcall\Delta_{\text{call}}: delta of a European call
  • N(d1)N(d_1): probability term acting as the hedge ratio

This formula tells us that call delta equals the cumulative normal distribution evaluated at d1d_1. Since the cumulative normal distribution ranges from 0 to 1, call delta is always between 0 and 1. This bounded range has important economic meaning: a one-dollar increase in the stock price cannot possibly increase the call value by more than one dollar, because the call at best moves one-for-one with the stock when it is extremely deep in the money.

For a European put option with price P=Ke−rTN(−d2)−S0N(−d1)P = Ke^{-rT}N(-d_2) - S_0 N(-d_1), a similar derivation yields:

Δput=N(d1)−1=−N(−d1)\Delta_{\text{put}} = N(d_1) - 1 = -N(-d_1)

where:

  • Δput\Delta_{\text{put}}: delta of a European put
  • −N(−d1)-N(-d_1): negative hedge ratio for the put

Put delta is always negative, ranging from -1 to 0. This makes intuitive sense: when the stock price rises, a put option becomes less valuable because the right to sell at a fixed strike price is worth less when the current market price is higher. The relationship Δput=Δcall−1\Delta_{\text{put}} = \Delta_{\text{call}} - 1 is a direct consequence of put-call parity, which states that the difference between a call and put with the same strike and expiration equals the present value of a forward contract.

Interpreting Delta

Delta has several intuitive interpretations that illuminate different aspects of option behavior:

  • Hedge ratio: Delta represents the number of shares needed to hedge one option. If a call has Δ=0.6\Delta = 0.6, you need to short 0.6 shares of stock to create a delta-neutral position that is immune (to first order) to small price movements. This interpretation shows how to eliminate directional risk while maintaining option positions.

  • Probability proxy: For a call option, delta roughly approximates the risk-neutral probability that the option will expire in-the-money. A deep in-the-money call with Δ≈1\Delta \approx 1 is almost certain to be exercised, while a far out-of-the-money call with Δ≈0\Delta \approx 0 is unlikely to finish in-the-money. Note that this refers to risk-neutral probability, not real-world probability. However, it still provides intuition on the likelihood of the option expiring in-the-money.

  • Dollar sensitivity: If you own one call option and Δ=0.6\Delta = 0.6, then a $1 increase in the stock price will increase your option value by approximately $0.60. This direct translation of delta into dollar terms makes it immediately useful for risk assessment. You often think in terms of "delta dollars," which is delta multiplied by the notional value of the position.

Delta Behavior

Delta exhibits characteristic behavior depending on moneyness and time to expiration. Understanding these patterns is essential for you when trading options, as they reveal how your exposure changes as market conditions evolve. To visualize this, we first define a Python function for delta that handles both calls and puts, as well as the expiration boundary condition:

In[2]:
Code
import numpy as np
from scipy.stats import norm


def black_scholes_delta(S, K, T, r, sigma, option_type="call"):
    """Calculate Black-Scholes delta for European options."""
    if T <= 0:
        if option_type == "call":
            return 1.0 if S > K else 0.0
        else:
            return -1.0 if S < K else 0.0

    d1 = (np.log(S / K) + (r + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))

    if option_type == "call":
        return norm.cdf(d1)
    else:
        return norm.cdf(d1) - 1
In[3]:
Code
# Parameters
K = 100  # Strike price
r = 0.05  # Risk-free rate
sigma = 0.20  # Volatility

# Stock price range
S_range = np.linspace(70, 130, 200)

# Different times to expiration
T_values = [1.0, 0.25, 0.05]
labels = [f"{t} yr" for t in T_values]
Out[4]:
Visualization
Line chart showing call delta versus stock price for three different expirations.
Call option delta as a function of underlying price for different times to expiration. As expiration approaches, delta becomes more sensitive to moneyness, transitioning sharply from 0 to 1 near the strike price.

The figure reveals several important patterns. For at-the-money options, delta is approximately 0.5, meaning the option moves roughly half as much as the underlying stock. As the option moves deeper in-the-money, delta approaches 1 for calls (or -1 for puts), because the option increasingly behaves like the underlying stock itself. Out-of-the-money options have deltas approaching 0 because they are unlikely to have any value at expiration. Near expiration, the delta curve steepens dramatically, creating a step function around the strike price. This steepening reflects the increasing certainty about whether the option will expire in or out of the money: with little time remaining, small price movements can definitively determine the option's fate.

Out[5]:
Visualization
Line chart comparing call delta (positive, 0 to 1) with put delta (negative, -1 to 0) versus stock price.
Call and put delta comparison showing the put-call parity relationship. Put delta equals call delta minus one, which reflects their opposite directional exposures while maintaining identical curvature (gamma).

The comparison of call and put deltas visually confirms the put-call parity relationship. The vertical distance between the two curves is exactly one at every stock price, illustrating that Δput=Δcall−1\Delta_{\text{put}} = \Delta_{\text{call}} - 1. This relationship holds because put-call parity states C−P=S−Ke−rTC - P = S - Ke^{-rT}, and differentiating both sides with respect to SS gives ΔC−ΔP=1\Delta_C - \Delta_P = 1.