Steven R. Dunbar
Department of Mathematics
203 Avery Hall
University of Nebraska-Lincoln
Lincoln, NE 68588-0130
http://www.math.unl.edu
Voice: 402-472-3731
Fax: 402-472-8466

Stochastic Processes and
Advanced Mathematical Finance

__________________________________________________________________________

Transformations of the Wiener Process

_______________________________________________________________________

Note: These pages are prepared with MathJax. MathJax is an open source JavaScript display engine for mathematics that works in all browsers. See http://mathjax.org for details on supported browsers, accessibility, copy-and-paste, and other features.

_______________________________________________________________________________________________

Rating

Rating

Mathematically Mature: may contain mathematics beyond calculus with proofs.

_______________________________________________________________________________________________

Section Starter Question

Section Starter Question

Suppose you know the graph y = f(x) of the function f(x). What is the effect on the graph of the transformation f(x + h) f(h)? What is the effect on the graph of the transformation f(1x)? Consider the function f(x) = sin(x) as an example.

_______________________________________________________________________________________________

Key Concepts

Key Concepts

  1. Three transformations of the Wiener process produce another Wiener process. The transformations are scaling, inversion and translation. These results are especially helpful when studying the properties of the sample paths of Brownian motion.

__________________________________________________________________________

Vocabulary

Vocabulary

  1. Scaling, also called re-scaling, is the transformation of f(t) to bf(ta) that expands or contracts the time axis (as a > 1 or a < 1) and expands or contracts the dependent variable scale (as b > 1 or b < 1).
  2. Translation, also called shifting is the transformation of f(t) to f(t + h) or sometimes f(t) to f(t + h) f(h).
  3. Inversion is the transformation of f(t) to f(1t). It “flips” the independent variable axis about 1, so that the interval (0, 1) is “inverted” to the interval (1,).

__________________________________________________________________________

Mathematical Ideas

Mathematical Ideas

Transformations of the Wiener Process

A set of transformations of the Wiener process produce the Wiener process again. Since these transformations result in the Wiener process, each tells us something about the “shape” and “characteristics” of the Wiener process. These results are especially helpful when studying the properties of the Wiener process sample paths. The first of these transformations is a time homogeneity that says the Wiener process can be re-started anywhere. The second says that the Wiener process may be rescaled in time and space. The third is an inversion. Roughly, each of these says the Wiener process is self-similar in various ways. See the comments after the proof for more detail.

Theorem 1. Let

  1. Wshift(t) = W(t + h) W(h), for fixed h > 0.
  2. Wscale(t) = cW(tc2), for fixed c > 0.

Then each of Wshift(t) and Wscale(t) are a version of the Standard Wiener Process.

Proof. We have to systematically check each of the defining properties of the Wiener process in turn for each of the transformed processes.

  1. Wshift(t) = W(t + h) W(h).

    1. The increment is Wshift(t + s) Wshift(s) = [W(t + s + h) W(h)] [W(s + h) W(h)] = W(t + s + h) W(s + h)

      which is by definition normally distributed with mean 0 and variance t.

    2. The increment
      Wshift(t4) Wshift(t3) = W(t4 + h) W(t3 + h)

      is independent from

      Wshift(t2) Wshift(t1) = W(t2 + h) W(t1 + h)

      by the property of independence of disjoint increments of W(t).

    3. Wshift(0) = W(0 + h) W(h) = 0.

    4. As the composition and difference of continuous functions, Wshift is continuous.
  2. Wscale(t) = cW(tc2)

    1. The increment Wscale(t) Wscale(s) = cW((t)c2) cW(sc2) = c(W(tc2) W(sc2))

      is normally distributed because it is a multiple of a normally distributed random variable. Since the increment W(tc2) W(sc2) has mean zero, then

      Wscale(t) Wscale(s) = c(W(tc2) W(sc2))

      must have mean zero. The variance is

      𝔼 (Wscale(t) W(s))2 = 𝔼 (cW((t)c2) cW(sc2))2 = c2𝔼 (W(tc2) W(sc2))2 = c2(tc2 sc2) = t s.
    2. Note that if t1 < t2 t3 < t4, then t1c2 < t 2c2 t 3c2 < t 4c2, and the corresponding increments W(t4c2) W(t 3c2) and W(t2c2) W(t 1c2) are independent. Then the multiples of each by c are independent and so Wscale(t4) Wscale(t3) and Wscale(t2) Wscale(t1) are independent.
    3. Wscale(0) = cW(0c2) = cW(0) = 0.
    4. As the composition of continuous functions, Wscale is continuous.

