# q1
x = list(n=30, mean=4.809, var=1.263, sumxi2 = 730.42143)
obs = c(3.8,2.2,5.5,5.1,4.5,4.0,3.0,4.4,3.9,5.9)

width <- function(x) {
  2*1.96*sqrt(x$var/x$n)
}

i = 1
while(width(x) > 0.75) {
  x$mean = (x$mean*x$n + obs[i])/(x$n + 1)
  x$n = x$n + 1
  x$sumxi2 = x$sumxi2 + obs[i]^2
  x$var = (x$sumxi2 - x$mean^2*x$n)/(x$n - 1)
  i = i + 1
}

ans = x$n - 30

# q2
# Pn/n ~ N(Fx(1000), Fx(1000)[1 - Fx(1000)]/n)
# ( 0.01F(1000) - mu ) / sigma >= 1.96
ans <- function(n, P) {
  F = P/n
  (0.01*F)/sqrt(F*(1-F)/n)
}

choices = c(ans(2000,1890),
            ans(3000,2500),
            ans(3500,3100),
            ans(4000,3630),
            ans(4500,4020))
ans= seq(along=choices)[choices == max(choices)]
# n=4000, P=3630

# q3 see lecture notes

# q4
alpha = 0.16; sigma = 0.25; K = 60; S = 50; T=1
m = (alpha - 1/2*sigma^2)*T
v = sigma*sqrt(T)

u = c(0.20, 0.01, 0.04, 0.43, 0.35)
z = qnorm(u)
n = z*v + m
prices = exp(n)*S
#C[which(C<0)] = 0
#ans = mean(C)

# q5
alpha = 0.13; sigma = 0.4; S = 40; K = 41; T = 4/12; r = 0.04
m = (r - 1/2*sigma^2)*T
v = sigma*sqrt(T)

u = c(0.55, 0.32, 0.90, 0.60, 0.66, 0.80, 0.23, 0.53, 0.49, 0.86, 0.10, 0.15)
z = qnorm(u)
n = z*v + m

simPrices = list()
for(i in 1:3) simPrices[[i]] = S

for(i in 1:3) {
  for(j in 1:4) {
    simPrices[[i]][j+1] = simPrices[[i]][j] * exp(n[(i-1)*4 + j])
  }
}

means = numeric(3)
for(i in 1:3) {
  simPrices[[i]] = simPrices[[i]][2:5]
  means[i] = (prod(simPrices[[i]]))^(1/4)
}
vals = K - means
vals[which(vals < 0)] = 0
P = mean(vals)*exp(-r*T)