在 R 中使用 Monte Carlo 模拟股票价格

Simulations of the stock price using Monte Carlo in R

在图表中模拟 90 天内 80 美元股票的 50 条样本路径,建模为几何布朗运动,漂移参数为 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

答案取决于您如何解释参数 tnT

我做了一些假设:因为

T <- 90/360

我想,这意味着一年有 90 天(大约 360 天,这在金融领域很常见)。你对t

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

给出了您的模拟时间步长,因此您的第 90 天仅由 max(t) = 0.25 = T 给出,索引为 101t 的最后一个元素。

X 包含随机过程的 50 条路径,由 X[i,] 索引,时间步 jX[,j] 给出。因此,如果您想知道第 90 天 50 次模拟的值,只需查看 X[,101].

所以您想知道在第 90 天有多少路径超过 100。只需按

计算它们
success <- sum(X[,101] >= 100)

如果您想计算经验概率,只需将它们除以路径数即可。因此

emp_prob <- success/nt