Theorem 2. Suppose W(t) is a Standard Wiener Process. Then the transformed processes Winv(t) = tW(1t) for t > 0, Winv(t) = 0 for t = 0 is a version of the Standard Wiener Process.

Proof. To show that

Winv(t) = tW(1t)

is a Wiener process by the four defining properties requires another fact which is outside the scope of the text. The fact is that any Gaussian process X(t) with mean 0 and Cov X(s),X(t), = min(s,t) must be the Wiener process. See the references and outside links for more information. Using this information, a partial proof follows:

  1. Winv(t) Winv(s) = tW(1t) sW(1s)

    is the difference of normally distributed random variables each with mean 0, so the difference will be normal with mean 0. It remains to check that the normal random variable has the correct variance.

    𝔼 (Winv(t) Winv(s))2 = 𝔼 (sW(1s) tW(1t))2 = 𝔼[(sW(1s) sW(1t) + sW(1t) tW(1t) (s t)W(0))2] = s2𝔼 (W(1s) W(1t))2 + s(s t)𝔼 (W(1s) W(1t))(W(1t) W(0)) + (s t)2𝔼 (W(1t) W(0))2 = s2𝔼 (W(1s) W(1t))2 + (s t)2𝔼 (W(1t) W(0))2 = s2(1s 1t) + (s t)2(1t) = t s.

    Note the use of independence of W(1s) W(1t) from W(1t) W(0) at the third equality.

  2. It is hard to show the independence of increments directly. Instead rely on the fact that a Gaussian process with mean 0 and covariance function min(s,t) is a Wiener process, and thus prove it indirectly.

    Note that

    Cov Winv(s),Winv(t), = st min(1s, 1t) = min(s,t).

  3. By definition, Winv(0) = 0.
  4. The argument that lim t0Winv(t) = 0 is equivalent to showing that lim tW(t)t = 0. To show this requires use of Kolmogorov’s inequality for the Wiener process and clever use of the Borel-Cantelli lemma and is beyond the scope of this course. Use the translation property in the third statement of this theorem to prove continuity at every value of t.

The following comments are adapted from Stochastic Calculus and Financial Applications by J. Michael Steele. Springer, New York, 2001, page 40. These laws tie the Wiener process to three important groups of transformations on [0,), and a basic lesson from the theory of differential equations is that such symmetries can be extremely useful. On a second level, the laws also capture the somewhat magical fractal nature of the Wiener process. The scaling law tells us that if we had even one-billionth of a second of a Wiener process path, we could expand it to a billions years’ worth of an equally valid Wiener process path! The translation symmetry is not quite so startling, it merely says that Wiener process can be restarted anywhere. That is, any part of a Wiener process captures the same behavior as at the origin. The inversion law is perhaps most impressive, it tells us that the first second of the life of a Wiener process path is rich enough to capture the behavior of a Wiener process path from the end of the first second until the end of time.

_______________________________________________________________________________________________

Algorithms, Scripts, Simulations

Algorithms, Scripts, Simulations

Algorithm

Let constants h and c be given. Create an approximation Ŵ(t) of Wiener process W(t) on a domain [0,T] large enough to accommodate Ŵ(1 + h) and Ŵ(1c2). Using the approximation Ŵ(t) create approximations to Wshift(t) and Wscale(t) with functions Ŵ(t + h) Ŵ(h) and cŴ(tc2). Plot all functions on the same set of axes.

Scripts

Geogebra

GeoGebra.

R

R script for transformations..

