Hoy tengo el placer de presentarles un excelente artículo enviado por nuestro amigo Pablo Espinar en el que se detallan las ventajas de utilizar un servidor virtual como soporte para la operativa sistemática. También nos describe, como caso práctico, algunos aspectos de su experiencia personal empleando esta tecnología.
DIFERENTES ENTORNOS, DIFERENTES NECESIDADES.
En Informática se suelen diferenciar, al menos, entre dos entornos de trabajo (entorno: conjunto formado por hardware, software, red, y suministros varios - electricidad, temperatura, etc.). Veremos que dicha distinción puede fácilmente hacerse extensiva a la operativa sistemática:
— Entorno de desarrollo: son los ordenadores y demás infraestructura en los que los programadores trabajan para hacer los programas. Se caracteriza por no tener unos requerimientos de disponibilidad y rendimiento demasiado exigentes, ya que los programas no están a disposición del usuario final, y por lo tanto los errores que puedan surgir no tienen especial importancia.
En operativa sistemática esto se puede comparar con los ordenadores que utilizamos para hacer programación, backtesting, walk -forward, estimación de riesgo, gestión del portfolio, etc. En general las tareas que no dependen de un data-feed en tiempo real.
— Entorno de producción: son los ordenadores y demás infraestructura en los que los programas se ponen a disposición del usuario final para su explotación. En este entorno, los requerimientos de disponibilidad y rendimiento son máximos, siendo habitual en los últimos tiempos que se requiera una disponibilidad 24 x 7, y un rendimiento tan alto como permita el presupuesto de inversión en infraestructuras.
En operativa sistemática esto se puede equiparar a la infraestructura que utilizamos para el tiempo real: tanto los sistemas que tenemos funcionando sobre cuentas reales, como los que tenemos en simulación en modo "incubadora".
En el resto del artículo nos centraremos en este último entorno, sin duda el más crítico para nuestra actividad. El entorno de desarrollo en nuestro caso puede ser cualquier ordenador que tengamos en casa, simplemente cuanta más CPU, menos tardará en llevar a cabo nuestras "mega-optimizaciones".
LO QUE PUEDE IR MAL IRÁ MAL.
La puesta a punto de un entorno de producción no es en definitiva más que un ejercicio de gestión de riesgos: hemos de imaginarnos todo lo que puede fallar y, a continuación, hemos de implementar "contramedidas" que palien al máximo dichos puntos de posible fallo.
Vamos por lo tanto a enumerar las posibles causas de fallo de nuestro sistema de producción de trading, así como las contramedidas usuales para cada uno de ellos.
1) Fluido eléctrico. El problema más usual con el que nos podemos encontrar. Desde que la parienta enchufa la plancha, el microondas y el calentador de la niña todo junto, y se van los plomos a hacer puñetas, hasta el apagón general en media ciudad (en Barcelona algunos estuvimos hasta tres días sin luz hace un par de años). Esto se "soluciona" mediante la instalación de un SAI (Sistema de Alimentación Ininterrumpida), que permita tanto a nuestro ordenador como a nuestro router, seguir funcionando durante un período de tiempo. Normalmente, sin embargo, las baterías de estos sistemas son muy caras, y apenas alcanzan para un par o tres de horas de funcionamiento. Si el apagón se prolonga más tendremos que detener la operativa.
2) Conectividad a Internet. Otro clásico. De alguna manera, - normalmente por culpa de nuestro proveedor de Internet, aunque a veces el problema puede ser más general, - nuestra conexión con el broker y/o el data feed cae y todas nuestras posiciones abiertas quedan "huérfanas" del ojo del amo. La contramedida usual es disponer de una conexión a Internet de backup, el típico "pincho" USB de un operador móvil, por ejemplo. Seguimos añadiendo costes, por cierto.
3) Fallo hardware. No es tan habitual como los puntos 1 y 2, pero también puede suceder. Cualquier componente de nuestro PC de trading nos puede dejar "tirados" en un momento dado. Lo más habitual es que sea el disco duro, pero también se averían las placas bases, tarjetas gráficas, monitores, etc. Aquí lo más práctico es tener directamente otro ordenador de repuesto para estas contingencias. En esta categoría podríamos incluir también eventos que afecten a nuestro PC, tales como inundaciones (la lavadora!!), altas temperaturas, etc.
4) Caída del broker. También puede suceder que nuestro broker o proveedor de datos tenga dificultades técnicas. Esto es un imponderable que no depende de nosotros, y poco se puede hacer. Algunos aconsejan tener cuenta en otro broker y abrir posiciones contrarias mientras dure la avería en nuestro broker "primario".
En todo caso, y tanto para esto como para el resto de averías, siempre es aconsejable contar con el teléfono del broker anotado en una agenda de papel para, eventualmente, cerrar todas nuestras posiciones.
5) Fallo software. De largo el fallo más habitual. "NinjaTrader ha detectado un error y debe cerrarse"... Los fallos pueden deberse tanto a la plataforma utilizada, como a las estrategias que hayamos programado. En este último caso no hay más remedio que probarlas tanto como sea posible, aquí ayuda un generoso periodo de incubadora, así como una correcta gestión de la calidad del software que generemos: registro de los errores y acciones correctivas, etc. En cuanto a las plataformas, las hay más y menos estables. En mi opinión, NinjaTrader es "bastante" estable (siempre hablando de la versión 6.5, versiones beta nunca tienen que acercarse ni de lejos al entorno de producción), pero algún que otro disgustillo suele dar de vez en cuando. Algo que si es importante aquí es que el ordenador de producción tenga el menos software instalado posible, para que no aparezcan las temidas incompatibilidades, a menudo generadoras de fallos y bajadas de rendimiento. En mi caso por ejemplo, ni siquiera tengo antivirus en mi entorno de producción.
Bien, lo lamentable de todo esto es que al final tenemos nuestro pobre despacho lleno de cachivaches, que se calientan, meten un montón de ruido y lo entorpecen todo (la parienta no suele estar muy contenta con esta disposición). Si además algún día tenemos que mudarnos, por ejemplo, los quebraderos de cabeza se multiplican.
Veamos si existe alguna otra alternativa más cómoda.
MANDÁNDOLO TODO A "LA NUBE"
En los últimos años se ha extendido en informática el concepto de "cloud computing", que básicamente consiste en que las empresas (o particulares), para ofrecer sus servicios sobre una plataforma informática, en lugar de comprar e instalar servidores en sus propias oficinas, lo que hacen es alquilarlos a proveedores de servicios de "hosting", que cuentan con enormes "datacenters" que albergan cientos de servidores de sus clientes, en condiciones de seguridad, disponibilidad y rendimiento muchos mayores de las que puede permitirse una pequeña empresa (no digamos ya un particular). Ello unido a la madurez de las tecnologías de virtualización de sistemas, hace que en la actualidad haya una oferta tremendamente competitiva en costes incluso para el trader particular.
El nombre de cloud computing viene porque se dice que tus servidores los tienes alojados en "la nube": algún sitio de Internet, (el sitio físico en el mundo muchas veces ni se conoce, por motivos de seguridad adicional) al que nos conectamos de manera remota, pero indistinguible de la situación en que los tuviésemos en nuestras instalaciones.
Existen dos tipos de ofertas en cuanto a "alojamiento" (hosting) de servidores:
Otra opción dentro de este mismo esquema es que tú te compras el servidor, y el proveedor lo único que hace es alquilarte el espacio en su datacenter.
VENTAJAS DE "LA NUBE"
En mi opinión, establecer nuestro entorno de producción "en la nube", es decir, alojado en un servidor virtual en un datacenter, presenta una serie de ventajas en comparación al modelo de "todo en casa" (literalmente):
1. Fluido eléctrico. Los datacenter son alimentados habitualmente por varias compañías eléctricas, que sirven de respaldo unas a otras. En el caso además de apagón general, aún cuentan con gigantescos generadores que les permiten continuar las operaciones sin interrupción por el espacio de tiempo que dure la avería.
2. Conectividad a Internet. Los datacenter están también habitualmente conectados a varios proveedores de Internet, usualmente a sus redes troncales, con lo que no sólo la disponibilidad sino el ancho de banda están garantizados en un porcentaje muy alto.
3. Fallo hardware. Los servidores virtuales están sustentados no por un único servidor hardware sino más bien por lo que se llaman "granjas" de servidores. Si hay un fallo hard en uno de los servidores físicos, los virtuales que se encuentran alojados ahí pasan automáticamente a otro que esté en perfectas condiciones. No se pierde ni un solo ping. Yo lo he visto en directo y es bastante espectacular.
4. Caída del broker. Aquí no hay ventaja sobre el caso de tenerlo todo en nuestra casa, por lo que somos nosotros los que hemos de prepararnos para esa contingencia, como ya se explicó.
5. Fallo software. El mismo caso que el punto 4.
MI EXPERIENCIA PERSONAL
Después de evaluar los pros y los contras que ofrecen ambas opciones, a principios de este año me decidí por probar la alternativa del alojamiento en datacenter.
Para ello lo primero que hice fue escoger el proveedor adecuado para mis necesidades. Hay muchos proveedores de servidores virtuales, lo que también favorece que baje su precio. Entre los que yo miré en su momento me he quedado con: Triple 8 . Motivos:
En este caso, este proveedor no tiene datacenters en Chicago ni New York, que sería lo ideal ya que ahí están los mercados. En mi caso mi VPD está en Dallas. Ahora bien, con los anchos de banda que gasta esta gente, no creo que haya mucha diferencia.
Una vez contratado el servicio, desinstalé el poco software que viene por defecto (un antivirus que yo recuerde), e instalé el NT 6.5 última versión. A continuación se muestra una vista típica de la consola remota. Cuando lo pones en pantalla completa no lo distingues de tu propio ordenador salvo por una pequeña barra de herramientas en la parte superior.
>> Ampliar.
Y desde entonces estoy funcionando con esto desde abril de este año, y todavia no he tenido ni un sólo incidente, siempre he podido acceder a mi "Virtual Private Desktop" sin problemas. Empecé con una configuración mínima (512 Mb de memoria), y recientemente la he actualizado a 1 Gb de memoria, ya que con 512 Mb el Ninja va un poco justo, aunque se puede trabajar.
Finalmente comentar también, para el que le pueda interesar, un par de aspectos de mi forma de trabajar con esta configuración:
// Alarma de inicio de sesion
if (Bars.BarsSinceSession == 0)
SendMail ("xxx@gmail.com", "xxx@gmail.com", "Inicio sesión Ok " + this.Name + "_" + Instrument.MasterInstrument.Name + "_" + BarsPeriod.Value + "m", " ");
En el área de descargas de la web hemos dejado una copia de la rutina de volcado de los trades, por si a alguien le resultara de interés.
© Pablo Espinar.
Tradingsys.org, 2010.
Podrias decirme que ping te da desde tu servidor virtual a estas direcciones?
64.202.118.179
64.202.118.208
64.202.118.247
Son las del feed que uso en estos momentos (zen-fire) en realidad son los antiguos 7ticks, que ahora son los de www.interactivedata.com
Desde mi casa da unos 200 ms.
Seguramente desde Dallas, dará menos.
Yo también uso ninja y estoy a punto de empezar a hacer pruebas mas serias.
Un saludo y gracias de antemano.