Open SelwynChan opened 1 year ago
Orders received by an In-Scope Broker may be one of several different ’types’ of orders specifying different behaviours, such as price limitations, conditional logic and targeting a benchmark price, etc. The types of orders offered by InScope Brokers differ widely across organisations. To capture such instructions in a consistent manner, the orderType and orderInst fields are used where orderType categorises the order into one of several types as defined in the orderType enumerations and orderInst is a dictionary look-up value which maps the name of an order type or instruction (e.g., CD order) to its full name and/or detailed description as per the In-Scope Broker’s Reference Data Dictionary. 12
9 The pipe character is defined as “ASCII decimal 124, hex 7C” 10 This field is not a direct equivalent to the order capacity tag in FIX protocol, In-Scope Brokers might be required to derive the orderCapacity as defined by the DS-OL using multiple internal values in their trading system 11 For multi-leg orders or strategies, only those order legs of In-Scope Products are needed in the DS-OL format. 12 The equal sign is defined as “ASCII decimal 61, hex 3D” 13 case an order is part of multiple collections (i.e. an order may appear in multiple groupings), the In-Scope Broker should use ’|’ as delimiter to concatenate them, e.g., ’basket=BSK123|tmc=TMC_HSI/123’. 3.1.1.5 Aggregated Orders
Here is a set of test scenarios or test cases to comprehensively test the workflow for enriching the dataset with data found in the PWM OMS:
Single order with no aggregation
Single order with single allocation
Single order with multiple allocations
Aggregated order with no allocations
Aggregated order with allocations
Order cancellation
Order amendment
Partial execution and allocation
Multiple order types
Multiple asset classes
Error handling
Performance and scalability
Based on the additional information provided, here are more comprehensive test scenarios:
Different order types and instructions
Multi-day orders
Trading capacity of agency and principal orders
Order capacity change
Basket orders, multi-leg orders, and strategies
Multiple collections
Aggregated orders
Aggregated orders with multiple allocations
Remember to consider various combinations of these scenarios to ensure comprehensive testing of the overall workflow.
An investment bank has a regulatory requirement to provide cash equity order lifecycle to the regulator in a specific format. The PWM division of the bank has salespeople who receive orders from their clients and enter them into the PWM OMS. The order is then routed to the trading OMS where the trader in the global markets division sees the order, splits it to market and executes. Executions / fills are populated by the trader in the trading OMS which route the events back to the PWM OMS.
The regulator requires order lifecycle event data and associated reference data (about clients, accounts, users mentioned in the event data) to be provided in CSV files. As the PWM client, account and salespeople are not routed from the PWM OMS to the trading OMS, the global markets division cannot populate these fields when generating the regulatory dataset for orders they received from PWM.
In the regulatory format, each order has a logicalOrderID. Each event has a logicalOrderID field that is used to link all events into an overall order.
To resolve this, global markets will generate a dataset compliant with the regulatory data format but the below data will be missing:
Let me expand on #4. The regulator requires that aggregated orders be reported in a specific way. An aggregated order, say for 1000 shares can be an aggregated order of multiple constituent orders. The constituent orders might be 400 shares for account 123 and then 600 shares for account 456 in this example. The regulator requires that the constituent orders are represented as completely separate orders with their own logicalOrderIDs. In this example, the logicalOrderIDs for each constituent order might be ALLOC1 and ALLOC2The aggregated order should have accountID = na and clientID = na but there's another field aggregatedOrders that links the aggregated order to the constituent orders (e.g. aggregatedOrders might be "ALLOC1=400|ALLOC2=600" for this example). Whenever executed quantities are allocated to the accounts, there needs to be an event with eventType 'AALC' belonging to the aggregated order's logicalOrderID which specifies that a quantity has been allocated to a constituent logicalOrderID. As order allocations are not routed to global markets, PWM need to enrich the dataset with these constituent orders and AALC events as well.
To create a compliant data package, PWM need to download the data from a global markets API and enrich it with data found in the PWM OMS.
Based on your general knowledge of different high-touch equity flow orders, generate a full set of test scenarios or test cases for PWM to comprehensively test this workflow. It should include different scenarios in order handling by PWM.