¿Nos visitas desde USA? Entra a tu página Rankia.us.
Oscar Cagigas

Gestión del capital, ondas de Elliott y sistemas de trading

Sistema CCI - 710 para el SP500

El SP500 es un índice bastante difícil de operar. La mayoría de sistemas tendenciales producen pérdidas en el SP500 porque sus movimientos no son sostenidos, ni en tiempo ni en profundidad. Los diseñadores de sistemas como Lebeau&Lucas aseguran que la mejor forma de operar el SP500 es con sistemas antitendencia, que compran cuando el SP500 ha corregido y luego rebota. Cualquier otra aproximación como las roturas de bandas tampoco funciona.

 
En Onda4 hemos podido comprobar las afirmaciones de Lebeau&Lucas tras múltiples pruebas y simulaciones. Muchos de los sistemas que funcionan en índices más tendenciales como el DAX, EUROSTOXX, etc no sirven para el SP500.
 
Parece evidente entonces que hay que comprar el SP500 cuando ha caído lo suficiente y vender tras el rebote posterior. No se debería ir más allá del simple swing porque con frecuencia veremos a este índice devolver todo o gran parte de las ganancias acumuladas en el rebote inicial.
Con estas dos ideas en mente se puede desarrollar un sistema de trading. Para buscar una caída de varios días en el SP500 usaremos el indicador CCI. Valores por debajo de -100 indican una fuerte sobreventa. En el gráfico de debajo se muestra en fucsia las veces que este indicador ha caído por debajo de este umbral que acabamos de definir.
SP 500
Bien, es cierto que cualquier indicador sobrevendido (estocástico, RSI, etc) PUEDE estar indicando un suelo del mercado, pero no es buena idea comprar el SP500 solamente porque un indicador u oscilador avise de sobreventa, ya que el precio puede seguir cayendo.
 
En este sistema hemos considerado que el mejor momento de entrar comprados en el SP500 es cuando el CCI empiece a subir tras haber estado por debajo de -100. Así nos aseguramos que estamos al comienzo de un rebote generado por la sobreventa. Durará más o menos, pero necesariamente ha debido comenzar para que el CCI empiece a subir.
Hemos podido comprobar que en la mayoría de los casos el SP500 subirá durante un par de semanas tras esta señal. Por tanto parece bastante lógico tomar beneficios tras 15 días en la operación (10 días de trading).
Como vemos en el gráfico de debajo en la mayoría de las ocasiones si no se toman beneficios a los 10 días esa ganancia desaparecerá. El SP500 hace unas oscilaciones que no son muy tendenciales.
beneficios
Solamente comprando con la condición de que el CCI esté subiendo tras haber estado por debajo de -100 y vendiendo a los 10 días se obtienen unos resultados muy buenos con este sistema. Pero es posible mejorarle.
 

¿Cómo?

Primero haciendo que el sistema sea simétrico; es decir, que no importe si estamos en un mercado alcista o bajista. Que las mismas condiciones que aplican para la compra apliquen para la venta (adaptadas al caso bajista, claro está).
 
En el gráfico de debajo vemos que para operar en el lado corto solamente hay que esperar a que el CCI comience a bajar tras haber estado por encima de +100. También se toman beneficios a las 10 barras de la entrada.
 
La segunda forma de mejorar el sistema es haciendo que solo tome señales largas o cortas en función de si el mercado está alcista a largo plazo o bajista a largo plazo, respectivamente. Para ello no hay que complicarse mucho. Se mirará si la media de 200 sesiones sube para el caso alcista y se mirará si baja para el caso bajista. Así de sencillo.
sistema simetrico
Solamente con esas condiciones que acabamos de explicar ya tenemos un sistema más que decente. Las resumimos a continuación.
 
Entrada largo
  • CCI(7) sube y ayer estaba por debajo de -100.
  • La media de 200 del SP500 está subiendo 
Entrada corto
  • CCI(7) baja y ayer estaba por encima de -100.
  • La media de 200 del SP500 está bajando
Salida
  • Han transcurrido 10 barras desde la entrada
Así de simple. Debajo vemos la implementación en Amibroker.
Para el filtro de mercado comparamos la media de hoy con el valor hace justo una semana de trading (5 días)
entrada salida
El código anterior puede ir al comienzo del sistema o en un fichero #include que se llama al comenzar un sistema cualquiera. Así es más cómodo porque podemos probar este filtro en cualquier sistema que se nos ocurra.
A continuación mostramos el código del sistema propiamente dicho:
codigo sistema
Aunque vd no utilice Amibroker verá que las condiciones explicadas anteriormente son muy sencillas de implementar.
amibroker
Pero vamos con las estadísticas. La implementación de este sistema tal y como se acaba de explicar arroja las siguientes estadísticas cuando se aplica sobre el SP500:
resultado sistema
Las condiciones de la simulación son:
  • El periodo es 1/1/1995 1/1/2005.
  • No se deducen comisiones ni slippage.
  • Se simula el futuro grande (250$ por punto) sobre el índice cash $SPX.
