Swing trading con Amibroker

Foro para tratar todo lo relacionado con AmiBroker y el lenguaje de programación AFL.
ranunculo
Mensajes: 782
Registrado: 03 Abr 2006 22:52
Ubicación: Bilbao
Contactar:

Swing trading con Amibroker

Mensaje por ranunculo »

Buenas
El trading cuantitativo es tan sumamente variado que en la practica, los variados estilos que existen no tienen nada en comun. Un swing trader sobre ETF's no tiene nada que ver con un scalper sobre Forex. Es como comparar una orca con un murciélago. Ambos son depredadores, pero semejanzas, cero.
Asi que en este hilo (al menos mientras tenga tiempo) voy a explicar el estilo que yo más utilizo, con el ánimo de despertar interés y que estemos más gente que comparta el mismo estilo.
Porque mi estilo tiene la desventaja de que lo usan pocas personas. Quizá porque es más complejo de diseñar, o por otras razones: Se trata de hacer swing trading con acciones, usando sistemas automáticos.
El swing trading (compra venta en pocos dias) tiene, de entrada, una ventaja que yo valoro mucho: es más tranquilo, y normalmente no implica estar delante de la pantalla todo el día.
Tiene además, una importante fortaleza: al operar sobre acciones, el universo de activos a comprar es
inmenso. Eso permite realizar backtest muy potentes, y, al menos en teoría, muy fiables.

Si comparamos un sistema automatico cuyo backtest se realiza sobre 5 años de datos, operando contra el futuro del SP500, con un sistema cuyo backtest abarca 10 años de datos, contra cualquier accion incluida en el SP500, el 2º sistema tenderá a ser más fiable: sus resultados se consiguen escogiendo acciones de entre 500 acciones, acciones que pueden ser tecnologicas, farmaceuticas o blue chips, es decir de comportamiento muy disperso.
Este 2º sistema, que compra bloques de acciones (pueden ser de 5 en 5, de 10 en 10, o lo que se
prefiera) deberá ser robusto para poder obtener rentabilidad contra un universo de activos tan grande y dispar.
El problema de hacer backtest con bloques de activos, es que es un backtest más bien complejo, y
cualquier software no lo puede hacer, al menos en un tiempo razonable.

Esta capacidad es la que más distingue a Amibroker. Este programa, aunque no se usa demasiado en España, es muy conocido en otros paises, es veterano y muy flexible a muchos niveles. Pero para mi, lo que le distingue es que es rapidísimo en sus backtest, pudiendo hacer simulaciones contra 500 acciones en segundos.

La mayor desventaja de operar sobre acciones es su escasa liquidez y potencialmente, altos slippages.
Sin embargo, evitando las acciones de baja capitalizacion, se puede obviar.

En teoría, otra desventaja es su bajo apalancamiento. Aunque hoy día muchos brokers permiten
apalancamiento 1:2 sobre acciones, en la práctica, en mi opinión, el apalncamiento no aporta ventajas, salvo que tengas un indice CALmar (que comentaba hace poco X-trader) altísimo.

Otro problema es la dificultad de ponerse corto. De nuevo, hoy día muchos trader permiten ponerse corto en acciones de capitalizacion suficiente. Sin embargo, mi experiencia es que es muy dificil obtener rentabilidad y estabilidad en el lado corto.

Otro día colgaré algun programita en Amibroker y sus resultados sobre el papel, simplemente para
comentar algunos aspectos de este tipo de trading.

salud!
elmasme
Mensajes: 147
Registrado: 29 Mar 2010 17:57

Re: Swing trading con Amibroker

Mensaje por elmasme »

Buenas,

No has mencionado el inconveniente que para mí es el más importante de operar con acciones, las comisiones, son como poco 100 veces más altas que en los futuros.

Un saludo.
La bolsa me confunde
ranunculo
Mensajes: 782
Registrado: 03 Abr 2006 22:52
Ubicación: Bilbao
Contactar:

Re: Swing trading con Amibroker

Mensaje por ranunculo »

Las comisiones, si, por supuesto elmasme.

Pero las comisiones nos perjuducarian sobre todo en un sistema de muchas compra-ventas, cosa que no es el swing trading..
Aun asi, no sé como están las comisiones en futuros, pero Interactive Brokers cobra 0,005 $ por accion: Una compra venta de 10.000 dolares puede costar, entre compra y venta, 5 dolares. Esto es, un 0,05%.
No creo que en futuros se cobre 100 veces menos.. no?

Salut
elmasme
Mensajes: 147
Registrado: 29 Mar 2010 17:57

Re: Swing trading con Amibroker

Mensaje por elmasme »

Bien, me parece un precio bueno el de IB, yo tenía en la mente el precio de brokers españoles que es con lo que trabajaba cuando empecé en esto con acciones.
Pero por ejemplo: un contrato del Bund, subyacente 100.000 €, ida y vuelta 2.4 $ = 1.75€ que será un 0.00175% de comisión, es casi 30 veces menos.
La bolsa me confunde
Avatar de Usuario
manux
Mensajes: 129
Registrado: 12 Ago 2009 12:34
Ubicación: Madrid

Re: Swing trading con Amibroker

Mensaje por manux »

buenas ranunculo,
buena aportación, te agradecería que pusieras alguna prueba que hayas hecho con Amibroker y acciones, ya que lo conoces, para ver su funcionamiento.
Me descargaré la demo para probarla a ver que tal

ranunculo
Mensajes: 782
Registrado: 03 Abr 2006 22:52
Ubicación: Bilbao
Contactar:

Re: Swing trading con Amibroker

Mensaje por ranunculo »

manux escribió:buenas ranunculo,
buena aportación, te agradecería que pusieras alguna prueba que hayas hecho con Amibroker y acciones, ya que lo conoces, para ver su funcionamiento.
Me descargaré la demo para probarla a ver que tal
A continuación describo un sistema tendencial que he estado estudiando, a modo de ejemplo.

Este sistema compra 5 acciones del SP500, aquellas que cumplan que el MACD supera el 0, y la linea Signal aún no haya llegado a 0:

BUY=Cross(MACD(12,26),0) AND Signal(12,26,9)<0;

La venta sería en cuanto se cruzan las lineas MACD:

Sell=Cross(Signal(12,26,9),MACD(12,26));

Este es un sistema muy sencillo, que ejecutandolo desde Enero 2001 hasta Marzo 2011, obtiene los resultados:

Trades: 904
CAR (compound annualized rate): 5,9%
Max DD: -55%
% aciertos: 44%

Evidentemente, resultados malos, sobre todo por el máximo DD, que es inaceptable.
Ahora bien, los años alcistas este sistema gana dinero. En el 2009, un 34%, en el 2010, un 24%.
Vamos a refinarlo.
Como se sabe, los momentos bajistas suelen ser muy volátiles, mientras que cuando se sube, la volatilidad es baja. Siguiendo este razonamiento, sólo vamos a entrar en caso de volatilidad baja del indice SP500. Definimos alta volatilidad como el ATR anterior por encima del valor 15.

Volatilidad=IIf(ref(ATR(15),-1) > 15,True,False )

Si entramos en momentos no volátiles, los resultados cambian a:

Trades: 465
CAR : 9,1%
Max DD: -18%
% aciertos:47,5%

Los resultados mejoran bastante.
Pero aún podemos añadir una mejora más, que deriva del hecho de que operamos contra bloques de acciones. Cuando se compran muchos activos a la vez, podemos dar prioridad a ciertas acciones sobre otras. Es decir, si en un día concreto surgen 10 posibles compras, ¿cuales 5 de esas 10 serán realmente compradas?.
Ese dato lo define la propiedad PositionScore, que prioriza unas compras sobre otras en caso de exceso de señales de compra.

El positionScore suele mejorar los resultados. En este caso, priorizamos las acciones que tengan un estocástico bajo el día anterior:

PositionScore= 100-Ref(StochK(15,3),-1); //Cuanto mas bajo estocástico, mayor puntuación

¿como quedan ahora los resultados?. Un poco mejores:

Trades: 472
CAR : 15,5%
Max DD: -11,7%
% aciertos:48,5%

No parecen unos resultados brillantes, pero son mejores de lo que parece a primera vista:
Primero, porque la relación CAR/MaxDD es de 1,3, lo cual no es mala cifra. Es decir, si quiero obtener una rentabilidad anual del 30%, sólo tengo que apalancarme 1 a 2, y el DD máximo aún sería soportable, del orden del 22%.
Pero esto son los promedios. Si vemos la distribución anual del sistema, vemos que hay años (los bajistas) que no entra en absoluto, mientras que los años alcistas lo suele hacer bastante bien: Además, casi ningún año pierde dinero.
x.jpg
Puesto que los años bajistas está en liquidez, el sistema sería perfecto para combinarlo con otros que entren en momentos de alta volatilidad, de modo que el rendimiento de varios sistemas combinados, en términos de rentabilidad anual, sería mucho mejor.
Además, este tipo de sistemas tan sencillos tienen poca probabilidad de sobreoptimizarse. En este caso, no he hecho apenas optimización de los parámetros.

Debajo dejo el sistema desarrollado en Amibroker.
//-----------------------------------------------------------------BEGIN
PosQty=Param("Posiciones simultaneas",5,1,20,1);
SetOption("InitialEquity", 100000 );
SetOption("AllowPositionShrinking", True );
SetOption("MaxOpenPositions", PosQty );
SetOption ("accountmargin",100);//
PositionSize = -100/(posqty); //Tamaño
SetTradeDelays(1,1,1,1);
SetForeign("$spx");//
Volatilidad=IIf(Ref(ATR(15),-1)>15,True,False );
RestorePriceArrays();

Condicion1=Cross(MACD(12,26),0) AND Signal(12,26,9)<0;
PositionScore= 100-Ref(StochK(15,3),-1);//a menor stocastico, mejor

Buy= Condicion1 AND NOT Volatilidad;
BuyPrice=Open;
Sell=Cross(Signal(12,26,9),MACD(12,26));
SellPrice=Open;
Buy=ExRem(Buy,Sell); Sell=ExRem(Sell,Buy);
//-----------------------------------------------------------------END

No incluye deslizamientos. Incluye una comisión de 0,005 $ por acción, mínimo 1$.
No garantizo que el sistema no contenga algún error.

Bueno, a ver si más personas se interesan en este estilo de trading..

Salud!
Avatar de Usuario
manux
Mensajes: 129
Registrado: 12 Ago 2009 12:34
Ubicación: Madrid

Re: Swing trading con Amibroker

Mensaje por manux »

Buen aporte ranunculo,

voy a probarlo.

Me bajé la demo, y estoy viendo el funcionamiento.

Yo trabajo con el ninja, no se si lo has probado, y qué ventajas ves a un software sobre otro. La diferencia de precio es bastante grande.
ranunculo
Mensajes: 782
Registrado: 03 Abr 2006 22:52
Ubicación: Bilbao
Contactar:

Re: Swing trading con Amibroker

Mensaje por ranunculo »

No conozco el Ninja.
De todos modos, creo que el único que es capaz de hacer un backtest sobre 500 (o mas) acciones a la vez es Amibroker. No se si Metatrader tiene ahora esa posibilidad, pero en estos backtest ( y no digamos si es un Walk Forward) la clave es que el software sea rápido, porque sino el tema se puede eternizar..

Si tengo tiempo buscaré algun otro ejemplo publicable y lo cuelgo.
Aunque el sistema anterior, sin ser maravilloso, puede dar un 20% anual los años que no esta en liquidez. Y teniendo tan bajo DD, puede apalancarse con poco riesgo hasta obtener un 30%.. ma ó meno.

Y es que los beneficios explosivos que algunos foreros dicen tener siempre me han parecido muy sospechosos. Prefiero cosas sencillas que den beneficios con alguna seguridad que la locura del apalancamiento bestial y la montaña rusa de la gestión (digestión?) de capital..
franrodel
Mensajes: 1
Registrado: 09 Sep 2012 12:16

Re: Swing trading con Amibroker

Mensaje por franrodel »

muy buen aporte, yo recien estoy aprendiendo a crear programas automaticos en amibroker, en el tuyo no comprendo como defines las acciones a comprar, me podrias explicar por favor
Avatar de Usuario
clowner
Mensajes: 185
Registrado: 27 Ene 2011 08:23

Re: Swing trading con Amibroker

Mensaje por clowner »

Hola ranunculo,

me viene de maravilla este hilo, yo tambien estaba empezando a investigar por el lado swing. Por cierto, si se puede realizar el backtes con Ninja. Te una duda que me ha surjido estos dias y por la que tu seguro que ya has pasado.

- La compresion de los graficos: No se si trabajas con compresiones inferiores a barras diarias, pero si los sistemas se desarrollan para trabajar sobre barras diarias (por lo que no haria falta tiempo real, con EOD es suficiente) veo el siguiente problema: Si se trabajan con graficos diarios, y consideras cada accion como un activo/mercado, tenemos muy pocas operaciones para obtener significancia estadistica, yo haciendo pruebas tengo cosas interesantes, pero hay sistemas que no alcanzan ni las 10 operaciones anules por accion, ¿como validas eso estadisticamente?, supongo la siginificancia estadistica hay que buscarla en carteras ,es decir aplicar el sistema a cestas de acciones y si por ejemplo lo aplicas a una cesta de 100 acciones y tienes resultados interesantes en mas del 60% (por decir un porcentaje) de esas acciones puedes seguir trabajandolo porque parece que tienes algo posiblemente robusto, supongamos que el sistema te hace una media de 7 a 15 operaciones al año por activo (accion) tenemos casi 1000 operaciones en conjunto, con ese numero de operaciones ya podemos tener relevancia en los estadisticos que estudiemos. ¿Es asi ranunculo?. Quien dice acciones, dice ETF, podemos tratar los ETF de igual foma (aunque no me he metido con ETF nunca).

- Automatizacion: si trabajamos con datos EOD, ¿es posible automatizar la operativa?, si la señal se produce cierre de ayer, y tenemos que entrar en la apertura de la barra de hoy... esto es otra de las cosas que veo complicadas, como la colocacion de stops. Por no hablar si de un dia para otro se produce un GAP, como me ha pasado en alguno de los sistemas, un GAP que no he podido evitar en el backtest de ninguna forma.

- Lotaje: supongo que para probar el sistema aplicas un lotaje fijo, como cuando validas un sistema para futuros, lo pruebas siempre con 1 futuro y luego ya le metes MM si quieres. ¿Por donde van los tiros aqui?, ¿con que lote inicial pruebas el sistema?.

- Liquidez: aqui parece que es facil, podemos aplicar filtros con una serie de criterios a la hora de confeccionar la cartera de activos (en este caso acciones), reunir acciones que tengan un determinado volumen diario, que su nominal este entre 20 - 30, etc.

Muy interesante ranunculo, yo he empezado a investigar por ahi tambien, aunque estoy muy muy verde. Perdona que haga tantas preguntas pero es que justo estoy empezando a investigar por aqui.

Espero que sigas poniendo cositas.

Un saludo.
ranunculo
Mensajes: 782
Registrado: 03 Abr 2006 22:52
Ubicación: Bilbao
Contactar:

Re: Swing trading con Amibroker

Mensaje por ranunculo »

Bueno, hacía tiempo que no había visto este hilo. Del sistema que colgé, ya ni me acordaba.. no esta tan mal.. :-)

Franrodel, las acciones se eligen dentro de Amibroker, usando una lista. Luego, dentro de esas, se seleccionan según el PositionScore
Clowner: respecto al primer punto, en efecto, con acciones lo mejor es usar una cesta de acciones, lo cual da un backtest muy robusto.
Lo de la automatización, no entiendo a qué te refieres. Tú defines cuando compra o vende el programa..
Lo del lotaje, pues depende. Yo suelo componer resultados sin más. Tambien a veces uso un capital fijo, sobre todo para hacer calculos estadísticos. A partir de ahí, las variantes son múltiples..
La liquidez, usando acciones hay que elegirlas muy liquidas, sino el slippage es excesivo.
Espero haberos ayudado,
salud!
Avatar de Usuario
clowner
Mensajes: 185
Registrado: 27 Ene 2011 08:23

Re: Swing trading con Amibroker

Mensaje por clowner »

Hola ranunculo,

respecto a la automatizacion me referia a que si la plataforma te lanza las ordenes automaticamente o las pones manualmente. Te lo pregunto por si trabajas con barras diarias, la señal te la da al cierre del dia y entras en la siguiente barra (al dia siguiente) lo mismo para la salida y aqui enlazo con lo de los GAPS, de vez en cuando una accion te abre de un dia para otro con un GAP importante (por ejemplo ENAGAS hoy), ¿los stops los tienes intrabarra? o a cierre, señal de salida a cierre de hoy y sales en la apertura del dia siguiente. Si los Stops son intrabarra necesitas si o si tiempo real, en graficos diarios EOD las salidas y entradas tiene que ser al cierre.

No se si puedes comentar alguna cosita sobre esto.

Un saludo y gracias por contestar.
ranunculo
Mensajes: 782
Registrado: 03 Abr 2006 22:52
Ubicación: Bilbao
Contactar:

Re: Swing trading con Amibroker

Mensaje por ranunculo »

Bueno, comentas bastantes cosas..
Yo suelo usar datos EOD. En este caso, defines en el programa si abres en el open del dia siguiente o en el close del dia en curso. En general, tiene ventaja abrir en el close. Lo que pasa que en ese caso necesitas usar datos en tiempo real y un programa que testee tus indicadores. Si eso lo hacemos para una cesta de, por ejemplo 100 acciones, pues la cosa no es sencilla.
Yo lo tengo programado en Excel, pero es complejo.
Puede ser que la señal de compra sea bastante evidente y puedas abrir la posicion más o menos manual, en tiempo de cierre. Yo a veces lo hago, dependiendo del sistema.

Si abres en el open del dia siguiente, pues te comes el gap que te toque. Lógicamente, el backtest tambien lo contempla. También, los slippages en el open suelen ser mayores que en el close, sobre todo si usas ordenes MOC.

Los stops pueden ser intradiarios o al dia siguiente, lo configuras en tu programa. Si el stop se establece antes de la apertura, no hace falta datos intradiarios, simplemente lo pones en el broker, y el solito salta..

Nada mas creo,
Salud!
Avatar de Usuario
clowner
Mensajes: 185
Registrado: 27 Ene 2011 08:23

Re: Swing trading con Amibroker

Mensaje por clowner »

Gracias ranunculo,

Un saludo.
valdi
Mensajes: 1
Registrado: 16 Sep 2013 13:40

Re: Swing trading con Amibroker

Mensaje por valdi »

clowner escribió:Gracias ranunculo,

Un saludo.
Hola, actualmente estoy utilizando prorealtime y estoy informandome sobre amibroker, de hecho me bajado la demo para probar.
Las dudas son las siguientes:
Se puede poner en español?
Se puede realizar compras desde hay ?actualmente mi broker es clicktrade.
Gracias
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “AmiBroker”