Itô isometry
In
Let denote the canonical real-valued Wiener process defined up to time , and let be a stochastic process that is adapted to the natural filtration of the Wiener process.[clarification needed] Then
where denotes
In other words, the Itô integral, as a function from the space of square-integrable adapted processes to the space of square-integrable random variables, is an
and
As a consequence, the Itô integral respects these inner products as well, i.e. we can write
for .
Numerical Simulation
The Itô isometry can be illustrated through numerical simulation using
where represents the Brownian increments over small time intervals. The isometry can be demonstrated using various processes on the interval :
- Constant process:
- Analytical value: ,
- Linear deterministic process:
- Analytical value: ,
- Trigonometric deterministic process:
- Analytical value: ,
- Path-dependent stochastic process:
- Analytical value: ,
- Compensated Poisson ():
- Analytical value: .
# ============================================================
# Convergence test for five processes
# – 4 Brownian‑based Itô integrals
# – 1 compensated‑Poisson martingale integral
#
# Output:
# • nicely formatted error table
# • log–log convergence plot
# – each Brownian curve in its own colour
# – Poisson curve orange & dashed
# ============================================================
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from IPython.display import display
np.random.seed(42) # reproducible demo
# ---------------------- global settings ---------------------
T = 1.0 # horizon
lam = 3.0 # Poisson intensity λ
M_paths = 20_000 # Monte‑Carlo paths
N_list = [50, 100, 200, 500, 1000, 2000, 5000] # mesh refinements
# dataframe to hold absolute errors
index = pd.Index(N_list, name="N")
err_table = pd.DataFrame(index=index, columns=["1", "t", "sin(πt)", "W_t", "Poisson‑1"])
# -------------------- main simulation loop ------------------
for N in N_list:
dt = T / N
sqrt_dt = np.sqrt(dt)
t_left = np.linspace(0.0, T, N + 1)[:-1] # left endpoints (length N)
# --- Brownian increments & paths ------------------------
dW = np.random.normal(0.0, sqrt_dt, size=(M_paths, N))
W = np.zeros((M_paths, N + 1))
W[:, 1:] = np.cumsum(dW, axis=1)
# --- Compensated Poisson increments --------------------
dN = np.random.poisson(lam * dt, size=(M_paths, N))
dM = dN - lam * dt
# helper for deterministic X_t
lhs_det = lambda X_grid, inc: np.mean((inc * X_grid).sum(axis=1) ** 2)
# 1) X_t ≡ 1 with Brownian integrator
X1 = np.ones_like(t_left)
err_table.loc[N, "1"] = abs(lhs_det(X1, dW) - T)
# 2) X_t = t
Xt = t_left
err_table.loc[N, "t"] = abs(lhs_det(Xt, dW) - T**3 / 3)
# 3) X_t = sin(π t)
Xs = np.sin(np.pi * t_left)
err_table.loc[N, "sin(πt)"] = abs(lhs_det(Xs, dW) - 0.5 * T)
# 4) X_t = W_t (path‑dependent)
lhs_W = np.mean((W[:, :-1] * dW).sum(axis=1) ** 2)
err_table.loc[N, "W_t"] = abs(lhs_W - T**2 / 2)
# 5) compensated Poisson with X_t ≡ 1
err_table.loc[N, "Poisson‑1"] = abs(lhs_det(X1, dM) - lam * T)
# ---------------------- show table --------------------------
display(
err_table.style.format("{:.3e}").set_caption(
"Absolute error of isometry vs N (5 processes)"
)
)
# ---------------------- plotting ----------------------------
colour_map = {
"1": "tab:blue",
"t": "tab:green",
"sin(πt)": "tab:red",
"W_t": "tab:purple",
"Poisson‑1": "tab:orange",
}
markers = {"1": "o", "t": "s", "sin(πt)": "D", "W_t": "^", "Poisson‑1": "v"}
styles = {"1": "-", "t": "-", "sin(πt)": "-", "W_t": "-", "Poisson‑1": "--"}
plt.figure(figsize=(7, 5))
for col in err_table.columns:
plt.plot(
N_list,
err_table[col],
marker=markers[col],
linestyle=styles[col],
color=colour_map[col],
label=col,
)
plt.xscale("log")
plt.yscale("log")
plt.xlabel("time‑step count $N$ (log scale)")
plt.ylabel("absolute error (log scale)")
plt.title(
"Convergence of isometry error vs $N$\n"
"(4 Brownian processes, 1 compensated‑Poisson process)"
)
plt.grid(True, which="both", ls=":")
plt.legend()
plt.tight_layout()
plt.show()
N | 1 | t | sin(πt) | Wt | Poisson-1 |
---|---|---|---|---|---|
50 | 3.202e-03 | 5.356e-03 | 3.551e-03 | 1.497e-05 | 3.625e-02 |
100 | 9.887e-03 | 3.152e-03 | 7.880e-03 | 8.480e-03 | 4.595e-02 |
200 | 1.290e-02 | 6.827e-03 | 3.569e-03 | 6.790e-03 | 2.950e-02 |
500 | 3.515e-03 | 3.692e-04 | 5.956e-03 | 6.902e-03 | 1.780e-02 |
1000 | 5.203e-03 | 5.764e-03 | 2.894e-04 | 2.334e-03 | 3.605e-02 |
2000 | 8.342e-03 | 4.412e-03 | 2.358e-03 | 1.208e-02 | 3.330e-02 |
5000 | 5.890e-03 | 1.908e-03 | 6.048e-03 | 1.243e-02 | 8.335e-02 |
A Monte Carlo simulation with 20,000 sample paths and 1,000 time steps produces results that closely match the theoretical values predicted by the Itô isometry. As shown in the table above, the absolute errors between the simulated left-hand side and the analytical right-hand side are typically on the order of or smaller, confirming the validity of the isometry relationship.
These simulations serve as empirical evidence for the Itô isometry and provide insight into how the relationship holds across different types of processes, both deterministic and stochastic. The close agreement between theoretical and simulated values demonstrates the robustness of the isometry as a fundamental property of stochastic calculus.
Generalization to Martingales
The Itô isometry extends beyond the standard
- for all
Martingales can be further classified as:
- martingales if for all
- martingales if for all (and by implication, also )
A local martingale is a process for which there exists a sequence of stopping times with such that is a martingale for each .
The Itô Isometry for Martingales
The
where each is -measurable.
The Itô isometry holds when the integrator is one of:
- An martingale
- An martingale
- A local or martingale
For these cases, the isometry takes the form:
where denotes the quadratic variation process of .
References
- ISBN 3-540-04758-1.