Mostrando entradas con la etiqueta market trading. Mostrar todas las entradas
Mostrando entradas con la etiqueta market trading. Mostrar todas las entradas

martes, julio 12, 2011

Martin Fowler analiza la arquitectura de LMAX

martes, julio 12, 2011 por Martín

Allá por Enero, escribía sobre la arquitectura de LMAX, una empresa que había desarrollado una aplicación para operar en mercados de derivados pero no sólo orientada a traders sino también al usuario final, y que presentaba unos números impresionantes. En InfoQ publicaron un video muy interesante donde los creadores de la arquitectura la explicaban en detalle.

Un amigo me ha pasado hoy este enlace, donde el mismísimo Martin Fowler ha hecho un análisis mucho más detallado sobre la arquitectura, complementado por notas que ha intercambiado por email con los autores. Si os interesa el tema de la escalabilidad y la computación de alto rendimiento entonces es un artículo que no os debéis perder.

martes, enero 25, 2011

Consejos para gestionar 100K TPS con menos de 1ms. de latencia

martes, enero 25, 2011 por Martín

Hace poco más de un mes publicaron en InfoQ una presentación muy interesante sobre como crear aplicaciones capaces de procesar un gran número de transacciones con una latencia muy pequeña.

Los autores de la presentación fueron Martin Thompson y Michael Barker y trabajan en LMAX. Esta copañía desarrolla lo que se llama un Trading Exchange. Este tipo de compañías ofrecen la posibilidad de comprar activos financieros al usuario final (i.e. nosotros) ofreciendo un pool de proveedores (agencias de trading, bancos, etc.) que compiten entre sí para ofrecerle al usuario el mejor precio. La idea es que si por ejemplo quiero comprar EUR/USD el sistema me va a ofrecer siempre la mejor oferta de entre los varios proveedores existentes en el trading exchange.

domingo, noviembre 21, 2010

Facebook venderá créditos para micropagos en Game y Tesco

domingo, noviembre 21, 2010 por Martín


Wow, esto de los micropagos promete ser la bomba. Ayer me enteraba que Facebook comenzará a vender créditos para su servicio de micropagos en el Reino Unido en los supermercados de Tesco y en las tiendas de Game. Por ahora esta "moneda" se puede utilizar únicamente en 200 aplicaciones y juegos de Facebook pero se comenta que pronto se podría utilizar en aplicaciones externas vía Facebook Connect. ¿Tiembla PayPal?

jueves, mayo 07, 2009

De BetFair a TradeFair. Historia de un motor transaccional.

jueves, mayo 07, 2009 por Martín


He estado viendo esta charla publicada hace unos días en InfoQ en la que el CTO de BetFair.com comenta como fue evolucionando su sistema de gestión de transacciones y como construyeron un motor capaz de funcionar tanto para apuestas deportivas como para mercados financieros.

El contenido de la charla es bastante interesante, aunque la charla en sí no es nada amena, así que no sabría si recomendárosla. Creo que sólo si os gusta el tema.

Uno de los comentarios interesantes de la charla es que parece que Oracle les comentó que BetFair puede ser una de las cinco aplicaciones más "calientes" del mundo en cuanto a contención de recursos.

En su caso el problema no es tanto la escalabilidad sino más bien el mantener el rendimiento del servidor durante determinadas ventanas de tiempo. En su web normalmente la mayoría de usuarios se concentran únicamente en torno a determinados eventos 'live'. Una vez que esos eventos terminan, los usuarios se mueven a otro evento. Un ejemplo es una carrera de caballos. La carrera empieza, se va sucediendo, termina y los usuarios se mueven a la siguiente carrera.

Todo esto los deja con que el problema pasa a ser un problema de optimización. ¿Cómo conseguir que el sistema se mantenga ejecutándose con un buen rendimiento de manera continua?

La gestión del riesgo y gestión de apuestas es mucho más sencilla ya que se puede dividir en clientes o cuentas, lo que permite fácilmente particionar y procesar en paralelo. La actividad de cada cuenta en estos sistemas suele ser pequeña, es decir, ningún usuario está ahí sentado en su ordenador ejecutando 50.000 apuestas por segundo.

La vista de mercado es read-only lo que les permite una serie de optimizaciones. El multi-casting es común para enviar el estado de las apuestas a diferentes clientes. Eso funciona para sus clientes de escritorio pero en la web tienen problemas. Ahora mismo utilizan polling. Están intentando migrar a una aproximación basada en streaming y comet pero todavía no estaba acabado.

