Proble:#12 in page 323

A share of common stock in the Pilsdorff beer company has a price Yn on the nth business day of the year. Finn observes that the price change Xn =Yn+1 - Yn appears to be a random variable with mean \(\mu\)= 0 and variance \({ \delta }^{ 2 }\)= 1/4. If Y1 = 30, find a lower bound for the following probabilities, under the assumption that the Xn’s are mutually independent.

  1. P(25 \(\le\) Y2 \(\le\) 35).
  2. P(25 \(\le\) Y11 \(\le\) 35).
  3. P(25 \(\le\) Y101 \(\le\) 35).

Answer:

method1 - soloved by Central Limit Theorem.

Daily price Yn of a common stock is independent variable. The sigma of daily price Xn (=Yn+1 - Yn) is a random variable with mean 0 and sd 0.5. I assume sigma follow a normal distribution, then I can use confidence interval \((\mu -z*\frac { \delta }{ \sqrt { n } } ,\mu +z*\frac { \delta }{ \sqrt { n } } )\) to find the density.

Given \(\mu\)= 0 and \({ \delta }^{ 2 }\)= 1/4, the lower bound of sigma from the initial price is -5. So I have \(0-z*\frac { 0.5 }{ \sqrt { n } } =\quad -5\), z is a critical value for normal distribution of the price change.

In (a), n=2-1, so p=1

pnorm(5/(sqrt(2-1)*0.5))-pnorm(-5/(sqrt(2-1)*0.5))
## [1] 1

In (b), n=11-1, so p=1

pnorm(5/(sqrt(11-1)*0.5))-pnorm(-5/(sqrt(11-1)*0.5))
## [1] 0.9984346

In (c), n=101-1, so p=1

pnorm(5/(sqrt(101-1)*0.5))-pnorm(-5/(sqrt(101-1)*0.5))
## [1] 0.6826895

method2 - simulation random walk.

By the given values above, I set intial price Y1=30, then daily_sigma is Xn (=Yn+1 - Yn) which has mean is 0 and sd =1/2=0.5. The number of random walk is n-1.

Another, I assume the market is efficient and the stock market is weak form efficiency, the change of a stock price is follow random walk. The formular should be as following:

\({ Y }_{ t }={ Y }_{ t-1 }+{ \epsilon }_{ t }\quad \quad ({ \epsilon }_{ t }\sim \quad iid\quad N(0,\frac { 1 }{ 4 } ))\)

See more details in https://en.wikipedia.org/wiki/Random_walk_hypothesis.

Y1<-30                     #initial price
days <-11-1                #number of days
daily_mean <-0             #mean of change price
sd <- 0.5 #sigma of change price

simulation_random_walk_lognormal_price <- function(Y1, days, daily_mean, sd){
  sigma <-rnorm(days, daily_mean, sd) #n days volatility
  Yn <- Y1 + cumsum(sigma)         #n daily prices
  
  #plot(Yn,type="l")      #display to check the prices
  return(Yn[days])
}

n=100000
price_list= c()  #store 100000 prices at Tth day



#(a) prob_in_range of Y2
days <-2-1   #number of days

for (i in 1:n) {
  price_list[i] <-simulation_random_walk_lognormal_price(Y1, days, daily_mean, sd)
}

count_price_in_range <- sum( price_list >= 25 & price_list <= 35 )
prob_in_range_Y2 = count_price_in_range / n
prob_in_range_Y2
## [1] 1
#(b) prob_in_range of Y11
days <-11-1   #number of days
for (i in 1:n) {
  price_list[i] <-simulation_random_walk_lognormal_price(Y1, days, daily_mean, sd)
}

count_price_in_range <- sum( price_list >= 25 & price_list <= 35 )
prob_in_range_Y11 = count_price_in_range / n
prob_in_range_Y11
## [1] 0.99869
#(c) prob_in_range of Y101
days <-101-1   #number of days
for (i in 1:n) {
  price_list[i] <-simulation_random_walk_lognormal_price(Y1, days, daily_mean, sd)
}

count_price_in_range <- sum( price_list >= 25 & price_list <= 35 )
prob_in_range_Y101 = count_price_in_range / n
prob_in_range_Y101
## [1] 0.68093