Se puede ver que la estrategia mencionada de comprar en correcciones y vender 10 días más tarde produce dos ganancias cada 3 operaciones o un 66% de aciertos que es lo mismo.
El ratio entre ganadoras y perdedoras es superior a la unidad (1.09) lo que hace que tengamos un buen factor de beneficio o Profit Factor de 2.14.
El drawdown es tolerable (27%). El ratio entre el beneficio en dólares y el drawdown en dólares es de casi 7 (6.93). Con este estupendo Recovery Factor estamos asegurando una operativa eficiente, ganando 7 veces más que el drawdown que tenemos que soportar.
Con un solo futuro este sistema gana 342 mil dólares en el periodo indicado.
Veamos ahora el periodo fuera de muestra. Probaremos el sistema en el periodo 1/1/2005 1/1/2009:
resultados
El resultado es excelente. La ganancia es de casi 100 mil dólares, aunque en esta ocasión el drawdown ha sido bastante superior al anterior, llegando al 49%. En cualquier caso un ratio de Sharpe y de MEGAN superior a 1 nos dicen que el sistema es muy bueno y seguramente siga produciendo estos buenos resultados en el futuro. Su sencillez es lo que le hace tan robusto.
 
El sistema que acabamos de ver tiene solamente dos variables a optimizar. La primera es el periodo del CCI. La segunda es el número de barras para tomar beneficios.
En el gráfico de debajo podemos ver que un periodo de CCI entre 5 y 8 genera muy buenos resultados. Por encima de 8 la ganancia disminuye bastante rápido aunque sigue siendo positiva. Se puede ver que el número de barras no es tan crítico como el periodo del CCI; es decir, que la variación de la ganancia es mucho más suave. Un periodo entre 8 y 11 barras parece dar los mejores resultados.
Aquí se ha escogido la combinación 7/10 porque es bastante robusta y está bastante centrada. Si el sistema se desviara de los parámetros óptimos en el futuro debería seguir funcionando.
Cualquier sistema más rebuscado y con más variables es susceptible de generar más ganancia sobre el papel (al simularlo y optimizarlo) pero difícilmente seguirá manteniendo sus características tan bien como lo hace este. Recuerde que un sistema simple es un sistema robusto.
take profit
curva capital
En el gráfico de encima de estas líneas podemos ver la curva de capital para el primer periodo 1/1/1995 1/1/2005. En el gráfico de debajo vemos una simulación con el software MSA y sus estadísticas en el panel derecho.
simulacion software
sistema sp500
Las estadísticas de partida simulaban un solo contrato de futuro por posición. Si pasamos a arriesgar un 2% del capital por cada operación (número variable de futuros) entonces obtenemos una ganancia que en lugar de 342 mil dólares pasa a ser de 14 millones. En la curva de debajo del capital (nos referimos a las barras grises) se puede ver el número de futuros que se han operado para arriesgar un 2% del capital. Como se puede ver en las estadísticas el drawdown ha subido mucho, hasta el 51%, pero si uno es capaz de tolerarlo entonces vale la pena por la ganancia extra que se consigue al operar un número variable de futuros. Se puede comparar este gráfico con el gráfico anterior donde las barras grises son constantes a 1 contrato por operación. Esto es algo teórico, nadie en su sano juicio seguirá confiando en un sistema que le está haciendo perder la mitad de su capital. Pero sigamos haciendo pruebas a ver que sale...
Fíjese en un detalle. En esta simulación hemos subido el capital inicial a 100.000 dólares. Esto ha sido necesario debido al incremento de drawdown. Con el mismo capital inicial de la simulación con un solo futuro (10.000 dólares) esta estrategia de riesgo constante al 2% produciría la ruina. Es muy importante que las estrategias con futuros tengan siempre capital suficiente como para absorber el drawdown.
Ahora vamos a hacer una simulación para ver cual es el riesgo óptimo pero con un drawdown que no supere el 30%. El software nos permite añadir restricciones al cálculo del riesgo óptimo. El resultado se puede ver aquí:
riesgo
El riesgo óptimo es del 1.16% del capital. Aquí puede vd comprobar algo que decimos constantemente en los informes, que no arriesgue más de un 2-3% por operación e incluso menos. Fíjese que si limitamos el riesgo al 1.16% del capital estamos consiguiendo un beneficio neto de 2 millones de dólares en 10 años con un drawdown que en ningún caso supera el 30%. Si lo comparamos con la simulación para un solo futuro vemos que aquí ganamos 6 veces más.
 