En cuanto a la transaccionalidad, ahí es donde las cosas se tornan complejas. El objetivo de BetFair era pasar de las 500 TPS a las 50000 TPS. Para ello mantuvieron diferentes rondas de entrevistas con equipos y empresas clave, como puedan ser las compañías que desarrollan los mercados de valor por ejemplo. Pero aparentemente ninguna solución se ajustaba exactamente al modelo de BetFair. Les propusieron una especie de competición para conseguir el motor más rápido (asumo que o bien les pagaron o bien compartiron la propiedad intelectual), y BetFair salió ganando.

Todo el modelo de transaccionalidad se basa en el control programático de las transacciones, lo que muchas veces les obliga a compensar transacciones cuando hay que hacer algún rollback; en el uso de mensajería; y finalmente en el mantener enormes registros de auditoría con todas las operaciones. De modo que si algún servidor o algún agente se cae, puedan replicar todas las acciones que había pendientes.

Respecto a la alta disponibilidad, su reto era que si se caia un agente, tener otro listo para continuar sirviendo peticiones. Básicamente una estrategia activo/pasivo. Sólo uno está ejecutando el mercado en un momento dado, pero si algo falla, el segundo tomará el relevo. Evaluaron numerosas posibilidades (relatadas en la charla), pero al final se quedaron con el log tailing, que básicamente viene siendo que el agente pasivo lee los logs del activo y va replicando todas sus acciones.

Ya al final de la charla dedican unos quince minutos a hablar de como evolucionaron de BetFair a TradeFair y los retos que eso suponía. Partían de su motor, FlyWheel, capaz de ejecutar decenas de miles de transacciones por segundo, pero que sin embargo tenía unos niveles de latencia altos y no consistentes, algo no aceptable para los mercados financieros. Ese fue básicamente su principal reto. Entre las soluciones pues básicamente el intentar evitar la escritura a disco, controlar la recolección de basura y la instanciación de objetos, y también regular sus tasas de transferencia (throttling throughput).

lunes, abril 06, 2009

UI: Convertir las cosas complejas en juegos de niños

lunes, abril 06, 2009 por Martín


El otro día leyendo alguna noticia en TechCrunch me encontré con eToro, y todo esto a cuento de que es una aplicación que ha conseguido levantar 6.3 millones de dólares, lo que no está nada mal en esta situación económica. eToro es una plataforma de trading para el mercado de divisas, pero su aproximación es radicalmente diferente a las de las aplicaciones tradicionales.

Habíendo trabajado más de un año en el desarrollo de una aplicación de trading para estos mercados, y habiendo estado relacionado con otras plataformas similares, lo que más me llamó la atención sin duda fue el interfaz de usuario. eToro hace sencillo el trading. Ridículamente sencillo, me atrevería a decir. Vamos que hasta un niño de cinco años podría entender lo que está haciendo.

Y es que la aplicación de escritorio de eToro (también tienen una web) parece un juego. Fijaros en el interfaz simplificado para la compra y venta de divisas, lo que ellos llaman Globe Trader.



O en sus charts simplificadas:



Está claro que tienen diseñadores y gente que ha de tener alguna experiencia en interfaces para juegos, porque es como si estuvieramos con cualquier simulador de negocios. Al mismo tiempo, el modo experto de la aplicación está ya mucho más orientado al profesional:



En serio, me ha parecido una estrategia super inteligente. El mercado de divisas es uno de los más peligrosos y es por ello que mucha gente no se atreve a invertir en el mismo. Si os pasáis por los blogs de traders españoles, veréis que casi todos se centran única y exclusivamente en los mercados de valores, y muy pocos se aventuran a comerciar con divisas. Esto es básicamente porque es un mercado que varia muy rápidamente, y aunque es muy sencillo ganar dinero, es muy fácil también el perderlo.

eToro ha creado un interfaz super-sencillo para atraer a más gente al mundo del Forex. Me pregunto si veremos más aplicaciones en el futuro que sigan esta estrategia de trasladar interfaces de usuario tradicionalmente serios al mundo de los juegos para intentar simplificar la experiencia de usuario.

jueves, enero 08, 2009

Datos históricos, trading y Cloud Computing.

jueves, enero 08, 2009 por Martín



Con el permiso de los que realmente saben de esto ahí va un post sobre Cloud Computing (o quizás debería decir Cloud Storage). Hoy he llegado hasta un artículo en WallStreet Technology que me ha parecido super interesante, al tiempo que me ha traido a la mente experiencias pasadas en mi primer trabajo aquí en Irlanda.

Uno de los retos más importantes que tiene cualquier aplicación de trading que se precie es la de permitir el análisis técnico de los instrumentos que presenta a sus usuarios. El inmenso volumen de datos que hay que manejar convierte el almacenamiento de estos datos en un factor muy importante a la hora de diseñar un sistema de este tipo. Y aunque existen algunas técnicas y bases de datos para disminuir el volumen de datos almacenados, según la exactitud de datos que necesites éstas no pueden ser aplicables.

