# The Wiener Process: From Random Walks to Brownian Motion #wiener-process #brownian-motion #stochastic-process #sde #martingale #white-noise #markov-process > To portray your life in order would be absurd: I remember you at random. My brain resurrects you through stochastic details, like picking marbles out of a bag. > — Édouard Levé (1965-2007) ## Overview The [Wiener process](https://en.wikipedia.org/wiki/Wiener_process), also known as [Brownian motion](https://en.wikipedia.org/wiki/Brownian_motion), is the cornerstone of [stochastic calculus](https://en.wikipedia.org/wiki/Stochastic_calculus) and the mathematical foundation for modeling continuous-time random phenomena. Named after [Norbert Wiener](https://en.wikipedia.org/wiki/Norbert_Wiener) who provided its rigorous mathematical construction, it describes everything from molecular diffusion to stock price fluctuations. Fundamentally, unwanted noise is a natural part of observing deterministic processes, and the further we are from a laboratory setting, the more we encounter it. The Wiener process provides the mathematical framework to understand and model this ubiquitous randomness. --- ## 1. Historical Development ### The Discovery Timeline **1826-1827**: [Robert Brown](https://en.wikipedia.org/wiki/Robert_Brown_(botanist)) observed irregular motion of particles ejected from grains of pollen suspended in water. - Plant studied: *Clarkia pulchella* (Pacific Northwest, east of Cascades, family of Primrose) - Related species: Fuchsia, Fireweed - Initially thought to indicate life, but inorganic particles showed same "pedetic motion" **1900**: [Louis Bachelier](https://en.wikipedia.org/wiki/Louis_Bachelier) attempts to model fluctuations in stock prices—the birth of mathematical finance. **1905**: [Albert Einstein](https://en.wikipedia.org/wiki/Albert_Einstein) rederives and extends Bachelier's results, his first major scientific contribution and evidence that molecules exist. - Deriving the diffusion coefficient: $D = \frac{RT}{N_A f} = \frac{k_B T}{f}$ - This work asserted the cause was H₂O molecules and statistical fluctuations in their mechanics > [!note] Personal Historical Context > On 12/31/21, Kane Tanaka was the oldest human on planet Earth, born in 1903. She would have received an elementary school education as post-war Japan had taken a keen interest in societal rebuilding. Likely, the curriculum would have emphasized reading, writing and arithmetic, but may have included history, geography and nature science. Prior to WWII, secondary education was male-only in Japan, so questions related to molecules would only have occurred in adult life. The term "molecule" popularized by [Avogadro](https://en.wikipedia.org/wiki/Amedeo_Avogadro) in 1811 might have appeared in secondary education, but at this point in America 18% of 15-18 year olds enrolled and 9% of 18 year olds would attain this degree. **1923**: Norbert Wiener provides the first rigorous mathematical construction of Brownian motion as a stochastic process. **1926**: [Jean Baptiste Perrin](https://en.wikipedia.org/wiki/Jean_Baptiste_Perrin) conducts experiments verifying Einstein's theory, which also determines [Avogadro's number](https://en.wikipedia.org/wiki/Avogadro_constant), asserting a discontinuous structure to matter (Nobel Prize in Physics). > [!info] Science Education Timeline > In 1956, AP Bio, Chem, and Physics would have been introduced in USA. My Dad was probably told what a molecule was while we ramped up science efforts during the Space Race. > [!note] Historical Significance > Brownian motion helped establish the atomic theory of matter. Einstein showed that observable macroscopic motion could result from invisible molecular collisions, bridging statistical mechanics and thermodynamics. > > **Video Reference**: [Parrondo Part 1 - Introduction to SDEs](https://youtu.be/vcGpD7nZ3UM) > - [3:00](https://youtu.be/vcGpD7nZ3UM?t=180) - Historical context of Brownian motion > - [8:45](https://youtu.be/vcGpD7nZ3UM?t=525) - Einstein's contribution > - [15:20](https://youtu.be/vcGpD7nZ3UM?t=920) - Connection to molecular theory > - [21:00](https://youtu.be/vcGpD7nZ3UM?t=1260) - Mathematical formalization --- ## 2. Construction from Random Walks ### Back to the Foundation The construction of the Wiener process from random walks is thoroughly developed in [[Random-Walks#4. The Continuum Limit]]. Here we summarize the key insights: ### The Discrete Foundation Start with a symmetric random walk where at each time step $\Delta t$, a particle moves $\pm\Delta x$ with equal probability $1/2$. After time $t = n\Delta t$: - **Mean**: $E[S_n] = 0$ - **Variance**: $\text{Var}(S_n) = n(\Delta x)^2 = \frac{(\Delta x)^2}{\Delta t} \cdot t$ ### The Critical Scaling To obtain a non-trivial continuous limit as $\Delta t \to 0$ and $\Delta x \to 0$: > [!important] Key Insight > The diffusion coefficient must remain finite: > $D = \lim_{\substack{\Delta x \to 0 \\ \Delta t \to 0}} \frac{(\Delta x)^2}{2\Delta t} = \text{constant} > 0$ > > This requires: $\Delta x \propto \sqrt{\Delta t}$ In the limit, the position $X(t) \sim \mathcal{N}(0, 2Dt)$ becomes normally distributed. > [!info] Video Explanation > [Parrondo Part 2 - Random Walks to Wiener Process](https://youtu.be/vRsfjcXBGuI) > - [0:00](https://youtu.be/vRsfjcXBGuI?t=0) - Introduction to random walks > - [5:30](https://youtu.be/vRsfjcXBGuI?t=330) - Variance calculation and scaling > - [12:15](https://youtu.be/vRsfjcXBGuI?t=735) - The continuum limit > - [18:45](https://youtu.be/vRsfjcXBGuI?t=1125) - Connection to Brownian motion > - [25:00](https://youtu.be/vRsfjcXBGuI?t=1500) - Mathematical properties --- ## 3. Definition of the Wiener Process A **standard Wiener process** (or standard Brownian motion) $W(t)$ is a real-valued stochastic process satisfying: 1. **Initial condition**: $W(0) = 0$ almost surely 2. **Gaussian increments**: For any $0 \leq s < t$: $W(t) - W(s) \sim \mathcal{N}(0, t-s)$ 3. **Independent increments**: For any $0 \leq t_1 < t_2 < \cdots < t_n$, the increments $W(t_1), \, W(t_2)-W(t_1), \, \ldots, \, W(t_n)-W(t_{n-1})$ are independent random variables 4. **Continuous paths**: With probability 1, the sample paths $t \mapsto W(t)$ are continuous > [!important] Process Classification > The Wiener process is a **[Markov process](https://en.wikipedia.org/wiki/Markov_process)** (continuous-time stochastic process with the Markov property), not to be confused with a **[Markov chain](https://en.wikipedia.org/wiki/Markov_chain)** which is the discrete-time counterpart. The Markov property means the future evolution depends only on the current state, not the entire history: > $P(W(t) \in A | \mathcal{F}_s) = P(W(t) \in A | W(s))$ > for any $t > s$ and measurable set $A$. ### Statistical Properties **Moments**: - $E[W(t)] = 0$ for all $t \geq 0$ - $E[W^2(t)] = t$ - $E[W^4(t)] = 3t^2$ **Covariance Structure**: $\text{Cov}(W(s), W(t)) = E[W(s)W(t)] = \min\{s, t\}$ **Proof sketch**: For $s < t$: $E[W(s)W(t)] = E[W(s)(W(s) + W(t) - W(s))] = E[W^2(s)] + 0 = s$ ### Autocorrelation Structure The covariance structure provides crucial insight into the Wiener process: $E[W(t_2)W(t_1)] = \sigma^2 \min\{t_1, t_2\}$ **Derivation**: For $t_1 < t_2$: $E[W(t_2)W(t_1)] = E[W(t_1)(W(t_1) + W(t_2) - W(t_1))]$ $= E[W^2(t_1)] + E[W(t_1)]E[W(t_2) - W(t_1)]$ $= \sigma^2 t_1 + 0 = \sigma^2 \min\{t_1, t_2\}$ **Geometric interpretation**: ``` min{t₁,t₂} ^ σ²t₁|------------ (constant for t₂ > t₁) | / | / (slope = σ²) | / |___/________> t₂ 0 t₁ ``` The autocorrelation grows linearly until $t_2 = t_1$, then remains constant—reflecting that future increments are independent of past values. > [!note] Connection to Signal Processing > This autocorrelation is similar to convolution, typically used as a filter and equivalent when trying to maximize SNR for a signal subject to stochastic noise. > - Correlation: $(f \star g)(t) = \int_{-\infty}^{\infty} f(t+\tau) g(\tau) d\tau$ > - Convolution: $(f * g)(t) = \int_{-\infty}^{\infty} f(t-\tau) g(\tau) d\tau$ ### Connection to White Noise #### The Derivative Problem Formally, we might try to define white noise as: $\varepsilon(t) = \frac{dW(t)}{dt}$ Let's compute what this would mean statistically: **Mean**: $E[\varepsilon(t)] = E\left[\frac{dW(t)}{dt}\right] = \frac{d}{dt}E[W(t)] = 0$ **Autocorrelation** (the key calculation): $E[\varepsilon(t_1)\varepsilon(t_2)] = E\left[\frac{dW(t_1)}{dt_1}\frac{dW(t_2)}{dt_2}\right]$ $= \frac{\partial^2}{\partial t_1 \partial t_2} E[W(t_1)W(t_2)]$ $= \frac{\partial^2}{\partial t_1 \partial t_2} \sigma^2 \min\{t_1, t_2\}$ For $t_1 < t_2$: $= \frac{\partial}{\partial t_1}\left[\sigma^2 \cdot \mathbf{1}_{t_1 < t_2}\right] = \sigma^2 \delta(t_2 - t_1)$ **Key insight**: The "derivative" has delta-function correlation—zero correlation at all times except $t_1 = t_2$ where it's infinite! --- ## 4. L² Basis Construction Since $\varepsilon(t) = \dot{W}(t)$ is problematic (the derivative doesn't exist classically), we can construct white noise through orthogonal expansions: Let $S = \{\phi_1, \phi_2, \phi_3, \ldots\}$ be a complete orthonormal basis for $L^2(D)$, where $D \subset \mathbb{R}$. **Orthonormality**: $\langle \phi_n, \phi_m \rangle = \int_D \phi_n(t)\phi_m(t)dt = \delta_{nm}$ **Generalized Fourier Expansion**: $\varepsilon(t) = \sum_{n=1}^{\infty} A_n \phi_n(t)$ where $A_n$ are independent random variables with: - $E[A_n] = 0$ - $E[A_n A_m] = \sigma^2 \delta_{nm}$ Then: $W(t) = \int_0^t \varepsilon(s)ds = \sum_{n=1}^{\infty} A_n \int_0^t \phi_n(s)ds$ This construction is "perhaps more natural than $\varepsilon(t) = \dot{W}(t)quot; as it avoids the derivative issue entirely. > [!note] Physical Interpretation > White noise models rapid, uncorrelated fluctuations: > - Thermal noise in circuits > - Molecular collisions in fluids > - Market microstructure noise > > [Parrondo Part 3 - Stochastic Integrals](https://youtu.be/9zfw_CoPYNE) > - [2:30](https://youtu.be/9zfw_CoPYNE?t=150) - White noise properties > - [8:15](https://youtu.be/9zfw_CoPYNE?t=495) - Connection to stochastic integrals > - [14:00](https://youtu.be/9zfw_CoPYNE?t=840) - Riemann sums for stochastic integrals > - [22:45](https://youtu.be/9zfw_CoPYNE?t=1365) - Itô vs Stratonovich interpretations > - [28:30](https://youtu.be/9zfw_CoPYNE?t=1710) - Physical meaning of stochastic integrals #### Properties of White Noise **Statistical characteristics**: - Mean: $E[\varepsilon(t)] = 0$ - Autocorrelation: $E[\varepsilon(t_1)\varepsilon(t_2)] = \sigma^2\delta(t_2 - t_1)$ - **Implication**: The correlation of white noise across time is zero - Spectral density: Constant across all frequencies (hence "white") #### Rigorous Interpretation White noise exists as a **generalized stochastic process** (distribution-valued): For test function $\phi(t)$: $\int_0^T \xi(t)\phi(t)dt = \int_0^T \phi(t)dW(t)$ This gives meaning to SDEs of the form: $\frac{dy}{dt} = -\alpha y - \xi(t)y$ where we understand white noise as the derivative of the Wiener process. By integrating: $dy = -\alpha y\, dt - \xi(t)y\, dt$ $\Rightarrow y(t) - y_0 = -\alpha\int_0^t y\, d\tilde{t} - \int_0^t y\, dW(\tilde{t})$ Rewritten rigorously as: $dy = -\alpha y\, dt - y\, dW(t)$ > [!important] The Stage is Set > We now have all the pieces: > - Wiener process with its autocorrelation structure > - White noise as its formal derivative with delta correlation > - The integral formulation of SDEs > > But what does the stochastic integral $\int_0^t y\, dW(\tilde{t})$ actually mean? This leads us to the crucial example: "Suppose that somehow $y$ returned the Wiener process itself..." which reveals why we need Itô's formula. See [[Ito-Formula]] for the resolution. --- 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 🚧 --- ## 5. Path Properties ### Continuous but Nowhere Differentiable > [!warning] Paradoxical Nature > Brownian motion paths are: > - **Continuous** everywhere (with probability 1) > - **Differentiable** nowhere (with probability 1) > - Of **unbounded variation** on any interval > - Of **finite quadratic variation** equal to the time elapsed ### Hölder Continuity **Theorem**: With probability 1, sample paths are: - Hölder continuous with exponent $\alpha < 1/2$ - NOT Hölder continuous with exponent $\alpha > 1/2$ This means: $|W(t) - W(s)| \leq C|t - s|^\alpha$ for $\alpha < 1/2$ ### Self-Similarity (Fractal Nature) **Scaling Property**: For any $c > 0$: $\{W(ct)\}_{t \geq 0} \stackrel{d}{=} \{\sqrt{c} \cdot W(t)\}_{t \geq 0}$ This makes Brownian motion a fractal with Hausdorff dimension 3/2 in the plane. ### Sample Path Behavior ```python import numpy as np import matplotlib.pyplot as plt def wiener_process(T=1, n_steps=1000, n_paths=1): """ Generate sample paths of a Wiener process Parameters: ----------- T : float - final time n_steps : int - number of time steps n_paths : int - number of sample paths """ dt = T / n_steps times = np.linspace(0, T, n_steps + 1) # Generate increments: dW ~ N(0, dt) dW = np.random.normal(0, np.sqrt(dt), (n_paths, n_steps)) # Cumulative sum to get paths W = np.zeros((n_paths, n_steps + 1)) W[:, 1:] = np.cumsum(dW, axis=1) return times, W # Demonstrate path properties fig, axes = plt.subplots(2, 2, figsize=(12, 10)) # 1. Multiple sample paths times, paths = wiener_process(T=1, n_paths=5) for path in paths: axes[0, 0].plot(times, path, alpha=0.7) axes[0, 0].set_title('Sample Paths of Wiener Process') axes[0, 0].set_xlabel('Time') axes[0, 0].set_ylabel('W(t)') axes[0, 0].grid(True, alpha=0.3) # 2. Zoom in to show continuity but roughness times_fine, path_fine = wiener_process(T=0.01, n_steps=1000, n_paths=1) axes[0, 1].plot(times_fine, path_fine[0], 'b-', linewidth=0.5) axes[0, 1].set_title('Zoomed View: Continuous but Rough') axes[0, 1].set_xlabel('Time') axes[0, 1].set_ylabel('W(t)') axes[0, 1].grid(True, alpha=0.3) # 3. Distribution at fixed time n_simulations = 10000 final_values = [wiener_process(T=1, n_steps=100, n_paths=1)[1][0, -1] for _ in range(n_simulations)] axes[1, 0].hist(final_values, bins=50, density=True, alpha=0.7, edgecolor='black') x = np.linspace(-4, 4, 100) axes[1, 0].plot(x, (1/np.sqrt(2*np.pi))*np.exp(-x**2/2), 'r-', label='N(0,1) theoretical') axes[1, 0].set_title(f'Distribution at t=1 (n={n_simulations})') axes[1, 0].set_xlabel('W(1)') axes[1, 0].set_ylabel('Density') axes[1, 0].legend() axes[1, 0].grid(True, alpha=0.3) # 4. Quadratic variation times, path = wiener_process(T=1, n_steps=1000, n_paths=1) increments = np.diff(path[0]) cumulative_qv = np.cumsum(increments**2) axes[1, 1].plot(times[1:], cumulative_qv, label='Cumulative (dW)²') axes[1, 1].plot(times[1:], times[1:], 'r--', label='Time (theoretical)') axes[1, 1].set_title('Quadratic Variation') axes[1, 1].set_xlabel('Time') axes[1, 1].set_ylabel('Σ(dW)²') axes[1, 1].legend() axes[1, 1].grid(True, alpha=0.3) plt.tight_layout() plt.show() ``` --- ## 6. Martingale Property > [!info] Video Resource > [Parrondo Part 4 - Itô's Formula](https://youtu.be/h1eNpKDOa2c) > - [4:15](https://youtu.be/h1eNpKDOa2c?t=255) - Martingale property introduction > - [9:30](https://youtu.be/h1eNpKDOa2c?t=570) - Itô's formula derivation > - [16:00](https://youtu.be/h1eNpKDOa2c?t=960) - The chain rule modification > - [23:45](https://youtu.be/h1eNpKDOa2c?t=1425) - Examples and applications > - [31:00](https://youtu.be/h1eNpKDOa2c?t=1860) - Connection to SDEs ### Definition and Significance The Wiener process is a **martingale** with respect to its natural filtration $\mathcal{F}_t = \sigma(W(s) : s \leq t)$: $E[W(t) | \mathcal{F}_s] = W(s) \quad \text{for all } t \geq s$ **Proof**: Using independent increments: $E[W(t) | \mathcal{F}_s] = E[W(s) + (W(t) - W(s)) | \mathcal{F}_s] = W(s) + E[W(t) - W(s)] = W(s)$ ### Related Martingales 1. **Squared process with drift correction**: $W^2(t) - t$ is a martingale 2. **Exponential martingale**: $\exp(\theta W(t) - \frac{\theta^2 t}{2})$ is a martingale 3. **Stochastic integrals**: $\int_0^t f(s) dW(s)$ is a martingale (under conditions) > [!info] Financial Interpretation > The martingale property means "fair game" - the best prediction of future value is the current value. This is the mathematical foundation of the efficient market hypothesis. --- ## 7. Quadratic Variation ### The Fundamental Difference from Classical Calculus In ordinary calculus, for smooth functions: $(df)^2 = 0$ (infinitesimal of higher order). For Brownian motion: $(dW)^2 = dt$ (first-order in time!) ### Formal Statement **Theorem (Quadratic Variation)**: For any partition $0 = t_0 < t_1 < \cdots < t_n = T$ with mesh size $\delta \to 0$: $\sum_{i=0}^{n-1} [W(t_{i+1}) - W(t_i)]^2 \xrightarrow{P} T$ ### Implications for Stochastic Calculus This non-zero quadratic variation leads to: 1. **Modified chain rule** (Itô's formula): $df(W(t)) = f'(W(t))dW(t) + \frac{1}{2}f''(W(t))dt$ The extra $\frac{1}{2}f''(W(t))dt$ term arises from $(dW)^2 = dt$. 2. **Itô vs. Stratonovich integrals**: Different conventions for handling this quadratic variation > [!example] The Key Example (from F21 Notes) > The difference between Itô and Stratonovich becomes clear when considering $\int_0^t W(\tilde{t}) dW(\tilde{t})$. This example, where "y returns the Wiener process itself," shows why the chain rule must be modified. > > See [Parrondo Part 4 - Itô's Formula](https://youtu.be/h1eNpKDOa2c) > - [12:30](https://youtu.be/h1eNpKDOa2c?t=750) - The $\int W dW$ example > - [18:00](https://youtu.be/h1eNpKDOa2c?t=1080) - Itô vs Stratonovich difference > > This is explored in detail in [[Ito-Formula]]. > [!important] Key Insight from F21 Notes > "The second order differential of the Wiener process is first order in time!" > This fundamentally changes the calculus and is why SDEs require special treatment. --- ## 8. Computational Simulation ### Efficient Generation Methods ```python class WienerProcess: """ Class for generating and analyzing Wiener process paths """ def __init__(self, T=1, n_steps=1000, seed=None): self.T = T self.n_steps = n_steps self.dt = T / n_steps self.times = np.linspace(0, T, n_steps + 1) if seed: np.random.seed(seed) def generate_path(self, drift=0, volatility=1): """ Generate a path of generalized Brownian motion B(t) = drift * t + volatility * W(t) """ # Standard Brownian increments dW = np.random.normal(0, np.sqrt(self.dt), self.n_steps) # Cumulative sum for Wiener process W = np.concatenate([[0], np.cumsum(dW)]) # Add drift if specified B = drift * self.times + volatility * W return B def estimate_quadratic_variation(self, path): """ Estimate quadratic variation from a sample path """ increments = np.diff(path) qv = np.sum(increments**2) return qv def test_martingale_property(self, n_simulations=10000): """ Verify E[W(t)|F(s)] = W(s) numerically """ s_idx = self.n_steps // 2 # Midpoint conditional_values = [] for _ in range(n_simulations): path = self.generate_path() W_s = path[s_idx] W_T = path[-1] conditional_values.append((W_s, W_T)) # Group by W(s) values and check conditional expectation conditional_values = np.array(conditional_values) # Bin W(s) values bins = np.percentile(conditional_values[:, 0], np.linspace(0, 100, 11)) print("Martingale Property Test:") print("E[W(T)|W(s)] should equal W(s)") print("-" * 40) for i in range(len(bins)-1): mask = (conditional_values[:, 0] >= bins[i]) & \ (conditional_values[:, 0] < bins[i+1]) if np.sum(mask) > 0: W_s_mean = np.mean(conditional_values[mask, 0]) W_T_mean = np.mean(conditional_values[mask, 1]) print(f"W(s) ≈ {W_s_mean:.3f}, E[W(T)|W(s)] ≈ {W_T_mean:.3f}") # Example usage wp = WienerProcess(T=1, n_steps=1000) # Generate and analyze a sample path path = wp.generate_path() qv = wp.estimate_quadratic_variation(path) print(f"Quadratic variation: {qv:.3f} (theoretical: {wp.T:.3f})") # Test martingale property wp.test_martingale_property(n_simulations=5000) ``` ### Visualization of Key Properties ```python def visualize_wiener_properties(): """ Comprehensive visualization of Wiener process properties """ fig = plt.figure(figsize=(15, 10)) # 1. Self-similarity ax1 = plt.subplot(2, 3, 1) wp = WienerProcess(T=1, n_steps=1000) path = wp.generate_path() # Original and scaled versions ax1.plot(wp.times, path, 'b-', alpha=0.7, label='W(t)') # Scale by factor 4 c = 4 times_scaled = wp.times / c path_scaled = path / np.sqrt(c) ax1.plot(times_scaled, path_scaled, 'r--', alpha=0.7, label=f'W(t/{c})/√{c}') ax1.set_title('Self-Similarity') ax1.set_xlabel('Time') ax1.legend() ax1.grid(True, alpha=0.3) # 2. Increments distribution ax2 = plt.subplot(2, 3, 2) increments = np.diff(path) ax2.hist(increments, bins=50, density=True, alpha=0.7, edgecolor='black', label='Empirical') x = np.linspace(increments.min(), increments.max(), 100) theoretical = (1/np.sqrt(2*np.pi*wp.dt)) * np.exp(-x**2/(2*wp.dt)) ax2.plot(x, theoretical, 'r-', label=f'N(0,{wp.dt:.4f})') ax2.set_title('Increment Distribution') ax2.set_xlabel('dW') ax2.set_ylabel('Density') ax2.legend() ax2.grid(True, alpha=0.3) # 3. Maximum and minimum ax3 = plt.subplot(2, 3, 3) n_paths = 100 max_vals = [] min_vals = [] for _ in range(n_paths): path = wp.generate_path() max_vals.append(np.max(path)) min_vals.append(np.min(path)) ax3.hist(max_vals, bins=30, alpha=0.5, label='Max(W)', color='red') ax3.hist(min_vals, bins=30, alpha=0.5, label='Min(W)', color='blue') ax3.set_title('Distribution of Extrema') ax3.set_xlabel('Value') ax3.set_ylabel('Frequency') ax3.legend() ax3.grid(True, alpha=0.3) # 4. First passage time ax4 = plt.subplot(2, 3, 4) barrier = 1.0 first_passage_times = [] for _ in range(1000): path = wp.generate_path() crossing_idx = np.where(path >= barrier)[0] if len(crossing_idx) > 0: first_passage_times.append(wp.times[crossing_idx[0]]) ax4.hist(first_passage_times, bins=30, density=True, alpha=0.7, edgecolor='black') ax4.set_title(f'First Passage Time (barrier={barrier})') ax4.set_xlabel('Time') ax4.set_ylabel('Density') ax4.grid(True, alpha=0.3) # 5. 2D Brownian motion ax5 = plt.subplot(2, 3, 5) path_x = wp.generate_path() path_y = wp.generate_path() ax5.plot(path_x, path_y, 'b-', alpha=0.5, linewidth=0.5) ax5.plot(0, 0, 'go', markersize=8, label='Start') ax5.plot(path_x[-1], path_y[-1], 'ro', markersize=8, label='End') ax5.set_title('2D Brownian Motion') ax5.set_xlabel('X') ax5.set_ylabel('Y') ax5.legend() ax5.grid(True, alpha=0.3) ax5.axis('equal') # 6. Running maximum ax6 = plt.subplot(2, 3, 6) path = wp.generate_path() running_max = np.maximum.accumulate(path) ax6.plot(wp.times, path, 'b-', alpha=0.7, label='W(t)') ax6.plot(wp.times, running_max, 'r-', alpha=0.7, label='max(W(s), s≤t)') ax6.fill_between(wp.times, path, running_max, alpha=0.3) ax6.set_title('Running Maximum') ax6.set_xlabel('Time') ax6.set_ylabel('Value') ax6.legend() ax6.grid(True, alpha=0.3) plt.tight_layout() plt.show() visualize_wiener_properties() ``` --- ## 9. Applications ### Physics and Chemistry - **Molecular diffusion**: Heat equation emerges from Brownian motion limit - **Polymer physics**: Random coil configurations - **Quantum mechanics**: Path integral formulation ### Finance - **Stock prices**: Geometric Brownian motion model $dS = \mu S dt + \sigma S dW$ - **Interest rates**: Vasicek, CIR models - **Option pricing**: Black-Scholes framework > [!info] Applications Video > [Parrondo Part 5 - Applications and Examples](https://youtu.be/7J82tcLynaU) > - [2:00](https://youtu.be/7J82tcLynaU?t=120) - Finance applications > - [10:30](https://youtu.be/7J82tcLynaU?t=630) - Physics and diffusion > - [18:15](https://youtu.be/7J82tcLynaU?t=1095) - Numerical methods > - [25:00](https://youtu.be/7J82tcLynaU?t=1500) - Real-world examples > - [32:45](https://youtu.be/7J82tcLynaU?t=1965) - Future directions ### Engineering - **Signal processing**: Modeling noise in communication systems - **Control theory**: Stochastic optimal control - **Filtering**: Kalman filter for state estimation ### Biology - **Population genetics**: Genetic drift - **Neuroscience**: Neuronal membrane potential fluctuations - **Ecology**: Animal foraging patterns --- ## 10. Exercises ### Conceptual Understanding 1. **Path Roughness**: Explain why $E[|W(t+h) - W(t)|] = \sqrt{\frac{2h}{\pi}}$. What does this tell us about the typical size of increments? 2. **Scaling Intuition**: If you observe Brownian motion for 1 second vs. 1 hour, how do the typical displacements compare? Why? ### Analytical Problems 3. **Covariance**: Prove that $\text{Cov}(W(s), W(t)) = \min\{s,t\}$ using the definition of covariance and properties of Brownian motion. 4. **Reflection Principle**: Show that for $a > 0$: $P(\max_{0 \leq s \leq t} W(s) \geq a) = 2P(W(t) \geq a)$ 5. **Exponential Martingale**: Verify that $M(t) = e^{\theta W(t) - \frac{\theta^2 t}{2}}$ is a martingale. ### Computational Exercises 6. **Quadratic Variation**: Simulate 1000 paths and verify that the sample quadratic variation converges to $t$ as the partition gets finer. 7. **Hitting Times**: For barrier $b > 0$, estimate the distribution of $\tau_b = \inf\{t : W(t) = b\}$. Compare with theoretical density: $f_{\tau_b}(t) = \frac{b}{\sqrt{2\pi t^3}} e^{-b^2/(2t)}$ ### Advanced Problems 8. **Law of Iterated Logarithm**: Investigate computationally: $\limsup_{t \to \infty} \frac{W(t)}{\sqrt{2t \log \log t}} = 1 \quad \text{a.s.}$ 9. **Brownian Bridge**: Construct and analyze a Brownian bridge (Brownian motion conditioned to return to 0 at time T): $B(t) = W(t) - \frac{t}{T}W(T)$ 10. **Feynman-Kac Formula**: Use simulation to verify that the solution to: $\frac{\partial u}{\partial t} + \frac{1}{2}\frac{\partial^2 u}{\partial x^2} - V(x)u = 0$ with $u(x,T) = f(x)$ is given by: $u(x,t) = E\left[f(W_T) e^{-\int_t^T V(W_s)ds} | W_t = x\right]$ --- ## Cross-References - [[Random-Walks]]: Discrete foundation and limiting procedures - [[Ito-Formula]]: The modified chain rule for Brownian motion - [[SDE-Fundamentals]]: Using Brownian motion to build SDEs - White noise, the formal derivative of Brownian motion: see [[Wiener-Process#4. L² Basis Construction]] above - Martingales: see [[Wiener-Process#6. Martingale Property]] above - Stochastic integration with respect to Brownian motion: see [[SDE-Fundamentals#3. The Stochastic Integral]] --- ## References ### Primary Sources - Wiener, N. (1923). "Differential Space." *Journal of Mathematics and Physics*, 2, 131-174 - Einstein, A. (1905). "Über die von der molekularkinetischen Theorie der Wärme geforderte Bewegung" - Bachelier, L. (1900). "Théorie de la spéculation" ### Course Materials - Evans, L.C. "An Introduction to Stochastic Differential Equations" - Chapter 3 - MATH310 F21 Notes: Sections on Brownian Motion and quadratic variation - Parrondo Lecture Series: Parts 1-3 on Wiener process construction - Random Walks F24: Foundation for continuum limit ### Additional Reading - Karatzas, I. & Shreve, S. "Brownian Motion and Stochastic Calculus" - Øksendal, B. "Stochastic Differential Equations: An Introduction with Applications" - Mörters, P. & Peres, Y. "Brownian Motion"