En este artículo hemos visto un sistema de trading muy simple pero a la vez muy efectivo. No hace falta complicarse mucho para conseguir dos operaciones ganadoras de cada tres. Solamente hay que esperar a que el CCI supere el límite de 100 y entrar corto o comprado en cuanto el CCI comience a moverse en sentido contrario. Cerrar la posición tras 10 días de trading resulta ser una opción muy buena. Al tratarse de un sistema con solamente 2 parámetros será bastante difícil que esté sobreoptimizado.
Por otra parte vemos que por muy bueno que sea un sistema siempre conviene estar capitalizado lo suficiente para absorber el drawdown y realizar un estricto control del riesgo. Los expertos recomiendan no superar nunca un riesgo del 5% por operación y aquí hemos visto que si se quiere tener un drawdown tolerable (menor del 30%) entonces incluso es mejor no arriesgar más que un 1% del capital en cada operación.

 

  1. #1

    delonix

    Muy bueno el art.

    Me gustaría saber si has probado con más osciladores como el RSI y si producen un resultado similar, estadísticamente hablando.

  2. #2

    Oscar Cagigas

    en respuesta a delonix
    Ver mensaje de delonix

    Sí, pero no dan buenos resultados. El CCI parece ir mejor. Saludos,

  3. #3

    Lodeiro

    en respuesta a Oscar Cagigas
    Ver mensaje de Oscar Cagigas

    veo que las correcciones.para entrar son de un 2 por ciento,al dia de hoy que hariamos?,ayer perdio 1.15,hoy casi los recupera,supongo deberia bajar?a que niveles gcias

  4. #4

    Tradinton

    ¿Y cres este sistema funcionaría con otros activos?

  5. #5

    Oscar Cagigas

    en respuesta a Tradinton
    Ver mensaje de Tradinton

    No creo que funcione con otros activos, pero todo sería simular y ver :) saludos,

  6. #6

    Vibarco

    en respuesta a Oscar Cagigas
    Ver mensaje de Oscar Cagigas

    Hola Oscar,

    ¿Por que no has incluido en el Out Of Sample los años mas recientes?, parece que el sistema se desacopla en el ultimo año OS que has escogido.

    Supongo que has seleccionado una ventana tan amplia de OS porque te quedabas sin significancia estadistica, la frecuencia del sistema muy baja.

    Un saludo.

  7. #7

    delonix

    ¿Has probado una alternativa de salida distinta a la expuesta?

    Por ejemplo, un cierre de posición que sea 2 veces el stop que pusimos.
    Lo digo porque al ser un sistema no tendencial no se puede aplicar aquello de "dejar correr los beneficios". Solo sabemos que no hay una tendencia clara pero tampoco sabemos la fuerza que pueda tener el movimiento.

    Un saludo.

  8. #8

    pklatt1964

    Me gusta la idea del sistema y la información que documenta su comportamiento en el SP500!

    Veré como funciona en Forex. Alguien lo testado?

    Otra duda. Dónde poner el Stop? El mínimo de la vela de entrada, múltiples de ATR?

    Gracias de antemano por respuestas!

  9. #9

    Oscar Cagigas

    en respuesta a pklatt1964
    Ver mensaje de pklatt1964

    NO lo he probado en FOREX, aunque la lógica es bien simple y podría funcionar. Se puede poner un stop a 2 ATRs. Saludos,

  10. #10

    Oscar Cagigas

    en respuesta a Vibarco
    Ver mensaje de Vibarco

    He actualizado las estadísticas en un nuevo post, que así me permite poner un gráfico. Se llama "ranking de sistemas para el SP500". Saludos,

  11. #11

    Orion

    No acabo de entender los resultados de la optimización, pues salen peores que en el caso de 1 contrato.
    1 contrato: Retorno = 3423%, DDmax = -24,42% Sharpe = 0,43
    Optimizando riesgo: Retorno = 2323%, DDmax = -27,70%, Sharpe = 0,42

    Tal vez haya algo que se me escapa.

    Muy interesante el artículo.
    Saludos

  12. #12

    Oscar Cagigas

    en respuesta a Orion
    Ver mensaje de Orion

    Cuando se opera con un contrato se supone capital inicial 10.000, pero cuando se aplica un esquema de riesgo constante (aumentar número de contratos) el capital inicial es de 100.000, necesario para operar varios Futuros. Fíjate en los resultados absolutos en dólares y verás que son mucho mejores aunque es cierto que apalancar una cuenta no mejora sus ratios rentabilidad/riesgo (porque sube mucho el riesgo) pero sí la ganancia monetaria. Saludos,

  13. #13

    Orion

    en respuesta a Oscar Cagigas
    Ver mensaje de Oscar Cagigas

    Oscar,
    Perdona que vuelva a la cuestion que te planteaba, si miramos los números absolutos de ambos sistemas:

    Sistema1: Capital inicial=10000$, 1 contrato, beneficios netos=342.322,5$, DDmax= -24%
    Sistema2: Capital inicial=100000$, nº cont variable, riesgo/op=1,16%, beneficios netos=2.422.842,5$, DDmax=-27%

    Si en el sistema1 lo multiplicamos por 10, lo podemos comparar directamente con el sistema2:

    Sistema1x10: Capital inic=100000$, 10 contratos, beneficios netos=3.423.225$, DDmax= -24%
    Sistema2: Capital inicial=100000$, nº cont variable, riesgo/op=1,16%, beneficios netos=2.422.842,5$, DDmax=-27%

    Da la impresión de que el sistema1 es más interesante: mayores beneficios y menor DDmax.(¿¿??!!).Sigo sin ver que la optimización haya conducido a un sistema mejor.

    Algo que no se ve en los resultados es ¿cual sería el riesgo/operacion que incurre el Sistema1?

    Si lo he entendido bien en el Sistema1 no se controla el riesgo por operación, sino que se deshace la operación siempre al cabo de 10 sesiones.
    Por acabar de entenderlo en el sistema2 optimizado, cada vez que abrieramos una posición ¿habría que colocar un orden stop-loss a un nivel equivalente al 1,16% del capital total en ese momento?
    Si no es por el stop-loss, ¿también saldría al cabo de los 10 sesiones?

    Saludos

  14. #14

    Oscar Cagigas

    en respuesta a Orion
    Ver mensaje de Orion

    Un esquema de riesgo fijo (fixed risk) no mejora la relación ganancia/pérdida. En realidad la empeora. Solo hay que ver el profit factor y ver que es peor. Pero se usa porque permite un crecimiento geométrico de los beneficios, cosa que no tenemos si siempre operamos a 1 contrato. Este esquema, de seguir operando y llevarlo al límite permitiría un crecimiento ilimitado con fixed risk, cosa que no podríamos conseguir con 10 contratos.

    No, el stop loss lo pone el sistema y no la gestión de capital. La GdC nos dice lo que hay que arriesgar (un 1.16% del capital) para ese stop loss, el que pone el sistema. Las reglas del sistema no cambian porque se opere con numero variable de contratos.

  15. #15

    Markesito

    Hola Oscar, un artículo muy bueno.

    He estado probando con otros Indices y activos y también da muy buenos resultados, he creado una variante del sistema que deja fijo los parámetros PeriodoCCI (7) y EMA(200) pero se pueden optimizar los días/barras dentro del mercado [5-20] (para que la estancia en el mercado no supere el mes por entrada)en saltos de "1" y ambas bandas BandaSup: [100/150] BandaInf: [-100/-150] en saltos gruesos de "10". En concreto el Eurostoxx 50 para las 142 Operaciones realizadas da unos resultados excepcionales con 13 dias/barras en mercado y BandaSup = 120 y BandaInf = -120. Al parecer siendo más exigente en las entradas mejoran algunos activos y dan un Recovery Factor (Beneficio Neto /DrawDawn) muy interesante . El Sp500, Cac40, .Hsi , Dax, y Bund también los considero muy buenos y claramente superiores al resto de indices y valores (mat.primas, metales...). Si queremos incluir un Stop se puede emplear la máxima perdida del histórico o como sugieres un multiplo de Atr bastante holgado para que se mantengan los ratios del sistema.

    Aún intentando no sobreoptimizar ésta variante que he descrito ya tiene 6 parámetros (PerCCI, EMA, Stop, DiasDentro, BandaSup, BandaInf)y 3 de ellos -los últimos- son variables optimizables, con todo creo que merece la pena el esfuerzo que le has dedicado tanto en su desarrollo como en la exposición del artículo ya que tiene un gran potencial.

    Un saludo y gracias.

    me puedes seguir en:
    http://sistemasautomaticosdetrading.blogspot.com.es/