Por poneros un ejemplo, en un sistema de divisas donde a lo mejor trabajas con 32 pares (eur-usd, usd-jpy, ...) puedes encontrarte con que las divisas más comunes cambian unas 16 veces por segundo, lo que nos da 960 valores por minuto, 57600 valores en una hora, y si asumimos una ventana de 8 horas para trading pues tenemos casi medio millón de valores. En fin, esto no es nada si lo comparamos con un mercado de valores como el NASDAQ o el FTSE donde hay muchos más valores.

Estos mercados además por sus características tienen unos requisitos regulatorios mucho más estrictos de los que pudiesemos haber tenido nosotros, ya que tienen la obligación de mantener durante largos períodos de tiempo el histórico de todos los valores del índice y de las operaciones que se han realizado, ya que estos datos pueden ser necesario para resolver reclamaciones, pleitos y todas estas cosas, así que por ley se ven obligados a mantener absolutamente todo.

El lugar más obvio para almacenar esta información es una base de datos, o un sistema de ficheros, que periódicamente se vuelca a DVDs o cintas de backup. Pero, y ya que dicen que está de moda, ¿por qué no almacenarlo en la nube? El artículo en cuestión con el que empezaba este post habla sobre como a Claude Courbois, associate VP, product development, de Nasdaq Data Products se le ocurrió el utilizar los servicios de Amazon S3 para uno de sus productos, Market Replay. El producto en si mismo ya es interesante, y básicamente consiste en ofrecerle una herramienta a los clientes de Nasdaq para que puedan reproducir una operación ejecutada en el pasado. Es como la máquina del tiempo del índice NASDAQ, y a los clientes les puede resultar enormemente útil si reciben cualquier tipo de reclamación ya que pueden demostrar que la operación ha sido legítima (o no).



Así, según parece Nasdaq está añadiendo diariamente entre 30 y 80Gb de datos a S3 en forma de 300.000 ficheros de datos, conteniendo cada fichero el equivalente a 10 minutos de actividad en el índice para un instrumento dado. La recuperación de datos desde S3 lleva menos de un segundo y con la ventaja adicional de que el sistema aprovecha "la nube" para escalar. Los clientes reciben la información instantáneamente sin tener que esperar a que se recupere de los sistemas de backup.

Otro factor muy importante que se menciona en el artículo y que parece que las empresas comienzan a entender es que durante el todo el desarrollo del producto no se ha pagado ni un céntimo extra por lo que no se utiliza. En un inicio Courbois comenta que recibieron facturas de tan sólo 5 dólares y no se vio obligado a gastarse 20000 dólares en hardware o realizar ningún megacontrato con alguna proovedora de servicios. Muy importante lo que comenta y que quizás en estos tiempos que corren sea más sencillo que a algunos les pueda entrar por la cabeza:

"Even though we're in a big company, every new project is a start-up, and you want to avoid situations where you have to plunk down a bunch of money to move forward."

El artículo también trata brevemente temas más polémicos como la seguridad y el soporte. Mi opinión personal es que ahí hay realmente mucho que hacer todavía, pero también hay mucho negocio, y compañías como RightScale no harán más que crecer y ganar mercado en los próximos años.

jueves, diciembre 04, 2008

Latencia, monitorización de redes y microbursts.

jueves, diciembre 04, 2008 por Martín


El software para operar en mercados de valores es realmente apasionante. Desde fuera puede parecer muy aburrido pero una vez que estás dentro descubres que se trata de una lucha constante por la optimización. Minimizar la latencia es fundamental. En ese mundo, el que consigue que sus operaciones lleguen antes al mercado es el ganador. Y ahí cualquier cosa, ya sean switches, routers, servidores de aplicaciones o esa clase Java que está al final de toda la cadena y que envía el mensaje a la cola de MQ son importantes.

Todas estas cosas se multiplican por 1000 cuando estamos en una época de incertidumbre, y que en cualquier momento el mercado puede bajar un 5% o una moneda puede desplomarse frente a otra en cuestión de minutos. Muchas empresas emplean herramientas de monitorización para tratar de descubrir patrones de operación en el mercado. Estas herramientas pueden ser internas, como Wily Introscope con la uqe he trabajado y que no puedo más que recomendar, o externas.

Las herramientas internas tienen la ventaja de integrarse muy bien con el stack de la aplicación y de ofrecer información bastante específica, como tiempos que tardan en procesarse mensajes en colas, o el tiempo que tarda en ejecutarse un método determinado, etc. Sin embargo el inconveniente es que añaden una carga extra de proceso que irremediablemente impacta en la latencia, por lo que al final te ves obligado a desplegar una versión con monitorización mínima en producción; aunque son fenomenales para desarrollo, ya que ahí puedes permitirte monitorizar muchos más datos.

