Tutorial sobre TWS III

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 allí 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 implícitas 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 botón derecho del ratón 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, obsérvese que en el menú Analytics disponemos de la posibilidad de elegir las unidades de la volatilidad implícita en la opción Volatility Units, pudiendo elegir entre diaria o anual.

Una última herramienta que se le pasa por alto a mucha gente y que podría estar perfectamente incluida en el menú Analytics es el Arbitrage Meter. Solo funciona con futuros sobre índices y para activarlo debéis seguir los siguientes 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 menú. Con esto podéis ver el contado (subyacente del futuro) en tiempo real. Dejad seleccionada la fila que corresponde al indice.
  • Ahora debéis ir al menú Configure -> Ticker -> Show Arbitrage Meter. Con esto se os debería 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 impediría 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 deberíamos vender en busca de un par de ticks y en rojo lo contrario, pero esto es solo teoría ;-))

APIs 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 conexión 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 órdenes a la TWS pues de lo contrario no le sacaríamos todo el partido que deseáramos. Para mayor referencia de cómo 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 deseáis tener actualizados los últimos componentes para desarrollar APIs podéis hacerlo desde el siguiente enlace: https://www.interactivebrokers.co.uk/es/index.php?f=1543&p=api.

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 menú Configure -> API.
  3. Abrimos el Explorador de Windows y vamos a la carpeta C:Archivos de ProgramaJTSExcel; allí veremos un archivo llamado TwsDde.xls: lo abrimos (ojo, aquí 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 (símbolo, tipo de activo, vencimiento, etc.) y aceptamos. Después nos vamos a la fila donde hemos creado el ticker y le damos al botón Request Market Data. Ya tenemos tiempo real en Excel.
  5. Como curiosidad, desde la hoja Orders podemos lanzar órdenes 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. Después simplemente con pinchar en el botón Place/Modify Order lanzamos la orden. Podéis ver varios ejemplos sobre IBM en la misma hoja de Excel que vienen por defecto aunque por supuesto podemos eliminarlos y crearlos nuestros propios.

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

  1. 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 pondríamos Symbol = DAX, Type = Fut y Exchange = DTB.
  2. 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 cálculo:
  • 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 escribiría 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: solo 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, deberíamos poner esto en la hoja de órdenes condicionales (ojo, tras haber introducido la orden stop de venta en mercado que irá actualizándose 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: (vacío)
  • 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: (vacío)

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 APIs existentes en Internet (AutoTrader y similares) que son gratuitas y permiten realizar scalping y lanzar órdenes de una forma muy veloz (y es que eso de llamar por teléfono al broker es casi prehistórico ante estos medios).

 
Un saludo
X-Trader

 

COMPARTIR EN: