Causal Martingale Optimal Transport¶
Causal martingale optimal transport extends the two-period formulation from a
single coupling matrix to a time-ordered law on a path
(S1, S2, ..., ST). The discrete model keeps fixed marginals at every time
step and requires the martingale condition
E[S_{t+1} | S_1, ..., S_t] = S_t
for each adjacent transition. This is stronger than checking every pair in
isolation because a feasible optimizer must be non-anticipative: the transition
from S_t to S_{t+1} can depend on the realized history up to t, but it
cannot use future coordinates.
Discrete Formulation¶
For atoms x^t_i and weights mu^t_i, the exact causal LP uses a joint tensor
Pi[i1, ..., iT]. It imposes:
- one marginal constraint for each time coordinate
- one conditional martingale row for each observed history
- non-negativity over the full tensor
For additive adjacent payoffs, the objective has the form:
sum_t g(S_t, S_{t+1})
The exact solver is useful on small grids because the tensor size grows as
n^T. The regularized causal solver uses adjacent entropic MOT steps to produce
a scalable Markov approximation and a reconstructed joint tensor.
Why Causality Tightens Bounds¶
A non-causal multi-period coupling can coordinate early and late coordinates in ways that are not available to a trading strategy or a process evolving through time. Causality rules out this anticipation. In robust pricing terms, the upper bound from the causal problem is no larger than a looser benchmark that optimizes adjacent pairs independently.
The implemented reports expose this difference through the causal bound gap:
pairwise upper benchmark - exact causal upper
The gap is zero for two time steps and can be positive once there are at least three time steps.
Discrete-to-Continuous Limit¶
The ot_bound_vs_timestep helper studies what happens as the number of time
steps increases between two endpoint marginal systems. It interpolates uniform
supports between the initial and final intervals, runs causal experiments for
selected T values, and estimates a log-log rate from the width of the exact
lower/upper interval.
This is a numerical scaffold rather than a proof of convergence. The exact LP is still finite dimensional and grid dependent, so the reported slope should be read as an experiment diagnostic.
Rost and Skorokhod Connection¶
Continuous-time martingale optimal transport is closely related to Skorokhod embedding problems: construct a martingale, often Brownian motion stopped at a random time, whose terminal law matches a target distribution. Rost-type embeddings are extremal constructions for certain objectives and give a continuous analogue of the bound-tightening effect seen in causal discrete models.
The discrete causal chain can be viewed as a finite-time approximation to this
adapted construction. As T increases, the admissible laws better approximate
paths generated by a time-evolving martingale rather than a single unconstrained
static coupling.
Worked Example¶
A reference additive absolute-spread study uses:
S1 ~ Uniform[1, 3]
ST ~ Uniform[0, 4]
payoff = sum_t |S_{t+1} - S_t|
Intermediate marginals linearly widen the support while keeping the midpoint mean fixed. Running:
PYTHONPATH=src python - <<'PY'
from pathlib import Path
from mot_pricing import ot_bound_vs_timestep, plot_continuous_limit
result = ot_bound_vs_timestep((1.0, 3.0), (0.0, 4.0), "abs_spread", 3, (2, 3, 5), 0.2)
plot_continuous_limit(Path("continuous_out"), result)
print(result.upper_bounds)
PY
writes continuous_limit.png and records how the exact interval changes with
the time discretization.