I need to simulate a price series based on a GARCH(1,1) specification for the returns (price changes). I currently have this:
d_price = diff(price) #the price changes
garch.model = garch(d_price) #a GARCH(1,1) model
specs = garchSpec(model = list(omega = garch.model$coef[1],
alpha = garch.model$coef[2], beta = garch.model$coef[3]))
sim = garchSim(spec = specs, n = t) #simulated GARCH returns
mu = mean(price) #the starting value is the mean of the series
sim.series = rep(mu, t)
#create the simulated price series
for(i in 2:t){
sim.series[i] = sim.series[i-1] + sim[i-1]
}
My problem is that this series often becomes negative. I can't have negative prices in my model.
I thought about using percentage price changes instead, but I experience a similar problem - the price series sometimes decreases to arbitrarily small values that are completely unrealistic.
So, my question is this: Is there a best option for simulating a series so that the price never becomes negative or unrealistically small? That is, without putting artificial barriers on the price process (P must be greater than 20, for example).
Thanks!!!