2026-03-06 20:22:35 +01:00
\documentclass [11pt,a4paper] { article}
%% ── Encoding & Fonts ────────────────────────────────────────────────────────
\usepackage { fontspec}
\setmainfont { Latin Modern Roman}
\setsansfont { Latin Modern Sans}
\setmonofont { Latin Modern Mono}
%% ── Maths ───────────────────────────────────────────────────────────────────
\usepackage { amsmath,amssymb,amsthm,mathtools}
\usepackage { bm} % \bm for bold math
%% ── Layout & Typography ─────────────────────────────────────────────────────
\usepackage [a4paper, margin=2.5cm] { geometry}
\usepackage { microtype}
\usepackage { parskip}
\usepackage { setspace}
\setstretch { 1.1}
%% ── Colour ──────────────────────────────────────────────────────────────────
\usepackage { xcolor}
\definecolor { optblue}{ HTML}{ 1A3A5C}
\definecolor { optgold}{ HTML}{ C8960C}
\definecolor { defbg}{ HTML}{ EEF4FB}
\definecolor { thmbg}{ HTML}{ FFF8EC}
\definecolor { codebg}{ HTML}{ F5F5F5}
2026-03-07 09:44:08 +01:00
\definecolor { notebg}{ HTML}{ EAFAF1}
\definecolor { optgreen}{ HTML}{ 1A7A4A}
\definecolor { warnbg}{ HTML}{ FEF3CD}
\definecolor { optred}{ HTML}{ C0392B}
2026-03-06 20:22:35 +01:00
%% ── Theorem environments ─────────────────────────────────────────────────────
\usepackage { tcolorbox}
\tcbuselibrary { skins,breakable}
\newtcolorbox { defbox} [1]{
breakable, enhanced,
colback=defbg, colframe=optblue, coltitle=white,
fonttitle=\bfseries\sffamily ,
title={ Definition — #1} ,
arc=3pt, boxrule=0.6pt, left=6pt, right=6pt, top=4pt, bottom=4pt
}
\newtcolorbox { thmbox} [1]{
breakable, enhanced,
colback=thmbg, colframe=optgold, coltitle=white,
fonttitle=\bfseries\sffamily ,
title={ Theorem — #1} ,
arc=3pt, boxrule=0.6pt, left=6pt, right=6pt, top=4pt, bottom=4pt
}
\newtcolorbox { codebox}{
breakable, enhanced,
colback=codebg, colframe=gray!40,
arc=2pt, boxrule=0.4pt, left=8pt, right=8pt, top=4pt, bottom=4pt,
fontupper=\ttfamily\small
}
%% ── Tables ───────────────────────────────────────────────────────────────────
\usepackage { booktabs}
\usepackage { tabularx}
\usepackage { array}
\newcolumntype { L} [1]{ >{ \raggedright\arraybackslash } p{ #1}}
\newcolumntype { C} [1]{ >{ \centering\arraybackslash } p{ #1}}
%% ── Lists ────────────────────────────────────────────────────────────────────
\usepackage { enumitem}
\setlist [itemize] { itemsep=2pt, topsep=4pt}
\setlist [enumerate] { itemsep=2pt, topsep=4pt}
%% ── Section styling ──────────────────────────────────────────────────────────
\usepackage { titlesec}
\titleformat { \section }{ \large\bfseries\sffamily\color { optblue}}{ \thesection }{ 0.7em}{} [\color { optblue} \titlerule ]
\titleformat { \subsection }{ \normalsize\bfseries\sffamily\color { optblue}}{ \thesubsection }{ 0.6em}{}
\titleformat { \subsubsection }{ \normalsize\itshape\sffamily }{ \thesubsubsection }{ 0.5em}{}
%% ── Header / Footer ──────────────────────────────────────────────────────────
\usepackage { fancyhdr}
\pagestyle { fancy}
\fancyhf {}
\fancyhead [L] { \sffamily\small\color { gray} Optimiz-rs — Mathematical Foundations}
\fancyhead [R] { \sffamily\small\color { gray} \today }
\fancyfoot [C] { \sffamily\small\color { gray} \thepage }
\renewcommand { \headrulewidth }{ 0.4pt}
%% ── Hyperlinks ───────────────────────────────────────────────────────────────
\usepackage [unicode, colorlinks=true, linkcolor=optblue, urlcolor=optblue, citecolor=optgold] { hyperref}
\usepackage { bookmark}
%% ── Listings (pseudocode) ────────────────────────────────────────────────────
\usepackage { listings}
\lstset {
backgroundcolor=\color { codebg} ,
basicstyle=\ttfamily\small ,
breaklines=true,
frame=single, framerule=0.4pt, rulecolor=\color { gray!40} ,
xleftmargin=8pt, xrightmargin=8pt,
aboveskip=6pt, belowskip=6pt
}
%% ── Misc macros ──────────────────────────────────────────────────────────────
\newcommand { \R }{ \mathbb { R}}
\newcommand { \E }{ \mathbb { E}}
\newcommand { \PP }{ \mathbb { P}}
\newcommand { \KL } [2]{ D_{ \mathrm { KL}} \!\left (#1\,\|\, #2\right )}
\newcommand { \tr }{ \operatorname { Tr}}
\newcommand { \N }{ \mathcal { N}}
%% ─────────────────────────────────────────────────────────────────────────────
\begin { document}
2026-03-07 09:44:08 +01:00
\section { Mathematical Foundations} \label { mathematical-foundations}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
This page develops the core mathematics underlying Optimiz-rs's Rust kernels --- from first principles through advanced theory. Each section opens with a \textbf { definition block} , builds intuition through \textbf { examples and diagrams} , and closes with a \textbf { notebook micro-check} . For complete walkthroughs see \texttt { examples/notebooks/} .
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsection { 1 · Differential Evolution (DE)} \label { differential-evolution-de}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { Background} \label { background}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
DE is a gradient-free population-based optimizer for \( f: \mathbb {R}^d \to \mathbb {R} \) , not required to be smooth or convex. At generation \( g \) we maintain \( N \) candidate solutions \( \{\mathbf {x}_{i,g} \} \subset \mathbb {R}^d \) .
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Key insight:} The difference vector \( \mathbf {x}_{r_ 2 } - \mathbf {x}_{r_ 3 } \) is an unbiased directional finite-difference of \( f \) , so DE implicitly estimates curvature without Jacobians.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { \texorpdfstring { 1.1 Geometric Intuition --- Mutation in \( \mathbb {R}^ 2 \) }{ 1.1 Geometric Intuition --- Mutation in \textbackslash mathbb\{ R\}\^ {} 2}} \label { geometric-intuition-mutation-in-mathbbr2}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
x_ r3 *
|
| F*(x_ r2 - x_ r3) F = scale factor in [0,2]
| ------------------>
x_ r2 * * v_ i (mutant)
\\ /
\\ ________________ /
(difference vec)
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
x_ r1 *------------------------------------------------> v_ i
base vector mutation vector added
\end { verbatim}
2026-03-06 20:22:35 +01:00
\begin { itemize}
2026-03-07 09:44:08 +01:00
\item
\( \mathbf {r}_ 1 , \mathbf {r}_ 2 , \mathbf {r}_ 3 \) are three \textbf { distinct} randomly selected parents.
\item
The mutant \( \mathbf {v}_i \) lands on the other side relative to \( \mathbf {x}_{r_ 1 } \) .
\item
\textbf { Crossover} then mixes \( \mathbf {v}_i \) and \( \mathbf {x}_i \) dimension-by-dimension with probability \( CR \) , producing trial vector \( \mathbf {u}_i \) .
\item
\textbf { Selection} keeps \( \mathbf {u}_i \) only if it improves over \( \mathbf {x}_i \) --- pure greedy.
2026-03-06 20:22:35 +01:00
\end { itemize}
2026-03-07 09:44:08 +01:00
\subsubsection { 1.2 Operators} \label { operators}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
{ \def\LTcaptype { none} % do not increment counter
\begin { longtable} []{ @{}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.2857}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.4286}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.2857}} @{}}
\toprule\noalign {}
\begin { minipage} [b]{ \linewidth } \raggedright
Step
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Formula
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Role
\end { minipage} \\
\midrule\noalign {}
\endhead
\bottomrule\noalign {}
\endlastfoot
Mutation (rand/1) & \( \mathbf {v}_{i,g} = \mathbf {x}_{r_ 1 } + F ( \mathbf {x}_{r_ 2 } - \mathbf {x}_{r_ 3 } ) \) & explore \\
Binomial crossover & \( u_{i,j} = v_{i,j} \) if \( U ( 0 , 1 ) <CR \) or \( j = j_ \text {rand} \) & mix dimensions \\
Greedy selection & \( \mathbf {x}_{i,g + 1 } = \mathbf {u}_{i,g} \) iff \( f ( \mathbf {u} ) \le f ( \mathbf {x} ) \) & exploit \\
\end { longtable}
}
\textbf { Convergence (informal):} Under bounded population diversity and Lipschitz \( f \) , the best-so-far value converges a.s. to a stationary point as \( N,g \to\infty \) (Price et al.~2005).
\subsubsection { 1.3 Self-Adaptive jDE (Optimiz-rs default)} \label { self-adaptive-jde-optimiz-rs-default}
Parameters \( F,CR \) are per-individual and reset stochastically each generation:
2026-03-06 20:22:35 +01:00
\[
2026-03-07 09:44:08 +01:00
F_i^{g + 1 } = \begin {cases} F_{ \min } + r_ 1 F_{ \max } & r_ 2 < \tau _ 1 , \\ F_i^g & \text {otherwise,} \end {cases}
\qquad
CR_i^{g + 1 } = \begin {cases} U ( 0 , 1 ) & r_ 3 < \tau _ 2 , \\ CR_i^g & \text {otherwise.} \end {cases}
2026-03-06 20:22:35 +01:00
\]
2026-03-07 09:44:08 +01:00
\( \tau _ 1 = \tau _ 2 = 0 . 1 \) by default. On rugged landscapes this produces bimodal \( F \) histograms concentrated near 0.8 --- a sign the landscape is highly multimodal.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { 1.4 Example --- Minimising the Rastrigin Function} \label { example-minimising-the-rastrigin-function}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
The Rastrigin function \( f ( \mathbf {x} ) = 10 d + \sum _i [ x_i^ 2 - 10 \cos ( 2 \pi x_i )] \) has \( \approx 10 ^d \) local minima (global minimum \( f^ *= 0 \) at \( \mathbf {x}^ *= \mathbf { 0 } \) ).
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Why gradient methods fail:} The gradient \( \partial _{x_i}f = 2 x_i + 20 \pi\sin ( 2 \pi x_i ) \) oscillates rapidly --- any gradient step hops between basins.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Why DE succeeds:} The difference vector \( F ( \mathbf {x}_{r_ 2 } - \mathbf {x}_{r_ 3 } ) \) spans the characteristic basin width (\textasciitilde 1.0), enabling inter-basin jumps.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
Rastrigin 1D sketch (d=1):
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
f(x)
| * * * <- local minima (many)
| * * * * * *
|* *
| * *
+------|------+------|-- x
-1 0 1
^
global min f=0
\end { verbatim}
\textbf { Typical jDE convergence} (\( d = 10 \) , \( N = 100 \) , \( \tau _ 1 = \tau _ 2 = 0 . 1 \) ):
\begin { verbatim}
Gen Best f Mean F Mean CR
---- ------- ------- -------
1 48.3 0.50 0.50
50 12.1 0.78 0.31
200 3.4 0.82 0.24 <- F clusters near 0.8 (bimodal)
500 0.0 0.83 0.22 <- converged
\end { verbatim}
\begin { tcolorbox} [colback=thmbg!60,colframe=optgold,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Theorem / Key Idea}} — Tip — Diagnosing Stagnation} ,breakable]
If best-$ f $ does not decrease for 100+ generations:
1. **Check $ F $ histogram.** Bimodal near 0.8 -> landscape is multimodal (increase $ N $ ).
Collapsed near 0 -> diversity loss; restart with random perturbation.
2. **Check $ CR $ distribution.** Uniform -> dimensions not interacting.
Collapsed near 0 -> DE treating dimensions independently (separable function).
3. **Increase $ N $ ** to $ \approx 10 d $ for $ d > 20 $ .
\end { tcolorbox}
\textbf { Notebook check} (\texttt { 05\_ performance\_ benchmarks.ipynb} ): Plot \( F_i, CR_i \) histograms every 50 generations; expect values clustering in \( [ 0 . 5 , 0 . 9 ] \) on hard problems.
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsection { 2 · Stochastic Processes} \label { stochastic-processes}
These form the probabilistic backbone of all continuous-time models in Optimiz-rs. We build the theory from scratch: random walk → Brownian motion → Itō calculus → SDEs → jump-diffusions.
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsubsection { 2.1 Brownian Motion} \label { brownian-motion}
\paragraph { 2.1.0 Intuitive Construction --- From Random Walk to BM} \label { intuitive-construction-from-random-walk-to-bm}
\textbf { Step 1 --- Discrete random walk.} Flip a fair coin \( n \) times per unit time. Define \( \xi _k = + 1 \) (heads) or \( - 1 \) (tails) i.i.d. After \( n \) steps of size \( 1 / \sqrt {n} \) :
\[ S^{ ( n ) }_t = \frac { 1 }{ \sqrt {n}} \sum _{k = 1 }^{ \lfloor nt \rfloor } \xi _k. \]
By the \textbf { Central Limit Theorem} , as \( n \to\infty \) : \( S^{ ( n ) }_t \xrightarrow {d} W_t \sim \mathcal {N} ( 0 ,t ) \) .
\begin { verbatim}
Coin-flip random walk (n=20 steps per unit time):
W_ t
+2 | * *
| * * *
0 | * * * * *
|* * *
-2 | *
+----------------------------> t
0 0.5 1.0
n → ∞ ("zoom out"): jagged → smooth BM fan
\end { verbatim}
\textbf { Step 2 --- Scaling limit.} The normalization \( 1 / \sqrt {n} \) is crucial: - Without it, variance grows as \( n \) (diverges). - With \( n^{ - 1 / 2 } \) : variance = \( n \cdot ( 1 / \sqrt {n} ) ^ 2 \cdot t = t \) --- exactly right.
This is why \( W_t \sim \mathcal {N} ( 0 ,t ) \) : \textbf { variance accumulates linearly in time} .
\begin { tcolorbox} [colback=defbg!60,colframe=optblue,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Definition}} — Definition — Wiener Process} ,breakable]
A stochastic process $ W = ( W_t ) _{t \ge 0 } $ on $ ( \Omega , \mathcal {F}, \mathbb {P} ) $
is a *standard Brownian motion* if:
1. $ W_ 0 = 0 $ a.s.
2. Increments are **independent**: $ W_t - W_s \perp \mathcal {F}_s $ for $ t>s $ .
3. $ W_t - W_s \sim \mathcal {N} ( 0 , t - s ) $ for all $ 0 \le s<t $ .
4. Paths $ t \mapsto W_t ( \omega ) $ are **continuous** a.s.
\end { tcolorbox}
\paragraph { 2.1.1 Key Analytical Properties} \label { key-analytical-properties}
{ \def\LTcaptype { none} % do not increment counter
\begin { longtable} []{ @{}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.3333}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.3000}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.3667}} @{}}
\toprule\noalign {}
\begin { minipage} [b]{ \linewidth } \raggedright
Property
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Formula
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Intuition
\end { minipage} \\
\midrule\noalign {}
\endhead
\bottomrule\noalign {}
\endlastfoot
Mean & \( \mathbb {E} [ W_t ] = 0 \) & No drift --- symmetric random walk \\
Variance & \( \operatorname {Var} ( W_t ) = t \) & Uncertainty grows with time \\
Covariance & \( \operatorname {Cov} ( W_s,W_t ) = \min ( s,t ) \) & Shared history up to first time \\
Non-differentiability & \( \lim _{h \to 0 } ( W_{t + h} - W_t )/ h \) diverges a.s. & Too ``rough'' for ordinary calculus \\
Quadratic variation & \( [ W ] _T = T \) & Core source of Itō correction term \\
Self-similarity & \( c^{ - 1 / 2 }W_{ct} \overset {d}{ = } W_t \) & Fractal structure, Hurst \( H = \tfrac 12 \) \\
\end { longtable}
}
\textbf { Quadratic variation derivation (step by step):}
Partition \( [ 0 ,T ] \) into \( n \) pieces of width \( \Delta = T / n \) . Sum of squared increments:
\[ \sum _{k = 0 }^{n - 1 } ( W_{t_{k + 1 }} - W_{t_k} ) ^ 2 \overset {?}{ = } T \quad \text {as } n \to\infty . \]
\textbf { Step 1} --- Each increment: \( ( W_{t_{k + 1 }} - W_{t_k} ) ^ 2 \sim \Delta \cdot \chi _ 1 ^ 2 \) , so \( \mathbb {E} [( W_{t_{k + 1 }} - W_{t_k} ) ^ 2 ] = \Delta \) .
\textbf { Step 2} --- Sum of means: \( \sum _{k = 0 }^{n - 1 } \Delta = n \Delta = T \) .
\textbf { Step 3} --- Variance of the sum: \( \operatorname {Var} \!\left ( \sum ( W_{t_{k + 1 }} - W_{t_k} ) ^ 2 \right ) = n \cdot 2 \Delta ^ 2 = 2 T^ 2 / n \xrightarrow {n \to\infty } 0 \) .
\textbf { Conclusion:} \( \sum ( W_{t_{k + 1 }} - W_{t_k} ) ^ 2 \xrightarrow {L^ 2 } T \) . We write \( dW_t^ 2 = dt \) .\\
This \textbf { single identity} is the engine of all Itō calculus.
\begin { tcolorbox} [colback=thmbg!60,colframe=optgold,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Theorem / Key Idea}} — Why dW² = dt is remarkable} ,breakable]
In ordinary calculus, $ dx^ 2 \approx dx \cdot dx \to 0 $ (second-order infinitesimal).
For Brownian motion, $ ( dW ) ^ 2 = dt $ is **first-order** — it does **not** vanish!
Physically: BM paths oscillate so rapidly ($ \sim t^{ 0 . 5 } $ scale) that their squared
increments accumulate at rate $ 1 $ — comparable to the drift $ dt $ .
This is the **only** reason Itō's lemma has an extra term.
\end { tcolorbox}
\textbf { Multiple sample paths} --- the fan widens as \( \propto\sqrt {t} \) :
\begin { verbatim}
W_ t
+2 | ...........
| .... .....
0 |.. ..... <- E[W_ t] = 0 (all paths centered)
| ....--......
-2 | ........
+--------------------------> t
0 T
Width ~ 2*sqrt(t) (95% of paths stay within +/- 2*sqrt(t))
Each dot is a BM path — different because different coin flips.
As T grows, the "trumpet" opens wider.
\end { verbatim}
\textbf { Example --- Geometric BM:} \( S_t = S_ 0 \exp\!\bigl (( \mu - \tfrac 12 \sigma ^ 2 ) t + \sigma W_t \bigr ) \) is the Black-Scholes price model. Log-normal marginals; continuous, nowhere-differentiable paths:
\begin { verbatim}
S_ t
| .---.
| .--./ \- ---.
| / \- --------.
|/
+-------------------------------> t
0 T
\end { verbatim}
\textbf { Multiple sample paths} --- the fan widens as \( \propto\sqrt {t} \) :
\begin { verbatim}
W_ t
+2 | ...........
| .... .....
0 |.. ..... <- E[W_ t] = 0 (all paths centered)
| ....--......
-2 | ........
+--------------------------> t
0 T
Width grows as sqrt(t) (68% of paths stay within +/- sqrt(t))
\end { verbatim}
\textbf { Example --- Geometric BM:} \( S_t = S_ 0 \exp\!\bigl (( \mu - \tfrac 12 \sigma ^ 2 ) t + \sigma W_t \bigr ) \) is the Black-Scholes price model. Log-normal marginals; continuous, nowhere-differentiable paths:
\begin { verbatim}
S_ t
| .---.
| .--./ \\ ----.
| / \\ ---------.
|/
+-------------------------------> t
0 T
\end { verbatim}
\subsubsection { 2.2 Itō Calculus} \label { itux14d-calculus}
\paragraph { 2.2.0 Why You Cannot Use Ordinary Integration} \label { why-you-cannot-use-ordinary-integration}
Attempt to define \( \int _ 0 ^T W_t \, dW_t \) using a Riemann sum: pick \( W_{t_k} \) at the \textbf { left endpoint} → get one answer; pick \( ( W_{t_k} + W_{t_{k + 1 }} )/ 2 \) (midpoint) → get a \emph { different} answer.
This ambiguity occurs because \( W \) is not of bounded variation. \textbf { Itō's convention} (left endpoint) is the only one that produces a \textbf { martingale} --- ensuring no look-ahead.
\begin { tcolorbox} [colback=defbg!60,colframe=optblue,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Definition}} — Definition — Itō Integral} ,breakable]
For adapted $ f \in \mathcal {L}^ 2 $ (i.e. $ \mathbb {E} \!\int _ 0 ^T f_t^ 2 \, dt < \infty $ ):
$$ \int _ 0 ^T f_t \, dW_t \; : = \; L^ 2 \text { - } \lim _{| \pi | \to 0 } \sum _{k} f_{t_k} ( W_{t_{k + 1 }} - W_{t_k} ) . $$
Key guarantees:
- **Zero mean:** $ \mathbb {E} \!\left [ \int _ 0 ^T f_t \, dW_t \right ] = 0 $ .
- **Itō isometry:** $ \mathbb {E} \!\left [ \left ( \int _ 0 ^T f_t \, dW_t \right ) ^ 2 \right ] = \mathbb {E} \!\int _ 0 ^T f_t^ 2 \, dt $ .
- **Martingale:** $ M_t = \int _ 0 ^t f_s \, dW_s $ satisfies $ \mathbb {E} [ M_t \mid\mathcal {F}_s ]= M_s $ .
\end { tcolorbox}
\textbf { Itō isometry --- proof sketch:} \\
Let \( I_T = \sum _k f_{t_k} \Delta W_k \) (simple process). Then:
\[ \mathbb {E} [ I_T^ 2 ] = \sum _{j,k} \underbrace { \mathbb {E} [ f_{t_j} \Delta W_j \cdot f_{t_k} \Delta W_k ] }_{ \text {cross terms}} \]
For \( j \neq k \) (say \( j < k \) ): \( f_{t_j} \Delta W_j \) and \( f_{t_k} \) are both \( \mathcal {F}_{t_k} \) -measurable, while \( \Delta W_k \) is \textbf { independent} of \( \mathcal {F}_{t_k} \) with mean 0 → cross term \( = 0 \) .
For \( j = k \) : \( \mathbb {E} [ f_{t_j}^ 2 ( \Delta W_j ) ^ 2 ] = \mathbb {E} [ f_{t_j}^ 2 ] \Delta t_j \) (independence of \( f_{t_j} \) and \( \Delta W_j \) ).
\[ \Rightarrow \mathbb {E} [ I_T^ 2 ] = \sum _k \mathbb {E} [ f_{t_k}^ 2 ] \Delta t_k \xrightarrow {| \pi | \to 0 } \mathbb {E} \int _ 0 ^T f_t^ 2 \, dt. \quad \checkmark \]
\paragraph { 2.2.1 Itō's Lemma --- Full Derivation} \label { itux14ds-lemma-full-derivation}
\begin { tcolorbox} [colback=thmbg!60,colframe=optgold,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Theorem / Key Idea}} — Theorem — Itō's Lemma} ,breakable]
For $ dX_t = \mu _t \, dt + \sigma _t \, dW_t $ and $ F \in C^{ 1 , 2 } ([ 0 ,T ] \times\mathbb {R} ) $ :
$$ \boxed {dF ( t,X_t ) = \partial _t F \, dt + \partial _x F \, dX_t + \tfrac { 1 }{ 2 } \sigma _t^ 2 \,\partial _{xx}F \, dt} $$
Expanded:
$$ dF = \underbrace { \left ( \partial _t F + \mu _t \,\partial _x F + \tfrac 12 \sigma _t^ 2 \,\partial _{xx}F \right ) }_{ \text {drift}} \, dt
+ \underbrace { \sigma _t \,\partial _x F}_{ \text {diffusion}} \, dW_t. $$
\end { tcolorbox}
\textbf { Derivation --- Taylor expand \( F ( t + dt, X_{t + dt} ) \) :}
\[ dF = \partial _t F \, dt + \partial _x F \, dX + \tfrac 12 \partial _{xx}F \, ( dX ) ^ 2 + \underbrace { \partial _{tx}F \, dt \, dX + \ldots }_{ \to 0 } \]
Compute \( ( dX ) ^ 2 \) using the \textbf { Itō multiplication table} :
{ \def\LTcaptype { none} % do not increment counter
\begin { longtable} []{ @{} lll@{}}
\toprule\noalign {}
× & \( dt \) & \( dW_t \) \\
\midrule\noalign {}
\endhead
\bottomrule\noalign {}
\endlastfoot
\( dt \) & \( 0 \) & \( 0 \) \\
\( dW_t \) & \( 0 \) & \( dt \) \\
\end { longtable}
}
\[ \begin {aligned}
( dX_t ) ^ 2 & = ( \mu _t \, dt + \sigma _t \, dW_t ) ^ 2 \\
& = \mu _t^ 2 \underbrace { ( dt ) ^ 2 }_{ 0 } + 2 \mu _t \sigma _t \underbrace {dt \cdot dW_t}_{ 0 } + \sigma _t^ 2 \underbrace { ( dW_t ) ^ 2 }_{dt} \\
& = \sigma _t^ 2 \, dt.
\end {aligned} \]
Substituting:
\[ dF = \partial _t F \, dt + \partial _x F ( \mu _t \, dt + \sigma _t \, dW_t ) + \tfrac 12 \partial _{xx}F \cdot\sigma _t^ 2 \, dt \]
\[ = \left ( \partial _t F + \mu _t \partial _x F + \tfrac 12 \sigma _t^ 2 \partial _{xx}F \right ) dt + \sigma _t \partial _x F \, dW_t. \quad \checkmark \]
\textbf { The extra term \( \tfrac 12 \sigma ^ 2 \partial _{xx}F \, dt \) is the ``Itō correction''.} \\
In ordinary calculus \( ( dW ) ^ 2 = 0 \) , so it vanishes. In stochastic calculus, BM oscillates so rapidly that \( ( dW ) ^ 2 = dt \) --- a first-order effect.
\textbf { Multidimensional version} (for vector \( \mathbf {X} \in\mathbb {R}^n \) , matrix noise):
\[ dF = \partial _t F \, dt + \sum _i \partial _{x_i}F \, dX_i + \tfrac 12 \sum _{i,j} \partial _{x_ix_j}F \, d [ X_i,X_j ] _t \]
where \( d [ X_i, X_j ] _t = d \langle X_i, X_j \rangle _t \) is the quadratic co-variation.
\paragraph { 2.2.2 Worked Examples of Itō's Lemma} \label { worked-examples-of-itux14ds-lemma}
\textbf { Example 1 --- GBM, derive explicit solution:}
SDE: \( dS_t = \mu S_t \, dt + \sigma S_t \, dW_t \) .
\textbf { Goal:} Find \( S_t \) in closed form.
\textbf { Step 1} --- Guess \( F ( t,x ) = \log x \) . Compute partials: \( \partial _t F = 0 \) , \( \partial _x F = 1 / x \) , \( \partial _{xx}F = - 1 / x^ 2 \) .
\textbf { Step 2} --- Apply Itō's lemma:
\[ d ( \log S_t ) = 0 + \frac { 1 }{S_t} \, dS_t + \tfrac 12 \cdot (- \tfrac { 1 }{S_t^ 2 } ) \cdot\sigma ^ 2 S_t^ 2 \, dt \]
\[ = \frac { \mu S_t \, dt + \sigma S_t \, dW_t}{S_t} - \tfrac 12 \sigma ^ 2 \, dt \]
\[ = \left ( \mu - \tfrac 12 \sigma ^ 2 \right ) \, dt + \sigma\, dW_t. \]
\textbf { Step 3} --- Integrate (deterministic integral + Itō integral):
\[ \log S_T - \log S_ 0 = \left ( \mu - \tfrac 12 \sigma ^ 2 \right ) T + \sigma W_T. \]
\textbf { Step 4} --- Exponentiate:
\[ \boxed {S_T = S_ 0 \exp\!\left [ \left ( \mu - \tfrac 12 \sigma ^ 2 \right ) T + \sigma W_T \right ] .} \]
The \textbf { Itō correction} \( - \tfrac 12 \sigma ^ 2 T \) lowers the expected log-return: \( \mathbb {E} [ \log S_T ] = \log S_ 0 + ( \mu - \tfrac 12 \sigma ^ 2 ) T \) , but \( \mathbb {E} [ S_T ] = S_ 0 e^{ \mu T} \) (Jensen's inequality explains the gap: \( e^{ \mathbb {E} [ X ] } < \mathbb {E} [ e^X ] \) for non-degenerate \( X \) ).
\begin { verbatim}
log S_ t
| Ito correction: slope = mu - sigma^ 2/2 (lower than mu!)
| _ .-'
| / <- Without Ito correction, slope would be mu (wrong!)
|/
+----------------------------> t
E[log S_ t] = log S_ 0 + (mu - sigma^ 2/2)*t
(time-averaged growth, always less than mu for sigma > 0)
\end { verbatim}
\textbf { Example 2 --- Itō product rule (\( d ( X_t Y_t ) \) ):}
By Itō's lemma applied to \( F ( x,y ) = xy \) :
\[ d ( X_t Y_t ) = Y_t \, dX_t + X_t \, dY_t + d [ X,Y ] _t \]
where \( d [ X,Y ] _t = \sigma _X \sigma _Y \, dt \) . Compare to ordinary calculus: \( d ( xy ) = y \, dx + x \, dy \) (no cross term because \( ( dx ) ^ 2 = 0 \) ).
\textbf { Example 3 --- Integration by parts for stochastic integrals:}
\[ \int _ 0 ^T W_t \, dW_t = \tfrac 12 W_T^ 2 - \tfrac 12 T. \]
Ordinary calculus would give \( \int _ 0 ^T W_t \, dW_t = \tfrac 12 W_T^ 2 \) . The \( - \tfrac 12 T \) correction comes from the quadratic variation.
\textbf { Verification via Itō's lemma:} Set \( F ( t,x ) = x^ 2 / 2 \) : \( dF = x \, dW + \tfrac 12 \cdot 1 \cdot dt = W_t \, dW_t + \tfrac 12 \, dt \) . Integrate: \( \tfrac 12 W_T^ 2 - 0 = \int _ 0 ^T W_t \, dW_t + \tfrac 12 T \) → result follows. ✓
\paragraph { 2.2.3 Itō vs Stratonovich} \label { itux14d-vs-stratonovich}
{ \def\LTcaptype { none} % do not increment counter
\begin { longtable} []{ @{}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.2222}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.2889}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.4889}} @{}}
\toprule\noalign {}
\begin { minipage} [b]{ \linewidth } \raggedright
Property
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Itō integral
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Stratonovich integral (\( \circ \) )
\end { minipage} \\
\midrule\noalign {}
\endhead
\bottomrule\noalign {}
\endlastfoot
Chain rule & Modified (\( + \tfrac 12 \sigma ^ 2 \partial _{xx}F \) term) & Standard calculus chain rule \\
Martingale & Yes (if \( f \) adapted) & No in general \\
Use in finance & Natural (no look-ahead) & Physics, geometry \\
Conversion & \( \int f \circ dW = \int f \, dW + \tfrac 12 \int \partial _x f \,\sigma\, dt \) & (same identity) \\
SDE solutions & Different numerics needed & Standard ODE methods work \\
\end { longtable}
}
\textbf { Conversion formula} --- Itō \( \to \) Stratonovich:
\[ \int _ 0 ^T f ( X_t ) \circ dW_t = \int _ 0 ^T f ( X_t ) \, dW_t + \tfrac { 1 }{ 2 } \int _ 0 ^T f' ( X_t ) \sigma _t \, dt. \]
\textbf { Rule of thumb:} Use Itō in finance (causality, no-arbitrage); use Stratonovich in physics/differential geometry (coordinate-invariant chain rule).
\subsubsection { 2.3 General Itō SDEs} \label { general-itux14d-sdes}
\[ dX_t = b ( t, X_t ) \, dt + \boldsymbol { \sigma } ( t, X_t ) \, dW_t, \quad X_ 0 = x_ 0 . \]
\paragraph { 2.3.0 Existence, Uniqueness and Picard Iteration} \label { existence-uniqueness-and-picard-iteration}
\begin { tcolorbox} [colback=thmbg!60,colframe=optgold,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Theorem / Key Idea}} — Theorem — Strong Solution Existence (Picard– Lindelöf for SDEs)} ,breakable]
If $ b $ and $ \sigma $ are **globally Lipschitz** in $ x $ (uniformly in $ t $ ):
$ \| b ( t,x )- b ( t,y ) \| + \|\sigma ( t,x )- \sigma ( t,y ) \| \le L \| x - y \| $ ,
and satisfy **linear growth**: $ \| b ( t,x ) \| ^ 2 + \|\sigma ( t,x ) \| ^ 2 \le C^ 2 ( 1 + \| x \| ^ 2 ) $ ,
then there exists a **unique strong solution** with $ \mathbb {E} \!\left [ \sup _{t \le T} \| X_t \| ^ 2 \right ] < \infty $ .
\end { tcolorbox}
\textbf { Picard iteration --- construct the solution step by step:}
Set \( X_t^{ ( 0 ) } = x_ 0 \) (constant). For \( n \ge 0 \) :
\[ X_t^{ ( n + 1 ) } = x_ 0 + \int _ 0 ^t b ( s, X_s^{ ( n ) } ) \, ds + \int _ 0 ^t \sigma ( s, X_s^{ ( n ) } ) \, dW_s. \]
\textbf { Intermediate step --- bound the error:}
Let \( \varepsilon _n ( t ) = \mathbb {E} \!\left [ \sup _{s \le t}|X_s^{ ( n + 1 ) } - X_s^{ ( n ) }|^ 2 \right ] \) .
By Doob's \( L^ 2 \) -inequality and Lipschitz:
\[ \varepsilon _{n + 1 } ( t ) \le 2 ( L^ 2 T + L^ 2 ) \int _ 0 ^t \varepsilon _n ( s ) \, ds. \]
By induction: \( \varepsilon _n ( t ) \le C \cdot \frac { ( 2 L^ 2 ( T + 1 ) t ) ^n}{n ! } \to 0 \) . Geometric series → \( X^{ ( n ) } \) is Cauchy in \( L^ 2 \) → converges to the unique solution.
\textbf { Intuition:}
\begin { verbatim}
Picard iteration (simplest case: dx = f(x) dt):
X^ (0): --------- x_ 0 (constant)
X^ (1): x_ 0 + int_ 0^ t f(x_ 0) ds = x_ 0 + f(x_ 0)*t (linear approx)
X^ (2): x_ 0 + int_ 0^ t f(X^ (1)) ds (use X^ (1) in drift)
X^ (3): ...
Each iteration captures one more "correction layer":
n=0: constant n=1: linear n=2: quadratic ...
\end { verbatim}
\paragraph { 2.3.1 The Fokker-Planck Equation --- How Densities Evolve} \label { the-fokker-planck-equation-how-densities-evolve}
If \( X_t \) has density \( p ( t,x ) \) , then \( p \) satisfies the \textbf { Fokker-Planck (Kolmogorov forward) PDE} :
\[ \frac { \partial p}{ \partial t} = - \frac { \partial }{ \partial x} [ b ( t,x ) \, p ] + \frac { 1 }{ 2 } \frac { \partial ^ 2 }{ \partial x^ 2 } [ \sigma ^ 2 ( t,x ) \, p ] . \]
\textbf { Derivation sketch:} For any test function \( \phi \) :
\[ \frac {d}{dt} \mathbb {E} [ \phi ( X_t )] = \mathbb {E} [ \mathcal {L} \phi ( X_t )] = \mathbb {E} \!\left [ b \,\phi ' + \tfrac 12 \sigma ^ 2 \phi '' \right ] \]
using Itō's lemma on \( \phi ( X_t ) \) . Integration by parts in the \( x \) -integral transfers derivatives from \( \phi \) to \( p \) , giving the Fokker-Planck equation.
\textbf { Visual --- density flows rightward (positive drift) and spreads (positive diffusion):}
\begin { verbatim}
p(t, x) — probability density at time t
t=0: | peak at x_ 0
| ***
| * * <- narrow initial density
| * *
+-----------------> x
x_ 0
t=T/2: | peak shifted right
| ***
| * * <- wider (diffusion spreads it)
| * *
+-----------------> x
x_ 0 + mu*T/2
t=T: | peak drifted further
| ***
| * * <- even wider
| * *
+--------------------------> x
x_ 0 + mu*T
\end { verbatim}
\textbf { For OU: \( b = \kappa ( \theta - x ) \) , \( \sigma \) = const} → stationary solution \( p_ \infty ( x ) = \mathcal {N} ( \theta , \sigma ^ 2 / 2 \kappa ) \) .
\paragraph { 2.3.2 Common SDE Reference Table} \label { common-sde-reference-table}
{ \def\LTcaptype { none} % do not increment counter
\begin { longtable} []{ @{}
>{ \raggedright\arraybackslash } p{ (\linewidth - 8\tabcolsep ) * \real { 0.1304}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 8\tabcolsep ) * \real { 0.0725}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 8\tabcolsep ) * \real { 0.2754}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 8\tabcolsep ) * \real { 0.2464}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 8\tabcolsep ) * \real { 0.2754}} @{}}
\toprule\noalign {}
\begin { minipage} [b]{ \linewidth } \raggedright
Process
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
SDE
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Closed-form \( X_t \)
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Stationary dist.
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Use in Optimiz-rs
\end { minipage} \\
\midrule\noalign {}
\endhead
\bottomrule\noalign {}
\endlastfoot
Brownian motion & \( dX = \sigma\, dW \) & \( X_ 0 + \sigma W_t \) & --- & Noise baseline \\
Geometric BM & \( dX = \mu X \, dt + \sigma X \, dW \) & \( X_ 0 e^{ ( \mu - \sigma ^ 2 / 2 ) t + \sigma W_t} \) & Log-normal & Price model \\
Ornstein-Uhlenbeck & \( dX = \kappa ( \theta - X ) \, dt + \sigma\, dW \) & (see §2.4) & \( \mathcal {N} ( \theta , \sigma ^ 2 / 2 \kappa ) \) & Spread model \\
CIR & \( dX = \kappa ( \theta - X ) \, dt + \sigma\sqrt {X} \, dW \) & (Bessel process) & Gamma\( ( 2 \kappa\theta / \sigma ^ 2 , \sigma ^ 2 / 2 \kappa ) \) & Volatility, rates \\
SABR & \( dF = \sigma F^ \beta dW^ 1 \) , \( d \sigma = \nu\sigma\, dW^ 2 \) & (no closed form) & --- & Volatility model \\
\end { longtable}
}
\paragraph { 2.3.3 Numerical Schemes for SDEs} \label { numerical-schemes-for-sdes}
When no closed form exists, discretize with step \( \Delta t \) :
\textbf { Euler-Maruyama} (simplest, strong order 0.5):
\[ X_{t + \Delta t} \approx X_t + b ( t,X_t ) \,\Delta t + \sigma ( t,X_t ) \,\Delta W_t \]
where \( \Delta W_t = \sqrt { \Delta t} \, Z \) , \( Z \sim\mathcal {N} ( 0 , 1 ) \) .
\textbf { Milstein} (includes first-order Itō correction, strong order 1.0):
\[ X_{t + \Delta t} \approx X_t + b \,\Delta t + \sigma\,\Delta W_t + \tfrac 12 \sigma\,\sigma _x \bigl [( \Delta W_t ) ^ 2 - \Delta t \bigr ] . \]
The extra term \( \tfrac 12 \sigma\sigma _x [( \Delta W_t ) ^ 2 - \Delta t ] \) comes from applying Itō's lemma to \( \sigma ( X_t ) dW_t \) .
\begin { verbatim}
Error comparison (log scale):
| Euler-Maruyama (slope = 0.5)
| *
| *
| *
| * Milstein (slope = 1.0)
| o
| o
| o
+----------------------------> log(Delta_ t)
(Milstein converges MUCH faster: halving dt reduces error by 4x instead of 2x)
\end { verbatim}
\subsubsection { 2.4 Ornstein-Uhlenbeck (Mean-Reversion)} \label { ornstein-uhlenbeck-mean-reversion}
2026-03-06 20:22:35 +01:00
Used in Optimiz-rs's \texttt { sparse\_ mean\_ reversion} and \texttt { ou\_ estimator} modules:
2026-03-07 09:44:08 +01:00
\[ dX_t = \kappa ( \theta - X_t ) \, dt + \sigma\, dW_t. \]
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Intuition --- restoring force:} The drift is a spring pulling \( X_t \) back to \( \theta \) :
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
X_ t
| upper band: theta + sigma/sqrt(2*kappa)
| .--. . ___ <-- random excursions
| / v /\ / \
|/ v / \ ----- long-run mean: theta (equilibrium)
| \ \. ...
| \_ __ /
| lower band: theta - sigma/sqrt(2*kappa)
+-------------------------------> t
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
Arrows: mean-reversion pull toward theta with speed kappa.
Half-life = ln(2) / kappa.
Strong kappa: tight oscillations around theta (faster spring)
Weak kappa: slow drift back (loose spring, more "random walk" like)
\end { verbatim}
\paragraph { 2.4.1 Closed-Form Solution --- Step by Step} \label { closed-form-solution-step-by-step}
\textbf { Step 1 --- Integrating factor.} Rewrite the SDE as:
\[ dX_t + \kappa X_t \, dt = \kappa\theta\, dt + \sigma\, dW_t. \]
Multiply both sides by the integrating factor \( e^{ \kappa t} \) and recognize the left-hand side:
\[ d \!\left ( e^{ \kappa t}X_t \right ) = e^{ \kappa t}dX_t + \kappa e^{ \kappa t}X_t \, dt = e^{ \kappa t} \kappa\theta\, dt + e^{ \kappa t} \sigma\, dW_t. \]
(Here we used Itō's product rule: \( d ( e^{ \kappa t}X_t ) = e^{ \kappa t}dX_t + X_t \cdot\kappa e^{ \kappa t}dt \) --- no quadratic variation cross term since \( e^{ \kappa t} \) is deterministic.)
\textbf { Step 2 --- Integrate both sides from \( 0 \) to \( t \) :}
\[ e^{ \kappa t}X_t - X_ 0 = \kappa\theta\int _ 0 ^t e^{ \kappa s} \, ds + \sigma\int _ 0 ^t e^{ \kappa s} \, dW_s \]
\[ e^{ \kappa t}X_t - X_ 0 = \theta ( e^{ \kappa t} - 1 ) + \sigma\int _ 0 ^t e^{ \kappa s} \, dW_s. \]
\textbf { Step 3 --- Divide by \( e^{ \kappa t} \) :}
\[ \boxed {X_t = \theta + ( X_ 0 - \theta ) e^{ - \kappa t} + \sigma\int _ 0 ^t e^{ - \kappa ( t - s ) } \, dW_s.} \]
\textbf { Interpretation of each term:}
{ \def\LTcaptype { none} % do not increment counter
\begin { longtable} []{ @{}
>{ \raggedright\arraybackslash } p{ (\linewidth - 2\tabcolsep ) * \real { 0.4000}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 2\tabcolsep ) * \real { 0.6000}} @{}}
\toprule\noalign {}
\begin { minipage} [b]{ \linewidth } \raggedright
Term
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Meaning
\end { minipage} \\
\midrule\noalign {}
\endhead
\bottomrule\noalign {}
\endlastfoot
\( \theta \) & Long-run equilibrium (the ``anchor'') \\
\( ( X_ 0 - \theta ) e^{ - \kappa t} \) & Deterministic decay: initial displacement shrinks at rate \( \kappa \) \\
\( \sigma\int _ 0 ^t e^{ - \kappa ( t - s ) }dW_s \) & Stochastic part: weighted sum of all past noise shocks, with \textbf { exponential forgetting} \\
\end { longtable}
}
The stochastic integral \( I_t = \sigma\int _ 0 ^t e^{ - \kappa ( t - s ) }dW_s \) is a \textbf { Gaussian} random variable (linear functional of Brownian motion) with:
\[ \mathbb {E} [ I_t ] = 0 , \qquad \operatorname {Var} ( I_t ) = \sigma ^ 2 \int _ 0 ^t e^{ - 2 \kappa ( t - s ) } \, ds = \frac { \sigma ^ 2 }{ 2 \kappa } ( 1 - e^{ - 2 \kappa t} ) . \]
\textbf { Step 4 --- Marginal distribution:}
\[ X_t \sim \mathcal {N} \!\left ( \theta + ( X_ 0 - \theta ) e^{ - \kappa t}, \;\frac { \sigma ^ 2 }{ 2 \kappa } ( 1 - e^{ - 2 \kappa t} ) \right ) . \]
As \( t \to\infty \) : \( X_t \to \mathcal {N} ( \theta , \sigma ^ 2 / 2 \kappa ) \) --- the stationary distribution.
\paragraph { \texorpdfstring { 2.4.2 Transition Density (Conditional on \( X_s \) )}{ 2.4.2 Transition Density (Conditional on X\_ s)}} \label { transition-density-conditional-on-x_ s}
\[ X_t \mid X_s \sim \mathcal {N} \!\left ( \theta + ( X_s - \theta ) e^{ - \kappa ( t - s ) }, \;\frac { \sigma ^ 2 }{ 2 \kappa } ( 1 - e^{ - 2 \kappa ( t - s ) } ) \right ) , \quad t > s. \]
This is exact (no approximation) because the OU process is \textbf { linear} . Key formulas:
\[ \hat\mu ( \tau ) = \theta + ( X_s - \theta ) e^{ - \kappa\tau }, \qquad \hat\sigma ^ 2 ( \tau ) = \frac { \sigma ^ 2 }{ 2 \kappa } ( 1 - e^{ - 2 \kappa\tau } ) , \quad \tau = t - s. \]
\begin { verbatim}
Transition density spreading over time:
p(x_ t | x_ 0 = x_ 0)
t=0: delta function at x_ 0
|
|* <- spike
t=0.2: | ****
|* * <- bell curve, mean shifted toward theta
t=T: | ****
| * * <- centered at theta, wider
| * *
+-----------> x
\end { verbatim}
\paragraph { 2.4.3 Half-Life and Mean-Reversion Speed} \label { half-life-and-mean-reversion-speed}
\textbf { Half-life:} \( \tau _{ 1 / 2 } = \ln 2 / \kappa \) --- time for the initial displacement to halve.
{ \def\LTcaptype { none} % do not increment counter
\begin { longtable} []{ @{} lll@{}}
\toprule\noalign {}
\( \kappa \) (per year) & Half-life & Typical use \\
\midrule\noalign {}
\endhead
\bottomrule\noalign {}
\endlastfoot
0.2 & 3.5 yr & Long-term macro factors \\
10 & 25 days & Cross-sectional equity spreads \\
55 & 4.6 days & Short-term pair spreads \\
252 & 1 trading day & Intraday alpha signals \\
\end { longtable}
}
\textbf { MLE log-likelihood} (discrete observations at spacing \( \Delta t \) ):
\[ \ell ( \kappa , \theta , \sigma ) = - \frac { 1 }{ 2 } \sum _{i = 1 }^{n} \left [ \log ( 2 \pi\hat\sigma ^ 2 ) + \frac { ( X_{t_i} - \hat\mu _i ) ^ 2 }{ \hat\sigma ^ 2 } \right ] , \]
where \( \hat\mu _i = \theta + ( X_{t_{i - 1 }} - \theta ) e^{ - \kappa\Delta t} \) and \( \hat\sigma ^ 2 = \frac { \sigma ^ 2 }{ 2 \kappa } ( 1 - e^{ - 2 \kappa\Delta t} ) \) .
\textbf { Score equations} (differentiate \( \ell \) and set to zero):
\[ \frac { \partial\ell }{ \partial\theta } = \sum _i \frac {X_{t_i} - \hat\mu _i}{ \hat\sigma ^ 2 } ( 1 - e^{ - \kappa\Delta t} ) = 0 , \]
\[ \frac { \partial\ell }{ \partial\kappa } = \sum _i \frac { ( X_{t_i} - \hat\mu _i ) }{ \hat\sigma ^ 2 } ( X_{t_{i - 1 }} - \theta ) \Delta t \, e^{ - \kappa\Delta t} - \sum _i \frac { \partial\log\hat\sigma ^ 2 }{ \partial\kappa } = 0 . \]
These are nonlinear in \( \kappa \) ; Optimiz-rs solves them with DE (\texttt { ou\_ estimator::fit\_ mle()} ).
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Calibrating OU to an Equity-Pair Spread} ,breakable]
**Data:** Daily log-spread $ X_t = \log ( P_A / P_B ) $ for a co-integrated pair,
$ n = 250 $ observations, $ \Delta t = 1 / 252 $ years.
**Step 1 — MLE:** Maximize $ \ell ( \kappa , \theta , \sigma ) $ using `ou_ estimator::fit_ mle()`.
**Step 2 — Intermediate verification:** The OU log-likelihood surface:
```
ell(kappa, theta | sigma_ hat)
kappa
^
| +++ <- log-lik thickening near true kappa
| +++++
| +++++++
| +++++
| +++
|
+-------------------------> theta
(theta_ hat is the sample mean of X_ t, very well identified)
(kappa is harder: need long series to identify mean-reversion speed)
```
**Typical results:**
| Parameter | Estimate | Interpretation |
|-----------|----------|----------------|
| $ \hat\kappa $ | 55/yr | half-life approx 4.6 days |
| $ \hat\theta $ | 0.003 | long-run spread approx 0.3% |
| $ \hat\sigma $ | 0.12/yr$ ^{ 0 . 5 } $ | daily spread vol approx 0.75% |
**Step 3 — Diagnostic:**
Standardized residuals: $ r_i = ( X_{t_i} - \hat\mu _i )/ \hat\sigma $ should be $ \mathcal {N} ( 0 , 1 ) $ .
```
r_ i histogram vs N(0,1)
| .
| . . <- histogram bars (sample)
|. . .........
| .......... <- N(0,1) curve (theory)
| . .
+------|------|-----> r_ i
-2 +2
```
Ljung-Box test: checks for remaining autocorrelation in $ r_i $ .
**Step 4 — Trading signal:**
Enter when $ |X_t - \hat\theta | > 2 \hat\sigma _ \infty $ where $ \hat\sigma _ \infty = \hat\sigma / \sqrt { 2 \hat\kappa } $ .
Exit at $ X_t = \hat\theta $ . Expected holding time $ \approx \hat\tau _{ 1 / 2 } = \ln 2 / \hat\kappa \approx 4 . 6 $ days.
**P& L decomposition:**
- Gross expected profit per trade $ \approx 2 \hat\sigma _ \infty = 2 \hat\sigma / \sqrt { 2 \hat\kappa } $ .
- Transaction costs must be $ < 2 \hat\sigma _ \infty $ for profitability.
\end { tcolorbox}
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsection { 3 · Jump Processes} \label { jump-processes}
2026-03-06 20:22:35 +01:00
Many financial time series exhibit sudden large moves that Brownian motion cannot capture.
2026-03-07 09:44:08 +01:00
\subsubsection { 3.1 Poisson Process} \label { poisson-process}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { tcolorbox} [colback=defbg!60,colframe=optblue,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Definition}} — Definition — Poisson Process} ,breakable]
A counting process $ N = ( N_t ) _{t \ge 0 } $ is a *Poisson process with
intensity* $ \lambda > 0 $ if:
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
1. $ N_ 0 = 0 $ .
2. Independent, stationary increments.
3. $ \mathbb {P} ( N_{t + h} - N_t = 1 ) = \lambda h + o ( h ) $ and $ \mathbb {P} ( \Delta N > 1 ) = o ( h ) $ .
\end { tcolorbox}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
Equivalently, \( N_t \sim \text {Poisson} ( \lambda t ) \) and inter-arrival times are \( \text {Exp} ( \lambda ) \) . The \emph { compensated} process \( \tilde N_t = N_t - \lambda t \) is a martingale.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Sample path --- step function with random jumps (\( \lambda = 2 \) per unit time):}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
N_ t
5 | ___________
4 | ___________
3 | ______
2 | ______
1 |____
0 |
+-----|------|-------|------|---------> t
tau1 tau2 tau3 tau4
(Exp(lambda) inter-arrivals, each tau_ i ~ Exp(2))
\end { verbatim}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { 3.2 Compound Poisson Jump-Diffusion (Merton 1976)} \label { compound-poisson-jump-diffusion-merton-1976}
\[ \frac {dS_t}{S_{t^ - }} = \mu\, dt + \sigma\, dW_t + d \Bigl ( \sum _{k = 1 }^{N_t} ( e^{J_k} - 1 ) \Bigr ) , \]
with \( N_t \) Poisson(\( \lambda \) ) and \( J_k \sim \mathcal {N} ( \mu _J, \sigma _J^ 2 ) \) .
\textbf { Sample path --- smooth diffusion interrupted by sudden jumps:}
\begin { verbatim}
S_ t
| ^ jump +15%
| /|
| / |
| / | v jump -20%
| / \\ /|
| / \\ _______ / |
| / \\ ____
| / \\ ...
| /
+---------------------------------> t
(Brownian between jumps; jump times ~ Poisson)
\end { verbatim}
\textbf { Merton option price} --- Poisson mixture of Black-Scholes prices:
\[ C_{ \text {Merton}} = \sum _{n = 0 }^ \infty \frac {e^{ - \lambda ' T} ( \lambda ' T ) ^n}{n ! }
\cdot C_{ \text {BS}} \!\left ( S_ 0 , K, T, r_n, \sigma _n^ 2 \right ) , \]
where \( \lambda ' = \lambda e^{ \mu _J + \frac 12 \sigma _J^ 2 } \) , \( r_n = r - \lambda ( e^{ \mu _J + \frac 12 \sigma _J^ 2 } - 1 ) + n ( \mu _J + \tfrac 12 \sigma _J^ 2 )/ T \) , and \( \sigma _n^ 2 = \sigma ^ 2 + n \sigma _J^ 2 / T \) .
\textbf { Intuition:} Condition on exactly \( n \) jumps occurring (probability \( e^{ - \lambda ' T} ( \lambda ' T ) ^n / n ! \) ). In that scenario the world is a BS world with adjusted drift \( r_n \) and total variance \( \sigma ^ 2 T + n \sigma _J^ 2 \) . Average over the Poisson distribution of \( n \) .
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Fitting Merton to a Crash Event} ,breakable]
**Observed:** S& P 500, March 2020. Implied vol surface shows a vol smile —
OTM puts are expensive (fat left tail), which pure BS cannot explain.
**Merton calibration** (4 parameters: $ \sigma , \lambda , \mu _J, \sigma _J $ ):
| Parameter | Estimated value | Interpretation |
|-----------|----------------|----------------|
| $ \sigma $ | 0.18/yr | baseline diffusion vol |
| $ \lambda $ | 3/yr | approx 3 crash events per year |
| $ \mu _J $ | -0.12 | average log-jump = -12% |
| $ \sigma _J $ | 0.08 | jump size std = 8% |
**Fitting procedure:**
1. Collect implied vols for strikes $ K $ and maturities $ T $ .
2. Minimise $ \sum _{K,T} ( C_{ \text {Merton}} ( K,T; \theta ) - C_{ \text {market}} ) ^ 2 $
via `differential_ evolution` (DE is ideal — 4 params, non-convex landscape).
3. **Diagnostic:** Plot Merton vs market smile; expect fit within 0.5 vega.
**Result:** Negative $ \mu _J $ captures left-tail skew, explaining costly OTM puts.
\end { tcolorbox}
\subsubsection { 3.3 Levy Processes and the Levy-Khintchine Representation} \label { levy-processes-and-the-levy-khintchine-representation}
\begin { tcolorbox} [colback=thmbg!60,colframe=optgold,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Theorem / Key Idea}} — Theorem — Levy-Khintchine} ,breakable]
Every Levy process (independent stationary increments) has characteristic function
$$ \mathbb {E} [ e^{i \xi X_t} ] = \exp\!\Bigl ( t \Bigl [ i b \xi - \tfrac { 1 }{ 2 } \sigma ^ 2 \xi ^ 2
+ \int _{ \mathbb {R} \setminus\{ 0 \} } \bigl ( e^{i \xi z} - 1 - i \xi z \mathbf { 1 }_{|z| \le 1 } \bigr ) \nu ( dz ) \Bigr ] \Bigr ) $$
where $ ( b, \sigma ^ 2 , \nu ) $ is the *Levy triplet* and $ \nu $ the *Levy measure*,
2026-03-06 20:22:35 +01:00
satisfying $ \int ( 1 \wedge z^ 2 ) \nu ( dz ) < \infty $ .
2026-03-07 09:44:08 +01:00
\end { tcolorbox}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Levy measure tail shapes:}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
nu(dz)/dz
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
Gaussian BM: nu = 0 (no jump component, only diffusion)
Compound Poisson (rare large jumps):
| ^ ^ (discrete point masses at fixed jump sizes)
+--*----*---> z
Variance Gamma (smooth exponential decay):
|\\
| \\ .
| \\ ...___
+---------> z (heavier left tail than Gaussian)
alpha-stable (power-law heavy tail):
|\\
| \\ .....
+-----------> z (infinite variance, very fat tail)
\end { verbatim}
\textbf { Levy Process Zoo}
{ \def\LTcaptype { none} % do not increment counter
\begin { longtable} []{ @{} lll@{}}
\toprule\noalign {}
Process & Levy measure \( \nu \) & Use case \\
\midrule\noalign {}
\endhead
\bottomrule\noalign {}
\endlastfoot
Brownian motion & \( \nu = 0 \) & continuous diffusion \\
Compound Poisson & finite measure & rare large jumps \\
Variance Gamma & \( \nu ( dz ) \propto e^{ - c|z|} / |z| \) & equity returns \\
CGMY & power-law with exponential cutoff & heavy tails, \( Y \in ( 0 , 2 ) \) \\
\( \alpha \) -stable & \( c|z|^{ - 1 - \alpha } \) & infinite-variance regimes \\
\end { longtable}
}
\subsubsection { 3.4 SDEs with Jumps --- Generator and Ito Formula} \label { sdes-with-jumps-generator-and-ito-formula}
\[ dX_t = b ( X_{t^ - } ) \, dt + \sigma ( X_{t^ - } ) \, dW_t
+ \int _{ \mathbb {R}} c ( X_{t^ - }, z ) \,\tilde N ( dt, dz ) , \]
where \( \tilde N ( dt,dz ) = N ( dt,dz ) - \nu ( dz ) \, dt \) is the \emph { compensated jump measure} .
\textbf { Ito formula for jump-diffusions:}
\[ dF ( X_t ) = \mathcal {L}F \, dt + \partial _x F \,\sigma\, dW_t
+ \int\bigl [ F ( X_{t^ - } + c )- F ( X_{t^ - } ) \bigr ] \tilde N ( dt,dz ) , \]
2026-03-06 20:22:35 +01:00
where the \emph { generator} is
2026-03-07 09:44:08 +01:00
\[ \mathcal {L}F = b \,\partial _x F + \tfrac 12 \sigma ^ 2 \partial _{xx}F
+ \int\bigl [ F ( x + c )- F ( x )- c \,\partial _x F \bigr ] \nu ( dz ) . \]
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsection { 4 · Optimal Control (HJB, PMP, Jumps)} \label { optimal-control-hjb-pmp-jumps}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Big picture.} Optimal control asks: \emph { given a stochastic system we can steer with a control \( u_t \) , what policy minimises expected cost?} Three complementary tools answer this:
{ \def\LTcaptype { none} % do not increment counter
\begin { longtable} []{ @{}
>{ \raggedright\arraybackslash } p{ (\linewidth - 6\tabcolsep ) * \real { 0.1667}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 6\tabcolsep ) * \real { 0.2222}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 6\tabcolsep ) * \real { 0.3056}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 6\tabcolsep ) * \real { 0.3056}} @{}}
\toprule\noalign {}
\begin { minipage} [b]{ \linewidth } \raggedright
Tool
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Solves
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Scales to
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Intuition
\end { minipage} \\
\midrule\noalign {}
\endhead
\bottomrule\noalign {}
\endlastfoot
HJB PDE & Value function \( V ( t,x ) \) & Low dim (PDE grid) & Dynamic programming \\
PMP & Optimal paths \( ( X_t,p_t ) \) & High dim (ODE) & Adjoint sensitivity \\
HJBI & Same as HJB + jumps & Low dim & Non-local integral term \\
\end { longtable}
}
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsubsection { 4.1 Stochastic HJB} \label { stochastic-hjb}
\textbf { Setup.} The state \( X_t \in \mathbb {R}^d \) evolves as
\[ dX_t = b ( X_t,u_t ) \, dt + \sigma ( X_t,u_t ) \, dW_t, \]
2026-03-06 20:22:35 +01:00
and we minimise the total expected cost
2026-03-07 09:44:08 +01:00
\[ J ( t,x;u ) = \mathbb {E} \!\left [ \int _t^T \ell ( X_s,u_s ) \, ds + g ( X_T ) \,\Big | \, X_t = x \right ] . \]
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
The \textbf { value function} \( V ( t,x ) = \inf _u J ( t,x;u ) \) satisfies:
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\[ - \partial _t V = \inf _{u \in\mathcal {U}} \Bigl [ \ell ( x,u ) + \nabla _x V^{ \!\top } b ( x,u )
+ \tfrac 12 \operatorname {Tr} \bigl ( \sigma\sigma ^{ \!\top } ( x,u ) \,\nabla _x^ 2 V \bigr ) \Bigr ] ,
\quad V ( T, \cdot )= g. \]
\textbf { Intuition --- three terms inside the infimum:} - \( \ell ( x,u ) \) --- instantaneous running cost (pay now). - \( \nabla _x V^ \top b \) --- drift of the value function (first-order Taylor in state change). - \( \tfrac 12 \operatorname {Tr} ( \sigma\sigma ^ \top\nabla ^ 2 V ) \) --- curvature correction due to noise (stochastic analogue of the second-order Taylor term).
Under smooth \( V \) , the \textbf { feedback law} is \( u^ \star ( t,x ) = \arg\min _u [ \ell ( x,u )+ \nabla _x V^ \top b ( x,u )] . \)
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Optimal Portfolio Allocation (Merton 1969)} ,breakable]
2026-03-06 20:22:35 +01:00
Investor wealth $ X_t $ follows
$ dX_t = ( r + u_t ( \mu - r )) X_t \, dt + u_t \sigma X_t \, dW_t $ ,
2026-03-07 09:44:08 +01:00
where $ u_t \in\mathbb {R} $ is the fraction invested in the risky asset.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
Minimise $ - \mathbb {E} [ \log X_T ] $ (maximise expected log-utility).
**Ansatz:** $ V ( t,x ) = \ln x + f ( t ) $ . Substituting into HJB:
$$ f' ( t ) = - r - \frac { ( \mu - r ) ^ 2 }{ 2 \sigma ^ 2 }, \qquad f ( T )= 0 . $$
The **optimal Merton rule** is constant:
$$ u^ \star = \frac { \mu - r}{ \sigma ^ 2 } \quad ( \text {fraction in risky asset} ) . $$
Invest a fixed fraction proportional to the Sharpe ratio, inversely to variance —
independent of wealth and time.
2026-03-06 20:22:35 +01:00
\end { tcolorbox}
2026-03-07 09:44:08 +01:00
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { LQR special case} (\( \ell = x^ \top Q x + u^ \top R u \) , \( b = Ax + Bu \) , \( \sigma \) constant): \( V ( t,x )= x^ \top P ( t ) x + v ( t ) \) with \( P \) solving the \emph { matrix Riccati ODE} :
\[ - \dot P = A^ \top P + PA - PBR^{ - 1 }B^ \top P + Q, \quad P ( T )= Q_T. \]
The optimal control is \textbf { linear feedback} : \( u^ \star _t = - R^{ - 1 }B^ \top P ( t ) X_t \) .
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Optimal Inventory (Almgren-Chriss liquidation)} ,breakable]
Liquidate $ X_ 0 $ shares by time $ T $ . Inventory $ X_t $ , trading rate $ u_t< 0 $ :
$$ dX_t = u_t \, dt, \quad
\ell ( x,u ) = \underbrace { \alpha x^ 2 }_{ \text {risk}} + \underbrace { \beta u^ 2 }_{ \text {impact}}. $$
This is a **deterministic LQR** with
$ A = 0 $ , $ B = 1 $ , $ Q = \alpha $ , $ R = \beta $ .
The Riccati solution gives the TWAP-like schedule
$$ u^ \star ( t,x ) = - \frac { \alpha }{ \beta } \cdot\frac { \sinh ( \kappa ( T - t )) }{ \sinh ( \kappa T ) } \cdot X_ 0 ,
\quad \kappa = \sqrt { \alpha / \beta }. $$
Large $ \kappa $ (high risk aversion or low impact cost) -> aggressive front-loaded selling.
2026-03-06 20:22:35 +01:00
\end { tcolorbox}
2026-03-07 09:44:08 +01:00
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { 4.2 Pontryagin Maximum Principle} \label { pontryagin-maximum-principle}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
The PMP avoids the curse of dimensionality --- it converts HJB into a \textbf { two-point boundary-value ODE} in \( ( X_t, p_t ) \) , feasible when a PDE grid is intractable.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { tcolorbox} [colback=thmbg!60,colframe=optgold,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Theorem / Key Idea}} — Theorem (PMP)} ,breakable]
Define the **Hamiltonian** $ \mathcal {H} ( x,u,p ) = \ell ( x,u )+ p^ \top b ( x,u ) $ .
If $ ( X^ \star , u^ \star ) $ is optimal, there exists a **costate** process $ p_t $ with:
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
$$ \dot p_t = - \nabla _x \mathcal {H} ( X_t^ \star , u_t^ \star , p_t ) , \quad p_T = \nabla _x g ( X_T^ \star ) , $$
and the optimality condition $ u_t^ \star = \arg\min _u \mathcal {H} ( X_t^ \star , u, p_t ) $ holds a.e.
\end { tcolorbox}
\textbf { Costate intuition.} \( p_t \) is the \emph { shadow price} of state \( X_t \) :
\[ p_t = \nabla _x V ( t, X_t^ \star ) = \frac { \partial ( \text {optimal cost - to - go} ) }{ \partial x}. \]
This is exactly the adjoint / backpropagation equation of deep learning --- PMP is the continuous-time version of gradient backpropagation through a dynamical system.
\textbf { Algorithm (shooting method):}
\begin { verbatim}
2026-03-06 20:22:35 +01:00
1. Guess costate p_ 0
2026-03-07 09:44:08 +01:00
2. Integrate forward: dX = b(X, u*(X,p)) dt (state ODE)
3. Integrate backward: dp = -grad_ x H(X, u*, p) dt (costate ODE)
4. Check boundary condition: p_ T = grad g(X_ T)
5. If not satisfied -> update p_ 0 (Newton / gradient) -> go to 2
\end { verbatim}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — PMP for the Merton Problem} ,breakable]
With $ \ell = 0 $ , $ g ( x ) = - \ln x $ , $ b = ( r + u ( \mu - r )) x $ ,
the Hamiltonian is $ \mathcal {H} ( x,u,p ) = p ( r + u ( \mu - r )) x $ .
**Costate ODE:**
$ \dot p_t = - \partial _x \mathcal {H} = - p_t ( r + u^ \star ( \mu - r )) $ ,
with terminal $ p_T = - 1 / X_T^ \star $ .
**Optimality condition** $ \partial _u \mathcal {H} = 0 $ recovers $ u^ \star = ( \mu - r )/ \sigma ^ 2 $ .
The costate path $ p_t = - e^{ -( T - t )( r +( \mu - r ) u^ \star ) } / X_t^ \star $ confirms that the
shadow price scales inversely with wealth — poorer investors value state more.
2026-03-06 20:22:35 +01:00
\end { tcolorbox}
2026-03-07 09:44:08 +01:00
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
The costate pair \( ( X_t^ \star , p_t ) \) moves along Hamiltonian geodesics on \( T^ \star\mathbb {R}^d \) --- a direct link to symplectic geometry (§10.4).
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { 4.3 HJB with Jumps (HJBI)} \label { hjb-with-jumps-hjbi}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
When the state can jump (§3.4), the HJB equation gains a \textbf { non-local integral operator} :
\[ - \partial _t V = \inf _{u} \Bigl [ \ell + \nabla V^ \top b + \tfrac 12 \operatorname {Tr} ( \sigma\sigma ^ \top\nabla ^ 2 V )
+ \underbrace { \int\bigl [ V ( x + c ( x,u,z ))- V ( x )- \nabla V^ \top c ( x,u,z ) \bigr ] \nu ( dz ) }_{ \text {expected value change from jumps}} \Bigr ] . \]
\textbf { Intuition for the integral term.} A jump of size \( c \) moves the state from \( x \) to \( x + c \) , changing the value function by \( V ( x + c )- V ( x ) \) . The compensator \( \nabla V^ \top c \) subtracts the linear part already counted in the drift.
The \texttt { optimal\_ control} module discretises the integral on truncated support using Gaussian quadrature.
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Optimal Execution with Jump Risk} ,breakable]
2026-03-06 20:22:35 +01:00
Extend the inventory model with Poisson order-flow shocks:
2026-03-07 09:44:08 +01:00
$$ dX_t = u_t \, dt + \Delta J_t, \quad \Delta J_t \sim \text {Compound Poisson} ( \lambda , \mathcal {N} ( 0 , \sigma _J^ 2 )) . $$
With Gaussian jumps, the HJBI reduces to the same LQR Riccati ODE but with
**effective diffusion** $ \sigma _{ \text {eff}}^ 2 = \lambda\sigma _J^ 2 $ .
Key insight: order-flow risk acts like additional Brownian volatility, accelerating
the optimal sell schedule.
2026-03-06 20:22:35 +01:00
\end { tcolorbox}
2026-03-07 09:44:08 +01:00
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { 4.4 Viscosity Solutions} \label { viscosity-solutions}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
When \( V \) fails to be \( C^{ 1 , 2 } \) --- degenerate diffusion, constraints, or non-smooth terminal conditions --- classical solutions may not exist. \textbf { Viscosity solutions} (Crandall-Lions 1983) provide a rigorous weak notion that restores existence and uniqueness.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { tcolorbox} [colback=defbg!60,colframe=optblue,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Definition}} — Definition — Viscosity Subsolution} ,breakable]
A continuous $ V $ is a viscosity *subsolution* if for every smooth $ \phi $
touching $ V $ **from above** at $ ( t_ 0 ,x_ 0 ) $ :
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
$$ - \partial _t \phi ( t_ 0 ,x_ 0 ) \le \inf _u \Bigl [ \ell ( x_ 0 ,u ) + \nabla _x \phi ^ \top b + \tfrac 12 \operatorname {Tr} ( \sigma\sigma ^ \top\nabla ^ 2 \phi ) \Bigr ] . $$
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
A *supersolution* reverses the inequality. The unique viscosity **solution** is both.
2026-03-06 20:22:35 +01:00
\end { tcolorbox}
2026-03-07 09:44:08 +01:00
\textbf { Practical interpretation:} Classical: ``\( V \) satisfies the PDE pointwise.'' Viscosity: ``\( V \) satisfies the PDE in an averaged sense --- even at kinks.''
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
Optimiz-rs's backward DP converges to the viscosity solution under CFL: \( \Delta t \le C \, ( \Delta x ) ^ 2 \) .
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — American Option as a Viscosity Problem} ,breakable]
American put payoff $ g ( x ) = ( K - x ) ^ + $ gives the **variational inequality**:
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
$$ \min\Bigl (- \partial _t V - \mathcal {L}_{ \text {BS}}V, \; V - ( K - x ) ^ + \Bigr ) = 0 . $$
- **Continuation region** ($ V > g $ ): Black-Scholes PDE holds.
- **Exercise region** ($ V = g $ ): option exercised immediately.
At the free boundary: $ \partial _x V $ is continuous (*smooth-pasting*) but $ \partial _{xx}V $ is not
— $ V $ is $ C^ 1 $ but not $ C^ 2 $ . Viscosity theory handles this kink rigorously.
\end { tcolorbox}
\textbf { Backward DP grid schema:}
\begin { verbatim}
t=T [ g(x_ 1) g(x_ 2) ... g(x_ n) ] terminal condition
t=T-1 [ V^ 1 V^ 2 ... V^ n ] one backward step
.
.
t=0 [ V_ 0^ 1 V_ 0^ 2 ... V_ 0^ n ] -> optimal policy u*(x,0)
\end { verbatim}
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsection { 5 · Mean Field Games (1D Solver)} \label { mean-field-games-1d-solver}
MFG couples a \textbf { backward HJB} (individual value) with a \textbf { forward Fokker-Planck} (population density):
\[ \begin {aligned}
\text {HJB ( backward ) : } &
- \partial _t u - \nu\partial _{xx}u + H ( x, \partial _x u, m ) = 0 , & u ( T,x ) & = g ( x ) , \\
\text {Fokker - Planck ( forward ) : } &
\partial _t m - \nu\partial _{xx}m - \partial _x ( m \,\partial _p H ) = 0 , & m ( 0 ,x ) & = m_ 0 ( x ) .
\end {aligned} \]
\textbf { Coupling:} \( H \) depends on \( m \) (mean-field interaction), creating a fixed-point problem.
\textbf { Backward-forward information flow:}
\begin { verbatim}
t = 0 t = T
m_ 0 (known) g(x) (known)
| |
| Fokker-Planck (forward -->) |
| evolves population density m |
| |
v v
m(t,x) <----- mutually consistent --- u(t,x)
HJB (backward <--)
optimal value function
Each agent uses u to choose optimal control.
Population density m feeds back into u via H(x, du, m).
Fixed point: m and u are simultaneously consistent (Nash equilibrium).
\end { verbatim}
2026-03-06 20:22:35 +01:00
\textbf { Fixed-point algorithm:}
2026-03-07 09:44:08 +01:00
\begin { verbatim}
2026-03-06 20:22:35 +01:00
1. Initialise m^ 0 = m_ 0 (e.g. Gaussian)
2026-03-07 09:44:08 +01:00
2. Solve HJB backward -> u^{ k+1}
2026-03-06 20:22:35 +01:00
3. Extract optimal drift: alpha*(x,t) = -d_ p H(x, d_ x u^{ k+1} , m^ k)
4. Solve Fokker-Planck forward with alpha* -> m^{ k+1}
5. Check ||m^{ k+1} - m^ k||_ 1 < eps; if not, k++ -> go to 2
2026-03-07 09:44:08 +01:00
\end { verbatim}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Convergence:} For monotone coupling (Lasry-Lions 2007), the system has a unique solution and the fixed-point iteration contracts.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Practical tip:} Monitor both \( \| m^{k + 1 } - m^k \| _ 1 \) and \( \| u^{k + 1 } - u^k \| _ \infty \) ; divergence of either signals non-monotone coupling or too large a time step.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Optimal Liquidation with Many Agents} ,breakable]
**Setup:** $ N \gg 1 $ traders each hold $ x_t $ shares and must liquidate by $ T $ .
Aggregate selling rate $ \bar u_t = \int u \, m ( t,dx ) $ depresses the price.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
**Mean-field Hamiltonian:**
$$ H ( x, p, m ) = \inf _u \Bigl [ \alpha x^ 2 + \beta u^ 2 + pu \Bigr ]
+ \underbrace { \gamma \bar u ( m ) }_{ \text {aggregate impact}} \, x. $$
**Nash equilibrium insight:** Each trader liquidates faster when they believe others sell
slowly (first-mover advantage), but this belief is self-defeating in equilibrium.
The MFG fixed point is **more aggressive** than the single-agent Almgren-Chriss schedule
because each agent accounts for crowd impact.
\end { tcolorbox}
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsection { 6 · Kalman Filtering} \label { kalman-filtering}
\subsubsection { 6.1 Linear-Gaussian State Space} \label { linear-gaussian-state-space}
\[ \mathbf {x}_t = F \mathbf {x}_{t - 1 } + \mathbf {w}_t, \; \mathbf {w}_t \sim\mathcal {N} ( 0 ,Q ) ; \qquad
\mathbf {y}_t = H \mathbf {x}_t + \mathbf {v}_t, \; \mathbf {v}_t \sim\mathcal {N} ( 0 ,R ) . \]
2026-03-06 20:22:35 +01:00
\textbf { Predict:}
2026-03-07 09:44:08 +01:00
\[ \hat { \mathbf {x}}^ - _t = F \hat { \mathbf {x}}_{t - 1 }, \quad P^ - _t = FP_{t - 1 }F^ \top + Q. \]
2026-03-06 20:22:35 +01:00
\textbf { Update:}
2026-03-07 09:44:08 +01:00
\[ K_t = P^ - _t H^ \top ( HP^ - _t H^ \top + R ) ^{ - 1 }, \quad
\hat { \mathbf {x}}_t = \hat { \mathbf {x}}^ - _t + K_t ( \mathbf {y}_t - H \hat { \mathbf {x}}^ - _t ) , \quad
P_t = ( I - K_t H ) P^ - _t. \]
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\( K_t \) is the \emph { Kalman gain} --- it interpolates between full prior trust (\( K \to 0 \) ) and full observation trust (\( K \to H^{ - 1 } \) ).
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Bayesian update --- uncertainty ellipses shrinking:}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
Before observation (predict): After observation (update):
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
+------------------+ +--------+
| | | |
| p(x | y_ 1:t-1) | ----> |p(x|y_ t)|
| wide ellipse | | tight |
+------------------+ +--------+
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
Kalman gain K interpolates between:
K -> 0 (huge R, ignore y_ t) => x_ hat = prior
K -> H^ -1 (R=0, trust y_ t) => x_ hat = H^ -1 y_ t
\end { verbatim}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Covariance convergence:} \( P_t \to P_ \infty \) (algebraic Riccati solution) exponentially fast when \( ( F,H ) \) is observable.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { 6.2 Information-Theoretic View} \label { information-theoretic-view}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
The Kalman filter computes the exact conditional mean \( \hat { \mathbf {x}}_t = \mathbb {E} [ \mathbf {x}_t \mid \mathbf {y}_{ 1 :t} ] \) in Gaussian models and minimises \( D_{ \mathrm {KL}} ( p ( \mathbf {x}_t| \mathbf {y}_{ 1 :t} ) \,\|\,\mathcal {N} ( \hat { \mathbf {x}}_t, P_t )) \) over all Gaussian approximations.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { 6.3 Continuous-Time Limit (Kalman-Bucy)} \label { continuous-time-limit-kalman-bucy}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
For \( d \mathbf {X}_t = A \mathbf {X}_t \, dt + B \, d \mathbf {W}_t \) , \( d \mathbf {Y}_t = C \mathbf {X}_t \, dt + d \mathbf {V}_t \) , the error covariance satisfies the \emph { Riccati ODE} :
\[ \dot P = AP + PA^ \top + BQB^ \top - PC^ \top R^{ - 1 }CP, \qquad P ( 0 )= P_ 0 . \]
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Tracking a Noisy AR(1) Signal} ,breakable]
**Model:** Latent trend $ x_t = 0 . 95 x_{t - 1 } + w_t $ ($ Q = 0 . 01 $ );
noisy observation $ y_t = x_t + v_t $ ($ R = 1 . 0 $ ).
Steady-state: $ P_ \infty \approx 0 . 17 $ , so $ K_ \infty \approx 0 . 15 $ .
Kalman weights the new observation at 15%, prior at 85%.
```
P_ t
1.0 |*
0.8 | \\
0.6 | \\
0.4 | \\ ___
0.2 | \\ __________________ P_ inf ~ 0.17
+--------------------------------> t
(fast convergence to steady-state uncertainty)
```
**Implication:** With $ R / Q = 100 $ (much noisier obs than process), the filter heavily
smooths observations — useful for noisy financial signals like tick prices.
\end { tcolorbox}
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsection { 7 · MCMC (Metropolis-Hastings and Langevin)} \label { mcmc-metropolis-hastings-and-langevin}
\subsubsection { 7.1 Metropolis-Hastings} \label { metropolis-hastings}
For target \( \pi ( x ) \propto e^{ - U ( x ) } \) and proposal \( q ( x' \mid x ) \) :
\[ \alpha ( x \to x' ) = \min\!\Bigl ( 1 , \frac { \pi ( x' ) q ( x \mid x' ) }{ \pi ( x ) q ( x' \mid x ) } \Bigr ) . \]
\textbf { Detailed balance} \( \pi ( x ) \alpha ( x \to x' ) = \pi ( x' ) \alpha ( x' \to x ) \) ensures \( \pi \) is the unique stationary distribution.
\textbf { Optimal scaling:} With Gaussian proposal, step \( h^ \star \approx 2 . 38 / \sqrt {d} \) (Roberts-Gelman-Gilks 1997) targets \textasciitilde 23-45\% acceptance.
\textbf { Energy landscape and accept/reject:}
\begin { verbatim}
U(x) (negative log-posterior)
| * * <- local minima (modes of pi)
| / \\ / \\
| / \\ / \\
| / *___ * \\ <- saddle between modes
| / \\
+-------------------------> x
Proposal x' = x + h * xi:
If U(x') < U(x): always accept (moving downhill)
If U(x') > U(x): accept with prob exp(-(U(x')-U(x)))
Prevents getting trapped in local minima.
\end { verbatim}
\textbf { Trace plot of a well-mixed chain:}
\begin { verbatim}
x_ t
+2 | . . . . . . <- upper mode
| . . . . . .
0 |... ... <- transitions between modes
| . . . . .
-2 | . . .. <- lower mode
+-----------------------------> t
(crossing between modes = good mixing)
\end { verbatim}
\subsubsection { 7.2 Langevin Dynamics (MALA)} \label { langevin-dynamics-mala}
2026-03-06 20:22:35 +01:00
Metropolis-Adjusted Langevin proposal:
2026-03-07 09:44:08 +01:00
\[ x' = x - \tfrac {h^ 2 }{ 2 } \nabla U ( x ) + h \,\xi , \quad \xi\sim\mathcal {N} ( 0 ,I_d ) , \]
2026-03-06 20:22:35 +01:00
a discretisation of the \emph { overdamped Langevin SDE} :
2026-03-07 09:44:08 +01:00
\[ dX_t = - \nabla U ( X_t ) \, dt + \sqrt { 2 } \, dW_t, \]
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
whose stationary distribution is exactly \( \pi \propto e^{ - U} \) .
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
MALA converges in \( O ( d^{ 1 / 3 } ) \) steps vs \( O ( d ) \) for RW-MH --- key advantage for high-dimensional posteriors.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { MALA vs RW-MH trajectory comparison:}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
RW-MH (random walk): MALA (gradient-guided):
. . . ^ -grad U (towards mode)
. . . . --> /
. . . /. .
(diffusive, slow mixing) (directed, fast mixing)
\end { verbatim}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Calibrating OU Parameters via MCMC} ,breakable]
**Goal:** Full Bayesian inference on $ ( \kappa , \theta , \sigma ) $ of an OU process.
**Prior:** $ \kappa \sim \text {Gamma} ( 2 , 0 . 1 ) $ , $ \theta \sim \mathcal {N} ( 0 , 1 ) $ ,
$ \sigma \sim \text {HalfNormal} ( 0 . 5 ) $ .
**MALA chain** ($ d = 3 $ , step $ h = 0 . 02 $ ):
```
Iteration kappa theta sigma log-post
--------- ----- ----- ----- --------
1000 42.1 0.003 0.11 125.3
2000 55.3 0.003 0.12 128.7 <- burn-in complete
3000 58.1 0.003 0.12 129.2
50000 54.8 0.003 0.12 128.9 <- stable posterior
```
**Marginal posterior** (kappa): 95% CI $[44, 67]$, peak at 55/yr —
wider than the MLE point estimate, reflecting genuine parameter uncertainty.
\end { tcolorbox}
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsection { 8 · Hidden Markov Models (HMM)} \label { hidden-markov-models-hmm}
\subsubsection { 8.1 Model} \label { model}
Latent Markov chain \( Z_t \in \{ 1 , \ldots ,K \} \) with transition matrix \( A_{ij} = \mathbb {P} ( Z_t = j \mid Z_{t - 1 } = i ) \) generates observations \( Y_t \mid Z_t = k \sim B_k ( y ) \) .
\textbf { State machine diagram (\( K = 3 \) regimes):}
\begin { verbatim}
A_ 12 A_ 23
+------------+ +------------+
| State 1 |------->| State 2 |-------> State 3
| (Bull) | | (Neutral) | (Bear/Crash)
+------------+<-------+------------+<--------
A_ 21 A_ 32
Each state k emits Y_ t ~ B_ k(y):
B_ 1: N(mu=+0.05, sigma=0.12) high return, low vol
B_ 2: N(mu=+0.00, sigma=0.18) flat, medium vol
B_ 3: N(mu=-0.08, sigma=0.35) crash regime, high vol
Transition matrix A:
A = [ 0.97 0.02 0.01 ] (row 1: from State 1)
[ 0.01 0.97 0.02 ] (row 2: from State 2)
[ 0.05 0.05 0.90 ] (row 3: from State 3)
(rows sum to 1; diagonal = regime persistence)
\end { verbatim}
\subsubsection { 8.2 Baum-Welch (EM)} \label { baum-welch-em}
\textbf { E-step (forward-backward):}
\[ \alpha _t ( k ) = B_k ( y_t ) \sum _j \alpha _{t - 1 } ( j ) A_{jk}, \qquad
\beta _t ( k ) = \sum _j A_{kj}B_j ( y_{t + 1 } ) \beta _{t + 1 } ( j ) . \]
\[ \gamma _t ( k ) = \frac { \alpha _t ( k ) \beta _t ( k ) }{ \sum _j \alpha _t ( j ) \beta _t ( j ) }, \qquad
\xi _t ( j,k ) = \frac { \alpha _t ( j ) A_{jk}B_k ( y_{t + 1 } ) \beta _{t + 1 } ( k ) }{ \mathcal {L}}. \]
2026-03-06 20:22:35 +01:00
\textbf { M-step:}
2026-03-07 09:44:08 +01:00
\[ \hat A_{jk} = \frac { \sum _t \xi _t ( j,k ) }{ \sum _t \gamma _t ( j ) }, \qquad
\hat\mu _k = \frac { \sum _t \gamma _t ( k ) \, y_t}{ \sum _t \gamma _t ( k ) }. \]
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Information-theoretic view:} Baum-Welch is EM on the complete-data log-likelihood; each iteration monotonically increases \( \mathcal {L} ( \theta ) \) by Jensen's inequality.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Viterbi trellis diagram (\( K = 3 \) , \( T = 4 \) ):}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
State t=1 t=2 t=3 t=4
1 delta1(1) --> delta2(1) --> delta3(1) --> delta4(1)
\ \\ //
2 delta1(2) --> delta2(2) --> delta3(2) --> delta4(2)
\ \ \
3 delta1(3) --> delta2(3) --> delta3(3) --> delta4(3)
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
delta_ t(k) = max_ j [ delta_{ t-1} (j) * A_ jk * B_ k(y_ t) ]
psi_ t(k) = argmax (backtrack pointer -> records best prev state)
After forward pass: trace back from t=T to t=1 via psi to get MAP sequence
z_ 1*, z_ 2*, z_ 3*, z_ 4*
\end { verbatim}
\textbf { Viterbi (MAP path):} \( \delta _t ( k ) = \max _j \delta _{t - 1 } ( j ) A_{jk} \cdot B_k ( y_t ) \) , \( O ( TK^ 2 ) \) .
\textbf { Quality check:} Log-likelihood must be non-decreasing; confusion matrix of Viterbi labels vs ground truth validates regime recovery.
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Equity Regime Detection (S& P 500)} ,breakable]
**Data:** S& P 500 daily log-returns, 2000-2023, $ T = 5820 $ observations.
**Fit $ K = 3 $ HMM** using `hmm::fit_ baum_ welch()` with 20 random restarts.
**Estimated regime parameters:**
| Regime | Ann. return | Ann. vol | Avg duration |
|--------|------------|---------|-------------|
| Bull | +18% | 10% | 350 days |
| Neutral | +2% | 17% | 80 days |
| Bear | -40% | 38% | 25 days |
**Smoothed state probabilities** $ \gamma _t ( k ) $ :
```
P(Bull) 1.0|XXXXXXXXXX XXXXXXXXXX XXXXX
| XXXXXXXX XXXXXXXX
0.0 +-------------------------> t (years)
2000 2003 2008 2020 2023
^ ^ ^
dot-com bust GFC COVID crash
```
**Use in Optimiz-rs:** Regime beliefs $ \gamma _t $ feed as features into
`differential_ evolution` to switch risk-aversion $ \alpha $ dynamically.
\end { tcolorbox}
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsection { 9 · Information Theory} \label { information-theory}
\subsubsection { 9.1 Entropy and KL Divergence} \label { entropy-and-kl-divergence}
\begin { tcolorbox} [colback=defbg!60,colframe=optblue,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Definition}} — Definition — KL Divergence} ,breakable]
2026-03-06 20:22:35 +01:00
For densities $ p, q $ :
2026-03-07 09:44:08 +01:00
$$ D_{ \mathrm {KL}} ( p \,\|\, q ) = \int p ( x ) \log\frac {p ( x ) }{q ( x ) } \, dx \;\ge\; 0 , $$
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
with equality iff $ p = q $ a.e. (Gibbs inequality). Non-symmetric.
\end { tcolorbox}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { KL asymmetry --- a critical practical distinction:}
\begin { verbatim}
p = N(0,1) (narrow Gaussian) q = N(0,4) (wide Gaussian)
D_ KL(p||q): integrate under p.
p lives mostly in [-2,2] where q is large -> small penalty.
D_ KL(p||q) is small. (q "covers" p)
D_ KL(q||p): integrate under q.
q places mass in [-6,6]; in tails p is tiny but q is not -> large penalty.
D_ KL(q||p) is large. (p does NOT cover q)
Rule of thumb:
D_ KL(p||q): fitting q to match p (mean-seeking, mode-averaging)
D_ KL(q||p): q must cover p (mode-seeking, mode-fitting)
\end { verbatim}
\textbf { Connection to model selection:} AIC \( = 2 k - 2 \ln\hat { \mathcal {L}} \) and BIC \( = k \ln n - 2 \ln\hat { \mathcal {L}} \) bound \( D_{ \mathrm {KL}} ( p_{ \text {true}} \,\|\, p_ \theta ) \) .
\subsubsection { 9.2 Fisher Information} \label { fisher-information}
\begin { tcolorbox} [colback=defbg!60,colframe=optblue,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Definition}} — Definition — Fisher Information Matrix} ,breakable]
2026-03-06 20:22:35 +01:00
For parametric model $ p ( x; \theta ) $ :
2026-03-07 09:44:08 +01:00
$$ \mathcal {I} ( \theta ) _{ij}
= \mathbb {E}_{x \sim p} \!\left [ \partial _{ \theta _i} \log p \;\partial _{ \theta _j} \log p \right ]
= - \mathbb {E} \!\left [ \partial ^ 2 _{ \theta _i \theta _j} \log p \right ] . $$
\end { tcolorbox}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Fisher information as curvature of the log-likelihood:}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
log L(theta | x_ obs)
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
| .----.
| ./ \.
| ./ \.
| ./ \.
+-----------------------> theta
theta*
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
I(theta*) = -d^ 2/dtheta^ 2 log L at the peak
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
High I (sharp peak): theta well-identified, low estimation variance
Low I (flat peak): theta hard to identify, high estimation variance
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
Cramer-Rao: Var(theta_ hat) >= 1 / I(theta) for any unbiased estimator
\end { verbatim}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Cramer-Rao bound:} Any unbiased estimator \( \hat\theta \) satisfies \( \operatorname {Cov} ( \hat\theta ) \succeq \mathcal {I} ( \theta ) ^{ - 1 } \) . MLE achieves equality asymptotically.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Example:} For \( B_k = \mathcal {N} ( \mu _k, \sigma _k^ 2 ) \) : \( \mathcal {I} ( \mu _k )= \sigma _k^{ - 2 } \) , \( \mathcal {I} ( \sigma _k^ 2 )=( 2 \sigma _k^ 4 ) ^{ - 1 } \) . Higher emission variance -\textgreater {} smaller Fisher info -\textgreater {} less certain parameter estimates.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { 9.3 Mutual Information and Feature Relevance} \label { mutual-information-and-feature-relevance}
\[ I ( X;Y ) = D_{ \mathrm {KL}} \bigl ( p ( X,Y ) \,\|\, p ( X ) p ( Y ) \bigr ) = H ( X ) - H ( X \mid Y ) \ge 0 . \]
\textbf { Interpretation:} \( I ( X;Y ) \) = how much knowing \( Y \) reduces uncertainty about \( X \) . \( X \perp Y \Rightarrow I = 0 \) . \( Y \) determines \( X \) fully \( \Rightarrow I = H ( X ) \) .
\textbf { mRMR criterion} (minimum redundancy, maximum relevance) for the sparse module:
\[ \max _{Y_i} \Bigl [ I ( Y_i; \text {target} ) - \frac { 1 }{|S|} \sum _{Y_j \in S}I ( Y_i;Y_j ) \Bigr ] . \]
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Entropy of HMM Regime Probabilities} ,breakable]
Define discrete regime distribution at time $ t $ :
$$ \mathbf {p}_t = ( \gamma _t ( 1 ) , \gamma _t ( 2 ) , \gamma _t ( 3 )) . $$
**Regime entropy** $ H_t = - \sum _k \gamma _t ( k ) \log \gamma _t ( k ) \in [ 0 , \log 3 ] $ :
| Date | P(Bull) | P(Neutral) | P(Bear) | $ H_t $ | Certainty |
|------|---------|-----------|---------|-------|-----------|
| 2019-12 | 0.92 | 0.07 | 0.01 | 0.36 | High (Bull clear) |
| 2020-03 | 0.01 | 0.12 | 0.87 | 0.54 | Medium (Bear likely) |
| 2020-06 | 0.42 | 0.45 | 0.13 | 1.05 | Low (mixed) |
Max entropy $ \log 3 \approx 1 . 10 $ = fully uncertain.
**Trading filter:** Only trade when $ H_t < 0 . 7 $ (certain regime).
\end { tcolorbox}
\subsubsection { 9.4 Natural Gradient (Preview)} \label { natural-gradient-preview}
Classical gradient descent ignores parameter-space geometry. The \emph { natural gradient} replaces \( \nabla _ \theta\mathcal {L} \) with \( \mathcal {I} ( \theta ) ^{ - 1 } \nabla _ \theta\mathcal {L} \) , giving a reparametrisation-invariant update --- see §10.2 for the full geometric development.
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsection { 10 · Differential Geometry} \label { differential-geometry}
\subsubsection { 10.1 Riemannian Manifolds} \label { riemannian-manifolds}
\begin { tcolorbox} [colback=defbg!60,colframe=optblue,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Definition}} — Definition — Riemannian Manifold} ,breakable]
A *Riemannian manifold* $ ( M, g ) $ is a smooth manifold $ M $ with a
*metric tensor* $ g_p $ : a symmetric, positive-definite bilinear form on each
2026-03-06 20:22:35 +01:00
tangent space $ T_p M $ .
2026-03-07 09:44:08 +01:00
\end { tcolorbox}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Three canonical curvatures:}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
K > 0 (sphere S2) K = 0 (flat R2) K < 0 (hyperbolic H2)
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
(N) | /
/|\ | /
/ | \ geodesics --+-- parallel / geodesics
/ | \ reconverge (N-S) | lines / diverge exponentially
\end { verbatim}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Tangent space --- linear approximation at \( p \) :}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
M (curved 2D surface): TpM (flat tangent plane at p):
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
.~~~~. ___________
/ \ --> | TpM |
| p * | | * p |
| | |___________ |
\ /
.~~~~.
(not flat globally, but TpM is flat locally — used for calculus on M)
\end { verbatim}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Geodesics} satisfy:
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\[ \ddot\gamma ^k + \sum _{i,j} \Gamma ^k_{ij} \,\dot\gamma ^i \dot\gamma ^j = 0 , \]
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
where \( \Gamma ^k_{ij} = \tfrac 12 g^{kl} ( \partial _i g_{jl} + \partial _j g_{il} - \partial _l g_{ij} ) \) are the \emph { Christoffel symbols} encoding intrinsic curvature.
\subsubsection { 10.2 Information Geometry and Fisher-Rao Metric} \label { information-geometry-and-fisher-rao-metric}
The statistical manifold \( \mathcal {M} = \{ p ( \cdot ; \theta ) \} \) carries the \textbf { Fisher-Rao metric} \( g_{ij} ( \theta ) = \mathcal {I} ( \theta ) _{ij} \) .
\textbf { Standard vs natural gradient:}
\begin { verbatim}
Standard gradient descent: Natural gradient descent:
theta_{ k+1} = theta_ k - eta * grad L theta_{ k+1} = theta_ k - eta * I^{ -1} grad L
Parameter space = flat R^ d. Parameter space = Riemannian (metric I(theta)).
Ignores curvature. Adapts step to local geometry.
Slow on ill-conditioned I. Invariant to reparametrisation.
O(kappa(I)) iterations. O(1) iterations on exponential families.
\end { verbatim}
\textbf { Natural gradient (Amari 1998):}
\[ \theta \leftarrow \theta - \eta\,\mathcal {I} ( \theta ) ^{ - 1 } \nabla _ \theta\mathcal {L}. \]
\textbf { KL geometry:} \( D_{ \mathrm {KL}} ( p_ \theta\,\|\, p_{ \theta + d \theta } ) = \tfrac 12 \, d \theta ^ \top\mathcal {I} ( \theta ) \, d \theta + O ( \| d \theta\| ^ 3 ) \) , confirming Fisher-Rao as the intrinsic KL metric.
\textbf { Dually flat structure:} Exponential families \( p ( x; \theta )= h ( x ) \exp ( \theta ^ \top T ( x )- A ( \theta )) \) have \( K = 0 \) --- explaining exact Newton/natural-gradient convergence.
\begin { tcolorbox} [colback=notebg!60,colframe=optgreen,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Example}} — Example — Natural Gradient on a Gaussian Model} ,breakable]
For $ p ( x; \theta ) = \mathcal {N} ( \mu , \sigma ^ 2 ) $ , $ \theta =( \mu , \sigma ^ 2 ) $ :
$$ \mathcal {I} ( \theta ) = \begin {pmatrix} 1 / \sigma ^ 2 & 0 \\ 0 & 1 /( 2 \sigma ^ 4 ) \end {pmatrix}. $$
**Natural gradient** of $ \mathcal {L} = - \log p ( x_{ \rm obs}; \theta ) $ :
$$ \tilde\nabla _ \theta\mathcal {L} = \mathcal {I}^{ - 1 } \nabla\mathcal {L} = \begin {pmatrix} \mu - x \\ \sigma ^ 2 - ( x - \mu ) ^ 2 / 2 \end {pmatrix}. $$
One Newton step on this exponential family finds the MLE exactly because the
Hessian equals $ \mathcal {I} $ (dually flat, $ K = 0 $ ).
\end { tcolorbox}
\subsubsection { 10.3 Lie Groups and Geometric Control} \label { lie-groups-and-geometric-control}
\begin { tcolorbox} [colback=defbg!60,colframe=optblue,fonttitle=\bfseries\sffamily ,title={ \textsf { \textbf { Definition}} — Definition — Lie Group} ,breakable]
A *Lie group* $ G $ is a smooth manifold with a group structure where
multiplication and inversion are smooth. The *Lie algebra* $ \mathfrak {g} = T_e G $
2026-03-06 20:22:35 +01:00
linearises the group at the identity.
2026-03-07 09:44:08 +01:00
\end { tcolorbox}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Matrix Lie group hierarchy:}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
GL(n,R) general linear group (all invertible n x n real matrices)
|
|--- SL(n,R) special linear (det = 1)
|
|--- O(n) orthogonal (R'R = I)
| |
| +---- SO(n) special orthogonal (det = +1, pure rotations)
| Used in: portfolio factor rotation, PCA constraints
|
+--- Sp(2n,R) symplectic (preserves symplectic form omega)
Used in: Hamiltonian mechanics, PMP sections 4.2 and 10.4
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
Heisenberg group H(n): upper triangular with 1s on diagonal.
Used in: path-signature feature maps (lab_ signature_ methods)
\end { verbatim}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Left-invariant control system on \( G \) :}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\[ \dot g ( t ) = g ( t ) \,\xi ( t ) , \quad g \in G, \; \xi ( t ) \in\mathfrak {g}. \]
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
PMP on Lie groups yields the \emph { Lie-Poisson (Euler-Poincare) equations} (Holm-Marsden-Ratiu), providing structure-preserving optimal trajectories.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { 10.4 Symplectic Geometry and Hamiltonian Structure} \label { symplectic-geometry-and-hamiltonian-structure}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
The phase space \( ( T^ \star M, \omega ) \) carries the symplectic 2-form \( \omega = \sum _i dp_i \wedge dq_i \) . Hamilton's equations preserve \( \omega \) (\emph { Liouville's theorem} --- phase-space volume conserved).
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Connection to PMP:} The costate pair \( ( X_t^ \star , p_t ) \) solves Hamilton's equations, i.e., the PMP is a symplectic flow on \( T^ \star\mathbb {R}^d \) .
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\textbf { Symplectic integrators} (Stormer-Verlet, Ruth-Forest) preserve \( \omega \) discretely, keeping the Hamiltonian nearly constant over long horizons --- critical for multi-year allocation back-tests in Optimiz-rs.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\subsubsection { 10.5 Sectional Curvature and Landscape Geometry} \label { sectional-curvature-and-landscape-geometry}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
The sectional curvature \( K ( \sigma ) \) governs how quickly nearby geodesics diverge:
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { verbatim}
K > 0 (sphere): geodesics converge -> compact optimiser trajectories
K = 0 (flat ): Euclidean behaviour -> Newton / natural gradient exact
K < 0 (hyper.): exponential spread -> efficient landscape exploration
\end { verbatim}
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
For exponential families in natural/mean parameters \( K = 0 \) --- explaining exact Newton convergence without curvature correction.
2026-03-06 20:22:35 +01:00
2026-03-07 09:44:08 +01:00
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsection { Quick Reference} \label { quick-reference}
{ \def\LTcaptype { none} % do not increment counter
\begin { longtable} []{ @{}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.1800}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.4400}}
>{ \raggedright\arraybackslash } p{ (\linewidth - 4\tabcolsep ) * \real { 0.3800}} @{}}
\toprule\noalign {}
\begin { minipage} [b]{ \linewidth } \raggedright
Concept
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Key equation / object
\end { minipage} & \begin { minipage} [b]{ \linewidth } \raggedright
Optimiz-rs module
\end { minipage} \\
\midrule\noalign {}
\endhead
\bottomrule\noalign {}
\endlastfoot
Brownian motion & \( W_t - W_s \sim \mathcal {N} ( 0 ,t - s ) \) & \texttt { point\_ processes} \\
Ito SDE & \( dX = b \, dt + \sigma\, dW \) & \texttt { ou\_ estimator} \\
Poisson / Compound Poisson & \( N_t \sim\text {Poisson} ( \lambda t ) \) & \texttt { point\_ processes} \\
Levy process & triplet \( ( b, \sigma ^ 2 , \nu ) \) & \texttt { point\_ processes} \\
HJB PDE & \( - \partial _t V = \inf _u [ \ell + \nabla V^ \top b + \tfrac 12 \operatorname {Tr} \sigma\sigma ^ \top\nabla ^ 2 V ] \) & \texttt { optimal\_ control} \\
HJBI (jumps) & \( + \int [ V ( \cdot + c )- V - \nabla V^ \top c ] \nu\, dz \) & \texttt { optimal\_ control} \\
PMP costate & \( \dot p = - \nabla _x \mathcal {H} \) , \( u^ \star = \arg\min _u \mathcal {H} \) & \texttt { optimal\_ control} \\
MFG (HJB + KFP) & fixed-point \( u,m \) & \texttt { mean\_ field\_ games} \\
Kalman filter & \( K_t = P^ - H^ \top ( HP^ - H^ \top + R ) ^{ - 1 } \) & \texttt { optimal\_ control} \\
MALA & \( x' = x - \tfrac {h^ 2 }{ 2 } \nabla U + h \xi \) & \texttt { mcmc} \\
HMM & Baum-Welch EM + Viterbi & \texttt { hmm} \\
Fisher information & \( \mathcal {I}_{ij} = \mathbb {E} [ \partial _i \ell\,\partial _j \ell ] \) & \texttt { hmm} , \texttt { sparse} \\
Natural gradient & \( \mathcal {I}^{ - 1 } \nabla _ \theta\mathcal {L} \) & \texttt { differential\_ evolution} \\
Riemannian / Lie geometry & Christoffel symbols, Lie-Poisson equations & experimental \\
DE (jDE) & mutation + crossover + selection & \texttt { differential\_ evolution} \\
\end { longtable}
}
\begin { center} \rule { 0.5\linewidth }{ 0.5pt} \end { center}
\subsection { References} \label { references}
\begin { enumerate}
\def\labelenumi { \arabic { enumi} .}
\item
Oksendal, B. \emph { Stochastic Differential Equations} , 6th ed.~Springer, 2003.
\item
Cont, R. \& Tankov, P. \emph { Financial Modelling with Jump Processes} . CRC Press, 2004.
\item
Fleming, W.H. \& Soner, H.M. \emph { Controlled Markov Processes and Viscosity Solutions} . Springer, 2006.
\item
Lasry, J.-M. \& Lions, P.-L. ``Mean field games.'' \emph { Jpn. J. Math.} \textbf { 2} (2007) 229-260.
\item
Amari, S. \emph { Information Geometry and Its Applications} . Springer, 2016.
\item
do Carmo, M.P. \emph { Riemannian Geometry} . Birkhauser, 1992.
\item
Holm, D.D., Marsden, J.E. \& Ratiu, T.S. ``The Euler-Poincare equations.'' \emph { Adv. Math.} \textbf { 137} (1998).
\item
Price, K.V., Storn, R.M. \& Lampinen, J.A. \emph { Differential Evolution} . Springer, 2005.
\item
Roberts, G.O., Gelman, A. \& Gilks, W.R. ``Weak convergence of Metropolis algorithms.'' (1997).
\item
Merton, R.C. ``Option pricing when underlying stock returns are discontinuous.'' \emph { JFE} \textbf { 3} (1976).
\item
Crandall, M.G. \& Lions, P.-L. ``Viscosity solutions of Hamilton-Jacobi equations.'' \emph { Trans. AMS} (1983).
\item
Almgren, R. \& Chriss, N. ``Optimal execution of portfolio transactions.'' \emph { J. Risk} \textbf { 3} (2001).
\item
Carmona, R. \& Delarue, F. \emph { Probabilistic Theory of Mean Field Games} . Springer, 2018.
2026-03-06 20:22:35 +01:00
\end { enumerate}
\end { document}