Reinhart, Rogoff, Excel y la austeridad

Lo malo no es que dos de los más referenciados economistas de los últimos tiempos hayan cometido un error en Excel -si bien es cierto que denota una cierta dejadez por su parte-. Lo malo es el cocinado de datos para que éstos sean coherentes con sus conclusiones, que a la luz de los hechos se me antojan tomadas con premeditación y alevosía: la eliminación de datos contrarios al modelo que están presentado, la sobreponderación de datos coherentes con dicho modelo… Y lo peor de todo: la cantidad de economistas, políticos, etcétera, que han utilizado dichas conclusiones para anatemizar la deuda pública por encima del 90% del PIB, para poner el grito en el cielo a medida que esa ratio se acerca a esa cifra maldita, para -en fin- apoyar esa mal entendida austeridad que tanto daño está haciendo a la economía y a la sociedad. Mi análisis en Capitalibre.


Simulaciones en Excel

Aunque hay programas más adecuados, la sencillez y flexibilidad de Excel también puede ser aprovechada para efectuar experimentos simples de simulación matemática.  Básicamente, de lo que se trata es de generar muestras aleatorias de números que sigan una distribución determinada.  El resultado puede ser usado como entrada de cualquier modelo que se alimente de datos que se supone que siguen esa distribución.

La técnica para la generación de esas muestras no puede ser más sencilla.  Conocida la función de distribución de probabilidad de lo que se trata es de ir hallando la abcisa correspondiente a números generados aleatoriamente de forma uniforme entre 0 y 1 (el rango de cualquier función de distribución de probabilidad).  Así, si queremos generar una muestra de n valores de una variable aleatoria X que se distribuye normalmente con media μ y desviación típica σ, debemos partir de n números aleatorios distribuidos uniformemente entre 0 y 1.  Posteriormente, para cada uno de esos números, pi, tenemos que hallar el valor xi de la variable aleatoria que presente una probabilidad de ocurrencia menor o igual a pi.  El conjunto de valores xi así obtenidos será una muestra simulada de la variable aleatoria X, evidentemente con su misma distribución.

¿Cómo plantear esto en Excel?  Para generar los números aleatorios uniformemente distribuidos entre 0 y 1 tenemos la función ALEATORIO().  Y para obtener la abcisa correspondiente a una ordenada dada de la distribución normal tenemos la función INV.NORMAL(), que recibe como parámetros el valor de la abcisa (la probabilidad), la media y la desviación típica de la normal que estamos simulando.  Hay que decir que esta función está disponible a partir de Excel 2010; para versiones anteriores tenemos la función DISTR.NORM.INV() cuyo funcionamiento es idéntico.  Lo único que hay que tener en cuenta es que la función ALEATORIO() devuelve valores en el intervalo [0, 1), cerrado por la izquierda y abierto por la derecha; por su parte, la función INV.NORMAL() (o su equivalente DISTR.NORMAL.INV()) trabaja para valores de probabilidad mayores que cero e inferiores a uno.  Por tanto, en el improbable caso de que ALEATORIO() devolviese exactamente cero, la función INV.NORMAL() daría un error.  Si fuésemos muy puristas podríamos controlar este caso pero, sinceramente, creo que no merece la pena.  Por otra parte, si quisiésemos simular valores para una variable aleatoria que se distribuyese siguiendo otra distribución de probabilidad, obviamente deberíamos usar la correspondiente función estadística INV de Excel.

En este fichero Excel podemos ver un sencillo ejemplo de lo explicado.  La columna A contiene 200 números aleatorios distribuidos uniformemente entre 0 y 1 (podemos variar su valor pulsando F9).  Por su parte la columna B contiene los valores simulados para una variable aleatoria de media la que señalemos en la celda E1 y de desviación típica la indicada en la celsda E2.  Los valores de los parámetros pueden ser cambiados en cualquier momento.  Se incluye también un gráfico donde podemos ver cómo efectivamente los valores generados dan lugar a una gráfica igual a la de la función de distribución de probabilidad de una normal con los parámetros elegidos.


Paseos aleatorios en Excel

Paseo Aleatorio

Paseo Aleatorio generado en Excel

