He creado un programa VBA para calcular el VaR utilizando Monte Carlo, he simulado el movimiento browniano. Este método podría estar bien para el 100% de la cartera de acciones, pero digamos que esta cartera puede tener renta fija / inversión alternativa / derivados, etc y que el porcentaje de composición puede o no puede ser conocido por mí. En ese caso, como modelo genérico, ¿puedo utilizar la Distribución de Pareto Generalizada (GPD) para Monte Carlo? El uso no será para una valoración precisa del riesgo de mercado, sino más bien para un informe de análisis del riesgo de rendimiento de la inversión. Tengo un enlace para GPD en Excel en el siguiente enlace. http://www.quantitativeskills.com/sisa/rojo/pareto.xls Pero en ese caso, ¿cuál o cómo será mi ecuación estocástica para la modelización del precio/retorno? Creo que no basta con aleatorizar x0 o alfa. Mi código VBA actual es el siguiente para una fácil referencia:
Function ValueAtRiskMC(confidence, horizon, RiskFree, StDv, StockValue)
Dim i As Integer
Dim stockReturn(1 To 10000) As Double
'start of monte carlo loop
For i = 1 To 10000
'According to the Black Scholes model, the price path of stocks is defined by
'the stochastic partial differential equation dS = (r - q -1/2sigma^2)dt + sigma dz
'where dz is a standard Brownian motion, defined by dz = epsilon * sqrt(dt)
'where epsilon is a standard normal random variable; dS is the change in stock price
'r is the risk-free interest rate, q is the dividend of the stock,
'sigma is the volatility of the stock.
'The model implies that dS/S follows a normal distribution with mean
'r - q -1/2sigma^2, and standard deviation sigma * epsilon * sqrt(dt))
'As such the price at time 0 < t <= T is given by
'St = S0 * exp( (r – q - ½ sigma^2) dt + sigma * epsilon * sqrt(dt))
'As we are ignoring dividends etc here so
'below line is for geometric brownian motion
stockReturn(i) = Exp((RiskFree - 0.5 * StDv ^ 2) + StDv * Application.NormInv(Rnd(), 0, 1)) - 1
Next i
'end of monte carlo loop
ValueAtRiskMC = StockValue * (-(horizon) ^ 0.5) * Application.Percentile(stockReturn, 1 - confidence)
End Function