Acceder
Blog Trading desde Tulse Hill
Blog Trading desde Tulse Hill
Blog Trading desde Tulse Hill

Automatización del Trading de Spreads con Interactive Brokers

Antes de anda disculparme por la tardanza en publicar este Post… Pero digamos que he tenido unos cuantos líos en referentes a la publicación de mi último articulo ya que me han llegado algunas informaciones bastante curiosas al respecto, así que hare un pequeño update al final.

Bueno la Herramienta que vamos a utilizar es una API que distribuye gratuitamente Interactive Brokers (IB) en su website que nos permite hacer nuestras operaciones a través de Excel. Cuando abrí mi cuenta en IB, fue una de mis mayores sorpresas y alegrías, después de todas las horas pasadas haciendo hojas de cálculo y enredando con Excel en diferentes cursos por fin iba a utilizarlo para algo útil. La razón, podéis operar directamente sobre el spread, sin tener dos ventanas abiertas, sin tener que estar calculadora en mano mirando las centésimas que se va moviendo, ni la presión de que el spread se mueva antes de cerrarlo.

Podéis descargaros la API en este link y el manual en este otro y ver un webinar de con ejemplos de como se utilzan aqui, si sabéis de Excel, realmente podéis ir directamente ahí y empezar a utilizarlo ya que no es demasiado difícil (de todas maneras ahí un par de trucos que deberíais saber, aunque podéis saltaros todo el “how to”).
Como no conozco el nivel de quien me lea, si es que alguien lo hace, lo explicación será lo más detallada posible.

1. Activar el acceso a la API desde la TWS, que se hace desde el Menú superior/ Configure/API/Enable DDE Clients

2. Instalamos el Paquete y se nos creara una carpeta en C: llamada IB_API, el archivo que utilizaremos esta dentro de la Carpeta Excel y se llama TwsDde (recomiendo que lo copies y peguéis, cambiándole el nombre, así siempre podréis recurrir al original en caso de que desconfiguréis algo). Al abrirlo deberéis habilitar los macros

3. Básicamente con ese archivo Excel podréis calcular todo lo que queráis, desde medir vuestra performance directamente desde Excel, hacer operaciones, pero voy a centrarme en los spread, que principalmente es la mayor ventaja que nos ofrece. Nos centraremos en 2 de las hojas que nos interesan más: Tickers y Conditional Orders.

4. En tickers, veréis que os vienen unos valores cargados como ejemplo, mirad como están configurados para poderlo hacer después y borradlo (para eso tenemos otra copia del mismo archivo, esto sobre todo es imporante hacerlo con los ejemplos de compra, ya que no queremos que se nos ejecuten las ordenes de ejemplo). Ponemos nuestro User Name y si queremos ajustamos el Refresh time que es cuanta frecuencia nos carga los precios, cada segundo es como yo lo tengo.

5. Igual miramos como están escritas las ordenes y las borramos. Ahora paso a poner dos ejemplo practicos.



Ejemplo

Spread Trigo Maíz
Este Spread lo ha propuesto Llinares en su blog unas cuantas veces, a través de automatizar las ordenes podemos mejorar su resultado de una manera bastante sencilla.
Configuración: Como podéis ver en la imagen rellenáis los siguientes datos:
Symbol Type Expiry Multiplier Exchange Currency
ZC FUT 201012 5000 ECBOT USD
ZW FUT 201012 5000 ECBOT USD

Y hacéis click en Request Market Data mientras tenéis seleccionada la casilla donde aparece el símbolo. Pueden hacerse mediante la ventana Create Ticker, pero haciéndolo así dependéis de vosotros mismos.

Creamos un pagina hoja nueva que llamaremos Spreads y ahí calculamos el spread que seria, para comprarlo el ASK Price del Maiz (P16) menos el BID del Trigo (014), para seleccionar casillas de otra hoja de calcula, solo escribís “=” en la formula, cambias con el ratón a la hoja que queremos (Ticker) y seleccionamos dicha casilla. Y para venderlos seria al revés, la BID del Maíz menos la ASK del trigo.

