Message Boards Message Boards

Construction of multi-variate Brownian Bridge Process

Posted 7 years ago

We present simple and workable solution for construction of multivariate Brownian Bridge Process that can be used for analysis of multivariate patterns in conditioned distribution based on Wiener process. The ability to derive adjacent distributions based on BB process leads to interesting applications in Finance where we examine options on maximum of n-assets subject to upper barrier boundary. The use of Ito Process as a wrapper simplifies the construction argument and leads to elegant solution of the task.

Barrier-hitting probability


Let' s recall that BB denoted as $(H (t))$ is continuous - time adapted version of the Brownian motion and it differs from the latter in one aspect - its probability distribution is conditional probability of a Wiener process $(W (t))$ with condition $H_0 =H_T = \alpha$

The linkage of Brownian Bridge to the standard Brownian motion (W (t)) from [0,0]] on [0, T] can be seen from the following definition $X (t) = W (t) - t/T W (T)$. The second expression is a function of time [ScriptT] from values [0, 0] on [T, W (T)]. By subtracting t/TW(T) from the Brownian motion W (t), we ensure the condition of X (t) = X (T) = 0.

Properties of the BB process

On the defined line [0,T] the random variables enter image description here are jointly normal since their random components $W(t1), W(t2)...W(tn)$ are normal. Therefore, the BB process from [0 to 0] on the time line $[0,T]$ is a Gaussian process with mean = 0 enter image description here

Additional proof of normality of BB process can be seen from the probability density of this process:

Clear[bbp, s, T, t, a, b];
bbp = BrownianBridgeProcess[\[Sigma], {s, a}, {T, b}];
PDF[bbp[t] /. {s -> 0, a -> 0, b -> 0}, u] // Simplify
Plot[% /. {\[Sigma] -> 0.03, T -> 1, t -> 0.5}, {u, -0.05, 0.05}, 
 PlotTheme -> "Business", 
 PlotLabel -> Style["PDF of the BB Process", Purple, 15]]

enter image description here

