Un Random Walk es un paseo aleatorio o camino aleatorio. Se genera con alguna función cuya función de distribución de probabilidad nos permita generar números aleatorios que se apoyan en el valor anteriormente calculado. Podríamos utilizar una simple distribución uniforme (véase otro
post anterior), pero en este caso vamos ha utilizar una ditribución LogNormal, o también denominada LogoNormal. En Excel existe una función que genera números que se ajustan precisamente a una distribución Lognormal.
=DISTR.LOG.INV(probabilidad;media;desv_estándar)
=DISTR.LOG.INV(0,6;LN(10);0,5)
cuyo resultado es: 11,3504642
Con esta función podríamos crear una serie temporal que se comporte como un Random Walk (paseo aleatorio). Por ejemplo, si en la celda B1 ponemos el primer valor (10) y en la celda B2 ponemos la fórmula:
=DISTR.LOG.INV(ALEATORIO();LN(B1);0,02)
copiando la celda B2 hasta la B1000, obtendríamos una serie temporal de mil datos cuyos incrementos se comportan según una distribución Lognormal.
Esto que hemos realizado se podría hacer con una macro como la siguiente.
Código:
Sub serie1()
Dim A() As Double
Dim n
Dim i
n = 1000
ReDim A(n)
Randomize
A(0) = 10
For i = 1 To n
A(i) = Application.WorksheetFunction.LogInv(Rnd, LN(A(i - 1)), 0.02)
Next i
For i = 0 To n
Cells(i + 1, "B") = A(i)
Next i
End Sub
Function LN(x)
LN = Log(x) / Log(Exp(1))
End Function
Una variante de la macro anterior es la siguiente.
Código:
Sub serie2()
Dim A As Variant
Dim n
Dim i
n = 1000
Randomize
Range("B1") = 10
A = [B1:B1001]
For i = 2 To n
A(i, 1) = Application.WorksheetFunction.LogInv(Rnd, LN(A(i - 1, 1)), 0.02)
Next i
[B1:B1001] = A
End Sub
Function LN(x)
LN = Log(x) / Log(Exp(1))
End Function