Rico, Rico… y con Fundamentales

Que me disculpe el grandísimo Karlos Arguiñano, referente culinario sin par en la cocina de mi tierra, por utilizar su nombre sin licencia ni royalties pero no pude resistir la tentación, ya que en la entrada de hoy nos vamos a dedicar a cocinar, en los pucheros tecnológicos que hemos ido desarrollado progresivamente en esta serie de artículos, unos cuantos platos de mar y montaña que combinan sabores técnicos con esencias fundamentales… ¡Para chuparse los dedos, oiga!

Este va a ser un post eminentemente práctico, así que remánguese, colóquese el delantal y vamos al ajo. Nuestras recetas van a precisar de los siguientes ingredientes:

  • El horno de backtesting financiero, Pyalgotrade.
  • La base de datos MySQL del IBEX35.
  • Las siguientes extensiones de nuestro módulo pyalgoext:
    • volatility.py para cálculos de volatilidad
    • dbfeed.py para conectar con el almacén de datos
    • organizers.py para trabajar con indicadores fundamentales
  • El archivo DbStrategy.py que contiene nuestras estrategias.
  • Sal y pimienta a gusto

Puede obtenerlo todo a través del repositorio de GitHub para este proyecto, PyAlgoSamples. Una vez tenga todos los utensilios en su lugar, abra el archivo DbStrategy.py con un editor de texto (le puede servir el editor IDLE propio de Python o incluso el bloc de notas que viene con Windows). Para facilitarle la inmersión gradual en el código he colocado un parámetro en la primera línea que le permitirá cambiar de estrategia:

SCENARIO = 1

Si por ejemplo usted cambia el valor de SCENARIO a 6 y vuelve a ejecutar el archivo, estará trabajando sobre el escenario número 6 y obtendrá los resultados correspondientes a dicha estrategia. ¿Sencillo, verdad? Pues vamos a ensuciarnos las manos.

karlosantena3373_134

1 y 2: Benchmark

Recordará usted lo importante que resulta tener algo con qué compararse para saber si, de hecho, estamos ganando o perdiendo. Ese será nuestro escenario base, o benchmark. En nuestro caso lo que haremos será partir de un capital inicial de EUR 1M, comprar la mayoría de constituyentes del IBEX35 y mantenerlos hasta el final, solamente reemplazando las salidas del índice, una gestión completamente pasiva que se encuentra reflejada en la clase MyBenchmark. Ejecute el Escenario 1 y obtendrá estos resultados:

Benchmark
Ratio de Sharpe 43.79
Rentabilidad Anualizada 5.93%
Rentabiliad Acumulada 133.45%
Volatilidad 14.91%
Pérdida Máxima 46.51%

Una rentabilidad anual del 5.93% desde el inicio del ejercicio el 13 de Marzo del 2002 hasta hoy no es mala, pero tampoco resulta para tirar cohetes, habida cuenta además que tenemos que soportar la pérdida de casi la mitad de nuestro patrimonio por el camino.

Hagamos un inciso para comentar que tanto estos resultados como todos los posteriores son total return, es decir, tienen en consideración dividendos. Esto es muy relevante en un índice como el IBEX35 donde los cupones pagados por las empresas tienden a ser altos y puede conducir a divergencias importantes. Por ejemplo, busque la siguiente línea:

self.setUseAdjustedValues(True)

Reemplazando True por False comprobará que sin considerar dividendos su rentabilidad acumulada caerá a un magro 68.66%. Ahora vaya y siga utilizando gráficos sin ajustar 🙂

El Escenario 2 representa la creación de un portafolio seleccionando 10 compañías de forma completamente aleatoria, con resultados que variarán azarosamente pero raramente superarán el 100% de rentabilidad acumulada.

Usaremos carteras de 10 títulos en casi todos los ejemplos siguientes: es el número mínimo de títulos para considerar la cartera diversificada; 15 ó 20 serían mucho mejor pero debido a que sólo trabajamos con treinta y pocos títulos nos tenemos mucho rango.

3, 4 y 5: Fundamentales

Ahora vamos a trocear e introducir los elementos fundamentales que hemos guardado en nuestro almacén de datos, que en concreto son cuatro:

  • PBV (Price to Book Value): el ratio entre el precio de mercado y valor según los estados contables de la compañía.
  • PER (Price to Earnings Ratio): el ratio entre el precio de mercado y las ganancias por acción de una empresa.
  • NDE (Net Debt to EBITDA): el ratio entre las deudas de una compañía y sus ganancias antes de impuestos y otras cargas.
  • DPS (Dividend per Share): el dividendo pagado por cada acción de la empresa.

Estos ratios combinan muy bien para nuestros propósitos: tanto el PBV como el PER nos dan una medida de lo barata que está una compañía en términos relativos, el NDE nos proporciona una idea rápida de su endeudamiento (o, expresado de otra forma, el número de años que tardaría la compañía en pagar sus deudas usando sólo sus propios recursos) y mediante el DPS daremos prioridad a firmas que pagan altos dividendos (es decir, que distribuyen ganancias en lugar de precisar reinversión continua).

El Escenario 3 utiliza solamente el PBV con ordenación ascendente:

organizers.OrderRule('PBV', True)

Es decir, dando más prioridad a valores bajos, buscando compañías baratas en relación a su valor intrínseco y al universo de inversión.

Escenario 3
Ratio de Sharpe 39.46
Rentabilidad Anualizada 6.35%
Rentabiliad Acumulada 147.44%
Volatilidad 19.60%
Pérdida Máxima 54.77%

