Developing Markets Live for the FT

by Andrew BettsNovember 7th, 2007

When the Financial Times came to us for a new kind of Markets commentary blog, they had in mind something to really break the mould of the daily market report you’ll find on the back of a typical business newspaper. A blog is all well and good, but markets are probably the holy grail of real time data—with 50 trades a second not uncommon during peak periods on the world’s busiest exchanges, markets news moves by the second, not by the day.

FT Alphaville

People building Comet-type projects have long realised this, and the stock price monitor is pretty much the ‘hello world’ of the Comet movement.

What the FT has done really well for 119 years is to make sense of the frenzied market activity and present something more refined: insight and analysis rather than just raw data. The challenge was to present that insight at the speed of the market, not at the speed of a typical newspaper publishing cycle.

The solution we designed is an event-driven blog built on WordPress, where the blog homepage can sit open for a whole day on a trader’s screen and accumulate posts as they are made, plus an hour-long live chat at 11am London time every trading day. This is all powered by Meteor, an open source event-driven webserver designed to distribute real time data to thousands of subscribers efficiently.

The task can be broken down like this:

* Getting new posts into Meteor
* Getting user comments into Meteor
* Getting live chat messages into Meteor
* Providing a 15 second buffer for sanity/legal checking
* Distributing Meteor event messages across a multi-server platform
* Receiving and acting on Meteor messages in JavaScript

We hooked our own plugin into WordPress to notify the Meteor servers when a new post was made, and user comments are simply submitted via Ajax to a handler script that pops them into Meteor after a quick trip through the excellent comment/trackback spam-blocker Akismet. Live chat required the development of a simple chat client, but actually submitting messages is again an Ajax request (we trust the journos enough not to send their messages through Akismet).

When the live chat messages are sent to Meteor, they are added on two channels: one for participants and another for subscribers. The participants’ channel receives the message immediately and the subscribers’ channel receives it after a 15 second delay. This is to allow chat participants to block each other’s messages if they are libelous, technically incorrect or mistyped. Block actions are sent to the server in another Ajax call and distributed in another Meteor message so that all participants can see straight away when a message is blocked.

The next issue is running Meteor on a multiple-server environment. Incoming messages will land on one server, and subscribers or other participants may be connected to a different server. Currently Meteor does not support syncing multiple instances, so we wrote an abstraction layer that would ensure messages were copied to each server.

Each page of the blog includes the Meteor JavaScript client. Blog index and category pages subscribe to post channels, the blog article pages subscribe to comment channels (each post has its own comment channel), and the Markets Live chat subscribes to either the subscriber or participant channel, depending on who’s logged in.

FT Alphaville

See it for yourself at ftalphaville.ft.com. And if you can drop in at 11am London time (3am San Francisco, 6am New York, 12pm Berlin, 7pm Tokyo, 8pm Sydney) you can catch Markets Live—just make sure you’ve got your tin hat on

2 Responses to “Developing Markets Live for the FT”

  1. Comet Daily » Blog Archive » Canonical Comet Apps Says:

    [...] Financial Times’ Developing Markets Live is “an event-driven blog built on WordPress, where the blog homepage can sit open for a whole [...]

  2. Comet Daily » Blog Archive » Comet Gazing: Maturity Says:

    [...] Nodes exist independently, supports broadcasting for message distribution. Cluster of three Meteor nodes runs FT Alphaville. [...]


Copyright 2015 Comet Daily, LLC. All Rights Reserved