Wednesday, August 30, 2006

The Bronx Cheers

Random Seinfeld-ish Thought...

Why are Americans suddenly using the signatory line of "Cheers"? People I know who were born and raised in Brooklyn are suddenly signing email message with "Cheers".

The next time you say "Cheers" to me, you had better have a scotch in your hand!

©2006 Marc Adler - All Rights Reserved

New ETrading Blog

Thanks to J'OS for this link:

©2006 Marc Adler - All Rights Reserved

Monday, August 28, 2006

Pair Programming and Market Data?

I was talking about Agile/Scrum with our head of market data systems. He advised me that, with regards to Pair Programming, if you have two sets of eyes looking at a computer at the same time, then the exchanges would consider this grounds for charging double for the market data!

OK, Messrs Fowler, Beck, and Schwaber! What do you have to say about that!

©2006 Marc Adler - All Rights Reserved

Sunday, August 27, 2006

Java vs C#/.NET in Investment Banks

Although there are definite pockets of .NET development in most investment banks on Wall Street, the majority of the development efforts are still in Java, especially on the server side. This is nowhere more apparent than in the investment bank that I am currently working for.

I am becoming more and more impressed with the Open Software that has been developed for the Java community, and the I have been similarly impressed with the sense of comradery that the Java community has. Most of the interesting .NET tools have origins in the Java world (NUnit, Spring, Hibernate, etc).

One of my tasks in my current position is to look at what our company has in terms of client-side frameworks and to come up with a proposal for a company-wide framework. This means looking at the toolkits that various groups are using or currently developing, looking at what I have done in the past, and making some recommendations by taking the best-of-breed of the various efforts. In addition to looking at .NET frameworks, I have been asked to look at some of the Java frameworks. And, I have been impressed by some of the Java efforts.

Some people have even asked me to look at things like Eclipse RCP and the NetBeans RCP. Several of my colleagues have blogged in the past about the viability of Eclpise RCP as a client-side framework. I feel that I need to take a serious look at it.

You all know that I have been a staunch advocate of .NET in the past. However, I am finding it more difficult to beat back the Java supporters. Some of the arguments that I have used against Java in the past (slowness, not as nice a UI, etc) have been colored by my past experiences with AWT, Swing, and JFC. But, Java GUI development has definitely evolved.

I would love to hear from my blog readers as to why I should continue to push .NET over Java.

Some reasons that I can think of for preferring .NET over Java:

1) I feel C# is a stronger language, and will continue to evolve into an even more powerful entity.

2) Closeness of .NET to the O/S, especially when Vista comes out.

3) Support for .NET inside of SQL Server 2005.

4) Possible business reasons are Microsoft non-support of a JVM and the precarious nature of Sun's balance sheet.

5) Better integrations with the standards in desktop tools (Excel, Word, etc)

©2006 Marc Adler - All Rights Reserved

Saturday, August 26, 2006

Before you start subscribing to market data...

... read this.

Several Wall Street companies have gotten big fines when the exchanges have found out that people or "interrogation devices" that were not entitled to use market data were actually using it. Try looking at this document and see if you can figure out what you need to license if you have a single PC with several different WinForms apps, each app capable of letting one user see the NASDAQ data feed. And, what happens if there are multiple users on that PC?

My colleague Craig tells me that the fee structure imposed by the various exchanges is one of the main driving points for my "Common Wall Street Client Stack", with various applets running inside of one desktop shell.

Wonder if NASDAQ will start charging per AppDomain?

©2006 Marc Adler - All Rights Reserved

Friday, August 25, 2006

We have 4 Open Positions

Want to work with me at a large Investment Bank in NY and NJ?

Here are 4 positions that we have open right now:

- CI and Agile Champion who ideally can also act as a test architect
- Java master with focus on messaging
- Middle Office architect
- Algo architect, which we may re-position as a generalist Java pro

The Middle Office architect can probably be .NET or Java based.

These positons are all for full-timers.

If you are interested, or know anyone who is, then email me at
magmasystems AT yahoo dot com.

©2006 Marc Adler - All Rights Reserved

Sunday, August 20, 2006

An Article on Trading

A bit dated (1995), but here is an article on the trading process. Useful for understanding a bit on order matching and execution algorithms.

©2006 Marc Adler - All Rights Reserved

Thursday, August 17, 2006

Comments Added and WMI Blues

I spaced out on approving and publishing the moderated comments (thanks Craig). So now, there are about 30 commnents, dating back from late May.

I was wondering why nobody congratulated me on my new job :-)

Starting to play around with Microsoft's WMI for instrumenting applications. I need to beat up on Microsoft for not letting you author .NET-based WMI providers that allow method invocation and property setters. All you can do with .NET WMI providers are receive events and do property gets. You cannot change a value through a property setting, nor can you manage an application by calling a method on a provider.

Seems that if you want to write a fully-functional WMI provider, then you have to drop down to COM (even using ATL) and C++.

