Trading In Real Time With Java


INSTINET CORP., BASED in New York and founded in 1969, is perhaps best known as the leading provider of "after-hours" stock market trading. But the company, a wholly owned subsidiary of London-based Reuters PLC, is actually a leading provider of agency brokerage services worldwide, both during and after regular market hours, for 17 securities exchanges around the world.

This fall, Instinet is slated to go live with one of the largest production Java-based applications, a new Fixed Income Trading System. With a global reach, it will serve thousands of simultaneous customers with real-time brokerage services in the buying and selling of fixed income instruments.

As an agency brokerage, Instinet does not participate in any transaction; it remains neutral, providing brokerage services for the benefit of its customers—both buyers and sellers, institutions and individual investors. Trades are done anonymously through Instinet's global network infrastructure, which connects thousands of traders and portfolio managers to securities exchanges around the world.

In 1997, Instinet decided it wanted to branch out from its core business in stock trading to the global fixed income markets. These markets typically involve the buying and selling of government bonds and similar financial instruments.

The company formed a new division, the Fixed Income Group, and set about determining what kind of information technology (IT) would be required to meet the special needs of the fixed income markets.

Business Challenge
To begin with, the proposed system would have to provide three services: bidding, offering, and trading.

It would also have to take into account special business and technological requirements, including:

  • "Future proof" architecture. Meaning, the system would need to implement an overall IT architecture that would be flexible enough to adapt over time. For instance, it would have to be easy to add or delete new functions and to support new users.

  • One-year time-to-market. Instinet's early research determined that fixed income markets represented a significant opportunity for expansion of its electronic brokerage services, and that it needed to have a system up and running in one year to take advantage of that opportunity.

  • A level playing field for traders. All traders had to have the same access to the same information simultaneously at all Instinet locations around the world.

  • Multi-platform. Traders use a variety of desktop platforms, including UNIX workstations, NT systems, and PCs.
Architectural Solution
Instinet's overall solution was based on three primary architectural considerations.

First, Instinet realized it needed a three-tier or n-tier architecture consisting of a thin client on the desktop, a middle tier of application servers that both physically and logically shared business logic and locations around the world, and a back-end database server. This architecture, Instinet determined, would not only provide system responsiveness but also simplify management, security, and the ability to update.

Second, because Instinet maintains seven sites all over the world, communications would be largely asynchronous, to retain an adequate control on costs and allow for the most efficient use of the network resources.

Finally, any solution needed to be component-based and driven by an object model.

The actual development of the new Fixed Income Trading System began in May 1998. It is currently in beta testing and should go into production this fall, making it the largest real-time trading system to utilize Java.

According to Rachel Moseley, the Fixed Income Group's chief information officer (CIO), the choice of using the Java language and a number of Java-related technologies in building the new Fixed Income Trading System was clear from the start. "I felt that the platform independence was extremely important for our system, since traders have UNIX workstations and PCs, and we wanted them all to have as much flexibility as possible," explains Moseley. "The only thing that would do that was Java."

Beginning at the top, or back-end database tier, Instinet chose Oracle Corp.'s Oracle8 relational database. Specifically, it is using Oracle8 Parallel Server to provide a consistent centralized database of all bid, offer, and trading information. All the back-end logic is written in C++.

In the middle tier, Instinet is using multiple instances of Persistence Software Corp.'s PowerTier application server. All the business and application logic at this tier is written in Java using the Java2 Enterprise Edition (J2EE) technologies, such as Enterprise JavaBeans (EJB).

On the desktop, traders have their choice of systems, which are loaded with a Java application that is installed, managed, and updated from Instinet's application and core servers.

The Java business logic was written using JBuilder, a rapid application development (RAD) tool from Inprise Corp., formerly Borland, of Scotts Valley, CA.

Hardware for both the core Oracle system and application servers are Ultra Enterprise servers from Sun Microsystems Inc., Mountain View, CA, running Solaris, Sun's UNIX operating system.

Communications between the different tiers occur over Instinet's IP-based Extranet using permanent virtual circuits and gateways into the Reuters External Services Network, a secure IP-based backbone.

Middleware plays a key part in making the system work. Instinet is using the TIB/Rendezvous publish/subscribe messaging software from another Reuters subsidiary, Tibco, to provide internal delivery of data between the back-end database servers and the distributed application servers.

The Java Messaging Service (JMS), in the form of Push Technologies Inc.'s Java-based SpiritWAVE messaging software, is used to deliver data from the mid-tier application servers to the traders' desktops.

Another Java-based messaging product, Castanet, from Marimba Inc. of Palo Alto, CA, is used to manage the distributed infrastructure and distribute software to traders' desktops and updates.

Mixing Java and C++
When the project was launched about a year and a half ago, Java wasn't quite ready to handle all the tasks Instinet envisioned its new Fixed Income Trading System would require. As Moseley explains, at that time, Java had a very bad image on Wall Street, primarily because of persistent rumors about performance problems.

As part of its risk-mitigation efforts, Instinet opted to combine Java with C++ to ensure adequate performance. "We limited our risk," said Moseley. "Depending on which version of Java you used, performance was still an issue a year ago."

"Right now, we're experiencing no performance problems with the system," she said. "In fact, we're very pleased with [it]."

Sun, she said, has been working diligently to improve Java performance, and she sees a very bright future for Java on Wall Street and other places.

And, given the continuing improvements Java is making, Moseley said the future for Java looks good. "A year or a year and a half from now, I would probably make a different decision [than combining Java and C++]," she adds.

Enterprise JavaBeans
A key part of the J2EE platform is the EJB component framework. Moseley said the use of EJB has improved the efficiency of the development team at Instinet, enabling this complex trading system to go from the drawing boards to production in about 19 months.

Application Server
Persistence Software's PowerTier application server was chosen primarily because of its EJB implementation as well, said Moseley. "We liked their EJB implementation, and, at the time, there really wasn't any competition."

Moseley said the fact that it supported both C++ and Java, the core languages for the new system, was another critical factor in its decision to go with Persistence's product.

The PowerTier application server also provides caching and synchronization capabilities. Its shared transactional caching capabilities help provide the real-time playing field the system requires, supplying all users concomitant access to the same bid, offer, and trading data.

Common Object Model
The PowerTier server was also instrumental in using a common object model for building the application, a key goal. Because it supports both C++ and Java, the Instinet development team was able to generate the core system logic in C++, while using the PowerTier/EJB version of the server to generate the business logic that resides in the middle tier, both from the same object model.

Oracle Database
The Fixed Income Group opted to use Oracle8 Parallel Server, because together, the Oracle database and Sun UNIX servers offer the best combination for high-performance applications, said Moseley.

"Surprisingly, Oracle is not the standard at Instinet," said Moseley. "The fact is that it's a very solid product, from a very solid company, and it has the performance we needed. Oracle with Sun hardware showed the best benchmarking results."

Using Oracle Parallel Server allows Instinet to operate the database as if it were one single, centralized server, but to have it physically distributed around its network of worldwide sites.

Java Migration
At its production launch, the new Fixed Income Trading System will use a combination of C++ and Java, although Moseley indicates that, over time, the system will migrate more and more toward Java.

"[When] we decided to go with Java, there was nothing like a real-time trading system in Java," said Moseley. "A lot of companies were still experimenting. I felt that Java had come a long way and that a lot of companies based their doubts more on a history that was maybe two or three years old. Java has come a long way since then."


Instinet Corp.

Oracle Corp.

Persistence Software Corp.

Inprise Corp.

Sun Microsystems Inc.

Tibco Software Inc.

Push Technologies Inc.

Marimba Inc.