1p <- 0.5 
2N <- 400 
3 
4T <- 2 
5h <- 0.25 
6c <- 2.0 
7 
8S <- array(0, c(N+1)) 
9rw <- cumsum( 2 * ( runif(N) <= p)-1 ) 
10S[2:(N+1)] <- rw 
11 
12WcaretN <- function(x) { 
13    Delta <- T/N 
14 
15    # add 1 since arrays are 1-based 
16    prior = floor(x/Delta) + 1 
17    subsequent = ceiling(x/Delta) + 1 
18 
19    retval <- sqrt(Delta)*(S[prior] + ((x/Delta+1) - prior)*(S[subsequent] - S[prior])) 
20} 
21 
22Wshift <- function(x) { 
23    retval <- WcaretN(x+h) - WcaretN(h) 
24} 
25 
26Wscale <- function(x) { 
27    retval <- c*WcaretN(x/c^2) 
28} 
29 
30curve(WcaretN, 0,1, n=400, col = "black") 
31curve(Wshift, 0,1, n=400, add = TRUE, col = "blue") 
32curve(Wscale, 0,1, n= 400, add = TRUE, col = "red")
Octave

Octave script for transformations.

1p = 0.5; 
2 
3global N = 400; 
4global T = 2; 
5 
6global h = 0.25; 
7global c = 2.0; 
8 
9global S 
10S = zeros(N+1, 1); 
11S(2:N+1) = cumsum( 2 * (rand(N,1)<=p) - 1); 
12 
13function retval = WcaretN(x) 
14  global N; 
15  global T; 
16  global S; 
17  Delta = T/N; 
18 
19  # add 1 since arrays are 1-based 
20  prior = floor(x/Delta) + 1; 
21  subsequent = ceil(x/Delta) + 1; 
22 
23  retval = sqrt(Delta)*(S(prior) + ((x/Delta+1) - prior).*(S(subsequent)-S(prior))); 
24 
25endfunction 
26 
27function retval = Wshift(x) 
28  global h; 
29  retval = WcaretN(x + h) - WcaretN(h); 
30endfunction 
31 
32function retval = Wscale(x) 
33  global c; 
34  retval = c*WcaretN(x/c^2); 
35endfunction 
36 
37fplot("[WcaretN(x), Wshift(x), Wscale(x)]", [0,1])
Perl

Perl PDL script for transformations.

1use PDL::NiceSlice; 
2 
3$p = 0.5; 
4 
5$N = 400; 
6$T = 2; 
7$h = 0.25; 
8$c = 2.0; 
9 
10# the random walk 
11$S = zeros( $N + 1 ); 
12$S ( 1 : $N ) .= cumusumover( 2 * ( random($N) <= $p ) - 1 ); 
13 
14# function WcaretN interpolating random walk 
15sub WcaretN { 
16    my $x = shift @_; 
17    $Delta = $T / $N; 
18 
19    $prior      = floor( $x / $Delta ); 
20    $subsequent = ceil( $x / $Delta ); 
21 
22    $retval = 
23        sqrt($Delta) 
24        * ( $S ($prior) 
25            + ( ( $x / $Delta ) - $prior ) 
26            * ( $S ($subsequent) - $S ($prior) ) ); 
27} 
28 
29sub Wshift { 
30    my $x = shift @_; 
31    $retval = WcaretN( $x + $h ) - WcaretN($h); 
32} 
33 
34sub Wscale { 
35    my $x = shift @_; 
36    $retval = $c * WcaretN( $x / ( $c * $c ) ); 
37} 
38 
39# file output to use with external plotting programming 
40# such as gnuplot 
41# Start gnuplot, then from gnuplot prompt 
42#  plot "wienerprocess.dat" using 1:2 with lines title WcaretN’, "wienerprocess.dat" using 1:3 with lines title Wshift’, "wienerprocess.dat" using 1:4 with lines title Wscale 
43$M     = 300; 
44$tgrid = zeros( $M + 1 )->xlinvals( 0, 1 ); 
45$W     = WcaretN($tgrid); 
46$Wsh   = Wshift($tgrid); 
47$Wsc   = Wscale($tgrid); 
48 
49open( F, ">wienerprocess.dat" ) || die "cannot write: $! "; 
50foreach $j ( 0 .. $M ) { 
51    print F $tgrid->range( [$j] ), " ", $W->range(   [$j] ), " ", 
52        $Wsh->range(       [$j] ), " ", $Wsc->range( [$j] ), "\n"; 
53} 
54close(F);
SciPy

Scientific Python script for transformations.

