Моделирование курса акций с использованием Монте-Карло в R - PullRequest
3 голосов
/ 09 мая 2020

Смоделируйте на графике 50 примерных траекторий цены акции 80 долларов за 90 дней, смоделированных как геометрия c Броуновское движение с параметром дрейфа 0,1 и волатильностью 0,5. Покажите на графике этот процесс на вертикальной оси. Вариант цены и время на горизонтальной оси. Найдите вероятность того, что через 90 дней цена опциона вырастет как минимум до 100 долларов.

library(sde)
mu<-0.1
sigma<-0.5
P0<-80 #initial price
T <-90/360 #time in years
nt=10000 #number of trajectories within each simulation
n=100 #time periods
dt<-T/n #length of time periods
t <- seq(0,T,by=dt)
X=matrix(rep(0,length(t)*nt),nrow = nt)
for(i in 1:nt) {
  X[i,]=GBM(x=P0, r=mu, sigma=sigma, T=T, N=n)
}
ymax=max(X); ymin=min(X) #bounds for simulated prices
plot(t,X[1,],type="l", ylim=c(ymin,ymax), col=1, xlab="Time", ylab="Price Y(t)")
for(i in 2:nt){
  lines(t,X[i,], type='l', ylim=c(ymin, ymax), col=i)
}
Prob<-sum(nt>=100)/nt
Prob

Большое спасибо!

1 Ответ

1 голос
/ 09 мая 2020

Ответ зависит от того, как вы интерпретируете свои параметры t, n и T.

Я делаю несколько предположений: поскольку

T <- 90/360

я полагаю, это означает 90 дней в году (примерно 360, что является обычным для финансового года годом). Ваше определение t

n <- 100
dt <- T/n
t <- seq(0, T, by=dt)

дает временные интервалы для вашей симуляции, поэтому ваш 90-й день просто дается max(t) = 0.25 = T с индексом 101, последним элементом t.

X содержит 50 путей вашего процесса c сточасти, индексированных X[i,], с временными шагами j, заданными X[,j]. Итак, если вы хотите узнать значения ваших 50 симуляций на 90-й день, просто посмотрите на X[,101].

Итак, вы хотите знать, сколько ваших путей превышает 100 на 90-й день. Просто посчитайте их на

success <- sum(X[,101] >= 100)

Если вы хотите вычислить эмпирическую вероятность, просто разделите их на количество ваших путей. Следовательно

emp_prob <- success/nt
...