Sigue mis entradas y salidas del mercado

Sistema “One Night Stand”

Descripción

Se trata de un sistema de forex que trabaja sobre los 6 “majors” contra el dolar USA. Lo diseño Joe Krutsinger y yo lo he refinado y adaptado a mi operativa. Puede llegar a tener abiertos los 6 pares de divisas, aunque es poco probable que ocurra.

Las reglas básicas del sistema son sencillas:

  • Entramos en las operaciones los viernes.
  • Si el par divisa es alcista entramos largo si supera un determinado máximo.
  • Si el par divisa es bajista entramos corto si cae por debajo de un determinado mínimo.
  • El domingo en la apertura nos salimos de todas las operaciones que se hayan activado.
  • El stop loss y la posición se dimensionan por volatilidad

Estadísticas

Las estadísticas que arroja este sistema desde 1.999 hasta 2.015, sin reinvertir beneficios ni aplicar comisiones, y operando con 150.000$ por par divisa (como máximo) son:

 ONS estadisticas 99-15

  • RMA:  8,68 %
  • UI:        2,60
  • UPI:     3,34
  • W:      61,87 %
  • Largest Loss: 3.064$
  • Largest Win:  3.324$.
  • t-student:   6,52
  • RFmc95: 9,14
  • MAE Media+: 0,60 %

Otros sistemas baten sobradamente estas estadísticas, pero este sistema tiene tres ventajas sobre los demás:

  • Opera los fines de semana (ningún otro lo hace).
  • El gran número de operaciones ejecutadas y la linealidad de la curva de capital, avala la robustez del sistema.
  • Al tratarse de forex, tiene poca correlación con el resto de sistemas.

RMA: Rendimiento Medio Anual, es el beneficio porcentual que saca el sistema de media al año. Todos los años del estudio ha tenido rentabilidad positiva.

UI: Ulcer Index (índice de ulcera), cuanto más bajo mejor, digamos que cuanto mayor sea más sufriremos.

UPI: Ulcer Performance Index (índice del rendimiento de ulcera), cuanto mayor mejor relación beneficio/sufrimiento.

W:  Tanto por ciento de aciertos en operaciones.

Largest Loss: El valor de la operación que más perdió.

Largest Win: La operación que más ganó.

t-student: Está relacionada con la probabilidad de acabar en ganancias. Un valor de 2,5 viene a ser un 99% de probabilidad de acabar en ganancias. Cuanto mayor mejor.

RFmc95: Recovery Factor de Monte Carlo. Es el ratio entre el beneficio neto y el máximo drawdown del sistema, al 95 % de confianza.

MAE Media+: Es la media de las máximas excursiones negativas de las operaciones que han acabado bien, es decir, antes de cerrar una operación que acabará en beneficio, lo normal es verla perdiendo ese %.

Si necesitas más estadísticas pincha sobre la imagen anterior y se ampliará.

PUBLICAR UN COMENTARIO


17 Respuestas

  1. Ruperez dice

    ¿Cuando hablas de salir Lunes a primera hora ,A que hora seria? Muchas gracias por tu ayuda
    y un cordial saludo

    • Ramón dice

      Se vende en la apertura del mercado y depende del broker.

      En Interactive Broker te venderían el lunes a las 00:00h.

      En clicktrade el domingo a las 21:00h.

      Yo lo operaré con IB.

      Saludos.

  2. Ruperez dice

    Estimado Ramon ¿Has tenido la oportunidad de probarlo en real? ¿que tal se comporta desde que lo mejoraste?

    gracias

  3. Ramón dice

    Este año va muy bien.

    Mañana lo estreno en real y espero que vaya igual de bien.

    Saludos.

  4. javier dice

    Hola de nuevo Ramon,

    He programado en AB el ONS basandome en las reglas originales, pero los resultados son bastante diferentes a los tuyos, me podrias decir si hay algo que no estoy viendo o si le has incorporado algo mas a parte de las reglas que se conocen?

    Por cierto como esta afectando el spread a tu operativa con el ONS.

    Gracias,
    Javier

    • bolsaycartera dice

      Buenos días Javier.

      Probablemente serán estas tres cosas:

      1.- Los parámetros los voy cambiando adaptándolos a las condiciones de mercado (walk forward)
      2.- Este sistema sólo lo aplico sobre los “majors”
      3.- Dimensiono la posición por volatilidad, es decir, en cada señal de entrada, no compro una cantidad fija.

      Saludos.

      • javier dice

        Hola Ramon, probe el posicionamiento por volatilidad con este codigo> //dollarrisked=10000*0.03;
        //SetPositionSize(dollarrisked/Ref(ATR(10),-1),spsShares);

        pero por ejemplo el capital que coloca al usdjpy es de a lo mejor 500 dolares, por lo que las ganancias tambien son insignificantes, mientras en otros pares cuyos tipo de cambio es mas bajo por ejemplo audusd, el posicionamiento puede ser de 20000. A ti te pasa lo mismo o es que el calculo en el codigo esta mal?

        Muchisimas gracias, estoy aprendiendo mucho con tu blog

  5. bolsaycartera dice

    Hola Javier,

    Ese dimensionamiento que haces es válido para los activos que trabajan con la misma moneda, por ejemplo las acciones de un mismo pais.

    El problema aparece cuando en la misma cesta, los activos trabajan en distintas monedas. Es el caso del forex.

    Imagino que sabrás que cuando compras 100.000 USDJPY estás comprando 100.000 dolares americanos del par USDJPY. Sin embargo, cuando compras 100.000 AUDUSD, estas comprando 100.000 dolares australianos del par AUDUSD, que es muy distinto.

    Una vez explicado esto, te diré que yo en mi código pongo dos condiciones al dimensionamiento. Primero fijo la máxima volatilidad diaria que debe tener el par y la fijo en dolares americanos. Por ejemplo, digo que ninguna divisa puede tener una volatilidad diaria mayor de 1000 dolares americanos al día.

    Y el segundo condicionante es que ninguna divisa puede operar con más de un capital X, donde X también está expresado en dolares americanos.

    Saludos.

    • javier dice

      Gracias Ramon, voy a probar lo que me has dicho y te cuento!

    • javier dice

      Hola Ramon, hice esto con el posicionamiento por volatilidad, no se si esta bien. Por otro lado, yo tengo la salida en la apertura del lunes en vez de el domingo por falta de datos, a lo mejor es por eso que hay una diferencia de casi 100 dolares por operacion. Tu lo has probado con los lunes? Gracias!!

      risk=1100/ref(ATR(10),-1)*O;
      SetPositionSize(IIf(risk>150000,150000,risk),spsValue);

      • bolsaycartera dice

        Casi Javier, has resuelto el que compre como máximo 150000.

        Todavía te falta que compre máximo 150.000 $$$$$

        Te falta referenciar todo a dolares. Tanto el capital como la volatilidad.

        Por otro lado, lo que llamamos la apertura del lunes, en IB se produce los domingos a las 23:15, eso puede dar lugar a confusión.

        Repito, la vela de las divisas del lunes, en IB empieza el domingo a las 23:15h.

        Saludos.

        • javier dice

          Gracias jaja, esto es como resolver un puzle, buscare por el foro de AB en yahoo a ver como se hace eso de $$$.

        • javier dice

          Perdona por mi persistencia para pedirte consejo ya que no pude encontrar nada ni en foros ni en las ayudas de AB.

          Volviendo al tema del posicionamiento en FX, me he dado cuenta de lo siguiente: como te dije la otra vez, cuando compras 100k usdjpy, estas usando 100k usd para comprar xxx jpy, pero cuando compras 100k audusd, estas usando 100k aud para comprar xxx usd. Para que todo este referenciado a dolares (usar siempre 100k usd para comprar la modena que sea), he pensado que cuando se trate de un par xxxUSD (i.e AUDUSD), hagamos 1/close, esto en mi opinion se haria con un iif(), (iif(audusd, 1/c, iif(nzdusd, 1/c, etc)). Pero el problema que veo es que en el backtester, en la columna de position value no reconoce la divisa de refencia, por ejemplo si audusd = 0.5, el position value va a ser 200k (1/0.5 * 100k), mientras que si eurusd = 1 el position value sera de 100k.

          Tu como harias esto?

          No te pedire tu codigo, por que se que es algo muy personal, pero si me podrias guiar en esto y decirme si estoy haciendo bien el razonamiento lo apreciaria mucho. O si me pudieras decir donde puedo encontrar la solución… Gracias!

          • charlybell dice

            Buenas!!
            Yo también estoy intentando probar estos ajustes.
            Para poder referenciar a las divisas sería algo así?

            BD = GetDatabaseName();

            if(BD == “Forex-PremiumData”)
            {
            EURUSD=Foreign(“EURUSD”,”C”);
            USDJPY=Foreign(“USDJPY”,”C”);
            USDCHF=Foreign(“USDCHF”,”C”);
            USDCAD=Foreign(“USDCAD”,”C”);
            AUDUSD=Foreign(“AUDUSD”,”C”);
            GBPUSD=Foreign(“GBPUSD”,”C”);
            }

            //DIMENSIONAMIENTO
            risk=IIf(eurusd OR USDJPY OR audusd OR gbpusd,
            (1100*Ref(C,-1))/ref(ATR(20),-1),((1100)/ref(ATR(20),-1)));

            SetPositionSize(IIf(risk>100000,100000,risk),spsValue);

  6. bolsaycartera dice

    Hola de nuevo Javier.

    Efectivamente tienes que decirle al código cuánto vas a comprar.

    Si tu quieres comprar 100.000$ de un par divisa, tenemos varios supuestos:

    1.- Si el par divisa es USDXXX, compras 100.000 tal cual
    2.- Si el par divisa es XXXUSD, deberás comprar 100.000/XXXUSD
    3.- Que en el par no intervenga el dolar.

    Saludos.

  7. javier dice

    Buenas tardes Ramon, Finalmente haciendo el WFA me salio resultados muy parecidos a los tuyo. Mi pregunta de hoy es sobre la operativa de este sistema. En este caso al ser un breakout, no compras ni a cierre y a apertura, supongo que debes de estar pendiente todos los viernes para entrar con este sistema verdad?

    • bolsaycartera dice

      Hola Javier.

      Si tu broker te permite poner órdenes stop no tienes por qué estar pendiente.

      Yo coloco todos los viernes esas órdenes stop con validez un día. Si entran bien y sino se anulan.

      Saludos.