A Complete Guide to Execution Management Systems (EMS)

4 years ago

EMS provides buy side or sell-side functionality required to support a dealing desk, click trading, basket trading, program trading, electronic trading, algorithmic trading, best execution and FIX trading. EMS are typically built to manage electronic trading across multiple venues and deliver algorithms and charting functions to the trader.

What is Execution Management Systems (EMS)?

An EMS is an electronic platform used by individuals and institutional traders for literally every aspect of electronic trading. EMS functions include: trade capture, trade matching, complex order routing, order execution, trade reconciliation, reporting, advanced data access, compliance and order management.

As the complexity of electronic and algorithmic trading increases, EMS must adapt to ensure they are providing the most comprehensive technology on the market. Many traders will be using a combination of several EMS clients, including third-party clients for analysis, research and performance data, to manage, optimize and automate their trades.

So for a trader to be an effective and efficient member of this growing industry, one must be well versed in the different aspects that it encompasses. This especially applies to the execution management system (EMS) that the trading desk is using.

Common Components

Most EMS are built on a common set of components, using services, components or features. It is important to understand the different components as they service important business functions.

Advanced Order Management

EMS is a business application at its core, so you will have worker threads running on the individual threads on the application server. At a minimum, you will have one thread per processor or core. You may also have worker threads running on different COM+ worker threads (or on different worker threads created under the same parent process).

To make sure that you are using your workers efficiently, consider making sure that all CPUs are either being utilized to the maximum capacity or are freed up when they are not necessary. Although it is easier to explain this on an application-by-application basis, I will give you an overview of EMS strategies that you can apply to any EMS you use, regardless of vendor, in order to ensure optimal performance.

By tuning the environments, you can determine if multiprocessing is being used efficiently by only enabling the number of instances of EMS that you will actually need. EMS vendors differ in how you configure the worker threads. Look to your EMS user manual or contact your vendor to determine if IDL, DCOM or sockets are used for communicating with the EMS.

Charting

If your EMS is built with a 3-D charting capability, it’s optimal to reduce the number of 3-D spikes in the charts, which will reduce the memory and network traffic resources. Try to configure EMS to work with flat charts when you are updating your market data (data feed).

Because EMS charts are CPU-intensive, it’s best to reduce the number of “connections” to the charting feature while updates are being sent to EMS. This will reduce your charting CPU demands. Try to work with flat charts to reduce CPU utilization either at all times or during market data updates. Also look to reduce the amount of data your charts are calling. For example, if you have an EMS performance chart that is pulling only 1 data point and not looking at the value of each individual quote, try to change the code to look at less values.

It’s very im-portant to understand if the component you are using is actually needed; if you are using a component that is not being used, you may be taking up valuable resources that could be better utilized elsewhere. Remember, be smart when working with charts. Frequently asked questions such as, “What is the best price feed for my charting?” should be answered upon the definition of “best”.

For example, “best” may mean less data or fewer ticks. Best means less data to download and less ticks through your processing servers. If you are analyzing large tick spreads, then your definition of “best” may be 180-tick spreads instead of the current 1,800-tick spreads; you should find out what is optimal for you. If your EMS is built with a 3-D charting capability, it’s optimal to reduce the number of 3-D spikes in the charts, which will reduce the memory and network traffic resources. Try to configure EMS to work with flat charts when you are updating your market data (data feed).

Because EMS charts are CPU-intensive, it’s best to reduce the number of “connections” to the charting feature while updates are being sent to EMS. This will reduce your charting CPU demands. Try to work with flat charts to reduce CPU utilization either at all times or during market data updates. Also look to reduce the amount of data your charts are calling. For example, if you have an EMS performance chart that is pulling only 1 data point and not looking at the value of each individual quote, try to change the code to look at less values.

EMS is a business application at its core, so you will have worker threads running on the individual threads on the application server. At a minimum, you will have one thread per processor or core. You may also have worker threads running on different COM+ worker threads (or on different worker threads created under the same parent process).

To make sure that you are using your workers efficiently, consider making sure that all CPUs are either being utilized to the maximum capacity or are freed up when they are not necessary. Although it is easier to explain this on an application-by-application basis, I will give you an overview of EMS strategies that you can apply to any EMS you use, regardless of vendor, in order to ensure optimal performance.