1 
2import scipy 
3 
4p = 0.5 
5 
6N = 400 
7T = 2. 
8h = 0.25 
9c = 2.0 
10 
11# the random walk 
12S = scipy.zeros(N+1) 
13S[1:N+1] = scipy.cumsum( 2*( scipy.random.random(N) <= p ) - 1 ) 
14 
15def WcaretN(x): 
16    Delta = T/N 
17    prior = scipy.floor(x/Delta).astype(int) 
18    subsequent = scipy.ceil(x/Delta).astype(int) 
19    return scipy.sqrt(Delta)*(S[prior] + (x/Delta - prior)*(S[subsequent] - S[prior])) 
20 
21def Wshift(x): 
22    return WcaretN(x + h) - WcaretN(h) 
23 
24def Wscale(x): 
25    return c*WcaretN(x/c**2.) 
26 
27M = 300 
28tgrid = scipy.linspace(0, 1, M+1) 
29W = WcaretN(tgrid) 
30Wsh = Wshift(tgrid) 
31Wsc = Wscale(tgrid) 
32 
33# optional file output to use with external plotting programming 
34# such as gnuplot, R, octave, etc. 
35# Start gnuplot, then from gnuplot prompt 
36#  plot "wienerprocess.dat" using 1:2 with lines title WcaretN’, "wienerprocess.dat" using 1:3 with lines title Wshift’, "wienerprocess.dat" using 1:4 with lines title Wscale 
37f = open(wienerprocess.dat, w) 
38for j in range(0,M+1): 
39    f.write( str(tgrid[j])+ +str(W[j])+ +str(Wsh[j])+ +str(Wsc[j])+\n); 
40 
41f.close()

__________________________________________________________________________

Sources

This section is adapted from: A First Course in Stochastic Processes by S. Karlin, and H. Taylor, Academic Press, 1975, pages 351–353 and Financial Derivatives in Theory and Practice by P. J. Hunt and J. E. Kennedy, John Wiley and Sons, 2000, pages 23–24.

_______________________________________________________________________________________________

Problems to Work

Problems to Work for Understanding

  1. Explain why there is no script for simulation or approximation of the inversion transformation of the Wiener process, or if possible provide such a script.
  2. Given the piecewise linear approximation ŴN(t), what are the slopes of the piecewise linear segments of the scaling transformation cŴN(tc2) ?
  3. Modify the scripts to plot an approximation of Wscale(t) on [0, 1] with the same degree of approximation as ŴN(t) for some N. Plot both on the same set of axes.
  4. Show that st min(1s, 1t) = min(s,t)

__________________________________________________________________________

Books

Reading Suggestion:

References

[1]   P. J. Hunt and J. E. Kennedy. Financial Derivatives in Theory and Practice. John Wiley and Sons, 2000. HG 6024 A3H86 2000.

[2]   S. Karlin and H. Taylor. A Second Course in Stochastic Processes. Academic Press, 1981.

[3]   J. Michael Steele. Stochastic Calculus and Financial Applications. Springer-Verlag, 2001. QA 274.2 S 74.

__________________________________________________________________________

Links

Outside Readings and Links:

  1. Russell Gerrard, City University, London, Stochastic Modeling . Notes for the MSc in Actuarial Science, 2003-2004. Contributed by S. Dunbar October 30, 2005.

__________________________________________________________________________

I check all the information on each page for correctness and typographical errors. Nevertheless, some errors may occur and I would be grateful if you would alert me to such errors. I make every reasonable effort to present current and accurate information for public use, however I do not guarantee the accuracy or timeliness of information on this website. Your use of the information from this website is strictly voluntary and at your risk.

I have checked the links to external sites for usefulness. Links to external websites are provided as a convenience. I do not endorse, control, monitor, or guarantee the information contained in any external website. I don’t guarantee that the links are active at all times. Use the links here with the same caution as you would all information on the Internet. This website reflects the thoughts, interests and opinions of its author. They do not explicitly represent official positions or policies of my employer.

Information on this website is subject to change without notice.

Steve Dunbar’s Home Page, http://www.math.unl.edu/~sdunbar1

Email to Steve Dunbar, sdunbar1 at unl dot edu

Last modified: Processed from LATEX source on July 28, 2016