This limitation is severe. This means that I cannot write a .NET app that can be managed by a .NET provider. This means that, if I want to write a monitoring and management dashboard (for monitoring, let's say, a .NET-based trading system), I have to drag out my old COM/ATL books and write unmanaged code. Ugh!

It seems as if plenty of people on the newsgroups share my pain.

©2006 Marc Adler - All Rights Reserved

Friday, August 11, 2006

Silicon on Wall Street (followup)

As a response to my previous posting, my man John weighs in with some words on FPGA's on Wall Street.

As an aside, I notice that there are some good blogs on issues that Wall Street technologists come across every day... John, Chris, DLG, JO'S, and the daddy of them all, Matt. Know of any others?

©2006 Marc Adler - All Rights Reserved

Thursday, August 10, 2006

Exotics Computations on Silicon?

Someone floated an idea that sounded interesting ...

Has anyone heard of writing their calc functions in C, and burning them onto field programmable gate arrays? The calc models would have to be fairly static, but it might be able to give you magnitudes of speed improvements.

I confess that I know very little about this technology, but it bears some investigation.

Hopefully J.O'S can weigh in with something on his blog....

Here is an interesting article.

©2006 Marc Adler - All Rights Reserved

Wednesday, August 09, 2006

Barrier Options

Barrier Options are considered to be exotic derivatives. Exotics usually take a long time to price, and if you are architecting a trading system, you usually want to put a lot of computing power behind the calculations of exotics. Many trading firms look to Compute Grids and data caches to help speed up some of these calculations.

This explanation of Barrier Options has been taken from the Bank of New York website:


SRDF is an EMC product family that provides synchronous or async data replication between LUs (logical disk units) of two SAN (Storage Area Networks).

Here is a story about how data replication saved the day in a trading environment at a Tier-1 bank.

Here is a description of a high-performance trading system that uses SRDF. The brochure contains some good points to consider when designing the infrastructure of a trading system. These kinds of infrastructure components were things that I never had to consider previously when I was concentrating solely on writing good software and managing development teams, but in the architecture group, I have to pay attention to this stuff now.

©2006 Marc Adler - All Rights Reserved

The First Week and Many New Terms

Sitting here relaxing on the couch after the 2nd day of a grueling offsite. Switching the TV between the Yankee game and the MSG network showing old WWWF highlights from Madison Square Garden (yes, I used to be a major WWWF fan when I was a kid). Perfect TV for unwinding.

It's strange being on the other side of the full-time/employee equation. Being part of the Equities Architecture team, you have various vendors trying to get a piece of your ear. There is no better PR than having your product as piece of a major equities trading system. As such, I am wondering why Microsoft never devoted major effort to attacking the trading system space. Microsoft would be a major force if they came out with the infrastructure to do low-latency, high-volume market data distribution, pub/sub messaging, ultra-fast UI grids, the ability to take an Excel model and compile it into a DLL, etc. Microsoft always seems to be on the cusp on doing something in the trading system space, but has never come through with a compelling, end-to-end story. However, new technologies like Windows Compute Cluster and Excel Services seem to be moving the company in the right direction from a technological standpoint. Plus, their recent announcement to invade the healthcare space has shown a new willingness to attack certain verticals. It still is an uphill battle to sell Microsoft within Capital Markets for anything but UI work ... but people are starting to listen!

I always have a page in the back of my notebook where I write down terms that I need to explore more. Being a .NET specialist and an architecture generalist, I am bound to come up against unfamiliararities. Here are terms from the 2-day offsite that I attended:

1) Barrier Knockout
2) Bishop Algorithm
3) Monte Carlo Trials
4) SSH
5) Alpha Partition
6) MPI (a grid network API)
8) SANs and Spindle Optimization with regards to Databases
9) Multicast Storms
10) Java NIO, especially with regards to memory-mapped files

By the way, anyone know of a .NET/C# port of NIO?

©2006 Marc Adler - All Rights Reserved

Wednesday, August 02, 2006

Event Stream Processing

Marco blogs about Event Stream Processing (ESP) at There is also a Wikipedia article about it.

ESP is especially interesting in the financial markets, where you want to perform real-time decision making on a stream of quotes coming from your market data distribution infrastructure. ESP gives you opportunities for things like algorithmic trading and real-time risk management.

Companies in this space include Gemstone (Gemfire), KX (KDB+), Vhayu, Streambase, Aleri. I would like to see Microsoft get into this space with a future version of SQL Server. (Since I have some meetings coming up with some people from Microsoft, I will be sure to ask this question.)

I will definitely be exploring this space in the near future.

©2006 Marc Adler - All Rights Reserved

Tuesday, August 01, 2006


The word conflation sounds like a condition that requires you to take a few spoonfuls of Pepto Bizmol. But, it is a term that is used when discussion efficient market data distribution.

The technique has been around for a while. I have always referred to it as aggregation. The term conflation means the combining of data in messages to form one message. You use conflation of messages to overcome slow consumers, limited message queues, and any situation where a message publisher has to throttle the outgoing stream of messages.

Let's say that you are a consumer of stock quotes. The market data distributor receives 1000 quotes for MSFT in one second, but you are only interested in the latest price every second. So, the market data distributor will conflate all of the MSFT quote messages into a single message that gets broadcast to you every second. This means that the server will only send you the last bid/ask price.

You can choose various parameters for the conflation. For instance, as mentioned above, you might want time-based conflation (every 2 seconds, every 30 seconds, etc), you may want conflation based on the size of your message queue, or you might choose your own custom way of doing conflation.

©2006 Marc Adler - All Rights Reserved