Relaxation of assumptions on the parameters values leads to generic BB process evolving along the time line [0, T] and taking values [a, b], both non - zero. This BB process then becomes $X(t)+a+t(b-a)/T$ for $0<=t<=T$ where enter image description here, the BB process from [0 to 0[ defined above. Since we have added a non-random function to the Gaussian process, we obtain again a Gaussian process, now with a different - 'shifted' mean $= a+t(b-a)/T$, but the same variance = $(\sigma^2 t (T-t))/T$

Relation of BB to Ito process

We cannot express the BB process in terms of Ito stochastic integral with deterministic integrand since the BB process has non-monotonic variance. From the variance expression above it is clear that the variance increases on the interval 0<=t<=T/2 and decreases on T/2<=t<=T.

Plot[(\[Sigma]^2 t (T - t))/T /. {T -> 1, \[Sigma] -> 0.05}, {t, 0, 
  1}, PlotLabel -> "Variance of the BB process"]

enter image description here

However, we can define a process with the same distributional properties as the IBB process from [0 to 0] that is known as 'scaled stochastic integral'. Let's define enter image description here . Then the integral enter image description here is essentially a Gaussian process provided t<T and he random variables $Y(t1)=(T-t1) I(t1), Y(t2)=(T-t2) I(t2)$.... are jointly normal and therefore expressible through Ito process. This can be directly confirmed in Mathematica by providing Ito Process wrapper for the Brownian Bridge Process.

ItoProcess[bbp] // TraditionalForm

enter image description here

This shows that the BB process is an Ito Process with $drift = (b-x(t))/(T-t)$ and volatility parameter $= \sigma$

Multi-variate BB process

The ability to define the BB process as a special form of Ito process offers a number of advantages. One of particular interest is the construction of multi-variate Ito processes that are well--defined and easily applicable in Mathematica. This means that the construction of multi-variate BB process is feasible through Ito Process definition.

BB process in Finance

BB process in unique in its definition and specification. The fact it is a derived version of the Brownian motion with time-dependent path offers a number of advantages. It allows to model intermediate paths when the initial and terminal points are fixed.This is useful to model yields on assets with 'pull-to-par' feature.

BB process found its way into finance on two other counts:

  • Valuation of barrier-bounded options

  • MC schemes convergence

We focus on the first case and demonstrate how multi-variate BB process can be used to value multi-factor option with upper barrier ceiling. For this, we define:

  • 10 variables = can be returns on financial assets

  • Initial yields are in the range of 1% - 5%

  • We set the condition: Initial yields = final yields: a=b

  • We defined random covariance matrix

  • Evaluation process starts at t=0 and ends at T=1 (year)

  • We will model the multi-variate BB process and the multi-variate Ito Process with BB-adjusted drift (bbdrift) and random covariance matrix (cov)

    m = 10;
    iv = RandomReal[{0.01, 0.05}, m];  
    CM[n_, min_, max_] := #.Transpose[#] &@
       RandomReal[{min, max}, {n, n}];  
    cov = CM[m, -0.01, 0.02]; 

We define variables for the process:

    vars = Table[Symbol["x" <> ToString[i]], {i, m}];
    xtvar = Table[vars[[i]][t], {i, m}];
    tf = Table[Symbol["b" <> ToString[i]], {i, m}];
    lab = Table["BB Plot No " <> ToString[i], {i, m}];

and define the drift function:

bbdrift = (tf - xtvar)/(T - t)      

enter image description here

We replace the variables with actual values:

tf = iv;
bbdrift = (tf - xtvar)/(T - t) /. T -> 1

enter image description here

Here we specify the BB process as the Ito Process with vector-valued input and the correlation matrix:

Grid[cov // Correlation, ItemSize -> Small]

enter image description here

ip2 = ItoProcess[{bbdrift, IdentityMatrix[m]}, {vars, iv}, t, cov];


We run the simulation of 5,000 paths per asset and visualise some sample paths

SeedRandom[Method -> "MersenneTwister"] ;
path2 = RandomFunction[ip2, {0, 1, 0.05}, 5000, 
  Method -> "StochasticRungeKutta"]; 
   ListLinePlot[path2["PathComponent", i]["Path", Range[20]], 
    PlotRange -> All, PlotLabel -> lab[[i]], ImageSize -> 150], {i, 
    m}] // Quiet

enter image description here

Range statistics for each asset

Based on the simulation run, we define the Max, Min and Mean values per each asset yield

Table[ListLinePlot[{TimeSeriesThread[Max, path2["PathComponent", i]], 
   TimeSeriesThread[Min, path2["PathComponent", i]], 
   TimeSeriesThread[Mean, path2["PathComponent", i]]}], {i, 1, m}]

enter image description here

Max, Min and Mean for the entire family of all assets

and then create the 'global' measures - Max, Min and Mean values across all 10 assets:

pmax1 = TimeSeriesThread[Max, path2];
pmn0 = TimeSeriesMap[Mean, path2];
pmn1 = TimeSeriesThread[Mean, pmn0];
pmin1 = TimeSeriesThread[Min, path2];
ListLinePlot[{pmax1, pmn1, pmin1}, PlotStyle -> {Blue, Green, Red}]

enter image description here

Distribution of the Max

We are interested in the maximum value per each path along the time line. We therefore create the 'distribution of the maximum '

maxD = TimeSeriesMap[Max, path2];
ListLinePlot[maxD["Path", Range[50]], 
 PlotLabel -> Style["Distribution of the maximum", Blue, 15]]

enter image description here

The volatility of the maximum follows general pattern of increasing volatility on the interval 0<=t<=T/2 and decreasing on the remaining part.

TimeSeriesThread[StandardDeviation, maxD];
ListLinePlot[%, PlotLabel -> Style["Volatility of the Max", Blue, 15], 
 PlotStyle -> {Red, Thick}]

enter image description here

We also examine the distribution of the Maximum

SmoothHistogram[maxD, Filling -> Axis, FillingStyle -> Opacity[0.25, Pink], 
 PlotTheme -> "Business"]

enter image description here

The distribution is clearly non-normal

Using the Max distribution above, we now build a smooth kernel distribution that we us further in other calculations. In particular, we way want to examine the tail behaviour as a function of upper barrier. For this purpose, we look at the probability of max value exceeding barrier for the entire family of components:

maxDD = SmoothKernelDistribution[maxD];
Plot[Probability[x > u, x \[Distributed] maxDD], {u, 0.07, 0.1}, 
 PlotTheme -> "Marketing", 
 PlotLabel -> 
  Style["Probability of exceeding barrier: Tail behaviour", Blue, 15]]

enter image description here

We can equally pose a different problem and look at the 'slice distribution' and examine the probability of hitting barrier as we move in time. This is presented in the chart below where we look at the probability of hitting barrier of 7%

Table[Probability[x > 0.07, x \[Distributed] maxD[i]], {i, 0, 1, 
BarChart[%, BarOrigin -> Left, 
 PlotLabel -> Style["Probability of hitting barrier 7%", Blue, 15], 
 ColorFunction -> Function[{height}, ColorData["Rainbow"][height]], 
 ChartLabels -> Table[i, {i, 0, 1, 0.05}]]

enter image description here

Multi-factor option with multivariate BB process

Knowing the distribution of multivariate BB process with max values allows us defining various problems on this quantity. Of of them is option valuation on the max on n-assets subject to barrier restrictions. Availability of max distribution simplifies the task in many ways - the option can be built as conditional expectation. We demonstrate he concept on the global distribution family:

Plot3D[Expectation[x - k \[Conditioned] k <= x <= h, 
  x \[Distributed] maxDD], {k, 0.06, 0.08}, {h, 0.08, 0.1}, 
 ColorFunction -> "DarkRainbow", PlotLegends -> Automatic, 
 AxesLabel -> {"Strike", "Barrier"},      
 PlotLabel -> 
  Style["Barrier-bounded option on the max of 10 assets", Blue, 15]]

enter image description here

For the call option we observe:

  • Call option value increases as the strike gets lower

  • Call option increases when the barrier moves away from the strike

Option value per period

In practice, we are more interested in option valuation on 'slice distribution' when the BB process moves in time. To accomplish this task, we first build the discount function

dfint = Interpolation[{{1/12, 0.0025}, {3/12, 0.0038}, {1/2, 0.0044}, {1, 
     0.0055}}, InterpolationOrder -> 2];
DF[t_] := Exp[-dfint[t ] t] // Quiet
Plot[DF[x], {x, 0, 1}, PlotLabel -> Style["Discount function", Blue, 15], 
 PlotStyle -> {Thickness[0.01], Purple}, Filling -> Axis, 
 FillingStyle -> LightBlue]

enter image description here

We value these call options as discounted conditional expectation of max value exceeding the strike and staying below the upper barrier. Call option values for strike k=7% and barrier h=10% are shown below:

   DF[i] Expectation[
     x - k \[Conditioned] k <= x <= h /. {k -> 0.07, h -> 0.1}, 
     x \[Distributed] maxD[i]]}, {i, 0, 1, 0.05}];
 PlotLabel -> 
  Style["Option value per period: k=7% and h=10%", Blue, 14], 
 Filling -> Axis, FillingStyle -> LightGray, 
 PlotStyle -> {Magenta, Thickness[0.01]}]

enter image description here

We observe the following:

  • For BB process with fixed initial and final values (a=b), the maximum value occurs at T/2. This consequence of peal variance at this point

  • Option valuation resembles variance patterns and follows typical convex profile

  • The optimal timing occurs at the maximum point of the graph above


Multivariate BB process in Mathematica can be easily built using its relationship to the Ito Process. This opens multiple avenues for the process analysis and provides useful basis for building of auxiliary processes used in finance. Distribution of max or min based on multivariate BB processes is one the examples presented in this note.

The analysis of BB process and its applications can be extended further. Different stating and final values, variance relaxation over time and addition of heavier tails can be explored in further research.

POSTED BY: Igor Hlivka

enter image description here - Congratulations! This post is now a Staff Pick as distinguished by a badge on your profile! Thank you, keep it coming!

POSTED BY: Moderation Team
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract