En la tercera parte de nuestro tutorial sobre TWS pasamos revista a las utilidades de la TWS conocidas como Interactive Analytics, así como a las APIs y la programación en la plataforma de IB.

¿Qué es Interactive Analytics?
Con Interactive Analytics (IA) podemos evaluar en tiempo real el precio que debería tener una opción según un modelo de valoración. Para que IA funcione debemos ir al menú Analytics y alli marcar Interactive Analytics, lo que nos permitirá disponer de las siguientes herramientas:

- Portfolio Analytics: seleccionando esta opción, obtendremos un completo análisis de riesgos que presenta nuestra cartera de opciones.

- Option Analytics: si estamos operando con opciones, mediante esta herramienta podemos obtener la delta, la gamma, la vega y la theta en tiempo real en base al último precio del subyacente.

En este sentido cabe destacar que podemos calcular volatilidades implicitas y precio de valoración de la opción a través del modelo Black-Scholes en tiempo real. Para ello, basta con insertar en nuestra página de trading el contrato de opciones que nos interese, seleccionarla, pulsar con el boton derecho del raton y hacer click en Edit Model para modificar todos los parámetros del modelo: tipo de interés, dividendos, volatilidad, etc. Después no tenemos más que editar nuestro Layout (véase la primera parte de este tutorial) y añadir en Market Data Row los campos Model y Imp. Vol. (%) para ver en pantalla los cálculos en tiempo real. Asimismo, observese que en el menu Analytics disponemos de la posibilidad de elegir las unidades de la volatilidad implicita en la opción Volatility Units, pudiendo elegir entre diaria o anual.

Asimismo, una última herramienta que se le pasa por alto a mucha gente y que podría estar perfectamente incluida en el menu Analytics es el Arbitrage Meter. Sólo funciona con futuros sobre índices y para activarlo debeis seguir los siguentes pasos:

- Insertar un contrato de futuros, por ejemplo el DAX en Eurex.

- En otra línea, volved a insertar el mismo ticker (DAX) pero ahora en lugar de elegir Future, escoged Index en el menu. Con esto podeis ver el contado (subyacente del futuro) en tiempo real. Dejad seleccionada la fila que corresponde al indice

- Ahora debeis ir al menu Configure -> Ticker -> Show Arbitrage Meter. Con esto se os deberia activar una pequeña ventana con una barrita que cambia de color y tamaño constantemente.

El Arbitrage Meter muestra en tiempo real el descuento o la prima que presenta el contrato de futuros respecto de su fair value o valor justo (Nota: un día os escribiré un artículo sobre el tema pero básicamente el fair value es el precio teórico del futuro en la fecha de vencimiento que impediria hoy la posibilidad de arbitraje entre futuro y contado a los precios actuales). Así, cuando la barra está en verde, nos indica que el futuro está por encima del fair value mientras que en rojo nos indica lo contrario (teóricamente en verde deberiamos vender en busca de un par de ticks y en rojo lo contrario, pero esto es sólo teoría ;-))


API's en la TWS
Pasamos a continuación a ver con detenimiento qué son y cómo funcionan las APIs (Application Programming Interfaces) en la TWS. En primer lugar, qué es una API? Se trata de pequeños programas que pueden conectarse e interactuar con la TWS, pudiendo incluir incluso condiciones. Así, con una API podemos:

- Conectar a una o más TWS a la vez (cambiando el puerto de conexion en cada TWS)
- Ver datos en tiempo real en otras aplicaciones
- Enviar, cancelar y modificar órdenes
- Recibir el status de las órdenes que hayamos lanzado con la TWS al abrir nuestra API
- Ver el estado de nuestra cuenta en tiempo real.

La conexión a la TWS de una API puede realizar mediante diversos lenguajes de programación: DDE a través de Excel, ActiveX a través de Visual Basic, C++ y Java. En este sentido, conviene tener un buen conocimiento de estos lenguajes para poder programar cosas avanzadas que lancen ordenes a la TWS pues de lo contrario no le sacariamos todo el partido que deseariamos. Para mayor referencia de como unir la TWS con una aplicación que hayamos diseñado, tenemos una extensa referencia de los eventos, métodos y propiedades para cada lenguaje en el manual de la TWS. No olvideis que para hacer que funcione cualquier API (incluso AutoTrader), debemos tener activadas las opciones Enable ActiveX... y Enable DDE... en el menu Configure->API. Asimismo si deseais tener actualizados los ultimos componentes para desarrollar APIs podeis hacerlo desde el siguiente enlace: http://www.interactivebrokers.com/en/p.php?f=programInterface&ib_entity=llc.