Bien ya tenemos en la Hoja “Spread”, con el precio BID-ASK del maíz y del trigo, solamente nos queda restarlos y ya tenemos los dos spreads actualizándose en tiempo real. Pongamos que la casilla donde se encuentra el precio del Maíz ASK es A1, el BID del Trigo A2 y la resta, el spread en sí, es A3 .

Nuestra intención es comprar dicho spread cuando el precio toque los 155. Creamos en la casilla A4 con la formula “A3=<155” style="font-weight: bold;" size="4">

IMPORTANTISIMO

Debemos crear casillas de validación, porque que pasaría cuando el mercado cerrar si la hoja Excel esta abierta, o si internet se desconectara? Pues sencillo el valor del Spread seria cero ya que no hay datos y CERO ES MENOR QUE 155, así que se activaría la casilla A3. En consecuencia debemos crear en la casilla A5 la formula que compruebe que el ASK del trigo es mayor que… no se digamos 100? Pues eso “A1=>100”, lo mismo para el maíz en A6 (yo también lo acoto por arriba y además tengo un gatillo manual, es decir, por ejemplo en A7 escribo 4=5 y cuando quiero activar el spread, lo corrijo y pongo 4=4 así no se me activa por error al conectarlo).
Y en la casilla A8 “=A4+A5+A6+A7”, cuando todas las clausulas son ciertas devuelve el valor 4





FINAL lanzando la orden

Para ello vamos a la hoja Conditional Order, rellenamos la parte izquierda con symbol, type, expiry como anteriormente. La dos partes centrales bajo Order Descriptions y Order Status en blanco.

Aquí cada uno lo hará de una manera, a mi ya que las ordenes se actualizan cada segundo yo me siento cómodo dejándolo como un ordena Mercado, ya que así no corro el riesgo de quedarme sin una pata (la gracia de automatizarlo es para no tener que estar comprobándolo cada minuto que nos interese).

En la casilla Mode: ADD, en Action: Buy en la línea del Trigo, Sell en la de Maiz, Cantidad 1, Tipo de orden: MKT. En Statement simplemente señalamos la casilla A8 de la hoja “Spreads”= a 4. La formula quedaría algo así como: ='Spreads'!A8=4
Cuando la clausula sea verdad se lanzara la orden, una sole vez por cierto, no os preocupéis no se lanzara todo el tiempo mientras esté por debajo de 155.



Spread Trigo Maiz Llinares' Style

