BrownianBridgeProcess[σ,{t1,a},{t2,b}]
represents the Brownian bridge process from value a at time t1 to value b at time t2 with volatility σ.
BrownianBridgeProcess[{t1,a},{t2,b}]
represents the standard Brownian bridge process from value a at time t1 to value b at time t2.
BrownianBridgeProcess[t1,t2]
represents the standard Brownian bridge process pinned at 0 at times t1 and t2.
represents the standard Brownian bridge process pinned at 0 at time 0 and at time 1.
BrownianBridgeProcess
BrownianBridgeProcess[σ,{t1,a},{t2,b}]
represents the Brownian bridge process from value a at time t1 to value b at time t2 with volatility σ.
BrownianBridgeProcess[{t1,a},{t2,b}]
represents the standard Brownian bridge process from value a at time t1 to value b at time t2.
BrownianBridgeProcess[t1,t2]
represents the standard Brownian bridge process pinned at 0 at times t1 and t2.
represents the standard Brownian bridge process pinned at 0 at time 0 and at time 1.
Details
- BrownianBridgeProcess is also known as pinned Brownian motion process.
- BrownianBridgeProcess is a continuous-time and continuous-state random process.
- The state
for a Brownian bridge process satisfies
and
. - The state
follows NormalDistribution[a+(b-a) (t-t1)/(t2-t1),
]. - The parameters σ, t1, t2, a, and b can be any real numbers, with σ positive and t2 greater than t1.
- BrownianBridgeProcess can be used with such functions as Mean, PDF, Probability, and RandomFunction.
Examples
open all close allBasic Examples (3)
Simulate a Brownian bridge process pinned at 0 at both ends:
data = RandomFunction[BrownianBridgeProcess[], {0, 1, .01}]ListLinePlot[data, Filling -> Axis]Mean[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t]]Variance[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t]]CovarianceFunction[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}], s, t]Plot3D[CovarianceFunction[BrownianBridgeProcess[], s, t], {s, 0, 1}, {t, 0, 1}, ColorFunction -> "Rainbow"]Scope (13)
Basic Uses (8)
BrownianBridgeProcess[{Subscript[t, 1], a}, {Subscript[t, 2], b}]BrownianBridgeProcess[Subscript[t, 1], Subscript[t, 2]]BrownianBridgeProcess[]Simulate an ensemble of paths:
data = RandomFunction[BrownianBridgeProcess[], {0, 1, .01}, 4]ListLinePlot[data, Filling -> Axis]Simulate with arbitrary precision:
RandomFunction[BrownianBridgeProcess[], {0, 1, 1 / 4}, WorkingPrecision -> 20]["Path"]Simulate a path of a Brownian bridge process pinned at different values:
proc[x_] := BrownianBridgeProcess[{0, -1}, {2, x}];
end = {-1, 0, 1};
data = RandomFunction[proc[#], {0, 2, .01}]& /@ end;ListLinePlot[data, Filling -> Axis, PlotLegends -> (StringJoin["x = ", ToString[#]]& /@ end)]Simulate a Brownian bridge process on an interval contained in the process support:
sample2 = RandomFunction[BrownianBridgeProcess[], {.2, .8, .01}, 3];ListLinePlot[sample2, PlotRange -> {{0, 1}, {-2, 2}}]data = RandomFunction[BrownianBridgeProcess[{0, -16 / 10}, {2, 1}], {0, 2, .01}];EstimatedProcess[data, BrownianBridgeProcess[{Subscript[t, 1], a}, {Subscript[t, 2], b}]]𝒫 = BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}];CorrelationFunction[𝒫, s, t]Absolute correlation function:
𝒫 = BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}];AbsoluteCorrelationFunction[𝒫, s, t]Process Slice Properties (5)
Univariate SliceDistribution:
SliceDistribution[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}], t]First-order probability density function:
Plot[Evaluate@Table[PDF[BrownianBridgeProcess[][t], x], {t, {.9, .8, .3}}], {x, -1.5, 1.5}, Filling -> Axis, PlotLegends -> {"t = 0.9", "t = 0.8", "t = 0.3"}]PDF[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t], x]Multivariate slice distribution:
SliceDistribution[BrownianBridgeProcess[], {s, t}]//SimplifyBrownianBridgeProcess[2, {0, 1}, {3, 2}][{1, 2, 3}]//MeanSecond-order PDF:
PDF[BrownianBridgeProcess[][{s, t}], {x, y}]//Simplify[#, 1 ≥ s ≥ 0 && 1 ≥ t ≥ 0]&Compute the expectation of an expression:
Expectation[x[t] + x[t] ^ 2, xBrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}]]Calculate the probability of an event:
Probability[x[t] < 6, xBrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}]]Skewness and kurtosis are constant:
Skewness[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t]]Kurtosis[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t]]Moment[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t], r]CharacteristicFunction[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t], w]MomentGeneratingFunction[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t], w]CentralMoment and its generating function:
CentralMoment[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t], r]CentralMomentGeneratingFunction[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t], w]FactorialMoment has no closed form for symbolic order:
FactorialMoment[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t], 3]//SimplifyFactorialMomentGeneratingFunction[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t], w]Cumulant and its generating function:
Cumulant[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t], r]CumulantGeneratingFunction[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}][t], w]Generalizations & Extensions (1)
Properties & Relations (9)
A Brownian bridge is not weakly stationary:
WeakStationarity[BrownianBridgeProcess[σ, {t1, a}, {t2, b}]]WeakStationarity[BrownianBridgeProcess[]]A Brownian bridge process does not have independent increments:
proc = BrownianBridgeProcess[σ, {0, a}, {1, b}];assumps = 0 < t1 < t2 < t3 < t4 < 1;
mjoint = Expectation[(x[t2] - x[t1])(x[t4] - x[t3]), xproc, Assumptions -> assumps]//SimplifyCompare to the product of expectations:
mprod = Expectation[(x[t2] - x[t1]), xproc, Assumptions -> assumps] * Expectation[(x[t4] - x[t3]), xproc, Assumptions -> assumps]Simplify[mjoint == mprod, assumps && σ > 0]Conditional cumulative probability distribution:
Table[Plot[Evaluate@Probability[(x[.8] <= Subscript[x, 2])(x[.2] == Subscript[x, 1]), xBrownianBridgeProcess[]], {Subscript[x, 2], -3, 3}, Filling -> Axis, PlotRange -> {0, 1}, PlotLabel -> StringJoin["SubscriptBox[x, 1] = ", ToString[Subscript[x, 1]]]], {Subscript[x, 1], {-1.5, -.3, 1.4, 3}}]Probability[(x[Subscript[t, 2]] ≤ Subscript[x, 2])(x[Subscript[t, 1]] == Subscript[x, 1]), xBrownianBridgeProcess[], Assumptions -> 0 < Subscript[t, 1] < Subscript[t, 2] && 0 ≤ Subscript[x, 1] ≤ Subscript[t, 1] && 0 ≤ Subscript[x, 2] ≤ Subscript[t, 2]]//SimplifyA Brownian bridge process is a special ItoProcess:
ItoProcess[BrownianBridgeProcess[σ, {t0, x0}, {t1, x1}]]As well as StratonovichProcess:
StratonovichProcess[BrownianBridgeProcess[σ, {t0, x0}, {t1, x1}]]A Brownian bridge process is a solution to the stochastic differential equation
:
T = 3;a = 3;b = 11;noisysol = RandomFunction[BrownianBridgeProcess[{0, a}, {T, b}], {0, T, 0.01}, 3 10 ^ 2];
meanFunction = TimeSeriesThread[Mean, noisysol];Show[ListLinePlot[noisysol, PlotStyle -> Directive[Opacity[.1]]], ListLinePlot[meanFunction, PlotStyle -> Directive[Thick, Black]]]Compare with the corresponding smooth solution:
sol = DSolve[{P'[t] == (b - P[t]) / (T - t), P[0] == a}, P, t]Plot[P[t] /. sol[[1]], {t, 0, T}, PlotRange -> {1, 12}]A Brownian bridge process initially follows its corresponding WienerProcess:
Block[{sample1, sample2, n = 22, σ = 1, start = 0, end = 1, step = 0.01},
SeedRandom[n];sample1 = RandomFunction[BrownianBridgeProcess[σ, {start, 0}, {end, 0}], {start, end, step}];
SeedRandom[n];
sample2 = RandomFunction[WienerProcess[0, σ], {start, end, step}];
ListLinePlot[{sample1, sample2}, Filling -> {1 -> {2}}]]The distribution of the absolute supremum of a BrownianBridgeProcess follows a Kolmogorov distribution:
CDFKolmogorov[x_] = Sqrt[2 π] / x Sum[Exp[-(2 k - 1) ^ 2 π ^ 2 / (8 x ^ 2)], {k, 1, ∞}]bridges = Map[Max[Abs[#]]&, RandomFunction[BrownianBridgeProcess[], {0, 1, .0001}, 10 ^ 3]["ValueList"]];SmoothHistogram[bridges, Automatic, "PDF", Filling -> Axis]Compare the cumulative histogram with the cumulative distribution function of a Kolmogorov distribution:
Show[Histogram[bridges, 40, "CDF"], Plot[CDFKolmogorov[x], {x, Min[bridges], Max[bridges]}, PlotStyle -> Thick]]BrownianBridgeProcess can be simulated directly from WienerProcess:
μ = 0;σ = 1 / 3;t0 = 0;t1 = 2;x0 = 0;x1 = 0;proc = WienerProcess[μ, σ];
SeedRandom[3];
data = RandomFunction[proc, {t0, t1, .1}];Apply a transformation to the random sample:
sample = TimeSeriesMapThread[x0(x1 - x0)(#1 - t0) / (t1 - t0) + #2 - (#1 - t0) Last[data["Values"]] / (t1 - t0) - (t1 - #1)First[data["Values"]] / (t1 - t0)&, data];Compare to the corresponding BrownianBridgeProcess:
SeedRandom[3];
data = RandomFunction[BrownianBridgeProcess[σ, {t0, x0}, {t1, x1}], {t0, t1, .1}];ListLinePlot[{sample, data}, PlotStyle -> {Thick, Dotted}]A Brownian bridge is a conditioned WienerProcess:
cdf[z_] = Probability[(x[t] ≤ z)(x[1] == 0), xWienerProcess[], Assumptions -> 0 < t < 1]Compare to the CDF of the slice distribution of a Brownian bridge:
CDF[BrownianBridgeProcess[][t], z]% - cdf[z]//SimplifyPossible Issues (1)
Simulation is supported only within the process support:
RandomFunction[BrownianBridgeProcess[], {0, 2, .01}]RandomFunction[BrownianBridgeProcess[], {0, 1, .01}]Simulate on a part of the support:
RandomFunction[BrownianBridgeProcess[], {0.3, 0.7, .01}]Neat Examples (3)
Simulate a Brownian bridge process in two dimensions:
proc = BrownianBridgeProcess[];
SeedRandom[104];
sample = RandomFunction[proc, {0, 1, 0.001}, 2]["ValueList"];
ListLinePlot[Transpose@sample, ColorFunction -> "FallColors"]Simulate a Brownian bridge process in three dimensions:
proc = BrownianBridgeProcess[];
SeedRandom[123];
sample = Table[RandomFunction[proc, {0, 1, 0.01}, 3]["ValueList"], {6}];Graphics3D@Table[{ColorData["SolarColors"][RandomReal[]], Tube@Line@sample[[i]]}, {i, 6}]Simulate 500 paths from a Brownian bridge process:
SeedRandom[3];data = RandomFunction[BrownianBridgeProcess[], {0, 1 / 2, .01}, 500];Take a slice at 1/2 and visualize its distribution:
sd = data["SliceData", 1 / 2];cf = ColorData["Rainbow"];
sliced = BarChart[Last[#], Axes -> False, BarOrigin -> Left, AspectRatio -> 4, ChartStyle -> (cf /@ Rescale[MovingAverage[First[#], 2], {Min[sd], Max[sd]}, {0, 1}]), ImageSize -> 75]&[HistogramList[sd, {Range[-3, 3, .3]}]];Plot paths and histogram distribution of the slice distribution at 1/2:
ListLinePlot[data, ImageSize -> 400, PlotRange -> All,
AspectRatio -> 3 / 4, Epilog -> Inset[sliced, {.5, 0}, {0, 10.8}], PlotStyle -> (cf /@ Rescale[sd]), BaseStyle -> Directive[Thin, Opacity[0.5]], PlotRangePadding -> {{0, .25}, {.5, .5}}]Related Guides
History
Text
Wolfram Research (2012), BrownianBridgeProcess, Wolfram Language function, https://reference.wolfram.com/language/ref/BrownianBridgeProcess.html.
CMS
Wolfram Language. 2012. "BrownianBridgeProcess." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/BrownianBridgeProcess.html.
APA
Wolfram Language. (2012). BrownianBridgeProcess. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/BrownianBridgeProcess.html
BibTeX
@misc{reference.wolfram_2026_brownianbridgeprocess, author="Wolfram Research", title="{BrownianBridgeProcess}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/BrownianBridgeProcess.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_brownianbridgeprocess, organization={Wolfram Research}, title={BrownianBridgeProcess}, year={2012}, url={https://reference.wolfram.com/language/ref/BrownianBridgeProcess.html}, note=[Accessed: 12-June-2026]}