Una rentabilidad acumulada del 147.44% nos puede resultar muy atractiva a los ojos, pero tener que asumir una volatilidad incrementada del 19.60% y una aberrante pérdida máxima contribuyen a un Sharpe inferior, que debería llevar a un inversor racional a rechazar esta alternativa frente al benchmark. Dése cuenta de lo importante que es tener no sólo criterios sólidos y objetivos no sólo de ejecución sino también de evaluación. En cualquier caso, resultados considerablemente buenos para tan poco esfuerzo.

La regla del Escenario 4 ya pone en juego más elementos: el PER, el NDE y el DPS trabajando conjuntamente para seleccionar a las “mejores” compañías.

Escenario 4
Sharpe 40.8
Rentabilidad Anualizada 6.74%
Rentabiliad Acumulada 161.02%
Volatilidad 20.09%
Pérdida Máxima 63.08%

Continuamos incrementando nuestra rentabilidad de forma lineal, pero a expensas de tambien incrementar la volatilidad y las pérdidas máximas a niveles que pocos estómagos pueden digerir; aunque acabamos realizando esa ventaja fundamental el mercado, el mercado atraviesa fases irracionales en las que nada le importa ese valor intrínseco. El Ratio de Sharpe, aunque mejora, se sitúa todavía por debajo de nuestro benchmark.

Hagamos aquí una merecida pausa para recordar la increíble interpretación de Karlos una de las mejores parodias gastronómicas del cine español, la escena de la Tortilla Rusa en la mítica Airbag de Juanma Bajo Ulloa.

Para el Escenario 5 vamos a ampliar nuestro portafolio y a contar también con el PBV en nuestro indicador fundamental, pero ya que es bastante redundante respecto al PER ya presente vamos a dar a ambos un peso de 0.5 para que cuenten como un sólo criterio.

organizers.OrderRule('PBV', True, 0.5),
organizers.OrderRule('PER', True, 0.5),
organizers.OrderRule('NDE', True),
organizers.OrderRule('DPS')

Además introduciremos un factor de seguimiento: cada trimestre (90 días) vamos a revisar la lista de activos seleccionados, y si su posición en el ranking se ha deteriorado los reemplazaremos por los valores que se encuentren al alza en ese momento.

Escenario 5
Ratio de Sharpe 54.98
Rentabilidad Anualizada 6.79%
Rentabiliad Acumulada 163%
Volatilidad 12.82%
Pérdida Máxima 40.43%

El seguimiento consigue poner bajo control tanto la volatilidad como la pérdida máxima, y junto a los criterios consigue marginalmente mejorar la rentabilidad. Todo ello contribuye a obtener por primera vez un Ratio de Sharpe que es comparativamente superior al de nuestro escenario base.

6: Técnico

A continuación vamos a dejar a un lado los factores fundamentales e introducir criterios puramente técnicos. Esto se puede encarar con muchos niveles de complejidad usando diferentes indicadores, pero nosotros buscaremos un acercamiento tan sencillo como arriba aplicando un cruce de líneas móviles (SMA de 50 y 200 sesiones) que ya cubrimos en artículos anteriores.

Entraremos cuando se produzca un cruce ascendente, y a la inversa cerraremos posición cuando se produzca un cruce descendente. La mayor actividad generará más comisiones de intermediación, que para todos los escenarios hemos establecido en un razonable 0.2% sobre el montante de la operación.

myBroker = broker.Broker(capital, feed, broker.TradePercentage(0.002))

Más adelante puede modificar esta línea de código para simular otras estructuras de costes. De momento, ejecute el Escenario 6.

Escenario 6
Ratio de Sharpe 71.16
Rentabilidad Anualizada 8.03%
Rentabiliad Acumulada 211.65%
Volatilidad 11.27%
Pérdida Máxima 31.66%

Los resultados son considerablemente mejores; aplicando el market-timing conseguimos llear la rentabilidad anualizada al 8.03% mientras mantenemos a raya la volatilidad y casi reducimos la pérdida máxima a la mitad, saliéndonos del mercado durante las grandes caídas, lo cual nos recompensa con un Ratio de Sharpe de 71.16.

7: Fusión

En este caso vamos a realizar un experimento interesante: echaremos en la sopa tanto factores fundamentales como técnicos: las medias móviles van a determinar tanto nuestras entradas como nuestras salidas, pero las dejaremos operar únicamente la parte alta del mercado, es decir, entre las 20 compañías con mejores fundamentales. Expresado de otra forma, el Escenario 7 va a vetar el tercio inferior del índice.

Escenario 7
Ratio de Sharpe 85.59
Rentabilidad Anualizada 10.12%
Rentabiliad Acumulada 313.42%
Volatilidad 11.67%
Pérdida Máxima 24.64%

anecdotas-nabo-668x400x80xX

Tal vez se les ha quedado la cara de Karlos cuando contó la anécdota de los nabos. No sería de extrañar porque hemos obtenido los mejores resultados en cualquier categoría que consideremos: baja volatilidad, pérdida máxima reducida y una rentabilidad acumulada por encima del 300% que lleva nuestro Ratio de Sharpe a un 85.59, que no es poco.

Precisamente esto es lo que en Ágora Asesores Financieros llamamos análisis integral: una fusión de criterios donde el fundamental indica qué comprar, mientras que el técnico dice cuándo comprar, aprovechando las sinergias entre ambos. Por completar la analogía de nuestra anterior entrega: uno selecciona los zapatos más rentables y el otro se encarga de enterarse de cuáles entre ellos están de moda entre los hipsters de la City.

Paremos aquí para tomar un patxarán, abrir hueco y atacar el Escenario 8 con los postres. Volvemos en un ratito. ¡Gracias por leerme y si les ha gustado por favor no olviden compartirlo en sus redes sociales!

Anuncios

Un comentario en “Rico, Rico… y con Fundamentales

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s