The Itô Integral

An integral adds up infinitely many tiny contributions. Here, each contribution is "something × a tiny rise of Brownian motion". This chapter shows why defining that needs a rule, which rule Itô chose, and the two facts that make it work.

3.1Where You Evaluate Matters

In ordinary calculus, an integral is built from thin rectangles: cut time into $n$ pieces, and in each piece multiply the height of a curve by the width. It doesn't matter where inside a piece you read off the height (left end, middle, right end). As the pieces shrink, every choice gives the same answer.

Predict first: Move the reading point from the left end (θ = 0) to the right end (θ = 1). How will the limit change?

Try the same with Brownian motion. In each piece, multiply the path's value $W$ by the piece's rise $\Delta W$, and add everything up. The slider $\theta$ ("theta") chooses where inside each piece $W$ is read: $\theta = 0$ is the left end, $\theta = 1$ the right end. Drag it, then make the pieces finer.

$$\sum_{i=1}^{n} W_{t_i^{\theta}}\,\Delta W_i \;\longrightarrow\; \tfrac12 W_t^2 + \big(\theta - \tfrac12\big)\,t \qquad \text{as } n \to \infty$$
$\theta$
Where inside each piece the path is read: 0 for the left end, ½ for the middle, 1 for the right end.
$t_i^{\theta}$
The reading point in piece $i$: a fraction $\theta$ of the way from its left end to its right end. The orange dots mark them.
$W_{t_i^{\theta}}$
The path's value at that reading point: the "height" of the rectangle.
$\Delta W_i$
The rise of the path across piece $i$ (section 2.1): the "width" of the rectangle, measured in rises of $W$ instead of in time.
$\tfrac12 W_t^2$
The answer ordinary calculus would give: the rule $\int x\,dx = \tfrac12 x^2$, with $W$ in place of $x$.
$(\theta - \tfrac12)\,t$
An extra amount that depends on the reading point. For a smooth curve it would be 0. Here it isn't.

In plain words: reading $W$ later inside a piece means reading it after part of that piece's rise has already happened. So the height and the width are no longer independent: both include the same bit of movement. Each piece then contributes a little extra, on average $\theta$ times the piece's squared rise. By section 2.1, squared rises add up to $t$ instead of vanishing, so the total extra is $\theta\,t$. Different reading points give genuinely different answers, and we must pick a rule.

Going deeper: the precise statement

The two named integrals. Itô ($\theta = 0$): $\int_0^t W\,dW = \tfrac12 W_t^2 - \tfrac12 t$. Stratonovich ($\theta = \tfrac12$): $\int_0^t W \circ dW = \tfrac12 W_t^2$.

Why the left end is special. Only with $\theta = 0$ is each term $W_{t_i}\,\Delta W_i$ an unknown future rise multiplied by something already known. That makes the Itô integral a martingale with mean 0 (section 3.2). For $\theta > 0$ the sum has mean $\theta t$.

Why a choice is needed at all. Ordinary (Riemann–Stieltjes) integrals $\int f\,dg$ are defined for integrators $g$ of finite total variation. Brownian motion has infinite total variation (section 2.1), so the sums need not agree, and here they don't.

References: Shreve, Stochastic Calculus for Finance II, §4.3. B. Øksendal, Stochastic Differential Equations (6th ed., Springer, 2003), ch. 3.

Show the code (Python + NumPy)
import numpy as np
rng = np.random.default_rng(7)
N = 2 ** 16
W = np.concatenate([[0], np.cumsum(rng.normal(0, np.sqrt(1 / N), N))])
n = 2 ** 12
k = N // n                                           # fine steps per piece
for theta in (0, 0.5, 1):
    read = W[np.arange(n) * k + round(theta * k)]    # W at the reading point of each piece
    total = np.sum(read * np.diff(W[::k]))
    print(f"theta = {theta}: sum = {total:.3f}   theory = {0.5 * W[-1] ** 2 + theta - 0.5:.3f}")

Output when we ran it:

theta = 0: sum = -0.396   theory = -0.385
theta = 0.5: sum = 0.120   theory = 0.115
theta = 1: sum = 0.627   theory = 0.615

3.2Building the Integral

The clearest way to think about the Itô integral is as trading gains. $W$ is the price of something. Time is split into 8 periods, and at the start of each period you choose how many units to hold (the bars): positive means you bet on a rise, negative means you bet on a fall. Your gain in a period is the number of units held × the price's rise.

Predict first: Whatever bets you choose, what will your average final gain be across all the price paths?

Drag across the bars to set your bets. The orange line shows your running gains along one price path. The histogram shows your final gains across 2,000 different price paths.

$$\int_0^1 H_t\,dW_t \;=\; \sum_{j=1}^{8} H_j\,\big(W_{t_{j}} - W_{t_{j-1}}\big)$$
$\int_0^1 \cdots\, dW_t$
The Itô integral from time 0 to time 1: the total of "holding × rise", added up over all the time.
$H_t$
Your holding at time $t$: the height of the bar for the period that contains $t$. It is chosen at the start of the period, before the price moves (Itô's left-end rule from section 3.1).
$H_j$
The holding during period $j$.
$t_{j-1},\ t_j$
The start and end of period $j$. Here, $t_j = j/8$.
$W_{t_j} - W_{t_{j-1}}$
How much the price rises during period $j$.

In plain words: for bets that stay fixed within each period, the integral is just the sum above: bet × rise, period by period. The full Itô integral allows the holding to change continuously, and even to depend on what the price has done so far (the next section does exactly that). It is defined as what these sums settle down to as the periods get shorter and shorter. The one rule that never changes: each holding is fixed before the move it bets on.

Keyboard: Tab to the bars, ← → to pick a period, ↑ ↓ to change its bet. The histogram's curve is the bell curve that theory predicts, centred at 0.

Going deeper: the precise statement

Simple processes. A process $H_t = \sum_j H_j\, \mathbf 1_{(t_{j-1}, t_j]}(t)$ where each $H_j$ depends only on the history up to $t_{j-1}$. For these, $\int_0^t H\,dW$ is defined as the finite sum in this section.

General integrands. Any process $H$ that uses only past information and has $\mathbb E \int_0^t H_s^2\,ds < \infty$ can be approximated by simple processes $H^{(n)}$. $\int H\,dW$ is defined as the limit of $\int H^{(n)}\,dW$, and the Itô isometry (section 3.3) guarantees that limit exists.

Properties. The result is a continuous martingale in $t$, linear in $H$, with mean 0 and quadratic variation $\int_0^t H_s^2\,ds$.

References: Shreve, Stochastic Calculus for Finance II, §4.2–4.3. Øksendal, Stochastic Differential Equations, ch. 3.

Show the code (Python + NumPy)
import numpy as np
rng = np.random.default_rng(8)
bets = np.array([1, 2, 0.5, -1, -1, 0, 1.5, 1])       # holding in each of 8 periods
rises = rng.normal(0, np.sqrt(1 / 8), (100_000, 8))   # price rise per period, per path
gains = rises @ bets                                   # sum of bet x rise: the Ito integral
print(f"mean {gains.mean():+.4f} (0)   variance {gains.var():.3f} (sum bet^2 / 8 = {np.sum(bets ** 2) / 8:.3f})")

Output when we ran it:

mean +0.0022 (0)   variance 1.322 (sum bet^2 / 8 = 1.312)

3.3Itô Isometry

Now let the bet depend on the price itself. With $H = W$ you hold more the higher the price has gone. With $H = \operatorname{sign}(W)$ you hold +1 when the price is above its start and −1 when below. For each rule, the computer trades along 10,000 price paths. The chart shows three averages as more and more paths are included.

Predict first: For the rule H = W, what number will the squared gains average to?

$$\mathbb{E}\Big[\Big(\int_0^t H_s\,dW_s\Big)^2\Big] \;=\; \mathbb{E}\Big[\int_0^t H_s^2\,ds\Big], \qquad \mathbb{E}\Big[\int_0^t H_s\,dW_s\Big] = 0$$
$\int_0^t H_s\,dW_s$
Your total trading gains up to time $t$ (section 3.2). Here $t = 1$.
$\mathbb{E}[\;\cdot\;]$
The average over all possible price paths (section 2.2). The chart estimates it with up to 10,000 paths.
$\big(\int H\,dW\big)^2$
Your gains squared: a measure of how big your gain or loss is, whichever way it went.
$\int_0^t H_s^2\,ds$
An ordinary integral over time: the size of your holding, squared, added up over time. It measures how much risk you carried.
$\operatorname{sign}(W)$
+1 if $W$ is above 0, −1 if below.
isometry
"Same size". The size of the random gains (left side) equals the size of the holdings (right side).

In plain words: the random, hard-to-predict quantity on the left (your squared gains) has the same average as a plain accumulation of squared holdings over time on the right. The reason is sections 1.2 and 2.1 again: rises in different periods don't interact, so only each period's own squared rise counts, and a squared rise averages the elapsed time. That is why $(dW)^2 = dt$ reappears here as "$H^2 dt$". Meanwhile the gains themselves average 0, whatever rule you use.

Horizontal axis: number of paths averaged (log scale). Dashed line: theory for the two orange and blue averages.

Going deeper: the precise statement

Itô isometry. For any process $H$ that uses only past information with $\mathbb E\int_0^t H_s^2\,ds < \infty$: $\mathbb E\big[(\int_0^t H_s\,dW_s)^2\big] = \mathbb E\int_0^t H_s^2\,ds$. More generally, $\mathbb E\big[\int H\,dW \cdot \int K\,dW\big] = \mathbb E\int H_s K_s\,ds$.

Proof for simple processes. Square $\sum_j H_j \Delta W_j$. Cross terms $H_i H_j \Delta W_i \Delta W_j$ with $i < j$ average 0, because $\Delta W_j$ is independent of everything before it. The square terms average $\mathbb E[H_j^2]\,\Delta t_j$. The name "isometry" means the integral preserves the natural sizes: mean square on the left, integrated mean square on the right.

This identity is also what makes the definition in section 3.2 work: it turns convergence of $H^{(n)}$ into convergence of $\int H^{(n)} dW$.

Reference: Shreve, Stochastic Calculus for Finance II, §4.3.

Show the code (Python + NumPy)
import numpy as np
rng = np.random.default_rng(9)
paths, steps = 20_000, 200
dt = 1 / steps
dW = rng.normal(0, np.sqrt(dt), (paths, steps))
W = np.concatenate([np.zeros((paths, 1)), np.cumsum(dW, axis=1)[:, :-1]], axis=1)   # W at left ends
for name, H in (("1", np.ones_like(W)), ("W", W), ("sign(W)", np.sign(W))):
    I = np.sum(H * dW, axis=1)                        # Ito integral, left-end rule
    risk = np.sum(H ** 2 * dt, axis=1)
    print(f"H = {name:8} E[I] = {I.mean():+.3f}   E[I^2] = {np.mean(I ** 2):.3f}   E[int H^2 dt] = {risk.mean():.3f}")

Output when we ran it:

H = 1        E[I] = +0.001   E[I^2] = 1.006   E[int H^2 dt] = 1.000
H = W        E[I] = +0.003   E[I^2] = 0.505   E[int H^2 dt] = 0.499
H = sign(W)  E[I] = +0.009   E[I^2] = 0.990   E[int H^2 dt] = 0.995

Chapter recap

Quick questions on this chapter's big ideas. Each answer is explained as soon as you choose.

1. Itô's rule reads the integrand at which point of each small time interval?

2. The Itô integral of W against dW from 0 to 1 equals…

3. You hold H = 2 units for the whole time from 0 to 1. What is the variance of your gains?