4 mar 2015

Econometria con Matlab: Como usar ventanas móviles para obtener series históricas de betas en el CAPM


En ocasiones necesitamos testar la estabilidad de cierta estimación analizando la evolución de una serie histórica de betas del modelo de regresión lineal.  El método de ventanas móviles permite realizar este tipo de ejercicio. En el siguiente ejemplo se muestra como se puede obtener una serie histórica de betas del CAPM y el Alpha de Jensen. Como usualmente se dispondrá de la rentabilidad del mercado y la de un sin numero de activos, lo que hemos llamado x e y(i) respectivamente, donde i i representa cada una de las columnas de la matriz de activos.

% -------------------------------------------------------------
%la idea es:
% tienes una matriz de variables (Yi), donde i representa cada columna
% y tienes una variable X, que representa tu rendimiento de mercado en el CAPM
% necesitas hacer series temporales de betas: esto lo harás por ventanas móviles, % por tanto
% necesitas un bucle o usar operaciones vectorizadas, opta por un bucle
% necesitas recorrer tu matriz (yi), esto lo harás con otro bucle, como este ya es un segundo bucle, sera un bucle anidados, el primero te sirve para recorrer de columna en columna y el segundo para especificar las observaciones que tendrán una amplitud determinada por tu venta.

% genero variables hipoteticas que simulan rentabilidades
   x = random('Normal',0,1,100,1);     % rentabilidad del mercado
 y_i = random('Normal',0,1,100,5);   % rentabilidad de activos

% Se supone que tienes una base de datos de esta forma. ahora debes hacer el bucle anidado
% no tengo intenrnet, pero hay infinidad de ejemplos de ejemplos en internet de como hacer
% un bucle para recorrer una matriz.

 ventana=90;         % esta ventada determina la amplitud de la ventana
 [f, c]=size(y_i);    % te permite obtener las dimensiones para tu bucle

  for i=1:c        % este bucle te recorre las columna de la matriz
      for obs=1:f-ventana % este te recorre las observaciones de cada columnas
   
  % Regresión del CAPM (recuerda que el CAPM usa exceso de rent respecto al ALR)
  % Ten pendiente que el vector de 1, matricialmente te permite obtener constante      en regresión
       behat = regress(x(obs:obs+ventana-1), [ones(ventana,1) ...                                        y_i(obs:obs+ventana-1,i)]) ;
      
     % Aqui usas las dimensiones, para obtener matrices que almacenan tus betas.
         beta_capm(obs,i)=behat(2);
         alpha_jemsem(obs,i)=behat(1);

   % Analisis de estabilidad de cada beta, opcional. Haces un gráfico para ver la      evolución histórica
   % De cada uno los betas de tus activos.
        figure(i)
            plot(beta_capm(:,i))
     end
end

% Matriz de resultados

beta_capm


Espero os sirva,
Nerys

Creando variables por grupos en dplyr (group_by + mutate)

  Simulemos una base de hogares, donde se identifica el hogar, el sexo (1 mujer) y provincia y edad para cada miembro.   # Definir la lista ...