A few modules I know
* MM (mkt datafeed reader)
* OMS (or order book, or EMS, including exchange gateways and smart order routers.
* PP (pretrade pricer)
* BB (trade booking engine, when an execution comes back successful. BB is the main module affecting the position master DB)
* PNL (real time pnl engine),
* RR (real time risk engine)
I guess BB, PP or PNL might be absorbed into the OMS module. In some places, OMS might be the name for any real time component of the entire system, so MM, PP, BB, PNL, RR (all real time) can all be considered part of OMS in that sense. There’s a narrower definition of OMS though, so I will just refer to that definition as the EMS (execution management system). For a micro hedge fund,
PP EMS RR may not exist, and the rest (MM BB PNL) can be manual. In contrast algo shops must automate all steps.
Where does MOM fit in? It’s an enabling technology, usable in many of the functional modules above.
How does dynamic data fabric fit in? Also known as data grid or in-memory DB. There are 2 types
* generic technology, often integrating SQL, MOM technologies
* functional module with complex business logic, such as CEP engines, often tightly integrated with MM OMS PP RR
These two descriptions are not mutually exclusive. Many data grid systems include features of both. However, for simplicity, in this write-up I treat data grid as the generic technology just like a DB or MOM.
How do reference data fit in? I guess it’s just another separate service to interface with database, which in turn provide reference data to other modules when needed?
Ref data tend to be fairly static — update frequency would be once a few hours at most, right? It is essentially a readonly component to the algo engine modules. Readonly means those modules don’t update ref data. It’s one-way dependency. In contrast, MM is also readonly, but more dynamic. MM is the driver in an event-driven algo engine.
I feel ref data read frequency can be high, but update frequency is low. Actually, i feel the occassional update can be a performance issue. Those dependent modules can’t cache ref data if ref data can change mid-day. There are techniques to address this issue. A fast engine must minimize DB and network access, so if ref data is provided on the network, then every read would be costly.
Some moules are simpler, like PNL and BB so no big deal. Pricing lib is used for PP and perhaps RR, which are quantatitively complex. MM EMS are technically challenging.
The “algo” tends to be in the MM PP EMS and RR modules
A High frequency shop also needs to assess market impact. Not sure where it fits in, perhaps the EMS
Where does STP fit in? I feel STP is largely non-realtime.