-1

Consider a Wiener Process (https://en.wikipedia.org/wiki/Wiener_process):

A Wiener process $W(t)$, $t \in [0, \infty)$, is a real-valued continuous-time stochastic process that satisfies the following properties:

  1. $W_0 = 0$
  2. $W$ has independent increments: for every $t > 0$, the future increments $W_{t+u} - W_t$, $u \geq 0$, are independent of the past values $W_s$, $s < t$.
  3. $W$ has Gaussian increments: $W_{t+u} - W_t$ is normally distributed with mean 0 and variance $u$, i.e., $W_{t+u} - W_t \sim \mathcal{N}(0, u)$.

Thus, in general:

$$W(t) = \sum_{i=1}^{t-1} (W_i - W_{i-1})$$ $$(W_i - W_{i-1}) \sim \mathcal{N}(0, dt)$$

Here is my attempt to simulate a Wiener Process in the R programming language:

library(ggplot2)

n <- 1000 # Number of steps dt <- 1/n # Time step

dW <- rnorm(n, mean = 0, sd = sqrt(dt)) W <- cumsum(dW)

df <- data.frame(time = seq(0, 1000, length.out = n), Wiener = W)

p <- ggplot(df, aes(x = time, y = Wiener)) + geom_line() + labs(title = "Wiener Process", x = "Time", y = "Value") + theme_bw()

print(p)

enter image description here

My Question: I am interested in learning if it is possible to mathematically define the Wiener Process such that the range can only be between two numbers $a$ and $b$?

For example, imagine a coin where the probability of success itself evolves as a stochastic process. That is, the probability of getting heads on the $n_{th}$ turn depends on the history of the previous flips according to a Wiener Process. In this case, I would have to define a Wiener Process between $0$ and $1$.

From a programming perspective, I think this might be possible: Every time the Wiener Process takes a value of $0$ or $1$, you can "force" it to take a value of 0.01 or 0.99 and resume the simulation:

n <- 1000  # Number of steps
dt <- 1/n  # Time step

dW <- rnorm(n, mean = 0, sd = sqrt(dt))

W <- numeric(n) W[1] <- 0.5 # Start in the middle of the interval [0, 1]

Generate the Wiener process

for (i in 2:n) { W[i] <- W[i-1] + dW[i]

If the process hits 0 or 1, reset to 0.01 or 0.99 respectively

if (W[i] <= 0) { W[i] <- 0.01 } else if (W[i] >= 1) { W[i] <- 0.99 } }

df <- data.frame(time = seq(0, 1, length.out = n), Wiener = W)

p <- ggplot(df, aes(x = time, y = Wiener)) + geom_line() + labs(title = "Bounded Wiener Process", x = "Time", y = "Value") + theme_bw()

print(p)

enter image description here

But is it possible to mathematically define the Wiener Process according to these constraints? I am interested in mathematically defining a Wiener Process like this so I can infer well-known theoretical properties from it. In the way I have done it (Bounded), I am not sure if theoretical properties can be inferred from this.

I am aware that there is something called a Geometric Brownian Motion in which the Logarithm of the process is analyzed such that negative values can not be taken - but I am not sure if there are any formulations which allow the process to naturally lie within two values (Probability of a Brownian motion staying within double linear barriers).

Is this possible?

Thanks!

Note: Here are multiple simulations:

 n <- 1000  # Number of steps
    dt <- 1/n  # Time step
df &lt;- data.frame()


for (j in 1:100) {
  dW &lt;- rnorm(n, mean = 0, sd = sqrt(dt))
  W &lt;- cumsum(dW)
  temp_df &lt;- data.frame(time = seq(0, 1, length.out = n), Wiener = W, process = j)
  df &lt;- rbind(df, temp_df)
}


color_gradient &lt;- scale_color_gradient(low = &quot;red&quot;, high = &quot;blue&quot;)


p &lt;- ggplot(df, aes(x = time, y = Wiener, color = process)) +
  geom_line() +
  labs(title = &quot;Multiple Wiener Processes&quot;, x = &quot;Time&quot;, y = &quot;Value&quot;) +
  theme_bw() +
  color_gradient


print(p)

enter image description here

stats_noob
  • 3,112
  • 4
  • 10
  • 36
  • Wait, I think I found something? https://en.wikipedia.org/wiki/Reflection_principle_%28Wiener_process%29 – stats_noob Dec 12 '23 at 16:35
  • https://en.wikipedia.org/wiki/Reflected_Brownian_motion – stats_noob Dec 12 '23 at 16:35
  • I believe that reflecting Brownian motion is related to solutions of Laplace's equation with homogeneous Neumann BCs in the same way that the expected time to hit the boundary of standard Brownian motion is related to harmonic functions with homogeneous Dirichlet BCs. – whpowell96 Dec 12 '23 at 16:43

1 Answers1

2

This is a case of Reflected Brownian Motion.

If the interval was $[0, \infty)$, we could realize it as the well known $Y_t := |B_t|$ for $B$ a Brownian Motion.

For the interval $[0,1]$, we can insert $B$ into a triangle wave function to get $f(B_t)$. In our case, $$X_t = f(B_t) = 2 \left|\frac{B_t}{2}-\lfloor \frac{B_t}{2}+\frac{1}{2}\rfloor \right|.$$ What this really means is that if the Brownian Motion $B$ passes over a boundary, it gets evaluated "oppositely" by $f$, just as in the case of $Y_t = |B_t|$.

As a different point of view, we can also transfer the Brownian Motion $B$ onto a circle by taking $Z_t := e^{2 \pi i B_t}$, or equivalently, by letting the angle $/2\pi$ be given by the fractional part $ \{B_t \} := B_t - \lfloor B_t \rfloor$. Let $X_t$ be the arc distance $/\pi$ from the rightmost point on the circle. Then, the right point corresponds to $X_t=0$, the left one to $X_t=1$, and it is the same as living in the interval $[0,1]$ with a reflecting boundary. Actually, the above formula resembles this analogy! (For $[0, \infty)$, we would take a "circle with infinite radius".)

In conclusion, in both options we copied the interval and identified points on the copies. At the beginning, we copied it infinitely many times and layed out the copies out next to each other (sticking one end per interval together). In the second version, we copied the interval only once and sticked both ends together to arrive at a circle.

Alex
  • 481
  • thank you so much for your answer! I am trying to self teach myself about these concepts (e.g. https://math.stackexchange.com/questions/4825422/creating-a-simulation-to-disprove-the-law-of-large-numbers) and really appreciate your help! Its really cool when I naively imagine some concept and realize that this concept already exists! – stats_noob Dec 13 '23 at 02:34
  • Is there a way to generally define a brownian motion such that it does not exceed (a,b)? – stats_noob Dec 13 '23 at 06:53
  • I posted a follow up question here: https://math.stackexchange.com/questions/4826708/understanding-the-triangular-wave-function – stats_noob Dec 13 '23 at 07:11