naresh's picture

Bullsfirst

Bullsfirst is a sample trading system built to fulfill Archfirst’s goal of demonstrating how current and emerging technologies can be used to solve real world problems. It is a system of medium complexity whose domain is reasonably easy to understand. This post gives a high-level overview of Bullsfirst.

The Vision

Bullsfirst Vision
Bullsfirst will consist of multiple order management systems and a central trading exchange – all implemented using current and emerging technologies, working seamlessly with one another.

Bullsfirst Order Management System (OMS) is an application that is typically owned by a brokerage firm (similar to E*Trade and Fidelity). It is used to accept securities orders from customers. The brokerage firm is an intermediary that places these orders on the Bullsfirst Exchange. The Exchange (similar to NYSE) matches buy and sell orders from all brokers. When a match is made, a trade is executed and confirmations are sent to the buy and sell side firms. Brokerage firm customers use the Bullsfirst Client to access their accounts, enter trades and monitor positions.

The Technologies

Applications within the Bullsfirst system will be built using different technologies, frameworks and architectural concepts to illustrate their pros and cons. The vision diagram above shows a few examples. The OMS will be built in three popular technologies – Java EE, Microsoft .NET and Spring Framework. The exchange will be built using Java EE. The clients will be built in a slew of front-end technologies, however conceptually these can be characterized into three groups:

  1. Browser Based Clients: These clients run inside a browser. They come in two flavors:
    1. HTML Based: These clients rely on HTML and associated technologies such as CSS, JavaScript and AJAX to present information and interact with the user. Traditionally the smartness and logic to render pages has resided mostly on the server. The client simply receives finished HTML and JavaScript to render pages. However with the advent of powerful JavaScript frameworks (such as jQuery and Ext JS) and HTML5 the scene has changed drastically. It is not uncommon to see very rich HTML based applications possessing smartness that rivals thick clients. These clients do their own rendering and user interaction while connecting to back-ends only to access information and perform higher level business functions. Examples of HTML/CSS/JavaScript based front-end frameworks include jQuery, Ext JS, ASP.NET, Google Web Toolkit, JavaServer Faces and Spring Web Flow.
    2. Plugin Based: These clients rely on a plugin that is installed in the browser to provide rich visualizations and user interactions. Plugins were invented primarily to create an experience similar to thick desktop apps but still be available to a wide range of audience without the need of complicated install procedures. Although the functional gap between thin and thick clients is narrowing, vendors will continue to push the limits of front-end functionality by enhancing their plugins. Examples of popular plugins include Flash/Flex and Silverlight.
  2. Thick Clients: These clients are generally aimed at the desktop and laptop environments. They leverage the full power of the underlying hardware and operating system. Thick clients hold substantial state and possess the smartness to render their own pages. Similar to browser-based clients, thick clients can connect to servers to access information. The UI is usually more responsive because of tighter integration with hardware and minimal to no reliance on the server. Examples of some popular thick client frameworks include WPF, Swing, Eclipse RCP, Cocoa and JavaFX (though some of these are now crossing the boundaries and becoming wider reach).
  3. Mobile Clients: The advent of powerful operating systems for the mobile platform has revolutionized how we think about technology. Mobile applications can be browser based or native. The attraction of browser based mobile applications is that one can target them for multiple platforms. However just like in the desktop world there are trade-offs. Native applications, well, feel more native and generally more responsive. The three leading mobile platforms today are iOS (the operating system that runs iPhones and iPads), Android and Windows Phone.

The last important concept to talk about is the common services interface shown in the vision diagram. Regardless of which mechanism clients use to access the OMS, the logical interface and the underlying concepts will remain the same. This will give front-end developers a jump start at building their clients in minimal time, without having to worry about back-end details. A web services based implementation of this interface is already available.

Come Join Us!

The vision for Bullsfirst is very ambitious. I believe that it will give us a common benchmark to operate from. Every time we consider a new technology for our applications, we will ask the question whether it will at least stand the test of this benchmark. Even better, if someone has already implemented a Bullsfirst component using that new technology, we can get a head start in evaluating it for use in our own work. I hope that various implementations of Bullsfirst will spark rich discussions about best practices, architectural concepts and pros and cons of using different technologies. Come join us in this effort. You can start out by simply reviewing our work and providing constructive feedback. If you want to do more, build a component in the technology of your choice and show us how it should be done! Drop us a line with your proposal to join as a contributor.