En este post trataré de explicar brevemente como generar un paseo aleatorio, también conocido como random walk, con Microsoft Excel 2010 (aunque también funciona en Excel 2007 y, con pequeñas adaptaciones, en versiones anteriores del programa).  Los paseos aleatorios son muy usados en Finanzas ya que muchas variables financieras se comportan como tales.
Un paseo aleatorio es un proceso según el cual el valor en un momento del tiempo de una variable cualquiera, por ejemplo el precio de un activo financiero, yt, puede obtenerse como la suma del valor de esa variable en un momento anterior, yt-1, y una variable aleatoria, εt, cuya esperanza es cero y cuya varianza es constante e igual a σε2. A esta variable aleatoria se le denomina innovación y, a nuestros efectos, podemos identificarla con todo lo que sucede entre el momento t-1 y el momento t que hace que el precio varíe de yt-1 a yt.

Es decir, que yt = yt-1 + εt.  A su vez, yt-1 = yt-2 + εt-1; e yt-2 = yt-3 + εt-2 ; y así sucesivamente hasta llegar a que y1 = y0 + ε1.  Substituyendo recursivamente deducimos que yt = y0 + εt  + εt-1  + εt-2 + … + ε1.  Tenemos que darnos cuenta de que, como la esperanza matemática de todas las innovaciones es cero, el valor esperado de nuestra variable es igual a su valor esperado en el punto de partida; en otras palabras, el precio de nuestro activo financiero no depende del momento de tiempo en que estemos: E[yt] = E[y0 + εt + εt-1  + εt-2 + … + ε1] = E[y0] ∀t (puede suponerse, sin pérdida de generalidad, que la esperanza del valor de la variable en el punto de partida es cero).

No sucede lo mismo con la varianza (ni, consecuentemente, con la desviación típica) de nuestra variable.  Si calculamos la varianza de la expresión anterior, VAR[yt] = VAR[y0 + εt  + εt-1  + εt-2 + … + ε1] = t·σε2.  Aquí debemos aclarar que estamos suponiendo que la varianza del valor de la variable en el punto de partida es cero y, lo que es más importante, que las innovaciones no dependen de las condiciones iniciales, del valor de la variable en dicho punto de partida (y, por lo tanto, la covarianza entre dicho punto de partida y la innovación de cualquier período es nula).  Es precisamente de la expresión anterior de donde obtenemos la conocida regla de que la volatilidad de un activo financiero, medido por su desviación típica (la raíz cuadrada de la varianza), es proporcional a la raíz cuadrada del tiempo (véase este post donde nos referimos a esta práctica regla).

Para construir nuestra hoja de Excel debemos tener en cuenta las características que acabamos de comentar para un paseo aleatorio.  En concreto, necesitaremos generar números aleatorios entre 0 y 1, para obtener en base a ellos, el valor de la variable εt para un momento t determinado.  Para esto necesitaremos  saber cómo se distribuyen los εt.  Podemos suponer que lo hacen normalmente, con media cero y varianza σε2.

En la hoja podemos definir tanto el valor inicial de la variable, y0 (celda D5), como el valor de la varianza de las innovaciones, σε2 (celda B2).  En base a esos dos valores generamos un paseo aleatorio de 100 pasos, combinando la función ALEATORIO() (que nos devuelve un número aleatorio entre 0 y 1), en la columna B, con la función INV.NORM(probabilidad; media; desviación típica), que nos devuelve el valor para el que la función de distribución de probabilidad de una variable aleatoria que se distribuya normalmente (con media la que se le pasa a la función como segundo parámetro y con varianza igual al cuadrado del tercer parámetro) toma un valor igual al primer parámetro, en la columna C.  Cada fila de esta columna C representa a cada uno de los εt.

Por último, la columna D, contiene el proceso yt = yt-1 + εt que, dicho sea de paso, desde el punto de vista del análisis estadístico de series temporales, es un proceso autoregresivo de orden 1, un AR(1) con raíz unitaria (es decir, un AR(1) cuyo único coeficiente es igual a la unidad).

La hoja se presenta protegida sin contraseña y, dado el comportamiento de la función ALEATORIO(), cada vez que cambiemos algo en ella o presionemos F9, se generará un nuevo paseo aleatorio.

Podéis descargar el fichero aquí: Paseo Aleatorio.xlsx.