En su libro, Trading Algorítmico: Estrategias ganadoras y su justificación Ernie Chan muestra cómo utilizar un filtro de Kalman para mejorar la rentabilidad de una cartera cointegrada. Recordemos que la ecuación de estado es: $$\beta_t=\alpha\cdot\beta_{t-1}+\omega_{t-1}$$ Aquí, $\alpha$ es la matriz de transición de estados, $\beta_t$ es el vector de estado, y $\omega_t$ es el vector de ruido del proceso.
En su código del filtro Kalman, Chan establece la matriz de transición de estados, $\alpha$ a la matriz de identidad. Sin embargo, yo diría que esto es erróneo. Recordemos que el vector de estado se utiliza en la ecuación de medición: $$y_t=\beta_t\cdot x_t + \epsilon_t$$
Para k series temporales cointegradas, el vector de observación, $x_t$ el vector de estado, $\beta_t$ y lo observable, $y_t$ son: $$x_t=(1,\;x_{2,t},\;x_{3,t},\;...\;,\;x_{k,t})$$ $$\beta_t=(\beta_{1,t},\;\beta_{2,t},\;\beta_{3,t},\;...\;,\;\beta_{k,t})$$ $$y_t = x_{1,t}$$
El vector de estado está relacionado con los pesos estáticos ( $w_1,w_2,...,w_k$ ) obtenida a partir del procedimiento de Johansen porque estas ponderaciones dan una serie temporal estacionaria, $y_{\text{port}}$ : $$y_{\text{port}}=w_1\cdot x_1\:+\:w_2\cdot x_2\:+\:w_3\cdot x_3\:+\:...\:+\:w_k\cdot x_k$$ Resolver para $y=x_1$ obtenemos: $$x_1=(y_{\text{port}}\:-\:w_2\cdot x_2\:-\:w_3\cdot x_3\:-\:...\:-\:w_k\cdot x_k)\,/\,w_1$$ Por lo tanto, a partir de la ecuación de medición, el vector de estado inicial en el momento $t$ debe ser: $$\beta_t=(y_{\text{port},t}/w_1,\;-w_2/w_1,\;-w_3/w_1,\;...\;,\;-w_k/w_1)$$ La primera columna de la matriz $\beta$ es $y_{\text{port}}/w_1$ que es estacionario porque $y_{\text{port}}$ es estacionario. Por lo tanto, la estimación del estado de este componente de $\beta$ en el momento $t$ es: $$\beta_{1,t}=\alpha_{11}\cdot\beta_{1,t-1}$$ donde $\alpha_{11}$ debe ser inferior a 1 para el caso estacionario. Este análisis indica que la matriz de transición de estado correcta no es la matriz de identidad, sino: $$\alpha=\left[ \begin{array}{cccc} \alpha_{11} & 0 & 0 & ... & 0\\ 0 & 1 & 0 & ... & 0\\ 0 & 0 & 1 & ... & 0\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 0 & 0 & 0 & ... & 1 \end{array} \right]$$ En otras palabras, la matriz de transición de estado es la matriz de identidad, excepto el elemento (1,1) que debe ser menor que 1 (para la estacionariedad).
¿Cómo calculamos $\alpha_{11}$ ? Derecho-multiplicar ambos lados de la ecuación de estado por $\beta_{t-1}^T$ , tomar el valor de la expectativa, y resolver para $\alpha_{11}$ :
$$\alpha_{11}=\frac{\sum_{t=2}^n\beta_{1,t}\cdot\beta_{1,t-1}^T}{\sum_{t=2}^n \beta_{1,t-1}\cdot\beta_{1,t-1}^T}$$
Actualmente estoy operando con un triplete cointegrado de ETFs que dan una cartera estacionaria, $y_{\text{port}}$ . Cuando aplico una prueba de root unitaria (que mide la estacionariedad) a $y_{\text{port}}$ Obtengo los siguientes valores p utilizando una matriz de transición de estado en el filtro de Kalman con diferentes valores para el elemento (1,1) de la matriz de transición de estado, $\alpha$ :
\begin{array}{|c|c|} \hline \alpha_{11} & p\\ \hline 1 & 0.00086\\ \hline 0.93 & 0.00058\\ \hline 0.007 & 3\times10^{-13}\\ \hline \end{array}
Los valores más pequeños de p sugieren una mayor probabilidad de estacionariedad. Todos estos valores p indican estacionariedad, pero la matriz de transición modificada ( $\alpha_{11}=0.93$ ) da mejores resultados que la matriz de identidad ( $\alpha_{11}=1$ ). En el último ejemplo ( $\alpha_{11}=0.007$ ), he iterado el cálculo del filtro de Kalman 1000 veces, recalculando cada vez $\alpha_{11}$ así como la matriz de covarianza del ruido del proceso, la varianza del ruido de observación, el vector de estado inicial y la matriz de covarianza del estado inicial, con cada iteración (un procedimiento conocido como " ajuste adaptativo "del filtro Kalman). De este modo se obtuvo una estacionariedad muy alta para el $y_{\text{port}}$ de la matriz. (Esto también se refleja en una mayor rentabilidad en el backtesting del algoritmo de negociación).
No he visto este análisis en la literatura sobre el filtro de Kalman en series temporales financieras. ¿Alguien puede encontrar algún fallo en él?
0 votos
Le envié al Sr. Chan un enlace a este post. su respuesta: "El análisis de Amanda asume que el sistema es cointegrador. Pero, en realidad, la implementación del filtro de Kalman que he descrito no lo supone. De hecho, el sistema que tiene una relación de cobertura variable no puede considerarse estacionario y, por tanto, alfa no siempre es <1". Ernest Chan.
0 votos
Me parece que el objetivo del procedimiento de Johansen es obtener una cartera ponderada que sea, al menos parcialmente, estacionaria. Mi observación con el filtro Kalman es que la variación del ratio de cobertura hace que la serie temporal de la cartera ponderada tenga un valor p menor para la prueba de root unitaria, y por tanto, más estacionaria. Esto no tiene por qué ser siempre el caso, pero lo es para la cartera que estoy negociando.
0 votos
@AmandaG.: ¿Te importaría enviar tu comentario a Ernie Chan e informar de su reacción? Me gustaría mucho estar al tanto de la discusión. Gracias.
0 votos
He enviado un correo electrónico a Ernie Chan. Le haré saber si responde.
0 votos
@Hans: He recibido una respuesta por correo electrónico de Ernie Chan. En respuesta a mi afirmación: "Creo que, en igualdad de condiciones, una cartera ponderada estacionaria ofrece mayores oportunidades de operar con rentabilidad que una no estacionaria. ¿Estoy equivocado?", Ernie escribió: "Sí, estoy de acuerdo en que si la cartera es de hecho estacionaria, puede ser más rentable. Para este caso especial, el análisis presentado puede ser correcto, pero mi cálculo era para el caso general." Ernest Chan.
0 votos
En respuesta a una petición, he consolidado mis respuestas en una sola, utilizando títulos para dejar claro el tema de cada sección.