Pero mi intención en este artículo no es introducirme en la programación de APIs (para empezar porque tampoco soy un programador experto aunque mis pinitos he hecho en Perl y Javascript ;-)) sino responder a una de las cuestiones que más usuarios de la TWS me han hecho: ¿cómo se lanzan órdenes condicionadas desde Excel!!!? Bien, voy a hacer todo lo posible por hacer una explicación lo más sencilla posible:

1. Abrimos la TWS, haciendo login con nuestro nombre de usuario y contraseña.

2. Comprobamos que están activados los clientes DDE y ActiveX en el menu Configure -> API.

3. Abrimos el Explorador de Windows y vamos a la carpeta C:\Archivos de Programa\JTS\Excel; allí veremos un archivo llamado TwsDde.xls: lo abrimos (ojo aqui porque debemos tener activadas las macros de Excel, si no esto no funcionará).Rellenamos la celda que pone Username con nuestro Username y pulsamos Enter. Ya estamos conectados a la TWS desde Excel

4. Lo primero ahora es recibir datos del mercado. Para ello, creamos el ticker del futuro que nos interese en las filas de color amarillento (en la zona Tickers) pulsando en el botón Create Ticker... Introducimos los datos que nos pide (simbolo, tipo de activo, vencimiento, etc) y aceptamos. Despues nos vamos a la fila donde hemos creado el ticker y le damos al boton Request Market Data. Ya tenemos tiempo real en Excel.

5. Como curiosidad desde la hoja Orders podemos lanzar ordenes al mercado: para ello ponemos si es compra o venta, la cantidad, el tipo de orden, el precio en caso de ser limitada y el precio auxiliar si es un stop. Despues simplemente con pinchar en el boton Place/Modify Order lanzamos la orden. Podeis ver varios ejemplos sobre IBM en la misma hoja de Excel que vienen por defecto aunque por supuesto podemos eliminarlos y crearlos nuestros propios.

6. Ahora viene lo importante: la hoja Conditional Orders. Aqui es desde donde debemos lanzar una orden condicionada. El proceso es el siguiente:

Lo primero es introducir simbolo, tipo y mercado (exchange) para el producto que queremos negociar (el resto de campos son para opciones). Por ejemplo, para DAX pondriamos Symbol = DAX, Type = Fut y Exchange = DTB.

A continuación definimos la condicion que lanzará una determinada orden.Para ello debemos rellenar los siguientes campos (sombreados en azul claro, a la derecha) en la hoja de calculo:
Statement: condición que lanza la orden. Por ejemplo si la celda M15 de la hoja de Tickers (que supongamos que corresponde con el último precio negociado de Eurostoxx) es mayor de 2500 se escribiria así: =Tickers!M15>2500 Si esta condición es cierta entonces se lanzará la orden que definiremos a continuación.
ADD/MOD: ADD se utiliza para órdenes que se ejecutan directamente mientras que MOD se utiliza para órdenes que deben actualizarse en función de la condición anterior.
Action: Buy o Sell
Quantity: Cantidad
Order Type: MKT, LMT, STP, STPLMT
Limit y Aux Price: sólo para el caso de órdenes STP y STPLMT.

Por ejemplo, si deseamos crear un trailing stop sencillito que nos cubra los beneficios de una compra cada vez que el mercado suba un punto pero que no cambie ante retrocesos en los precios, deberiamos poner esto en la hoja de ordenes condicionales (ojo, tras haber introducido la orden stop de venta en mercado que irá actualizandose en base a esto):

Statement: (Celda que contiene Bid Price) - (Celda que contiene el precio de Stop de la orden de venta)>1

ADD/MOD: MOD

Action: SELL

Quantity: 1

Order Type: STP

Lmt Price: (vacio)

Aux. Price: (Celda que contiene Bid Price) - 1

Otro ejemplo: queremos crear una orden que lance una venta limitada a 2550 si antes se ejecuta una compra (por ejemplo, a 2500)

Statement: Celda que indica la cantidad ejecutada en la orden de compra (campo Filled en la hoja Orders) = 1

ADD/MOD: ADD

Action: SELL

Quantity: 1

Order Type: LMT

Lmt Price: 2550

Aux. Price: (vacio)

Espero que más o menos se haya entendido todo esto. Me imagino que ahora con todas estas posibilidades Vds. puedan hacerse una idea de la potencia de la TWS y de lo que significa esta herramienta respecto a lo que cualquier broker español pueda ofrecernos, por muy bueno que sea. Espero que asimismo haya sido de su agrado y les permita ampliar notablemente su capacidad operativa en los mercados.

Con esto terminamos este tutorial sobre TWS y pasamos a preparar otro sobre las API's existentes en Internet (AutoTrader y similares) que son gratuitas y permiten realizar scalping y lanzar ordenes de una forma muy veloz (y es que eso de llamar por telefono al broker es casi prehistorico ante estos medios).

Un saludo
X-Trader

 


Si te ha gustado este articulo, ¡compártelo en redes!