Por otra parte hay herramientas externas que funcionan ajenas a las aplicaciones y servidores y que se basan simplemente en capturar el tráfico de las redes y en analizar sus patrones para proporcionar información, generar gráficos y lanzar eventos a partir de ésta. Dentro de este sector se encuentra Endace. Por cierto que si os interesa el tema, Corvil es una empresa irlandesa que está teniendo también bastante éxito en este mundillo.

En Low Latency han publicado un pequeño podcast/entrevista de siete minutillos que explica algunas de estas cosillas y que es bastante ameno de escuchar. Es un poco publicitario, porque el entrevistado es Paul Doyce, Technical Manager de Endace, pero se lleva bastante bien.

También os lo podéis descargar directamente desde este link.

Photo via travel_aficionado@Flickr.

martes, septiembre 09, 2008

Un pequeño problema informático de esos que valen millones

martes, septiembre 09, 2008 por Martín


Hoy me voya desviar un poco de la temática habitual, aunque me mantendré de cierto modo dentro del mundo del software. Una de mis aficiones es la economía. Me encanta seguir los mercados, las noticias, las inversiones y todas estas cosas.

El Lunes fue uno de esos días emocionantes en las bolsas. Las empresas financieras americanas Freddie Mac y Fannie Mae se habían desplomado en la bolsa en la pasada sesión y el gobierno de los Estados Unidos había acudido a su salvación. El Lunes se esperaba una carrera de compras como no se había vivido en meses (o años). Aún así, no fue un día muy feliz en el London Stock Exchange ya que fueron incapaces de operar durante prácticamente toda la sesión.

En la prensa se comenta que la caida duró unas siete horas, y que muchos traders se vieron forzados a moverse a sistemas de la competencia para intentar operar. Wow, siete horas de inactividad en la bolsa valen miles de millones. Parece ser que todo se debió a un fallo informático dentro de un aplicativo llamado Infolect que es el sistema de envio de datos que utilizan.

En ZDNet tienen un artículo interesante que comenta más detalles sobre este sistema. Y en CIO comentan que es un sistema lanzado hace un par de años (no sé en donde leí que lo habían actualizado este verano) basado en .NET, SQL Server y desplegado en más de 100 servidores Proliant Intel 32 bits.

Parece que hace poco que LSE ha encontrado verdadera competencia en dos exchanges alternativos, Chi-X y Turquoise que se animaron a comentar el fallo y no dudaron en recomendar a todo el mundo migrar a sus redes más modernas y más baratas.

La verdad es que independientemente de si el fallo estaba en el software, en los servidores, en la red, en lo que sea, lo cierto es que este tipo de noticias son esas que leeremos en años en los libros ya que te demuestra como pequeños fallos, o sistemas no preparados para picos de carga enormes pueden generar perdidas millonarias al tiempo que impactan enormemente en la imagen de las compañías y proporcionan jugoas oportunidades a la competencia para captar a tus clientes.

A ver si algun publicación online nos desvela un poco más sobre este fallo.

viernes, enero 19, 2007

Demostración de AJAX para mercados financieros

viernes, enero 19, 2007 por Martín

Se puede leer en el blog de DOJO que sitepen en colaboración con Lightstreamer anunciaron una demo que muestra el uso del framework Ajax DOJO para mercados financieros. Por cierto, lo más interesante es la documentación.

Para los que no lo conozcan, Lightstreamer es uno de los líderes en cuanto a streaming de datos de mercados financieros en tiempo real. El streaming es el corazón de todas las aplicaciones de FX, ya que todo se basa en ofrecer información del mercado en tiempo real. En mercados con tanta volatibilidad, un segundo puede significar miles de euros, por eso uno tiene que olvidarse del modelo tradicional de petición y respuesta, y pasar a un modelo push como el de este producto, o del nuestro ;-)

Ya hablé de Comet/Push/loquesea hace tiempo. Y ya en aquel momento insinué que no era tan bonito, ni nuevo como parece. Nosotros hacemos esto desde hace años, pero en lugar de recibir los datos en un navegador, los recibimos en un Applet. No hay demasiada diferencia en eso. Resumiendo mi post anterior, el problema del streaming es que asocia un socket con un usuario, y si tienes que acomodar a 35.000 usuarios, entonces tienes un problema. La ventaja como productos como Lightstream es que utilizan NIO por debajo, lo que permite multiplexar varios clientes bajo un único socket. Hasta ahí va todo bien, pero después resulta que vas al banco más importante de Europa, y te dirá que naranjas de la china, que a su web se entra primero por la aduana de Apache, que vas a tener dos sesiones de seguridad una en Apache y otra en Tomcat, y otra serie de cosillas que te devuelven al mundo real.

En fin, más sobre este tema cuando las cosas estén más clarillas.