Conditional Probability Problem Concerning Brownian Motion

227 Views Asked by At

Let $(W_t)_{t\ge0}$ be a Standard Brownian Motion. I would like to compute the conditional probability

$$P\left(\inf_{t\in [1,2]} W_t < 0 ~ \middle| ~ W_1 >0,~ W_2 >0\right).$$

By using the reflection principle twice, I obtain the result $1\over 3$. Can anyone verify my answer?

My computation is the following: $$P\left(\inf_{t\in [1,2]} W_t < 0 ~ \middle| ~ W_1 >0,~ W_2 >0\right)~=~{P\left(\inf_{t\in [1,2]} W_t < 0 , W_1 >0, W_2 >0 \right)\over P\left(W_1>0, W_2>0\right)}.$$ Frist compute the denominator: $$P\left(W_1>0, W_2>0\right)~=~\int_0^\infty {1\over \sqrt{2\pi}}e^{-{x^2\over 2}} \int_{-x}^\infty {1\over \sqrt{2\pi}} e^{-{y^2\over 2}}\, dy\, dx~=~{3\over 8}.$$ Now consider the numerator: $$P\left(\inf_{t\in [1,2]} W_t < 0 , W_1 >0, W_2 >0 \right)$$ $$~=~\int_0^\infty P\left(\inf_{t\in [1,2]} W_t < 0 , W_2 >0 \middle | W_1 = x\right){1\over \sqrt{2\pi}}e^{-{x^2\over 2}} \, dx$$ For the conditional density, from reflection principle, $$P\left(\inf_{t\in [1,2]} W_t < 0 , W_2 >0 \middle | W_1 = x\right) ~=~{1\over 2} P\left( \inf_{t\in [1,2]} W_t < 0 ~|~ W_1 = x \right) $$ Use reflection principle again, $$P\left( \inf_{t\in [1,2]} W_t < 0 ~|~ W_1 = x \right) ~=~2 P\left( W_2<0~ \middle | ~ W_1 = x \right) $$ $$ = ~ 2 \int_{-\infty}^{-x} {1\over \sqrt{2\pi}}e^{-{y^2\over 2}}\, dy$$.

Combine all equation, I got the answer $1\over 3$.

2

There are 2 best solutions below

2
On BEST ANSWER

By reflection principle, $$ \mathbb{P}(\min_{t\in [1,2]} W_t < 0, W_1 >0 , W_2>0) = \mathbb{P}(W_1 > 0, W_2 <0). $$ Now, since $\mathbb{P}(W_1 > 0, W_2 <0) + \mathbb{P}(W_1 > 0, W_2 >0) = \frac{1}{2}$, we are done if we know the value of $\mathbb{P}(W_1 > 0, W_2 >0)$. Can you compute this probability?

2
On

Verification by simulation:

import numpy as np

def trial(N=1000):
    motion = np.array([0] + list(np.cumsum(np.random.randn(2*N))))
    return (motion[N] > 0 and motion[2*N] > 0, min(motion[N:2*N]) < 0)

def experiment(M=1000):
    true = 0
    false = 0
    for _ in range(M):
        a, b = trial()
        if a:
            if b: true += 1
            else: false += 1
    return (true, false)

def statistic(K=100):
    p = np.array([t/(t+f) for t, f in [experiment() for _ in range(K)]])
    return (np.mean(p), np.std(p))

% python -i brownian.py
>>> statistic()
(0.3234965965632075, 0.022448703489617576)