By tuning the environments, you can determine if multiprocessing is being used efficiently by only enabling the number of instances of EMS that you will actually need. EMS vendors differ in how you configure the worker threads. Look to your EMS user manual or contact your vendor to determine if IDL, DCOM or sockets are used for communicating with the EMS. By tuning the environments, you can determine if multiprocessing is being used efficiently by only enabling the number of instances of EMS that you will actually need. EMS vendors differ in how you configure the worker threads. Look to your EMS user manual or contact your vendor to determine if IDL, DCOM or sockets are used for communicating with the EMS.

Common Components

Most EMS are built on a common set of components, using services, components or features. It is important to understand the different components as they service important business functions. EMS is an application at its core, so you will have worker threads running on the individual threads on the application server. At a minimum, you will have one thread per processor or core. The tips contained below will help you reduce CPU utilization, memory consumption and network traffic utilization.

Of course, you will need to consider your individual environment. For example, a thread in the middle of processing an order will be working with a lower priority than another thread that is updating market information.

Management

The management component controls or reports on the status of the EMS from the EMS user interface. For example, if a user adds a new services provider, the EMS will ping the EMS server (if the EMS is built on a flat architecture) to see if each EMS server can accept the connection. If not, it will reject the connection. If the EMS is built on a 3D architecture, it will accept the connection to the EMS server that is currently processing the connection and start creating the 2D connection.

The last piece of the puzzle is storage. Once information is stored on your EMS servers, you will need to decide how the data is being stored. To make sure your investment in EMS is worth it, be sure to understand if the data is being stored in an efficient manner, while you are still in the planning stages of your EMS implementation.

If you have an EMS with large volumes of historical data, be sure to consider how your EMS is storing this data and developing strategies to eliminate residual data. Tools such as a warehouse management system (WMS) or an extraction, transformation and loading (ETL) product may be used to clean out old data. WMS and ETL tools can be used to capture and transfer data from your EMS to a staging area. The staging area is typically a file-based server, but it could also be an Oracle or other type of database. Once the data is in your staging area, you can use the ETL tools to clean out old, stale or meaningless data.

Performance

EMS performance typically consists of the following components and features:

  • Charting
  • Sentiment analysis
  • Spread analysis
  • New York Stock Exchange (NYSE) feeds
  • Trade execution
  • Reporting
  • Cross-checking
  • Reviewing trade tickets
  • Technologies

Technologies, such as COM+ and DCOM, are used to provide your EMS with the ability to keep data synchronized across the EMS instances. Most EMS will be built using COM+. EMS uses DCOM when there is a flat architecture (a specific EMS server is servicing each EMS server) and a point-to-point communication between EMS and EMS server is required. DCOM is more commonly used when there is not a flat architecture. If your EMS vendor does not have a COM+ and DCOM implementation, another method to use is called an IDL. IDL is essentially BORG or CORBA. IDL is a specification that many EMS vendors should use in conjunction with a COM implementation.

Another method EMS uses to achieve a sort of flat architecture COM+ implementation is to use sockets for communication. EMS will choose the best method as needed depending on the state of the EMS and the EMS server.

Consequences of Over-Tuning

The EMS will typically be configured using four configuration variables that can be configured:

  • number of threads per process
  • number of threads per COM+ worker thread
  • number of threads per CPU
  • number of COM+ worker threads

The default setting for the number of threads will vary from vendor to vendor, but will of course be affected by how it is being installed on the server.. For best performance, you should optimize these values after doing a thorough analysis of the EMS performance.

It is typical to start by analyzing the EMS performance using the only the default values. Once you have the results of the EMS performance using the default values, you can install EMS and analyze the EMS performance to determine the optimal number of COM+ worker threads. After the optimal number of COM+ worker threads is determined, you should forward this configuration value (through EMS or configuration files) to your EMS vendor, so they may include it on the EMS configuration screens.

It is common for an EMS to have a flat architecture by default. Then a certain number of components such as sentiment analysis and charting will be created. This way, you can ensure that your EMS is built and configured to support these new components.

Leave a Reply

Your email address will not be published.