Ultimamente he estado leyendo todo lo que he podido sobre Chuck Hughes, un famoso trader de USA ganador de varios concursos de trading muy conocidos.
Podéis leer aquí una ENTREVISTA que le hicieron y también os dejo su WEB por si queréis echar un vistazo.
En concreto me he leído estos 5 libros suyos:
En los libros, detalla sus sistemas de trading con acciones, ETFs y Opciones e incluye un sin fin de reportes de su broker detallando sus operaciones reales, sus declaraciones de hacienda y los títulos de ganador de los campeonatos de trading en los que ha participado, justificando las bondades de su operativa y demostrando que ha ganado mucho dinero con su trading.
Demasiado relleno innecesario, que además repite una y otra vez en cada libro. Por mas que leo los reportes de sus brokers,no saco nada en claro de ellos, ya que omite las fechas de compra de los títulos.
Eso si, en sus libros no para de hablar de fantasiosas rentabilidades extraordinarias y de convertir unos pocos miles de dólares en millones. ¿Demasiado bueno para ser verdad? Habrá que verlo.
En cuanto a su sistema, basa toda su operativa en un sencillo seguidor de tendencias consistente en:
- Un sistema de largo plazo, que también puede usarse como filtro de mercado, usando el corte del precio con la Media Exponencial de 20 meses. Lo usa tanto para filtro de mercado con el SP-500 como para filtro de tendencia de largo plazo de las acciones en las que va a invertir.
- Un sistema de entradas/salidas de medio plazo usando el cruce de las medias de 50 y 100 días.
- Un stop máximo inicial del 7 al 15%.
Luego aplica esta operativa a ETFs, Acciones Small Caps y compra de Opciones.
Ese es su sistema principal, que complementa vendiendo CALLs sobre las acciones que tiene y haciendo SPREADs con opciones basándose en este sistema de señales.
En fin, una operativa sencilla que le ha dado para ganar 7 campeonatos del WORLDCUP TRADING CHAMPIONSHIP.
Además de estos 7 campeonatos, ha quedado entre los 5 primeros en muchas otras ocasiones.
A pesar de llevar muchos años usándolos, parece ser que sus sistemas siguen funcionando, ya que, de hecho, en 2014 quedó segundo con un moderado 339% de rentabilidad,
y en este difícil 2015, va tercero con solo un 196%.
En fin, que nunca sabremos si gana los campeonatos y consigue esas rentabilidades con lo que cuenta en los libros o con algo mas que no cuenta, pero el hecho es que parece que el tío gana dinero con su trading.
Así que vamos a hacer unas pruebas con su sistema, a ver que nos sale.
Para hacer las pruebas, he codificado un programa en Amibroker que dejo abajo, al final, para que el que quiera lo pruebe y modifique a su gusto.
Incorpora un filtro de mercado, un filtro de tendencia de largo plazo para cada valor, entra y sale por cruce de EMAs de 50/100 días, usa un stop máximo inicial de un 10% y busca valores que hayan hecho recientemente un nuevo máximo de 52 semanas y estén cerca de él.
El sistema opera a la vez hasta un máximo de 50 valores.
He usado valores del SP500, aunque Chuck prefiere todo lo contrario, smallcaps. Podéis hacer pruebas. Aumenta la rentabilidad, pero también el Drawdown.
Estos son los resultados para una simulación desde 1996 hasta el 2014 incluidos.
Gana bastante dinero.
Una rentabilidad media de un 8,7% anualizada (16% ajustada por riesgo) y un Drawdown máximo de un 15%, con un Payoff Ratio de 4,78.
684 trades en 18 años, lo que hace una media de unos 38 trades/año.
En fin, que si, que gana dinero, pero que no parece que sea capaz de producir esas exageradísimas rentabilidades que Hughes cuenta en sus libros. No es prerfecto, pero saca un buen provecho de los mercados alcistas y evita bastante bien los bajistas.
Claro que él lo utiliza con SmallCaps y MicroCaps que supongo que seleccionará de acuerdo a algunos parámetros mas que quizá no cuenta en los libros.
También supongo que el extra de rentabilidad que consigue quizá pueda explicarse por el apalancamiento que usa al operar con opciones.
En cualquier caso, un sistema mas bien mediocre, a estudiar un poco mas a fondo para ver si puede mejorarse añadiéndole o incluso quitándole cosas.
Lo que está claro es que no ha ganado los campeonatos solo con esto y que en sus libros no lo cuenta todo.
Lo que está claro es que no ha ganado los campeonatos solo con esto y que en sus libros no lo cuenta todo.
El Programa
// Sistema Chuck Hughes
// @SuperThon
// Octubre 2015
// v1.0
// Acciones SP500
// Stop inicial al 10%
// Periodo de BackTest 1996-2014
// 0 Filtro de Mercado
SetForeign ("SP-500");
// Cambia a intervalo Mensual
TimeFrameSet(inMonthly );
FiltroMercado = (C > EMA(C,20));
TimeFrameRestore();
RestorePriceArrays();
// Alinea datos al intervalo
FiltroMercado = TimeFrameExpand(FiltroMercado, inMonthly);
// 1 Filtro de Tendencia de largo plazo: La accion es alcista de largo plazo
// Cambia a intervalo Mensual
TimeFrameSet(inMonthly );
FiltroTendencia = (C > EMA(C,20));
TimeFrameRestore();
// Alinea datos al intervalo
FiltroTendencia = TimeFrameExpand(FiltroTendencia, inMonthly);
// 2 Filtro ha hecho un nuevo maximo de 52 semanas hace menos de 4 semanas y el precio está a menos del 5%
High52 = HHV(High,260);
Filtro52 = (High >= High52*(1-0.05)) AND (High52 >= Ref( High52,-20)) ;
// 3 Señal de entrada
EMA1 = EMA(C,50);
EMA2 = EMA (C,100);
FiltroSenal = (EMA1>EMA2) AND (Ref(EMA1,-1) < Ref(EMA2,-1));
// 4 CONDICION DE COMPRA
CondicionCompra = FiltroSenal AND Filtro52 AND FiltroTendencia AND FiltroMercado;
BuyPrice = Open;
// 5 CONDICION DE VENTA
CondicionVenta = (EMA1 < EMA2);
SellPrice = Open;
// 6 MONEY MANAGEMENT
NumeroPosiciones = 50;
SetOption("MaxOpenPositions", NumeroPosiciones );
PositionSize = -(100/NumeroPosiciones);
// 8 ENTRADA y SALIDA
SetTradeDelays (1,1,0,0);
Buy = CondicionCompra;
Sell = CondicionVenta;
Buy = ExRem (Buy,Sell);
Sell = ExRem (Sell,Buy);
// @SuperThon
// Octubre 2015
// v1.0
// Acciones SP500
// Stop inicial al 10%
// Periodo de BackTest 1996-2014
// 0 Filtro de Mercado
SetForeign ("SP-500");
// Cambia a intervalo Mensual
TimeFrameSet(inMonthly );
FiltroMercado = (C > EMA(C,20));
TimeFrameRestore();
RestorePriceArrays();
// Alinea datos al intervalo
FiltroMercado = TimeFrameExpand(FiltroMercado, inMonthly);
// 1 Filtro de Tendencia de largo plazo: La accion es alcista de largo plazo
// Cambia a intervalo Mensual
TimeFrameSet(inMonthly );
FiltroTendencia = (C > EMA(C,20));
TimeFrameRestore();
// Alinea datos al intervalo
FiltroTendencia = TimeFrameExpand(FiltroTendencia, inMonthly);
// 2 Filtro ha hecho un nuevo maximo de 52 semanas hace menos de 4 semanas y el precio está a menos del 5%
High52 = HHV(High,260);
Filtro52 = (High >= High52*(1-0.05)) AND (High52 >= Ref( High52,-20)) ;
// 3 Señal de entrada
EMA1 = EMA(C,50);
EMA2 = EMA (C,100);
FiltroSenal = (EMA1>EMA2) AND (Ref(EMA1,-1) < Ref(EMA2,-1));
// 4 CONDICION DE COMPRA
CondicionCompra = FiltroSenal AND Filtro52 AND FiltroTendencia AND FiltroMercado;
BuyPrice = Open;
// 5 CONDICION DE VENTA
CondicionVenta = (EMA1 < EMA2);
SellPrice = Open;
// 6 MONEY MANAGEMENT
NumeroPosiciones = 50;
SetOption("MaxOpenPositions", NumeroPosiciones );
PositionSize = -(100/NumeroPosiciones);
// 8 ENTRADA y SALIDA
SetTradeDelays (1,1,0,0);
Buy = CondicionCompra;
Sell = CondicionVenta;
Buy = ExRem (Buy,Sell);
Sell = ExRem (Sell,Buy);