(http://www.rankia.com/blog/llinares/2009/10/convertir-100000-pesetas-en-100000.html )
“Comprar diciembre del 2010 de trigo
Vender julio del 2010 de trigo

Vender diciembre del 2010 de maíz
Comprar julio del 2010 de maíz”

Podrías obviamente hacerlo seleccionando todos los BID-ASK pero la horquilla seria nociva, pero también podemos hacer combos con Excel, no os preocupéis, si se puede hacer con el TWS, se puede hacer y mejor con Excel.

Simplemente esta vez al hacer el “ticker” escogeremos la casilla “Combo Legs” y haremos ambos Spread separados, trigo por un lado y Maíz por el otro. Por alguna razón al ejecutar “combo Legs” me sale un mensaje de error (por favor si a alguien no se pasa podría comunicármelo?). Así que tenemos que configurarlo manualmente, para ello…Mirad es una pesadez porque tenéis que seleccionar los Id de cada producto… la guía de DDE Excel, no lo incluye claramente, me llevo trabajo descubrirlo, son casi las dos de la mañana…os dejo los códigos de ambas combo legs y si a alguien le interesa que me lo pregunte:

Symbol: X / Type: Bag / Multiplier:5000 /Exchange:ecbot/currency:usd/Comb Legs:
CMBLGS_2_49572732_1_BUY_ECBOT_0_45161809_1_SELL_ECBOT_0_CMBLGS  Para el Trigo
CMBLGS_2_42848523_1_BUY_ECBOT_0_42848516_1_SELL_ECBOT_0_CMBLGS  Para el Maiz
Ambos están hechos de tal manera que para comprar el Spread compramos los dos y para venderlo, vendemos los dos. El Spread es la suma de los, no la resta, ya que uno será negativo.




CONCLUSION

El límite…vuestra imaginación, yo con este Spread desde que me lo descubrió Llinares por primera vez llevo ganado …bastante. Es increíble lo revoltoso que es este spread, en los gráficos que aparecen en internet solo utilizan el valor de cierre así que no se ve tan claro, pero puede mover en un rango de 10 puntos perfectamente en un solo día tocando los limites varias veces, a 50 dolares el punto, no está mal. Así que tenía una posición estática, otra para hacer scalping(vender volatilidad, como queráis, para movimientos fluctuantes 90% del tiempo) y un tercer contrato que utilizo cuando el valor se mueve en los extremos del rango que yo considero. Ahora el valor ha roto al alza, así que estoy con un solo contrato en 160 (+20 puntos), en cuanto corrija, entro con el scalping y a empezar de nuevo. Si hacemos esto a favor de tendencia, como es el caso, que estamos en un momento de alta estacionalidad del spread… Que cada uno juzgue.

Tal y como lo he explicado solo podéis poner una orden de cada vez ya que para venderlo, después digamos cuando llegase a 150, tendrías que incluir otra clausula comprobando que las dos operaciones de se realizaron y en qué cantidad, obviamente no hace falta ser un experto para encadenar diferentes ordenes en caso que los valores se comporten de determinada manera y despreocuparse del spread completamente. Por cierto si os interesa el tema, el Excel es utilísimo no solo para operar, sino para hacer gráficos compuestos complejísimos, ya que podemos descargar datos históricos a Excel desde IB, podemos hacer spreads, con las patas que queramos…infinitas combinaciones vamos. Igualmente para las opciones podemos hacer todos los cálculos que queramos… aunque en este sentido no lo tengo demasiado “tocado”.

Espero que lo disfrutéis, y si tenéis alguna duda, o idea genial, compartidla, así que si alguien se anima a proponer diferentes estrategias podemos comentarlas.
9
¿Te ha gustado mi artículo?
Si quieres saber más y estar al día de mis reflexiones, suscríbete a mi blog y sé el primero en recibir las nuevas publicaciones en tu correo electrónico
Lecturas relacionadas
Una estrategia buena e históricamente rentable
Una estrategia buena e históricamente rentable
Respuestas
Respuestas
Cartera Modelo 2019. Calentando motores para la nueva temporada.
Cartera Modelo 2019. Calentando motores para la nueva temporada.
  1. en respuesta a Ptolomeo
    -
    #9
    25/01/11 18:06

    Hola ptolomeo

    no sé si te he entendido bien, asi que a lo mejor lo que te voy a responder es obvio. En el metodo de Llinares la estrategia se basa en vender volatilidad. El spread es entre el precio del trigo menos el del maiz. Siempre se empezará comprando uno de trigo y vendiendo uno de maíz cuando el diferencial llegue a uno de los precios prefijados y cuando llegue al precio de la derecha se deshará el spread vendiendo el trigo y comprando el maíz.
    Mira este post: https://www.rankia.com/blog/llinares/628311-correccion-casi-definitiva-estrategia-para-ong-damnificados

    Saludos

  2. #8
    01/11/10 03:20

    Perdona, quería hacer una consulta que a tí te será super-básica, pero a mí me cuesta un poco ya que estoy intentando aprender un poco de esto de los spreads.

    Cuando dices (del spread trigo-maíz):
    "Nuestra intención es comprar dicho spread cuando el precio toque los 155"

    Entiendo que compras un contrato de trigo y otro de maíz y vendes uno de trigo y otro de maíz, y te aprovechas de los diferenciales de precios.

    en mis cálculos y simulaciones (entiendo la estacionalidad de los contratos y que ahora los precios sean diferentes, de hecho estoy mirando contratos de los próximos años) ahora mismo todos los spreads andan entre -1 y 8$. ¿me pierdo algo?

    Por cierto, si el precio llega a los 155, eso quiere decir que si compro el spread 'pierdo' los 155$ que me cuesta?¿se supone que luego puedo vender los contratos que he comprado y comprar los que he vendido?¿hacia dónde se supone que va la tendencia de los precios?

    Gracias por cualquier tipo de aclaración que me pudieras hacer.

    un saludo.

  3. #7
    Anonimo
    12/12/09 12:48

    Agutxi, para solucionar ese problema tienes que usar como separador decimal elpunto en lugar de coma. Para ello tienes que cambiar en herramientas/opciones/internacional
    Un saludo
    Patxi

  4. #6
    Anonimo
    08/12/09 12:44

    Tengo un problema: Las cotizaciones en la hoja de cálculo no las entiende como números, por lo que no puedo hacer ningún seguimiento de su evolución. ¿Hay alguna forma de solucionarlo? Me explico, si quiero seguir la diferencia entre Bid Size y Ask size (tamaños, indicados en números enteros) la fórmula funciona correctamente, pero al intentar hacerlo con cotizaciones, al bajarse a la hoja en un formato que no se interpreta como número me da error (#VALOR).
    Muchas gracias,
    Agutxi

  5. #5
    Anonimo
    02/12/09 23:51

    Muy interesante este post. Tambien parece interesanate poder hacer graficos intradia, no solo haciendo descarga de datos y representandolos como creo que haces, sino ademas capturandolos directamente de la celda donde se va actualizando los precios del spread. Esto en excel no lo se hacer pero se podria estudiar...

    Gracias.

    Akhil

  6. #4
    29/11/09 19:33

    Lo siento, no me habia fijado en los comentarios, alguien que utilice blogspot sabe como hacer que me lleguen alerts cuando reciba algun comentario?.

    Manuel6, gracias es verdad 50$, no se donde tengo la cabeza, tentre dolares, euros y libras se me mezclan. Ahora mismo lo corrijo.

    Alfredo, en cuanto a la casilla A7, tienes razon el codigo qu utilizo en excel es diferente asi que estaba imaginando uno mientras escribia asi que me lie, si A7 es el gatillo, A8= A4+a5+a6+a7. Efectivamente. Y la orden condicional seria a A8=4

    Respecto al ID para crear tus propios combos, en el excel hay una pestana llamada Contract Details (se rellena igual que en la pagina ticker) y al dar a request data de devuelve el Id en el campo ConID.

    respecto a los historicos es similar, en la pestagna Historical Data, incluyes los datos del ticker, la frecuencia y el plazo del que quieres los datos y te los descarga en otra pestagna de la que eliges el nombre. Para cerar graficos compuestos, depende de que fuera, podrias pedir los datos del combo directamente si es sobre el mismo subyacente, o en el caso del trigo/maiz, pedir ambos, crear un tabla restandolos y ya esta hecho. Si no lo entiendes, esta semana que viene puedo hacer un minipost sobre ellos, esta muy bien, porque puedes obtner datos del intradia, que con mfglobalfutures no puedes.

    el gatillo an a7,4=5, es para que aunque las otras tres condicioens fueran las correctas(el precio del trigo y el maiz esten dentro de un rango y el spread este donde lo queramos) y quisiesemos entrar, a7 seria falso y por tanto la suma seria 3, y no 4 por lo que no se lanzaria la orden. Y cuando ponemos 4=4, dara True, por lo que cuando las demas condiciones se activen podra ser igual a 4, que es cuando se lanzaria la orden.


    En cuanto a los links que no aparecen y las dos erratas, ahora mismo las modifico. y Agnado un link a un webinar de Interactive Broker que si no recuerdo mal, muestra como hacer diferentes operaciones, como solicitar datos historicos o ID.

    PD: NO dudeis en enviarme emails con las dudas que os surjan, mejor si lo poenis en los comentarios pero si como en este caso se me pasa responder, avisadme como bien ha hecho Alfredo esta vez. A ambos os invito a que una vez hayais realizado vuestras operaciones(o segun las vayais haciendo), me digais como os ha ido, vendiendo volatilidad, entrando, largo corto...y dedicaria un post a ver las diferentes estrategias que habeis utilizado(tambien la mia), los resultados que han dado y sobre todo intentar optimizarlos entre todos.

  7. #3
    Anonimo
    26/11/09 12:39

    Y una aclaración: posiblemente hayas liado los contenidos de la casilla A7 entre "IMPORTANTISIMO" y "FINAL alnzando la orden".

    - En "IMPORTANTISIMO" comentas que en la casilla A7, como gatillo manual, pones 4=5 para que no salte la orden; y después, para activarlo, lo cambias a 4=4.
    A continuación vuelves a decir que en la casilla A7 pones "=A4+A5+A6", que darán 3 como resultado...
    ¿No estás doblando los contenidos de la casilla A7? ¿Se trataría de hacer la suma de "=A4+A5+A6+A7", esta vez con el "gatillo" de 4=5 o 4=4 que daría el paso a Verdadero o a 4 en una siguiente casilla A8?
    Así, la referencia de lanzar la orden en el apartado "Conditional Order" sería a esa casilla A8=4. ¿Es lo correcto?

    Alfredo

  8. #2
    Anonimo
    25/11/09 17:13

    Algunas cuestiones deseo plantearte:
    Sobre el apartado que titulas "IMPORTANTISIMO",
    - ¿Solo con situar el condicional "=>" (dices por ejemplo, ""A30<155"), se activa la orden?
    - ¿Solo con escribir 4=5 en otra casilla se anula la posible activación?
    Entiendo que todo queda condicionado al correcto rellenado del "Conditional Order" y al enlace con la casilla A7, validante de las condiciones anteriores.

    En el apartado "Spread Trigo Maiz Llinares´ Style",
    - No me sale el mensaje de error al que aludes al ejecutar "combo Legs", aunque si lo sitúa fuera de lugar, en la casilla H o así, en vez de en la A.
    - ¿Cómo descubrir los Id de cada producto?

    En el apartado "Conclusión",
    - ¿Sabes de alguna guía para hacer gráficos compuestos con excel?
    - ¿Cómo descargar los históricos a Excel desde IB?
    - A qué spread te refieres (al de los dos combos o al primero que has mencionado).

    Nota: No aparecen en el puntero los enlaces que pones, al decir: "Podéis descargaros la API en este link y el manual en este otro"

    Alfredo

  9. #1
    Anonimo
    24/11/09 18:31

    Lo probaré de inmediato !! soy un novato, apenas llevo un par de meses operando y me he centrado en la venta de volatilidad de dicho spread (también spreads de diferentes vencimientos del mismo subyacente), con buenos resultados, incluso en intradía!

    Un detalle: cada punto de trigo (ZW) o maiz (ZC) son 50$ (no €)

    Mil Gracias !
    Manuel6

Sitios que sigo
Te puede interesar...
  1. Reestructuración Abengoa, valoración de bonos y acciones
  2. Automatización del Trading de Spreads con Interactive Brokers
  3. Hoy me voy a tomar el dia libre, mi Thanksgiving
  4. Ojo a hoy, Watchlist
  5. Hoy me voy a tomar el dia libre, mi Thanksgiving
  1. Reestructuración Abengoa, valoración de bonos y acciones
  2. Automatización del Trading de Spreads con Interactive Brokers
  3. No perder con un 2 y un 7
  4. Las noticias mandan
  5. De plazos y gestión de mi cartera