US20120011046A1 - Order delivery in a securities market - Google Patents

Order delivery in a securities market Download PDF

Info

Publication number
US20120011046A1
US20120011046A1 US13/173,168 US201113173168A US2012011046A1 US 20120011046 A1 US20120011046 A1 US 20120011046A1 US 201113173168 A US201113173168 A US 201113173168A US 2012011046 A1 US2012011046 A1 US 2012011046A1
Authority
US
United States
Prior art keywords
order
delivery
accepted
interest
response message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/173,168
Inventor
Carolyn A. Nalbandian
Daniel F. Moore
Fred Stiening
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nasdaq Inc
Original Assignee
Nasdaq OMX Group Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nasdaq OMX Group Inc filed Critical Nasdaq OMX Group Inc
Priority to US13/173,168 priority Critical patent/US20120011046A1/en
Publication of US20120011046A1 publication Critical patent/US20120011046A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes

Definitions

  • This invention relates to securities transactions.
  • Electronic equity markets collect, aggregate, and display pre-trade information to market participants.
  • the pre-trade information takes the form of a quote that represents a single or an aggregate of same-priced principal or agency orders.
  • Some markets also provide trading platforms through which market participants may trade securities in a marketplace.
  • the invention is a method of processing delivery messages in a security processing architecture.
  • the method includes receiving an expression of interest to enter into a transaction to buy or sell a security, matching the expression of interest with other expressions of interest, sending a message to a market participant that a match exists, recording a delivery in a delivery log file, recording the delivery in a delivery work in process (WIP) file, and receiving a response message from the market participant.
  • WIP delivery work in process
  • the invention is an article.
  • the article includes a machine-readable medium that stores executable instructions for validation within a securities processing system.
  • the instructions cause a machine to receive an expression of interest to enter into a transaction to buy or sell a security, match the expression of interest with other expressions of interest, send a message to a market participant that a match exists, record a delivery in a delivery log file, record the delivery in a delivery work in process (WIP) file, and receive a response message from the market participant.
  • WIP delivery work in process
  • the invention is a securities processing system.
  • the system includes a memory that stores executable instructions for validations.
  • the system executes the instructions to receive an expression of interest to enter into a transaction to buy or sell a security, match the expression of interest with other expressions of interest, send a message to a market participant that a match exists, record a delivery in a delivery log file, record the delivery in a delivery work in process (WIP) file, and receive a response message from the market participant.
  • WIP delivery work in process
  • the securities processing system processes delivers orders efficiently by using files (e.g., trigger file, delivery log file) to track the transactions.
  • the security processing system handles all aspects of a delivered execution including performing validations, timing the delivery, sending and receiving messages, and reporting to trading services.
  • the architecture of the securities processing system includes multiple securities processors in parallel. Each securities processor handles a fraction of the total securities in a market and each securities processor validates orders and quotes for the securities it processes.
  • the distributed functionality of the order deliveries across multiple processors further improves the efficiency of securities processing.
  • FIG. 1 is a functional diagram of a securities processing architecture.
  • FIG. 2 is a flowchart of a process for order entry.
  • FIG. 3 is a flowchart of a process for quote entry.
  • FIG. 4 is a functional diagram of a delivery system.
  • FIG. 5 is a flowchart of a process used by a delivery (receiver) component.
  • FIG. 6 is a flowchart of processing a message within a matching component.
  • FIG. 7 is a flowchart of a process for monitoring a market participant's response time to delivery messages.
  • a securities processing architecture 10 handles the processing of securities transactions including executing orders or processing quote transactions in a market trading environment.
  • Securities processing architecture 10 includes a set of securities processors 12 , a messaging infrastructure interface 14 to a messaging infrastructure 16 , and a gateway 18 to a downstream information bus 20 .
  • Each securities processor 12 interfaces with trading services network 22 , trade reporting 24 , and a common data stream (CDS) journal 26 .
  • Trading services network 24 with market participants.
  • Trading services 24 used in this embodiment is SELECTNET®.
  • Securities are distributed over securities processors 12 so that each processor handles a fraction of the total securities that are traded in the market. For example, one securities processor 12 may handle one or two high-volume transaction securities while another securities processor 12 may handle many low-volume transaction securities.
  • Securities processing architecture 10 is a multi-parallel architecture and thus horizontally scalable for incremental growth.
  • Securities processors 12 receive messages from market participants through messaging infrastructure interface 14 .
  • the messages include order transactions and quote transactions.
  • the messages are allocated to the securities processor that handles the security.
  • Each security processor 12 includes program components that process the messages received. These components include an order entry component 32 , a quote entry component 34 , a matching component 36 , a position generator 38 , an execution reporting component 40 , a delivery component including a delivery (sender) subcomponent 44 a and a delivery (receiver) subcomponent 44 b, and an execution kill component 46 .
  • the security processor 12 can include an odd lot rotation component 42 .
  • Order entry component 32 receives all transactions related to the entry and maintenance of orders. Order entry component 32 handles field level validations, eligibility verifications, assignment of branch sequence numbers, logging of the transaction and passing the transaction to matching component 36 . Orders that fail any of the checks performed by order entry component 32 are rejected.
  • Quote entry component 34 receives all transactions related to the entry and maintenance of quotes. Quote entry component 34 handles field level validations, eligibility verifications, transformation into one or two orders, logging of the transaction and passing the transaction to matching component 36 . Quotes that fail any of the checks performed by quote entry component 34 are rejected.
  • the matching component 36 in the securities processor 12 matches incoming interest against orders and quotes in an automatic execution facility.
  • Matching component 36 is responsible for market situation dependent checks and matching.
  • Matching component 36 receives orders from quote entry component 34 and order entry component 32 and performs checks and validations that require definite and unambiguous knowledge of the current market situation (e.g., marketability check, sanity check, short sale rule, etc.). If the order is valid and executable, the matching process performs the execution according to a specified process; if the order is not valid and executable, the order is added to an order table. Orders that fail a check are rejected.
  • An opening subcomponent (not shown) within matching component 36 provides the special logic and handling required during the pre-open market period and when the market for this security is opened.
  • Position generation component 38 generates the quote display of a traditional montage and receives updates to the inside prices and market participant positions from the matching component, calculates the inside size and market center according to the existing rules and performs the ranking.
  • Execution reporting component 40 publishes execution related information to the downstream systems. Execution reporting component 40 receives executions from matching component 36 (for automatic executions), delivery component 44 (for accepted deliveries), and odd-lot rotation component 42 (for accepted odd-lots) and sends them downstream. Execution reporting component 40 also publishes delivery notifications (from matching component 36 ) and execution kill messages (from execution kill component 46 ).
  • Odd-lot rotation component 42 handles finding and assigning a contra party for the odd lots of mixed lot orders and pure odd lot orders.
  • Execution reporting component 40 receives odd lots from matching component 36 , submits them to the next market maker with sufficient odd lot exposure size and, on acceptance, passes them on for regular post-execution processing.
  • matching component 36 may perform handling of odd lots occurrences by trading of actual shares. This approach aggregates actual shares of round, odd, and/or mixed lots of equally priced orders thereby reducing accounting ramifications. Further, by displaying a rounded down aggregate, rounded to the nearest round lot, a user familiar with round-lot-based systems may not be confused since the aggregate of actual shares is displayed in round lots.
  • Delivery component 44 is responsible for handling delivery of executions through trading services network 24 .
  • Delivery component 44 receives executions from matching component 36 and submits them to trading services network 24 .
  • the execution is passed to reporting component 40 for dissemination.
  • the order is reintroduced into matching component 36 .
  • Execution kill component 46 facilitates the kill of an execution between the two involved contra parties. Execution kill component 46 receives a request to kill an execution from one party. Once this component has received the confirmation to kill that very same execution from the contra party, Execution kill component 46 passes the execution kill to the reporting component 40 for dissemination and to trade reporting interface component 48 to inform trade reporting 24 .
  • Each securities processor 12 includes a trade reporting interface component 48 and a continuous data stream (CDS) extract component 50 .
  • Trade reporting interface component 48 is responsible for transmitting executions and execution kills to trade reporting 24 .
  • Trade reporting interface receives executions via reporting component 40 , converts them into a trade reporting format and passes them to trade reporting.
  • Trade reporting interface also propagates execution kills received from execution kill component 46 to trade reporting to reflect this event.
  • CDS Extract component 50 transforms securities processing architecture 10 quote information (excluding supervisory information) into a CDS feed for dissemination to other systems.
  • CDS Extract component 50 primary output is a CDS Journal file 56 .
  • Interval timer 58 provides a facility for timing events based on a requestors' requirements and to return the information to the requestor upon the expiration of the time period supplied by the requestor.
  • Each securities processor also includes support components, which are used by the other components for special processing (e.g., management of an order table) or serve as interfaces to related systems.
  • the order file builder component 52 is responsible for building the disk based order file that reflects the memory based order table of dynamic order data matching component 36 maintains in memory. This component uses the log file of order changes and applies them to the actual order file. The file is used the next trading day to load the order table for start of the trading day. Also, in the case that the matching component 36 ends abnormally, the memory tables can be reread from the built files.
  • the position file builder component 54 is the position generation's component equivalent of the order file builder. Position file builder component 54 maintains the market participant positions on the position quote file while the position generation component 38 works off its memory based position table.
  • Order entry component 32 of securities processing architecture 10 is the entry point for all transactions related to the entry and maintenance of orders and provides a centralized facility by which all orders entered are evaluated to determine whether these orders pass certain validation criteria.
  • Order validations that are not dependent on the current market situation (e.g., valid security, refresh amount less than or equal to reserve size, etc.) are performed in order entry component 32 .
  • Validations that require inside market conditions e.g., marketability check, short sale rule, etc.
  • matching component 36 e.g., order validations are based upon the categorization of the entering participant. Eligible participants include quoting market participants (QMPs), ECNs, unlisted trading privileges (UTPs), and order entry firms.
  • the validations performed in the order entry component 32 performs three types of checks: eligibility checks, syntax and reference validations, and interdependent conditions.
  • Eligibility checks include determining whether the order transaction is allowed for the market participant at that particular point in time. This is done by a series of flags and values, which include system level, security level and market participant level validations (e.g., does the system allow order entry at this time, is the firm allowed to enter orders, etc.). Syntax validations of fields ensure the syntactical adherence to permitted values and verify the correctness and existence of the values (e.g., valid security, valid market participant, etc.). Interdependent conditions validations are dependent upon the combination of field values (e.g., refresh amount without reserve amount). The interdependent conditions relate to activities that can occur during various time periods of the business day, but the information is primarily static during the day and does not change on every transaction.
  • Orders that pass the validations are prepared for matching component 36 .
  • order transaction i.e., order entry transaction, cancel transaction, cancel/replace transaction, order reinstate
  • Order entry transactions that pass the validations are assigned an order reference number, which is unique throughout securities processing architecture 10 and a branch sequence ID (unless provided by the user), which is unique with a market participant.
  • the branch sequence ID and the order reference number are written to a matching trigger file in anticipation of being processed by matching component 36 .
  • the matching trigger file is a first-in-first out (FIFO) queue that has order transactions from the quote entry component 34 and order entry component 32 as well as from the delivery (receiver) subcomponent 44 a.
  • FIFO first-in-first out
  • supervisory transactions that affect the order table are passed to matching component 36 through the matching trigger file.
  • the supervisory transactions are implemented as modular plug-in components.
  • a market participant may cancel an order that the market participant has entered into the system.
  • the order reference number of the order is used in performing this action.
  • a cancel transaction cancels the entire current or remaining quantity of an order and effectively ‘deletes’ the order.
  • a trigger is written to the matching trigger file for matching component 36 to perform the actual cancel. This is necessary to adhere to the time priority requirement, i.e., an order that is currently being processed by matching component 36 cannot be cancelled while matching is in progress.
  • a market participant may cancel/replace an order that the market participant has entered into the system, i.e., the transaction is not available for an order that was generated from a quote or an order generated as a result of a system generated quote.
  • the order cancel/replace transaction modifies the quantity values (i.e., display, reserve, refresh) of an order.
  • quantity values i.e., display, reserve, refresh
  • the absolute value of the order quantity may be canceled and replaced with a new order quantity.
  • the order quantity may be changed relative to its current quantity, i.e., increased or decreased by a specified amount (e.g., +300 or 800).
  • An order cancel/replace transaction with an absolute quantity change is processed similar to the entry of a new order, a relative quantity change similar to a quote update (see next main section).
  • a market participant may reinstate an order that has been purged by the system or a supervisor.
  • the order reference number of the order is used in performing this action.
  • a reinstate transaction re-opens the entire current or remaining quantity of an order and effectively is like re-entering the order.
  • a trigger is written to the matching trigger file for matching component 36 to perform the actual reinstate. This is necessary to adhere to the time priority requirement since the order will be given a new order reference number and time priority for execution.
  • a programming structure that performs an order entry process 60 is exemplified by the following:
  • Process 60 receives an order transaction from the messaging interface 14 .
  • An input message is converted from its source format to an Internal Standard Message Protocol (ISMP) format, which is a tokenized message format.
  • ISMP Internal Standard Message Protocol
  • Process 60 detokenizes ( 62 ) or disassembles the ISMP message and parses the message into the individual attributes and stores these attributes in a structured order file record layout that is used for subsequent validation and check processing.
  • a transaction code within the message indicates whether the message is an order entry transaction, an cancel transaction, or an cancel/replace transaction.
  • a DetokenizeMessage( ) function detokenizes the ISMP message.
  • Process 60 validates ( 64 ) the eligibility of the message. Eligibility checks include determining whether the transaction is allowed for the market participant at that moment in time through the uses done of a series of flags and values which include system level, security level and market participant level validations (e.g., does the system allow order entry at this time, is the firm allowed to enter orders, etc.). Process 60 checks whether the given transaction is allowed at this point in time from a system perspective and a user perspective by using a ValidateEligibility( ) function shown in the programming structure above. If any validation errors are encountered, a reject response message is generated, and the remaining validations are skipped.
  • Eligibility checks include determining whether the transaction is allowed for the market participant at that moment in time through the uses done of a series of flags and values which include system level, security level and market participant level validations (e.g., does the system allow order entry at this time, is the firm allowed to enter orders, etc.). Process 60 checks whether the given transaction is allowed at this point in time from a system perspective and a
  • Process 60 validates ( 66 ) common attributes by checking the attributes that are included in all three types of order entry transactions. These fields along with the validations performed are listed in table 1. Process 60 uses a ValidateCommonAttributes( ) function to validate the common attributes as shown earlier in the program structure.
  • Process 60 determines ( 68 ) if the order transaction is an order entry transaction, an order/cancel transaction or an order cancel/replace transaction based on the transaction code.
  • process 60 validates ( 70 ) the order entry attributes.
  • Table 2 lists attributes that are validated by the process 60 . The validations are performed against values in reference data files that are both internal to securities processing architecture 10 (i.e., Give-up firms, quoting increments, securities, etc.) and external to securities processing architecture 10 (e.g., alternate clearing numbers in trade reporting 24 ).
  • process 60 will handle omission validations, rejecting transactions where mandatory attribute values that have been omitted, as well as, providing default values for optional attribute values, which also have been omitted. If any validation errors are encountered, a reject response message is generated and the remaining validations are skipped.
  • Process 60 validates ( 70 ) the order entry attributes by using a ValidateOrderEntryAttributes( ) function as shown in the program structure above.
  • Process 60 validates ( 72 ) market conditions. These validations are necessary due to specific conditions during system states such as before hours, system open, emergency market condition (EMC halt) and extended hours.
  • EMC halt emergency market condition
  • a table 3 lists the conditional validations.
  • Process 60 generates ( 74 ) a reference number by returning a 12-byte reference number that is across components and day in the range of 0 to 265 (approximately 11.8 million). This number is generated by concatenating the three character process id of the process producing the number, a two character Base26 representation of the three least significant digits of the year, a two character base26 representation of the Julian day and a five character base26 sequence number. Each process will read the order activity log file using its process id and the encoded date as described above to find the sequence number used in the most recent add transaction. If no order is found, the process will start numbering at sequence number 00000. If an order is found, the process will add 1 to the sequence number and use it as the starting sequence number.
  • Process 60 generates ( 74 ) a reference number using a GenerateOrderReferenceNumber( ) function as shown in the program structure above.
  • Process 60 determines ( 76 ) if a branch sequence number is empty. The order must be assigned a branch sequence number if does not contain the market participant id of the user who entered the order. If the branch sequence number does not exist, process 60 generates ( 78 ) the sequence number using a by returning an 8-byte sequence number that is unique for each market participant for a day. This is accomplished by using the three character process id of the process producing the number followed by the 5 character Base26 sequence number of the order reference number. For orders coming in through a computer-to-computer interface (CTCI), the branch sequence number is a mandatory field and the transaction is rejected. Process 60 generates ( 78 ) by using a GenerateBranchSequenceNumber( ) function.
  • CTCI computer-to-computer interface
  • process 60 validates ( 82 ) the order cancel/reinstate attributes, by performing validations specific to the cancel request. If any of the validations fail, the request is immediately rejected and no further checks are made.
  • the validations are field level checks only because order entry component 32 does not have access to the memory based Order Table of matching component 36 and thus cannot validate against the order to be canceled. After the validations have passed successfully, a cancel trigger is written to the matching trigger file. Matching component 36 then processes the trigger record and determines whether the order can be canceled or not.
  • Process 60 validates ( 82 ) the order cancel/reinstate attributes by using a ValidateOrderCancelReinstateAttributes( ) function.
  • process 60 validates ( 84 ) the cancel/replace attributes by performing validations specific to the cancel/replace request. If any of the validations fail, the request is immediately rejected and no further checks are made.
  • the validations are field level checks only because order entry component 32 does not have access to the memory base in the order table in matching component 36 and thus, cannot validate against the order to be replaced.
  • Process 60 uses a ValidateCancelReplaceAttributes( ) function validate the cancel/replace attributes.
  • process 60 calls ( 72 ) the GenerateOrderReferenceNumber( ) function to generate a new order reference number for the new order, and a CreateNewOrder( ) function is called to format the order and save it in the order file.
  • a record is written to the matching trigger file, providing the relative record number of the order to be canceled, the relative record number of the replacing order, and an indication that the user wishes to cancel/replace the order (i.e., transaction type is ‘R’ for cancel/replace).
  • Matching component 36 changes the status of the original summary order to cancel and activating the replacement or increment order.
  • Process 60 writes ( 80 ) the transaction to the matching trigger file for processing by the Matching component.
  • Process 60 uses a WriteMatchingTrigger( ) function to write the transaction to the matching trigger file.
  • the following table lists files accessed by order entry component 32 .
  • the type of file access is listed and for key sequenced files the key used is indicated (‘P’ for primary, ‘A 1 ’ for first alternate, ‘A 2 ’ for second alternate, ‘M’ for reading relevant information into memory on startup).
  • Order entry component 32 is notified of intraday changes through the regular messaging to keep the information current. If, contrary to expectations, order entry component 32 shows signs of significant load, the order entry components can run in parallel as long as serialization within a security and user is ensured.
  • Quote entry component 34 is the entry point for all transactions related to the entry and update of quotes and provides a centralized facility by which all quotes entered will be evaluated to determine whether they pass certain validation criteria. Quote validations that are not dependent on the current market situation (e.g., valid security, registered position or dynamic registration, etc.) are performed in quote entry component 34 . Validations that require the use of inside market conditions (e.g., marketability check) and are subject to the serialization of events are performed in matching component 36 . In part, quote validations will be based upon the categorization of the entering participant. Eligible participants include QMPs, ECNs, and UTPs.
  • All quote inputs are routed to quote entry component 34 via the messaging infrastructure.
  • the inputs include quote updates from the terminals, application program interface (API) facsimiles and UTP participants.
  • API application program interface
  • the purpose of the input is to update an individual market participant's quote position in a specific security.
  • the update transactions include an open/close update, which changes the position status to “open” or “close.”
  • the update transactions also include withdraw/restore update, that updates the position state, withdraw or restore the participant's quote.
  • update transactions include a Quote Update, which updates one or more components of the market participant's existing quote.
  • the incoming message is detokenized (disassembled) and validated to ensure it conforms to certain criteria pertaining to quote entry related rules, status of the entering participants and the current market conditions.
  • a quote that fails any of the validations is rejected, and a response is sent to the entering market participant.
  • Quotes that pass the validations are prepared for matching component 36 .
  • different processing is performed depending on the transaction (i.e., entry, open/close, withdraw/restore).
  • An exemplary program structure for quote entry includes the following actions, which shows the main program structure for normal processing within quote entry component 34 and is performed every time an input message is received. To avoid complexity, the program structure does not include branches for error or exception handling.
  • Process 90 detokenizes (disassembles) ( 92 ) the ISMP message before processing can commence.
  • Process 90 parses the message into the individual attributes and stores them in the structured order file record layout that is used for the subsequent validation processing.
  • a transaction code present in the message indicates whether the message is a quote update, open/close or withdraw/restore transaction.
  • Process 90 validates ( 94 ) the quote eligibility by checking whether the given transaction (i.e., quote update, open/close, withdraw/restore) is allowed at this point in time from a system perspective and a user perspective. This is done by a series of flags and values, which include system level, security level and market participant level validations. If any validation errors are encountered, a reject response message is generated and the remaining validations are skipped.
  • Process 90 validates ( 94 ) the quote eligibility by using a ValidateEligibility( ) function as shown in the program structure above for quote.
  • Process 90 validates ( 96 ) the common attributes by checking the attributes that are included in all three transactions. These fields along with the validation performed are listed in table 5.
  • Process 90 uses a ValidateCommonAttributes( ) function to validate ( 96 ) the common attributes as shown in the quote entry programming structure above.
  • Process 90 determines ( 98 ) which transaction type the quote transaction is. If the quote transaction is an open/close quote, process 90 validates ( 100 ) the open close attributes by checking whether the market participant's position can be opened or closed respectively. A valid open quote transaction is when the market participant's position is currently closed or in a prevent open, office outage or partial outage situation. A valid closed quote transaction is when the market participant's position is currently open, and the time is after the market participant's closing time or trading in general is closed. Process 90 determines ( 98 ) which transaction type the quote transaction is by using a ValidateOpenCloseAttributes( ) function.
  • process 90 validates ( 102 ) withdraw/restore attributes by checking whether the market participant can withdraw or restore the position.
  • a valid withdraw quote transaction occurs when the market participant's position is currently not withdrawn or excused withdrawn. If the position is not open, the market participant close time must be greater than the current time or if early close is in affect the early close time is less than or equal to the current time.
  • a valid restore quote transaction occurs when the market participant's position is currently withdrawn.
  • Process 90 validates ( 102 ) withdraw/restore attributes by using a ValidateWithdrawRestoreAttributes( ) function.
  • process 90 validates ( 104 ) the quote update transactions by checking the attributes that are specific to the quote update transaction. These fields along with the validation performed are listed in table 6.
  • Process 90 validates ( 104 ) the quote update transactions by using a ValidateQuoteUpdateAttributes( ) function.
  • process 90 determines ( 108 ) that the market participant has a position in that security. If not, process 90 attempts ( 110 ) a dynamic registration.
  • the dynamic registration allows the generation or activation of the position on the Position File as necessary to support a quote update from a market participant who does not currently have an existing or active quote position in that security.
  • a DynamicRegistration( ) function the market participant ID that was received in the incoming message (then found in the Firm Profile File but not in the Position File) is determined as eligible or ineligible for dynamic registration or not.
  • the transaction is rejected. If this feature is supported for the market participant, a new position is generated on the position file using the information from the quote entry transaction and defaults from the market participants firm profile file.
  • Process 90 writes ( 112 ) a matching trigger using a WriteMatchingTrigger( ) function.
  • the WriteMatchingTrigger( ) function writes the transaction to the matching trigger file for processing by matching component 36 .
  • different structures are used as described in the file definition of the matching trigger file.
  • Quote entry component 34 is notified of intraday changes through the regular messaging to keep the information current. If contrary to expectations and quote entry component 34 shows signs of significant load, the quote entry component can be scaled quite easily through parallel processing so that multiple quote entry components can run in parallel as long as serialization within a security and user is ensured.
  • Quote update transactions are validated and processed.
  • Quote update transactions can be initial quotes to establish a position, complete quote updates or quote tick changes. All transactions are either one-sided or two-sided and come from a market participant. Additionally, penalty processing can result in a system-generated quote. All of the processing described below is performed for each side of a two-sided quote. If one of the sides is marketable then the other side is added to the Order Table first, and the process continues with the side that crosses or locks the market.
  • a number of validations occur when a market participant submits a quote update transaction.
  • One is a two-sided quote validation.
  • Some market participants are required to maintain two-sided quotes unless they are in a bid mode state (determined from the market participant's position file). In a regular state, every quote update results in a two-sided display quote, which also means that the initial quote to establish a position is two-sided.
  • a OMLMPSummary( ) function is called to see if the market participant has attributable orders on the opposite of the market than the incoming order entry or quote update. If there are no attributable orders on the opposite side of the market, the transaction is rejected.
  • the two-sided quote validation is also used to determine whether the quote update is essentially an initial quote to establish a position, a quote update with a price change or simply an update maintaining the size. This is done for both sides of a two-sided quote since a possible result may be to have a new quote on one side of the market and a quote update on the other side. Thus, each side has their own determination to indicate which event is taking place.
  • a system-generated quote validation it is determined if the market participant has sent a quote update in the meantime.
  • the timestamp of the market participant's current display quote can be retrieved. If it is between the times that the quote was brought down for penalty processing and the current time, and the position is active, no further processing occurs because the market participant has already established a new position.
  • relative update validations if the quote update includes relative price or size changes, it is necessary to validate that the resulting price or size, including reserve and refresh size changes, are within the allowable boundaries (e.g., greater than zero, less than maximum size/threshold amount, etc.).
  • the transaction is rejected and no further processing occurs. If it was determined during the above validations that the transaction is quote update with a price change then the old order is retrieved via an OMLGetOrder( ) function using the order reference number of the old quote (this can be obtained from the market participant summary information). Since the new quote replaces the old order it, along with all dependent orders, has to be set to canceled using an OMLModifyOrder( ) function.
  • Quote updates that maintain the size only are prepared just like order increments and decrements and are processed accordingly in an UpdateQuote( ) function.
  • the UpdateQuote( ) function is responsible for reflecting the quote in the Order Table or prepare it for matching. If a quote does not lock or cross the inside, it is updated in the Order Table. Different processing is required for an initial quote and for a quote update that replaces an existing quote. Initial quotes are added to the Order Table by calling an AddOrder( ) function, while ‘true’ updates via an UpdateOrder( ) function and replacing the existing quote in the Order Table.
  • the side that does not lock or cross the market is updated or added.
  • the side that locks or crosses the inside is dealt with subsequently in the Matching( ) function, and any remainder will be added to the Order Table after that.
  • the transaction is a ‘true’ quote update, the existing quote on the side that is marketable must be removed from the Order Table because it will be replaced by any remainder after matching.
  • the processing is handled just as it is for relative size changes on order via the IncrementOrder( ) or DecrementOrder( ) functions.
  • IncrementOrder( ) function The purpose of the IncrementOrder( ) function is to process a delta increase for either a quote update or an order.
  • An increment adds to the total size of an order, the reserve size, and/or the refresh size.
  • the increased size must receive the current timestamp.
  • the increment is stored as a dependent order linked to the original. Thus, the dependent orders are correctly handled during matching when time priority has to be accounted for, but they are also connected so that subsequent updates affect all components of an order.
  • DecrementOrder( ) function The purpose of the DecrementOrder( ) function is to process a delta reduction for either a quote update or an order.
  • a decrement reduces the total size of an order, the reserve size, and/or the refresh size.
  • this order may have multiple linked orders, the latest (i.e., most recently entered) linked orders will first be decremented, and then the decrement continues traversing the linked orders until the delta reduction request is fully satisfied. There can also be changes to reserve size and refresh size.
  • the reserve size and the refresh size of an order that has linked, dependent orders is stored with the original order (because it is one order from the market participant's perspective). Thus, if the reserve or refresh size is modified, the original order is updated directly using the UpdateOrder( ) function.
  • the decrement can affect updates to more than one order; if the decrement size is greater than the size of the most recent dependent order.
  • the DecrementOrder( ) function traverses the list of dependent orders and decrements from the most recently entered down to the original order. Dependent orders that, after the decrement have a quantity of zero, are effectively canceled and consequently removed from the list.
  • the UpdateOrder( ) function also maintains the total quantities on the original order.
  • the matching component 36 passes onto delivery (sender) subcomponent 44 b information as to whether the order will be a delivered order or an automatically executed order based on a trigger type by writing the information to an execution trigger 37 .
  • Execution trigger 37 is a FIFO queue. When auto execution occurs the order is automatically executed without notifying the parties prior to the transaction.
  • the parties include a party with the outstanding order on the books and a party with the incoming order.
  • delivery (sender) subcomponent 44 b notifies the party with the outstanding order of the match by sending an unsolicited message (UM) to that party that an incoming order matches an outstanding order.
  • the party with the outstanding order may accept the delivery, decline the delivery, or partially accept the order.
  • Order entry component 32 writes to matching trigger 35 .
  • Matching component 36 receives matching trigger 35 and determines if the order is marketable. If it is marketable, marketing component 36 writes to execution trigger 37 that the order is a delivery order.
  • Delivery (sender) subcomponent 44 b receives execution trigger 37 , scans the execution trigger 37 for orders marked for delivery, and writes a delivery record to a delivery work-in-process (WIP) file.
  • the delivery record includes a copy of an execution trigger record, a delivery status, a delivery quantity (for tracking partial accepts), and calculates delivery expiration time.
  • Delivery (sender) 44 b sends the unsolicited message to a market participant designated as the delivery recipient for final acceptance. To send the unsolicited message, delivery (sender) 44 b writes a switch ready file 45 containing the unsolicited message and passes it to trading services 22 . Delivery (sender) 44 b also writes the execution to an execution file 53 , which is sent to trade reporting 24 .
  • Delivery (sender) 44 b also initiates a delivery timer (not shown).
  • the delivery timer continuously monitors delivery WIP file 47 .
  • the delivery timer also initiates a delivery time-out process 51 if the delivery has expired because a response was not received by the delivery recipient. In this embodiment, the delivery order times-out if the delivery recipient does not respond in 30 seconds.
  • Time-out process 51 includes updates to the delivery record in delivery WIP file 47 including updating the delivery status to time-out, updating the delivery quantity to zero and updating a time-out timestamp.
  • the time-out processing also includes sending a time-out unsolicited message to the delivery recipient via delivery log file 49 , and writing to the matching trigger 35 to pass the time-out delivery to matching component 36 for further processing.
  • Delivery (sender) 44 records the delivery in a delivery log file 49 .
  • Delivery log file 49 sends the information to downstream bus 20 for dissemination to an ECN processing monitor (not shown) described below.
  • the market participant may accept, decline or partially accept the delivery.
  • Delivery (receiver) 44 a validates the price and quantity and checks the record in delivery WIP file 47 for the time-out status. Delivery (receiver) 44 a also updates the record in WIP file 47 for delivery quantity and delivery status and marks a response timestamp. Delivery (receiver) sends the response to delivery log 49 . Delivery (receiver) 44 b writes matching trigger 35 to pass the results of the delivery to matching component 36 .
  • delivery (receiver) 44 follows a process 200 when handling the response message from the market participant.
  • Process 200 detokenizes ( 202 ) or disassembles the response message.
  • Process 200 determines ( 204 ) if the response is fully accepted, partially accepted, declined or timed-out.
  • process 200 updates ( 206 ) delivery WIP file 47 .
  • Process 200 writes ( 208 ) to execution trigger 37 .
  • Process 200 writes ( 210 ) to matching trigger 35 .
  • process 200 determines ( 212 ) if the delivery is a preference order. If the delivery order is not a preference order, process 200 ( 214 ) rejects the delivery order. Otherwise, process 200 writes ( 210 ) to matching trigger 35 .
  • Matching component 36 follows a process 220 in processing matching trigger in response messages.
  • Process 220 receives ( 222 ) matching trigger 35 that has the delivery outcomes (e.g., accept, decline) and examines both orders for pending cancellations and pending decrements and resolves them.
  • Process 220 also updates the order file.
  • Process 220 determines ( 224 ) if an order is accepted or declined.
  • For accepted deliveries process 220 finalizes ( 226 ) delivery by writing a final execution trigger.
  • process 228 re-opens ( 228 ), for the order entry side, the order for a possible match against other orders on the book.
  • process 220 cancels all market participant's orders at the price level of the declined order and initiates penalty processing if no more attributable orders are available on the delivery recipient side.
  • Process 220 penalizes ( 230 ) the delivery recipient.
  • a market participant response monitoring system 59 monitors whether a market participant, such as an ECN, has responded to the unsolicited message (requesting confirmation to execute an order) within a specified amount of time, e.g., five seconds by using a process 300 .
  • Process 300 receives ( 302 ) the message from the delivery log file 49 .
  • Process 300 places ( 304 ) a first timestamp on the message.
  • Process 300 encrypts ( 306 ) the message and sends ( 308 ) the message to the market participant.
  • Process 300 receives ( 310 ) the response from the market participant.
  • Process 312 validates ( 312 ) that the message has not been tampered with by the market participant.
  • Process 300 decrypts ( 314 ) the message.
  • Process 300 applies ( 316 ) a second time stamp to the message.
  • Process 300 writes ( 318 ) into delivery log file 49 both time stamps for that order.
  • Process 300 analyzes ( 320 ) the number of transactions that exceed the predetermined amount by subtracting the first time stamp from the second time stamp. If the number exceeds a certain value over a specified period of time, process 300 penalizes ( 322 ) the market participant. For example, the market participant can be removed from trading in system 10 . The removal of a market participant can occur manually or automatically.
  • process 60 process 90 , process 200 , process 220 and process 300
  • the processes are not limited to use with the hardware and software of FIGS. 1 and 4 ; the processes may find applicability in any computing or processing environment and with any type of machine that is capable of running a computer program.
  • the processes may be implemented in hardware, software, or a combination of the two.
  • the processes may be implemented in a circuit that includes one or a combination of a processor, a memory, programmable logic and logic gates.
  • the processes may be implemented in computer programs executed on programmable computers/machines that each includes a processor, a storage medium or other article of manufacture that is readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and one or more output devices.
  • Program code may be applied to data entered using an input device to perform the processes and to generate output information.
  • Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system.
  • the programs can be implemented in assembly or machine language.
  • the language may be a compiled or an interpreted language.
  • Each computer program may be stored on a storage medium or device (e.g., CD-ROM, hard disk, or magnetic diskette) that is readable by a general or special purpose programmable computer for configuring and operating the computer when the storage medium or device is read by the computer to perform the processes.
  • the processes may also be implemented as a machine-readable storage medium, configured with a computer program, where upon execution, instructions in the computer program cause the computer to operate in accordance with the processes.

Abstract

A method of processing delivery messages in a security processing architecture includes receiving an expression of interest to enter into a transaction to buy or sell a security, matching the expression of interest with other expressions of interest, sending a message to a market participant that a match exists, recording a delivery in a delivery log file, recording the delivery in a delivery work in process (WIP) file, and receiving a response message from the market participant.

Description

    RELATED APPLICATIONS
  • This application claims the priority of U.S. Provisional Patent Application No. 60/385,988, entitled “Security Processor”, and filed on Jun. 5, 2002.
  • BACKGROUND
  • This invention relates to securities transactions.
  • Electronic equity markets collect, aggregate, and display pre-trade information to market participants. For example, in some markets, the pre-trade information takes the form of a quote that represents a single or an aggregate of same-priced principal or agency orders. Some markets also provide trading platforms through which market participants may trade securities in a marketplace.
  • SUMMARY
  • In one aspect, the invention is a method of processing delivery messages in a security processing architecture. The method includes receiving an expression of interest to enter into a transaction to buy or sell a security, matching the expression of interest with other expressions of interest, sending a message to a market participant that a match exists, recording a delivery in a delivery log file, recording the delivery in a delivery work in process (WIP) file, and receiving a response message from the market participant.
  • In another aspect, the invention is an article. The article includes a machine-readable medium that stores executable instructions for validation within a securities processing system. The instructions cause a machine to receive an expression of interest to enter into a transaction to buy or sell a security, match the expression of interest with other expressions of interest, send a message to a market participant that a match exists, record a delivery in a delivery log file, record the delivery in a delivery work in process (WIP) file, and receive a response message from the market participant.
  • In still another aspect, the invention is a securities processing system. The system includes a memory that stores executable instructions for validations. The system executes the instructions to receive an expression of interest to enter into a transaction to buy or sell a security, match the expression of interest with other expressions of interest, send a message to a market participant that a match exists, record a delivery in a delivery log file, record the delivery in a delivery work in process (WIP) file, and receive a response message from the market participant.
  • Some or all of the aspects of the invention described above may have some or all of the following advantages. The securities processing system processes delivers orders efficiently by using files (e.g., trigger file, delivery log file) to track the transactions. The security processing system handles all aspects of a delivered execution including performing validations, timing the delivery, sending and receiving messages, and reporting to trading services. In addition, the architecture of the securities processing system includes multiple securities processors in parallel. Each securities processor handles a fraction of the total securities in a market and each securities processor validates orders and quotes for the securities it processes. Thus, the distributed functionality of the order deliveries across multiple processors further improves the efficiency of securities processing.
  • DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a functional diagram of a securities processing architecture.
  • FIG. 2 is a flowchart of a process for order entry.
  • FIG. 3 is a flowchart of a process for quote entry.
  • FIG. 4 is a functional diagram of a delivery system.
  • FIG. 5 is a flowchart of a process used by a delivery (receiver) component.
  • FIG. 6 is a flowchart of processing a message within a matching component.
  • FIG. 7 is a flowchart of a process for monitoring a market participant's response time to delivery messages.
  • DESCRIPTION
  • Referring to FIG. 1, a securities processing architecture 10 handles the processing of securities transactions including executing orders or processing quote transactions in a market trading environment. Securities processing architecture 10 includes a set of securities processors 12, a messaging infrastructure interface 14 to a messaging infrastructure 16, and a gateway 18 to a downstream information bus 20. Each securities processor 12 interfaces with trading services network 22, trade reporting 24, and a common data stream (CDS) journal 26. Trading services network 24 with market participants. Trading services 24 used in this embodiment is SELECTNET®.
  • Securities are distributed over securities processors 12 so that each processor handles a fraction of the total securities that are traded in the market. For example, one securities processor 12 may handle one or two high-volume transaction securities while another securities processor 12 may handle many low-volume transaction securities. Securities processing architecture 10 is a multi-parallel architecture and thus horizontally scalable for incremental growth.
  • Securities processors 12 receive messages from market participants through messaging infrastructure interface 14. The messages include order transactions and quote transactions. The messages are allocated to the securities processor that handles the security.
  • Each security processor 12 includes program components that process the messages received. These components include an order entry component 32, a quote entry component 34, a matching component 36, a position generator 38, an execution reporting component 40, a delivery component including a delivery (sender) subcomponent 44 a and a delivery (receiver) subcomponent 44 b, and an execution kill component 46. Optionally the security processor 12 can include an odd lot rotation component 42.
  • Order entry component 32 receives all transactions related to the entry and maintenance of orders. Order entry component 32 handles field level validations, eligibility verifications, assignment of branch sequence numbers, logging of the transaction and passing the transaction to matching component 36. Orders that fail any of the checks performed by order entry component 32 are rejected.
  • Quote entry component 34 receives all transactions related to the entry and maintenance of quotes. Quote entry component 34 handles field level validations, eligibility verifications, transformation into one or two orders, logging of the transaction and passing the transaction to matching component 36. Quotes that fail any of the checks performed by quote entry component 34 are rejected.
  • The matching component 36 in the securities processor 12 matches incoming interest against orders and quotes in an automatic execution facility. Matching component 36 is responsible for market situation dependent checks and matching. Matching component 36 receives orders from quote entry component 34 and order entry component 32 and performs checks and validations that require definite and unambiguous knowledge of the current market situation (e.g., marketability check, sanity check, short sale rule, etc.). If the order is valid and executable, the matching process performs the execution according to a specified process; if the order is not valid and executable, the order is added to an order table. Orders that fail a check are rejected. An opening subcomponent (not shown) within matching component 36 provides the special logic and handling required during the pre-open market period and when the market for this security is opened.
  • The subsequent post-execution components of securities processor 12 are responsible for processing the executions, i.e., the outcome of matching component 36. Position generation component 38 generates the quote display of a traditional montage and receives updates to the inside prices and market participant positions from the matching component, calculates the inside size and market center according to the existing rules and performs the ranking.
  • Execution reporting component 40 publishes execution related information to the downstream systems. Execution reporting component 40 receives executions from matching component 36 (for automatic executions), delivery component 44 (for accepted deliveries), and odd-lot rotation component 42 (for accepted odd-lots) and sends them downstream. Execution reporting component 40 also publishes delivery notifications (from matching component 36) and execution kill messages (from execution kill component 46).
  • Odd-lot rotation component 42 handles finding and assigning a contra party for the odd lots of mixed lot orders and pure odd lot orders. Execution reporting component 40 receives odd lots from matching component 36, submits them to the next market maker with sufficient odd lot exposure size and, on acceptance, passes them on for regular post-execution processing.
  • In other embodiments, matching component 36 may perform handling of odd lots occurrences by trading of actual shares. This approach aggregates actual shares of round, odd, and/or mixed lots of equally priced orders thereby reducing accounting ramifications. Further, by displaying a rounded down aggregate, rounded to the nearest round lot, a user familiar with round-lot-based systems may not be confused since the aggregate of actual shares is displayed in round lots.
  • Delivery component 44 is responsible for handling delivery of executions through trading services network 24. Delivery component 44 receives executions from matching component 36 and submits them to trading services network 24. Upon acceptance, and for the accepted size of a partial acceptance, the execution is passed to reporting component 40 for dissemination. Upon rejection and for the rejected size of a partial acceptance, the order is reintroduced into matching component 36.
  • Execution kill component 46 facilitates the kill of an execution between the two involved contra parties. Execution kill component 46 receives a request to kill an execution from one party. Once this component has received the confirmation to kill that very same execution from the contra party, Execution kill component 46 passes the execution kill to the reporting component 40 for dissemination and to trade reporting interface component 48 to inform trade reporting 24.
  • Each securities processor 12 includes a trade reporting interface component 48 and a continuous data stream (CDS) extract component 50. Trade reporting interface component 48 is responsible for transmitting executions and execution kills to trade reporting 24. Trade reporting interface receives executions via reporting component 40, converts them into a trade reporting format and passes them to trade reporting. Trade reporting interface also propagates execution kills received from execution kill component 46 to trade reporting to reflect this event. CDS Extract component 50 transforms securities processing architecture 10 quote information (excluding supervisory information) into a CDS feed for dissemination to other systems. CDS Extract component 50 primary output is a CDS Journal file 56.
  • Each securities processor includes an interval timer 58. Interval timer 58 provides a facility for timing events based on a requestors' requirements and to return the information to the requestor upon the expiration of the time period supplied by the requestor.
  • Each securities processor also includes support components, which are used by the other components for special processing (e.g., management of an order table) or serve as interfaces to related systems.
  • The order file builder component 52 is responsible for building the disk based order file that reflects the memory based order table of dynamic order data matching component 36 maintains in memory. This component uses the log file of order changes and applies them to the actual order file. The file is used the next trading day to load the order table for start of the trading day. Also, in the case that the matching component 36 ends abnormally, the memory tables can be reread from the built files.
  • The position file builder component 54 is the position generation's component equivalent of the order file builder. Position file builder component 54 maintains the market participant positions on the position quote file while the position generation component 38 works off its memory based position table.
  • Order Entry
  • Order entry component 32 of securities processing architecture 10 is the entry point for all transactions related to the entry and maintenance of orders and provides a centralized facility by which all orders entered are evaluated to determine whether these orders pass certain validation criteria. Order validations that are not dependent on the current market situation (e.g., valid security, refresh amount less than or equal to reserve size, etc.) are performed in order entry component 32. Validations that require inside market conditions (e.g., marketability check, short sale rule, etc.) and are subject to the serialization of events are performed in matching component 36. In part, order validations are based upon the categorization of the entering participant. Eligible participants include quoting market participants (QMPs), ECNs, unlisted trading privileges (UTPs), and order entry firms.
  • The validations performed in the order entry component 32 performs three types of checks: eligibility checks, syntax and reference validations, and interdependent conditions.
  • Eligibility checks include determining whether the order transaction is allowed for the market participant at that particular point in time. This is done by a series of flags and values, which include system level, security level and market participant level validations (e.g., does the system allow order entry at this time, is the firm allowed to enter orders, etc.). Syntax validations of fields ensure the syntactical adherence to permitted values and verify the correctness and existence of the values (e.g., valid security, valid market participant, etc.). Interdependent conditions validations are dependent upon the combination of field values (e.g., refresh amount without reserve amount). The interdependent conditions relate to activities that can occur during various time periods of the business day, but the information is primarily static during the day and does not change on every transaction.
  • An order that fails any of the validations is rejected and a response is sent to the entering market participant. Orders that pass the validations are prepared for matching component 36. As seen below, depending on the order transaction (i.e., order entry transaction, cancel transaction, cancel/replace transaction, order reinstate), different processing is performed.
  • Order entry transactions that pass the validations are assigned an order reference number, which is unique throughout securities processing architecture 10 and a branch sequence ID (unless provided by the user), which is unique with a market participant. The branch sequence ID and the order reference number are written to a matching trigger file in anticipation of being processed by matching component 36.
  • The matching trigger file is a first-in-first out (FIFO) queue that has order transactions from the quote entry component 34 and order entry component 32 as well as from the delivery (receiver) subcomponent 44 a. In addition, supervisory transactions that affect the order table are passed to matching component 36 through the matching trigger file. However, since these supervisory transactions are complete and inclusive, the supervisory transactions are implemented as modular plug-in components.
  • For order cancel transactions, a market participant may cancel an order that the market participant has entered into the system. The order reference number of the order is used in performing this action. A cancel transaction cancels the entire current or remaining quantity of an order and effectively ‘deletes’ the order. After a cancel request has passed the validations, a trigger is written to the matching trigger file for matching component 36 to perform the actual cancel. This is necessary to adhere to the time priority requirement, i.e., an order that is currently being processed by matching component 36 cannot be cancelled while matching is in progress.
  • For order cancel/replace transactions, a market participant may cancel/replace an order that the market participant has entered into the system, i.e., the transaction is not available for an order that was generated from a quote or an order generated as a result of a system generated quote. The order cancel/replace transaction modifies the quantity values (i.e., display, reserve, refresh) of an order. There are two different ways to change the quantity of an order. First, the absolute value of the order quantity may be canceled and replaced with a new order quantity. Second, the order quantity may be changed relative to its current quantity, i.e., increased or decreased by a specified amount (e.g., +300 or 800). An order cancel/replace transaction with an absolute quantity change is processed similar to the entry of a new order, a relative quantity change similar to a quote update (see next main section).
  • For the reinstate order transaction, a market participant may reinstate an order that has been purged by the system or a supervisor. The order reference number of the order is used in performing this action. A reinstate transaction re-opens the entire current or remaining quantity of an order and effectively is like re-entering the order. After a reinstate request has passed validations, a trigger is written to the matching trigger file for matching component 36 to perform the actual reinstate. This is necessary to adhere to the time priority requirement since the order will be given a new order reference number and time priority for execution.
  • A programming structure that performs an order entry process 60 is exemplified by the following:
  • DetokenizeMessage( )
    ValidateEligibility( )
    ValidateCommonAttributes( )
    Case TransactionType
    OrderEntry
    ValidateOrderEntryAttributes( )
    ValidateMarketCondition( )
    GenerateOrderReferenceNumber( )
    If BranchSequenceNumber = ‘‘
    GenerateBranchSequenceNumber( )
    OrderCancel
    ValidateOrderCancelReinstateAttributes( )
    OrderCancelReplace
    ValidateOrderCancelReplaceAttributes( )
    GenerateOrderReferenceNumber( )
    WriteMatchingTrigger( )

    The functions in the programming structure are described below
  • Process 60 receives an order transaction from the messaging interface 14. An input message is converted from its source format to an Internal Standard Message Protocol (ISMP) format, which is a tokenized message format. Process 60 detokenizes (62) or disassembles the ISMP message and parses the message into the individual attributes and stores these attributes in a structured order file record layout that is used for subsequent validation and check processing. A transaction code within the message indicates whether the message is an order entry transaction, an cancel transaction, or an cancel/replace transaction. A DetokenizeMessage( ) function detokenizes the ISMP message.
  • Process 60 validates (64) the eligibility of the message. Eligibility checks include determining whether the transaction is allowed for the market participant at that moment in time through the uses done of a series of flags and values which include system level, security level and market participant level validations (e.g., does the system allow order entry at this time, is the firm allowed to enter orders, etc.). Process 60 checks whether the given transaction is allowed at this point in time from a system perspective and a user perspective by using a ValidateEligibility( ) function shown in the programming structure above. If any validation errors are encountered, a reject response message is generated, and the remaining validations are skipped.
  • Process 60 validates (66) common attributes by checking the attributes that are included in all three types of order entry transactions. These fields along with the validations performed are listed in table 1. Process 60 uses a ValidateCommonAttributes( ) function to validate the common attributes as shown earlier in the program structure.
  • TABLE 1
    Common Validations for Order Entry Component
    Validation
    Field Validation Action Source
    Market Market participant id must Firm Profile
    Participant ID exist File
    Security ID Security must exist Security File
    Security must be UTP enabled
    if market participant is UTP
  • Process 60 determines (68) if the order transaction is an order entry transaction, an order/cancel transaction or an order cancel/replace transaction based on the transaction code.
  • If the transaction is an order entry transaction, process 60 validates (70) the order entry attributes. Table 2 lists attributes that are validated by the process 60. The validations are performed against values in reference data files that are both internal to securities processing architecture 10 (i.e., Give-up firms, quoting increments, securities, etc.) and external to securities processing architecture 10 (e.g., alternate clearing numbers in trade reporting 24). In addition, process 60 will handle omission validations, rejecting transactions where mandatory attribute values that have been omitted, as well as, providing default values for optional attribute values, which also have been omitted. If any validation errors are encountered, a reject response message is generated and the remaining validations are skipped. Process 60 validates (70) the order entry attributes by using a ValidateOrderEntryAttributes( ) function as shown in the program structure above.
  • TABLE 2
    Order Entry Specific Validations
    Validation
    Field Validation Action Source
    Alternate Alternate clearing number must Trade
    Clearing be valid in trade reporting Reporting Risk
    Number Mgmt. File
    Attributable UTP must not enter attributable Firm Profile
    orders
    Required if order is not IOC
    Capacity Market participant class must be Firm Profile,
    eligible for the capacity (‘A’, MP Class
    ‘P’, ‘R’)
    Destination Destination market participant Firm Profile
    Market id must exist and not equal
    Participant ‘SIZE’
    ID Order must be limit order
    Give-Up ID Give-up relation must exist on Firm Profile
    firm profile and not equal
    ‘SIZE’
    Price Price must be in quoting Security File
    increment of security
    Size Size must be less than maximum System Control
    order size File
    Size * price must be less than
    threshold
    Size must be round lot if
    destination market participant
    id is not empty
    Refresh Refresh size must equal or Security File
    Size exceed minimum refresh size
    Refresh size must be round lot
    or round lot multiple
    Reserve Size Reserve size must be round lot Security File,
    or round lot multiple MP Class
    Order must be limit order
    Market participant must be
    eligible for reserve processing
    Short Sale Market participant must be Firm Profile
    eligible for short sale exempt
  • Process 60 validates (72) market conditions. These validations are necessary due to specific conditions during system states such as before hours, system open, emergency market condition (EMC halt) and extended hours. A table 3 lists the conditional validations.
  • TABLE 3
    Market Condition Specific Validations
    Condition/Situation Validation
    Before Hours Session Directed orders are not allowed
    prior to the ‘before hours’
    session.
    Session open until Orders must indicate whether they
    System Close will be eligible for the extended
    hours session.
    EMC Halt ‘Directed’ orders entered during a
    quote or EMC Halt will be rejected.
    Canceling Cancels are only applicable to
    orders based on orders, not quotes.
    Directed Odd lot Directed odd lot orders are not
    Orders allowed.
    Extended Hours If order is open at the end of
    Extended hours, the order shall be
    timed out.
  • Process 60 generates (74) a reference number by returning a 12-byte reference number that is across components and day in the range of 0 to 265 (approximately 11.8 million). This number is generated by concatenating the three character process id of the process producing the number, a two character Base26 representation of the three least significant digits of the year, a two character base26 representation of the Julian day and a five character base26 sequence number. Each process will read the order activity log file using its process id and the encoded date as described above to find the sequence number used in the most recent add transaction. If no order is found, the process will start numbering at sequence number 00000. If an order is found, the process will add 1 to the sequence number and use it as the starting sequence number. This unique number may be used by the firms in future processing to verify the status of an order, for example, to cancel an order, or to cancel/replace an order. Process 60 generates (74) a reference number using a GenerateOrderReferenceNumber( ) function as shown in the program structure above.
  • Process 60 determines (76) if a branch sequence number is empty. The order must be assigned a branch sequence number if does not contain the market participant id of the user who entered the order. If the branch sequence number does not exist, process 60 generates (78) the sequence number using a by returning an 8-byte sequence number that is unique for each market participant for a day. This is accomplished by using the three character process id of the process producing the number followed by the 5 character Base26 sequence number of the order reference number. For orders coming in through a computer-to-computer interface (CTCI), the branch sequence number is a mandatory field and the transaction is rejected. Process 60 generates (78) by using a GenerateBranchSequenceNumber( ) function.
  • If the transaction is an order cancel/reinstate transaction, process 60 validates (82) the order cancel/reinstate attributes, by performing validations specific to the cancel request. If any of the validations fail, the request is immediately rejected and no further checks are made. The validations are field level checks only because order entry component 32 does not have access to the memory based Order Table of matching component 36 and thus cannot validate against the order to be canceled. After the validations have passed successfully, a cancel trigger is written to the matching trigger file. Matching component 36 then processes the trigger record and determines whether the order can be canceled or not. Process 60 validates (82) the order cancel/reinstate attributes by using a ValidateOrderCancelReinstateAttributes( ) function.
  • If the transaction is an order cancel/replace transaction, process 60 validates (84) the cancel/replace attributes by performing validations specific to the cancel/replace request. If any of the validations fail, the request is immediately rejected and no further checks are made. The validations are field level checks only because order entry component 32 does not have access to the memory base in the order table in matching component 36 and thus, cannot validate against the order to be replaced. Process 60 uses a ValidateCancelReplaceAttributes( ) function validate the cancel/replace attributes.
  • If all validations pass, process 60 calls (72) the GenerateOrderReferenceNumber( ) function to generate a new order reference number for the new order, and a CreateNewOrder( ) function is called to format the order and save it in the order file. A record is written to the matching trigger file, providing the relative record number of the order to be canceled, the relative record number of the replacing order, and an indication that the user wishes to cancel/replace the order (i.e., transaction type is ‘R’ for cancel/replace). Matching component 36 changes the status of the original summary order to cancel and activating the replacement or increment order.
  • Process 60 writes (80) the transaction to the matching trigger file for processing by the Matching component. Depending on the incoming transaction type (i.e., order entry, order cancel, order cancel/replace) different structures are used as described in the file definition of the matching trigger file. Process 60 uses a WriteMatchingTrigger( ) function to write the transaction to the matching trigger file.
  • The following table lists files accessed by order entry component 32. The type of file access is listed and for key sequenced files the key used is indicated (‘P’ for primary, ‘A1’ for first alternate, ‘A2’ for second alternate, ‘M’ for reading relevant information into memory on startup).
  • TABLE 4
    File Table for Order Entry Component
    Filename Filetype Create Read Update Delete
    System Control Relative
    Record (M)
    Security Class Key
    Sequenced (M)
    Market Participant Key
    Class Sequenced (M)
    Security Key
    Sequenced (M)
    Firm Profile Key
    Sequenced (M)
    Market Participant Key
    Sequenced
    User File Key
    Sequenced
    Matching Trigger Entry
    Sequenced
    Trade Reporting Risk Key
    Management Sequenced
    Order Activity Log Entry
    Sequenced
  • All frequently used information is loaded into memory from the reference data files on startup of the component. Order entry component 32 is notified of intraday changes through the regular messaging to keep the information current. If, contrary to expectations, order entry component 32 shows signs of significant load, the order entry components can run in parallel as long as serialization within a security and user is ensured.
  • Quote Entry
  • Quote entry component 34 is the entry point for all transactions related to the entry and update of quotes and provides a centralized facility by which all quotes entered will be evaluated to determine whether they pass certain validation criteria. Quote validations that are not dependent on the current market situation (e.g., valid security, registered position or dynamic registration, etc.) are performed in quote entry component 34. Validations that require the use of inside market conditions (e.g., marketability check) and are subject to the serialization of events are performed in matching component 36. In part, quote validations will be based upon the categorization of the entering participant. Eligible participants include QMPs, ECNs, and UTPs.
  • All quote inputs are routed to quote entry component 34 via the messaging infrastructure. The inputs include quote updates from the terminals, application program interface (API) facsimiles and UTP participants. The purpose of the input is to update an individual market participant's quote position in a specific security. The update transactions include an open/close update, which changes the position status to “open” or “close.” The update transactions also include withdraw/restore update, that updates the position state, withdraw or restore the participant's quote. In addition, update transactions include a Quote Update, which updates one or more components of the market participant's existing quote.
  • The incoming message is detokenized (disassembled) and validated to ensure it conforms to certain criteria pertaining to quote entry related rules, status of the entering participants and the current market conditions. A quote that fails any of the validations is rejected, and a response is sent to the entering market participant. Quotes that pass the validations are prepared for matching component 36. Depending on the transaction (i.e., entry, open/close, withdraw/restore), different processing is performed.
  • An exemplary program structure for quote entry includes the following actions, which shows the main program structure for normal processing within quote entry component 34 and is performed every time an input message is received. To avoid complexity, the program structure does not include branches for error or exception handling.
  • DetokenizeMessage( )
    ValidateEligibility( )
    ValidateCommonAttributes( )
    Case TransactionType
    QuoteUpdate
    ValidateQuoteUpdateAttributes( )
    If NoPosition
    DynamicRegistration( )
    CreatePosition( )
    Else
    UpdatePosition( )
    OpenClose
    ValidateOpenCloseAttributes( )
    UpdatePosition( )
    WithdrawRestore
    ValidateWithdrawRestoreAttributes( )
    UpdatePosition( )
     WriteMatchingTrigger( )
  • Referring now to FIG. 3. an exemplary process 90 for quote entry component functions is shown. Quote updates, open/close transactions, and withdraw/restore transactions are received in the tokenized (ISMP) format. Process 90 detokenizes (disassembles) (92) the ISMP message before processing can commence. Process 90 parses the message into the individual attributes and stores them in the structured order file record layout that is used for the subsequent validation processing. A transaction code present in the message indicates whether the message is a quote update, open/close or withdraw/restore transaction.
  • Process 90 validates (94) the quote eligibility by checking whether the given transaction (i.e., quote update, open/close, withdraw/restore) is allowed at this point in time from a system perspective and a user perspective. This is done by a series of flags and values, which include system level, security level and market participant level validations. If any validation errors are encountered, a reject response message is generated and the remaining validations are skipped. Process 90 validates (94) the quote eligibility by using a ValidateEligibility( ) function as shown in the program structure above for quote.
  • Process 90 validates (96) the common attributes by checking the attributes that are included in all three transactions. These fields along with the validation performed are listed in table 5. Process 90 uses a ValidateCommonAttributes( ) function to validate (96) the common attributes as shown in the quote entry programming structure above.
  • TABLE 5
    Common Validations
    Field Validation Action Validation Source
    Market Market participant id must Firm Profile
    Participant ID exist File
    Security ID Security must exist Security File
    Security must be UTP enabled
    if market participant is UTP
  • Process 90 determines (98) which transaction type the quote transaction is. If the quote transaction is an open/close quote, process 90 validates (100) the open close attributes by checking whether the market participant's position can be opened or closed respectively. A valid open quote transaction is when the market participant's position is currently closed or in a prevent open, office outage or partial outage situation. A valid closed quote transaction is when the market participant's position is currently open, and the time is after the market participant's closing time or trading in general is closed. Process 90 determines (98) which transaction type the quote transaction is by using a ValidateOpenCloseAttributes( ) function.
  • If the quote transaction is a withdraw/restore quote transaction, process 90 validates (102) withdraw/restore attributes by checking whether the market participant can withdraw or restore the position. A valid withdraw quote transaction occurs when the market participant's position is currently not withdrawn or excused withdrawn. If the position is not open, the market participant close time must be greater than the current time or if early close is in affect the early close time is less than or equal to the current time. A valid restore quote transaction occurs when the market participant's position is currently withdrawn. Process 90 validates (102) withdraw/restore attributes by using a ValidateWithdrawRestoreAttributes( ) function.
  • If the quote transaction is a quote update transaction, process 90 validates (104) the quote update transactions by checking the attributes that are specific to the quote update transaction. These fields along with the validation performed are listed in table 6. Process 90 validates (104) the quote update transactions by using a ValidateQuoteUpdateAttributes( ) function.
  • TABLE 6
    Quote Update Specific Validations
    Validation
    Field Validation Action Source
    Bid/Ask Price must be in valid format Security File
    Price Rounding occurs if necessary
    For two-sided quotes bid price must
    be less than ask price
    Bid/Ask Size must be in round lots Security File
    Size Delta size requires non-zero price Firm Profile
    For empty size default will be used File
    Size must be less than maximum
    Size of zero (only allowed
    depending on market participant)
    requires price of zero
    Bid/Ask Market participant must be eligible Security File
    Reserve Size must be in round lots; deltas Firm Profile
    Size allowed File
    Size must be less than maximum
    Bid/Ask Market participant must be eligible Security File
    Refresh Size must be in round lots; deltas Firm Profile
    Size allowed File
    Size must be less than maximum and
    less than bid/ask reserve size
  • After the quote update validations are successfully passed, process 90 determines (108) that the market participant has a position in that security. If not, process 90 attempts (110) a dynamic registration.
  • The dynamic registration allows the generation or activation of the position on the Position File as necessary to support a quote update from a market participant who does not currently have an existing or active quote position in that security. In a DynamicRegistration( ) function, the market participant ID that was received in the incoming message (then found in the Firm Profile File but not in the Position File) is determined as eligible or ineligible for dynamic registration or not.
  • If the market participant is not eligible for dynamic registration, the transaction is rejected. If this feature is supported for the market participant, a new position is generated on the position file using the information from the quote entry transaction and defaults from the market participants firm profile file.
  • Process 90 writes (112) a matching trigger using a WriteMatchingTrigger( ) function. The WriteMatchingTrigger( ) function writes the transaction to the matching trigger file for processing by matching component 36. Depending on the incoming transaction type (i.e., quote update, open/close, withdraw/restore), different structures are used as described in the file definition of the matching trigger file.
  • All frequently used information is loaded into memory from the reference data files on startup of the component. Quote entry component 34 is notified of intraday changes through the regular messaging to keep the information current. If contrary to expectations and quote entry component 34 shows signs of significant load, the quote entry component can be scaled quite easily through parallel processing so that multiple quote entry components can run in parallel as long as serialization within a security and user is ensured.
  • Quote Update
  • Within matching component 36, quote update transactions are validated and processed. Quote update transactions can be initial quotes to establish a position, complete quote updates or quote tick changes. All transactions are either one-sided or two-sided and come from a market participant. Additionally, penalty processing can result in a system-generated quote. All of the processing described below is performed for each side of a two-sided quote. If one of the sides is marketable then the other side is added to the Order Table first, and the process continues with the side that crosses or locks the market.
  • A number of validations occur when a market participant submits a quote update transaction. One is a two-sided quote validation. Some market participants are required to maintain two-sided quotes unless they are in a bid mode state (determined from the market participant's position file). In a regular state, every quote update results in a two-sided display quote, which also means that the initial quote to establish a position is two-sided. If the market participant is required to have a two-sided quote, a OMLMPSummary( ) function is called to see if the market participant has attributable orders on the opposite of the market than the incoming order entry or quote update. If there are no attributable orders on the opposite side of the market, the transaction is rejected.
  • The two-sided quote validation is also used to determine whether the quote update is essentially an initial quote to establish a position, a quote update with a price change or simply an update maintaining the size. This is done for both sides of a two-sided quote since a possible result may be to have a new quote on one side of the market and a quote update on the other side. Thus, each side has their own determination to indicate which event is taking place.
  • In a system-generated quote validation, it is determined if the market participant has sent a quote update in the meantime. Using the OMLMPSummary( ) function the timestamp of the market participant's current display quote can be retrieved. If it is between the times that the quote was brought down for penalty processing and the current time, and the position is active, no further processing occurs because the market participant has already established a new position.
  • In relative update validations, if the quote update includes relative price or size changes, it is necessary to validate that the resulting price or size, including reserve and refresh size changes, are within the allowable boundaries (e.g., greater than zero, less than maximum size/threshold amount, etc.).
  • If any one of the above validations fails, the transaction is rejected and no further processing occurs. If it was determined during the above validations that the transaction is quote update with a price change then the old order is retrieved via an OMLGetOrder( ) function using the order reference number of the old quote (this can be obtained from the market participant summary information). Since the new quote replaces the old order it, along with all dependent orders, has to be set to canceled using an OMLModifyOrder( ) function.
  • Quote updates that maintain the size only are prepared just like order increments and decrements and are processed accordingly in an UpdateQuote( ) function. The UpdateQuote( ) function is responsible for reflecting the quote in the Order Table or prepare it for matching. If a quote does not lock or cross the inside, it is updated in the Order Table. Different processing is required for an initial quote and for a quote update that replaces an existing quote. Initial quotes are added to the Order Table by calling an AddOrder( ) function, while ‘true’ updates via an UpdateOrder( ) function and replacing the existing quote in the Order Table.
  • If it is a two-sided quote, the side that does not lock or cross the market is updated or added. The side that locks or crosses the inside is dealt with subsequently in the Matching( ) function, and any remainder will be added to the Order Table after that. If the transaction is a ‘true’ quote update, the existing quote on the side that is marketable must be removed from the Order Table because it will be replaced by any remainder after matching.
  • If the quote update is a relative update, i.e., a size increment or size decrement, then the processing is handled just as it is for relative size changes on order via the IncrementOrder( ) or DecrementOrder( ) functions.
  • The purpose of the IncrementOrder( ) function is to process a delta increase for either a quote update or an order. An increment adds to the total size of an order, the reserve size, and/or the refresh size. However, as the original order must keep its time priority, the increased size must receive the current timestamp. The increment is stored as a dependent order linked to the original. Thus, the dependent orders are correctly handled during matching when time priority has to be accounted for, but they are also connected so that subsequent updates affect all components of an order.
  • There can also be changes to reserve size and refresh size. These are stored on the original order because it is one order from the market participant's perspective. So, the original order is updated directly using the UpdateOrder( ) function to reflect modifications to reserve and refresh size.
  • The purpose of the DecrementOrder( ) function is to process a delta reduction for either a quote update or an order. A decrement reduces the total size of an order, the reserve size, and/or the refresh size. However, as this order may have multiple linked orders, the latest (i.e., most recently entered) linked orders will first be decremented, and then the decrement continues traversing the linked orders until the delta reduction request is fully satisfied. There can also be changes to reserve size and refresh size.
  • The reserve size and the refresh size of an order that has linked, dependent orders is stored with the original order (because it is one order from the market participant's perspective). Thus, if the reserve or refresh size is modified, the original order is updated directly using the UpdateOrder( ) function.
  • The decrement can affect updates to more than one order; if the decrement size is greater than the size of the most recent dependent order. The DecrementOrder( ) function traverses the list of dependent orders and decrements from the most recently entered down to the original order. Dependent orders that, after the decrement have a quantity of zero, are effectively canceled and consequently removed from the list. The UpdateOrder( ) function also maintains the total quantities on the original order.
  • Delivery
  • Referring to FIG. 4, after matching component 36 has matched an order, the matching component 36 passes onto delivery (sender) subcomponent 44 b information as to whether the order will be a delivered order or an automatically executed order based on a trigger type by writing the information to an execution trigger 37. Execution trigger 37 is a FIFO queue. When auto execution occurs the order is automatically executed without notifying the parties prior to the transaction. The parties include a party with the outstanding order on the books and a party with the incoming order. However, when the order is a delivery order, delivery (sender) subcomponent 44 b notifies the party with the outstanding order of the match by sending an unsolicited message (UM) to that party that an incoming order matches an outstanding order. The party with the outstanding order may accept the delivery, decline the delivery, or partially accept the order.
  • The following is a more detailed description of the delivery process. The process, as described below, illustrates an order but the process is also applicable to quotes. Order entry component 32 writes to matching trigger 35. Matching component 36 receives matching trigger 35 and determines if the order is marketable. If it is marketable, marketing component 36 writes to execution trigger 37 that the order is a delivery order.
  • Delivery (sender) subcomponent 44 b receives execution trigger 37, scans the execution trigger 37 for orders marked for delivery, and writes a delivery record to a delivery work-in-process (WIP) file. The delivery record includes a copy of an execution trigger record, a delivery status, a delivery quantity (for tracking partial accepts), and calculates delivery expiration time. Delivery (sender) 44 b sends the unsolicited message to a market participant designated as the delivery recipient for final acceptance. To send the unsolicited message, delivery (sender) 44 b writes a switch ready file 45 containing the unsolicited message and passes it to trading services 22. Delivery (sender) 44 b also writes the execution to an execution file 53, which is sent to trade reporting 24.
  • Delivery (sender) 44 b also initiates a delivery timer (not shown). The delivery timer continuously monitors delivery WIP file 47. The delivery timer also initiates a delivery time-out process 51 if the delivery has expired because a response was not received by the delivery recipient. In this embodiment, the delivery order times-out if the delivery recipient does not respond in 30 seconds. Time-out process 51 includes updates to the delivery record in delivery WIP file 47 including updating the delivery status to time-out, updating the delivery quantity to zero and updating a time-out timestamp. The time-out processing also includes sending a time-out unsolicited message to the delivery recipient via delivery log file 49, and writing to the matching trigger 35 to pass the time-out delivery to matching component 36 for further processing.
  • Delivery (sender) 44 records the delivery in a delivery log file 49. Delivery log file 49 sends the information to downstream bus 20 for dissemination to an ECN processing monitor (not shown) described below.
  • The market participant may accept, decline or partially accept the delivery. When the market participant makes a response it is received by delivery (receiver) 44 a. Delivery (receiver) 44 a validates the price and quantity and checks the record in delivery WIP file 47 for the time-out status. Delivery (receiver) 44 a also updates the record in WIP file 47 for delivery quantity and delivery status and marks a response timestamp. Delivery (receiver) sends the response to delivery log 49. Delivery (receiver) 44 b writes matching trigger 35 to pass the results of the delivery to matching component 36.
  • Referring to FIG. 5, delivery (receiver) 44 follows a process 200 when handling the response message from the market participant. Process 200 detokenizes (202) or disassembles the response message. Process 200 determines (204) if the response is fully accepted, partially accepted, declined or timed-out.
  • If the response message calls for partially accepted or fully accepted delivery order, process 200 updates (206) delivery WIP file 47. Process 200 writes (208) to execution trigger 37. Process 200 writes (210) to matching trigger 35.
  • If the response message calls for declining the order or the order has time-out, process 200 determines (212) if the delivery is a preference order. If the delivery order is not a preference order, process 200 (214) rejects the delivery order. Otherwise, process 200 writes (210) to matching trigger 35.
  • Matching component 36 follows a process 220 in processing matching trigger in response messages. Process 220 receives (222) matching trigger 35 that has the delivery outcomes (e.g., accept, decline) and examines both orders for pending cancellations and pending decrements and resolves them. Process 220 also updates the order file. Process 220 determines (224) if an order is accepted or declined. For accepted deliveries process 220 finalizes (226) delivery by writing a final execution trigger. For declined deliveries, process 228 re-opens (228), for the order entry side, the order for a possible match against other orders on the book. For the delivery recipient side, process 220 cancels all market participant's orders at the price level of the declined order and initiates penalty processing if no more attributable orders are available on the delivery recipient side. Process 220 penalizes (230) the delivery recipient.
  • Market Participant Response Monitoring Process
  • A market participant response monitoring system 59 monitors whether a market participant, such as an ECN, has responded to the unsolicited message (requesting confirmation to execute an order) within a specified amount of time, e.g., five seconds by using a process 300. Process 300 receives (302) the message from the delivery log file 49. Process 300 places (304) a first timestamp on the message. Process 300 encrypts (306) the message and sends (308) the message to the market participant. Process 300 receives (310) the response from the market participant. Process 312 validates (312) that the message has not been tampered with by the market participant. Process 300 decrypts (314) the message. Process 300 applies (316) a second time stamp to the message. Process 300 writes (318) into delivery log file 49 both time stamps for that order. Process 300 analyzes (320) the number of transactions that exceed the predetermined amount by subtracting the first time stamp from the second time stamp. If the number exceeds a certain value over a specified period of time, process 300 penalizes (322) the market participant. For example, the market participant can be removed from trading in system 10. The removal of a market participant can occur manually or automatically.
  • Hardware and Software Embodiments
  • The processes (process 60, process 90, process 200, process 220 and process 300) described above are not limited to use with the hardware and software of FIGS. 1 and 4; the processes may find applicability in any computing or processing environment and with any type of machine that is capable of running a computer program. The processes may be implemented in hardware, software, or a combination of the two. For example, the processes may be implemented in a circuit that includes one or a combination of a processor, a memory, programmable logic and logic gates. The processes may be implemented in computer programs executed on programmable computers/machines that each includes a processor, a storage medium or other article of manufacture that is readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and one or more output devices. Program code may be applied to data entered using an input device to perform the processes and to generate output information.
  • Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. However, the programs can be implemented in assembly or machine language. The language may be a compiled or an interpreted language. Each computer program may be stored on a storage medium or device (e.g., CD-ROM, hard disk, or magnetic diskette) that is readable by a general or special purpose programmable computer for configuring and operating the computer when the storage medium or device is read by the computer to perform the processes. The processes may also be implemented as a machine-readable storage medium, configured with a computer program, where upon execution, instructions in the computer program cause the computer to operate in accordance with the processes.
  • Each process is not limited to the specific embodiments described herein. The processes are not limited to the specific processing order of FIGS. 2, 3, 5, 6 and 7. Rather, the blocks of FIGS. 2, 3, 5, 6 and 7 may be re-ordered, as necessary, to achieve the results set forth above.
  • Other embodiments are also within the scope of the following claims.

Claims (42)

1. A method executed over a network of computer systems for processing delivery messages in an electronic trading venue comprising:
receiving an expression of interest to enter into a transaction to buy or sell a security;
matching the expression of interest with other expressions of interest to provide a match;
prior to executing the match, sending by one or more computers, over a network, to at least one other computer system, a message to a market participant that the match between the expression of interest and another of the expressions of interest exists;
recording by the one or more computers, a delivery of the message in a delivery log file;
recording by the one or more computers, the delivery of the message in a delivery work in process (WIP) file;
receiving by the one or more computers a response message from the market participant the response message indicating whether the order is a partially accepted order, a fully accepted order, or a declined order; and
processing by the one or more computers the match in accordance with the response message.
2. The method of claim 1 wherein the securities processing system is a multi-parallel architecture including a plurality of security processors, each security processor handling a fraction of the securities in a market.
3. The method of claim 1 wherein the expression of interest is a quote.
4. The method of claim 1 wherein the expression of interest is an order.
5. The method of claim 1, wherein processing further comprises:
writing partial executions or fully accepted executions based on the received response message to an execution trigger; and
sending the execution trigger to a delivery sender component.
6. The method of claim 1, further comprising:
performing a time-out when the response message arrives after a predetermined amount of time after the message is sent.
7. The method of claim 1, further comprising:
detokenizing the response message; and
determining whether the response message is a partially accepted execution, a fully accepted execution, a declined execution or has timed-out.
8. The method of claim 1, further comprising for fully accepted and partially accepted executions:
updating the delivery WIP file;
writing an execution trigger; and
writing a matching trigger.
9. The method of claim 1, further comprising for messages that are neither fully accepted or partially accepted executions:
determining if the response is for a declined delivery or has timed-out;
determining if the order is a preference order.
10. The method of claim 9, further comprising:
writing a matching trigger for preference orders.
11. The method of claim 9, further comprising:
rejecting non-preference orders.
12. The method of claim 7, further comprising:
receiving the matching trigger;
determining if the order is accepted or rejected.
13. The method of claim 12, further comprising:
executing accepted orders.
14. The method of claim 9, further comprising:
reopening orders previously purged upon receipt of a reinstate order transaction.
15. An article comprising a machine-readable storage device that stores executable instructions for validation within a securities processing system, the instructions causing a machine to:
receive an expression of interest to enter into a transaction to buy or sell a security;
match the expression of interest with other expressions of interest to provide a match;
prior to executing the match, send a message to a market participant that a the match between the expression of interest with another of the other expressions of interest exists;
record a delivery of the message in a delivery log file;
record the delivery of the message in a delivery work in process (WIP) file;
receive a response message from the market participant the response message indicating whether the order is a partially accepted order, a fully accepted order, or a declined order; and
process by the one or more computers the match in accordance with the response message.
16. The article of claim 15 wherein the securities processing system is a multi-parallel architecture including a plurality of security processors, each security processor handling a fraction of the securities in a market.
17. The article of claim 15 wherein the expression of interest is a quote.
18. The article of claim 15 wherein the expression of interest is an order.
19. The article of claim 15, further comprising instructions causing a machine to:
write partial executions or fully accepted executions based on the received response message to an execution trigger; and
send the execution trigger to a delivery sender component.
20. The article of claim 19, further comprising instructions causing a machine to:
perform a time-out when the response message arrives after a predetermined amount of time after the message is sent.
21. The article of claim 15, further comprising instructions causing a machine to:
detokenize the response message; and
determine whether the response message is a partially accepted execution, a fully accepted execution, a declined execution or has timed-out.
22. The article of claim 15, further comprising for fully accepted and partially accepted executions:
update the delivery WIP file;
write an execution trigger; and
write a matching trigger.
23. The article of claim 15, further comprising instructions causing a machine to:
for messages that are neither fully accepted or partially accepted executions:
determine if the response is for a declined delivery or has timed-out;
determine if the order is a preference order.
24. The article of claim 23, further comprising instructions causing a machine to:
write a matching trigger for preference orders.
25. The article of claim 24, further comprising instructions causing a machine to:
reject non-preference orders.
26. The article of claim 20, further comprising instructions causing a machine to:
receive the matching trigger;
determine if the order is accepted or rejected.
27. The article of claim 25, further comprising instructions causing a machine to:
execute accepted orders.
28. The article of claim 25, further comprising instructions causing a machine to:
reopen orders previously purged upon receipt of a reinstate order transaction.
29. A securities processing system comprising:
a memory that stores executable instructions for validations;
the securities processing system executes the instructions to:
receive an expression of interest to enter into a transaction to buy or sell a security;
match the expression of interest with other expressions of interest to provide a match;
prior to executing the match, send a message to a market participant that a the match between the expression of interest with another of the other expressions of interest exists;
record a delivery of the message in a delivery log file;
record the delivery of the message in a delivery work in process (WIP) file;
receive a response message from the market participant the response message indicating whether the order is a partially accepted order, a fully accepted order, or a declined order; and
process by the one or more computers the match in accordance with the response message.
30. The system of claim 29 wherein the securities processing system is a multi-parallel architecture including a plurality of security processors, each security processor handling a fraction of the securities in a market.
31. The system of claim 29 wherein the expression of interest is a quote.
32. The system of claim 29 wherein the expression of interest is an order.
33. The system of claim 29, further comprising instructions to:
write partial executions or fully accepted executions based on the received response message to an execution trigger; and
send the execution trigger to a delivery sender component.
34. The system of claim 33, further comprising instructions to:
perform a time-out when the response message arrives after a predetermined amount of time after the message is sent.
35. The article of claim 29, further comprising instructions to:
detokenize the response message; and
determine whether the response message is a partially accepted execution, a fully accepted execution, a declined execution or has timed-out.
36. The article of claim 29, further comprising for fully accepted and partially accepted executions instructions to:
update the delivery WIP file;
write an execution trigger; and
write a matching trigger.
37. The system of claim 29, further comprising instructions to:
for messages that are neither fully accepted or partially accepted executions:
determine if the response is for a declined delivery or has timed-out;
determine if the order is a preference order.
38. The system of claim 37, further comprising instructions to:
write a matching trigger for preference orders.
39. The system of claim 38, further comprising instructions to:
reject non-preference orders.
40. The system of claim 34, further comprising instructions to:
receive the matching trigger;
determine if the order is accepted or rejected.
41. The system of claim 39, further comprising instructions to:
execute accepted orders.
42. The article of claim 39, further comprising instructions to:
reopen orders previously purged upon receipt of a reinstate order transaction.
US13/173,168 2002-06-05 2011-06-30 Order delivery in a securities market Abandoned US20120011046A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/173,168 US20120011046A1 (en) 2002-06-05 2011-06-30 Order delivery in a securities market

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US38598802P 2002-06-05 2002-06-05
US10/206,894 US8090640B2 (en) 2002-06-05 2002-07-25 Order delivery in a securities market
US13/173,168 US20120011046A1 (en) 2002-06-05 2011-06-30 Order delivery in a securities market

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/206,894 Continuation US8090640B2 (en) 2002-06-05 2002-07-25 Order delivery in a securities market

Publications (1)

Publication Number Publication Date
US20120011046A1 true US20120011046A1 (en) 2012-01-12

Family

ID=29714799

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/206,894 Active 2028-07-31 US8090640B2 (en) 2002-06-05 2002-07-25 Order delivery in a securities market
US13/173,168 Abandoned US20120011046A1 (en) 2002-06-05 2011-06-30 Order delivery in a securities market

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/206,894 Active 2028-07-31 US8090640B2 (en) 2002-06-05 2002-07-25 Order delivery in a securities market

Country Status (1)

Country Link
US (2) US8090640B2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100318445A1 (en) * 2009-06-11 2010-12-16 Hardison Iii Joseph H Security issuer rights management process (SIRMP) and internet-based network for carrying out the same
US20130060887A1 (en) * 2011-09-02 2013-03-07 Trading Technologies International, Inc. Order feed message stream integrity
WO2016144961A1 (en) * 2015-03-09 2016-09-15 Thomson Reuters Global Resources Systems and methods for obtaining and executing computer code specified by code orders in an electronic trading venue
WO2019029468A1 (en) * 2017-08-10 2019-02-14 华为技术有限公司 Method, apparatus and device for granting network permission to terminal
US10664548B2 (en) 2013-07-12 2020-05-26 Trading Technologies International, Inc. Tailored messaging

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030220867A1 (en) * 2000-08-10 2003-11-27 Goodwin Thomas R. Systems and methods for trading and originating financial products using a computer network
US10896463B2 (en) * 2002-06-11 2021-01-19 Bgc Partners, Inc. Trading system with price improvement
EP1396803A1 (en) * 2002-09-05 2004-03-10 Deutsche Börse Ag System and method for handling a trade between execution and settlement
US20040049430A1 (en) * 2002-09-11 2004-03-11 George Redenbaugh Oder resurrection
US20040215579A1 (en) * 2003-04-24 2004-10-28 George Redenbaugh Supplemental address verification
US20050055304A1 (en) * 2003-09-10 2005-03-10 Lutnick Howard W. Trading application program interface
US20050076230A1 (en) * 2003-10-02 2005-04-07 George Redenbaugh Fraud tracking cookie
US20050108151A1 (en) * 2003-11-17 2005-05-19 Richard York Order review workflow
US20050108178A1 (en) * 2003-11-17 2005-05-19 Richard York Order risk determination
US8738498B2 (en) 2004-01-29 2014-05-27 Bgc Partners, Inc. System and method for routing a trading order
US10304097B2 (en) 2004-01-29 2019-05-28 Bgc Partners, Inc. System and method for controlling the disclosure of a trading order
CA2521478C (en) * 2004-09-28 2017-07-11 Espeed, Inc. Systems and methods for providing neutral price improvement
US7840477B2 (en) 2005-06-07 2010-11-23 Bgc Partners, Inc. System and method for routing a trading order based upon quantity
US8484122B2 (en) 2005-08-04 2013-07-09 Bgc Partners, Inc. System and method for apportioning trading orders based on size of displayed quantities
US8494951B2 (en) 2005-08-05 2013-07-23 Bgc Partners, Inc. Matching of trading orders based on priority
US7979339B2 (en) * 2006-04-04 2011-07-12 Bgc Partners, Inc. System and method for optimizing execution of trading orders
US20080177637A1 (en) 2006-12-30 2008-07-24 David Weiss Customer relationship management methods and systems
US8566219B2 (en) * 2009-03-24 2013-10-22 Trading Technologeis International, Inc. System and method for a risk check
US10565649B1 (en) * 2015-03-18 2020-02-18 Chicago Stock Exchange, Inc. System and method for enhanced electronic networked settlement processor
US10504180B2 (en) * 2016-12-19 2019-12-10 The Bartley J. Madden Foundation Volume attentive trade liquidity builder
US10360629B2 (en) * 2016-12-19 2019-07-23 The Bartley J. Madden Foundation Volume attentive trade liquidity builder
US20180197241A1 (en) * 2017-01-09 2018-07-12 Michael Chapman Systems and methods of sequencing or combining multiple related, but different, transaction requests into a single transaction
CN111311377A (en) * 2020-03-20 2020-06-19 时时同云科技(成都)有限责任公司 Order processing method, device and system

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4412287A (en) * 1975-05-29 1983-10-25 Braddock Iii Walter D Automated stock exchange
US5101353A (en) * 1989-05-31 1992-03-31 Lattice Investments, Inc. Automated system for providing liquidity to securities markets
US5835896A (en) * 1996-03-29 1998-11-10 Onsale, Inc. Method and system for processing and transmitting electronic auction information
US5970479A (en) * 1992-05-29 1999-10-19 Swychco Infrastructure Services Pty. Ltd. Methods and apparatus relating to the formulation and trading of risk management contracts
US20010049650A1 (en) * 2000-03-28 2001-12-06 Moshal David Clive Universal system for conducting exchanges over a network
US20020004776A1 (en) * 2000-07-07 2002-01-10 Gladstone Garry D. Method and system for automated trading of financial instruments
US20020026401A1 (en) * 2000-02-21 2002-02-28 Hueler Kelli Hustad System and method for facilitating electronic bidding between buyers and sellers in financial industries
US20020052824A1 (en) * 2000-04-21 2002-05-02 Sriketan Mahanti Method and apparatus for electronic trading
US6389402B1 (en) * 1995-02-13 2002-05-14 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4942616A (en) * 1985-09-09 1990-07-17 Thomas Linstroth Interactive synthesized speech quotation system for brokers
US5077665A (en) 1989-05-25 1991-12-31 Reuters Limited Distributed matching system
US5297031A (en) 1990-03-06 1994-03-22 Chicago Board Of Trade Method and apparatus for order management by market brokers
JP3071929B2 (en) 1992-02-21 2000-07-31 株式会社東芝 Medical support system and medical support method
US5812988A (en) 1993-12-06 1998-09-22 Investments Analytic, Inc. Method and system for jointly estimating cash flows, simulated returns, risk measures and present values for a plurality of assets
US5774879A (en) 1993-12-27 1998-06-30 First Data Corporation Automated financial instrument processing system
GB9416673D0 (en) 1994-08-17 1994-10-12 Reuters Ltd Data exchange filtering system
US5721777A (en) * 1994-12-29 1998-02-24 Lucent Technologies Inc. Escrow key management system for accessing encrypted data with portable cryptographic modules
US5924081A (en) * 1995-11-14 1999-07-13 Audit Systems Co. Vending machine audit monitoring system with matrix interface
US6505174B1 (en) 1996-03-25 2003-01-07 Hsx, Inc. Computer-implemented securities trading system with a virtual specialist function
US6014643A (en) 1996-06-28 2000-01-11 Minton; Vernon F. Interactive securities trading system
US5827071A (en) 1996-08-26 1998-10-27 Sorensen; Steven Michael Method, computer program product, and system for teaching or reinforcing information without requiring user initiation of a learning sequence
US6317726B1 (en) 1996-12-30 2001-11-13 Netfolio, Inc. Automated strategies for investment management
US20010034686A1 (en) 1997-12-10 2001-10-25 Eder Jeff Scott Method of and system for defining and measuring the real options of a commercial enterprise
US6442533B1 (en) 1997-10-29 2002-08-27 William H. Hinkle Multi-processing financial transaction processing system
US6035287A (en) 1997-12-17 2000-03-07 Omega Consulting, Inc. Method and apparatus for bundled asset trading
US6996539B1 (en) 1998-03-11 2006-02-07 Foliofn, Inc. Method and apparatus for enabling smaller investors or others to create and manage a portfolio of securities or other assets or liabilities on a cost effective basis
US6317728B1 (en) 1998-10-13 2001-11-13 Richard L. Kane Securities and commodities trading system
US7580875B1 (en) * 1999-04-14 2009-08-25 Finn Gregory Mccabe Investment system and method
US20030004859A1 (en) * 1999-05-11 2003-01-02 Shaw John C. Method and system for facilitating secure transactions
WO2001002930A2 (en) 1999-07-01 2001-01-11 Globenet Capital Corporation Method and apparatus for processing securities transactions
US20030093343A1 (en) * 1999-08-31 2003-05-15 Sidley Austin Brown & Wood Llp Dynamic order visibility system for the trading of assets
US7181424B1 (en) 1999-09-23 2007-02-20 The Nasdaq Stock Market, Inc. Montage for automated market system
US7167844B1 (en) 1999-12-22 2007-01-23 Accenture Llp Electronic menu document creator in a virtual financial environment
US7110975B2 (en) 2000-01-27 2006-09-19 Marks De Chabris Gloriana Order matching system
US7246092B1 (en) 2000-05-12 2007-07-17 The Nasdaq Stock Market, Inc. Montage for an electronic market
US8010438B2 (en) * 2000-06-01 2011-08-30 Pipeline Financial Group, Inc. Method for directing and executing certified trading interests
US8924277B2 (en) 2000-08-17 2014-12-30 Nyse Group, Inc. Method and system for automatic execution of a securities transaction
US20020156722A1 (en) * 2001-03-21 2002-10-24 Greenwood Ken M. Automated securities trading system
US7827087B2 (en) 2001-04-24 2010-11-02 Goldman Sachs & Co. Automated securities trade execution system and method
US20030050879A1 (en) * 2001-08-28 2003-03-13 Michael Rosen System and method for improved multiple real-time balancing and straight through processing of security transactions
US7613640B2 (en) 2001-08-29 2009-11-03 Ebs Group Limited Electronic trading system
US8244622B2 (en) 2002-06-05 2012-08-14 The Nasdaq Omx Group, Inc. Order matching process and method
US7523062B2 (en) 2002-06-05 2009-04-21 The Nasdaq Omx Group, Inc. Securities processor and a method of processing attributable interest messages
US20030225674A1 (en) 2002-06-05 2003-12-04 Hughes John T. Order chronicle process and method
US7921051B2 (en) 2002-06-05 2011-04-05 The Nasdaq Omx Group, Inc. Security-based order processing technique
US7933827B2 (en) 2002-06-05 2011-04-26 The Nasdaq Omx Group, Inc. Multi-parallel architecture and a method of using the same
US9311673B2 (en) 2002-06-05 2016-04-12 Nasdaq, Inc. Security transaction matching
US7974907B2 (en) 2002-06-05 2011-07-05 The Nasdaq Omx Group, Inc. Configurable security processor identifier table

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4412287A (en) * 1975-05-29 1983-10-25 Braddock Iii Walter D Automated stock exchange
US5101353A (en) * 1989-05-31 1992-03-31 Lattice Investments, Inc. Automated system for providing liquidity to securities markets
US5970479A (en) * 1992-05-29 1999-10-19 Swychco Infrastructure Services Pty. Ltd. Methods and apparatus relating to the formulation and trading of risk management contracts
US6389402B1 (en) * 1995-02-13 2002-05-14 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5835896A (en) * 1996-03-29 1998-11-10 Onsale, Inc. Method and system for processing and transmitting electronic auction information
US20020026401A1 (en) * 2000-02-21 2002-02-28 Hueler Kelli Hustad System and method for facilitating electronic bidding between buyers and sellers in financial industries
US20010049650A1 (en) * 2000-03-28 2001-12-06 Moshal David Clive Universal system for conducting exchanges over a network
US20020052824A1 (en) * 2000-04-21 2002-05-02 Sriketan Mahanti Method and apparatus for electronic trading
US20020004776A1 (en) * 2000-07-07 2002-01-10 Gladstone Garry D. Method and system for automated trading of financial instruments

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589261B2 (en) 2009-06-11 2013-11-19 Interest Capturing Systems, Llc System for implementing a security issuer rights management process over a distributed communications network deployed in a financial marketplace
US8255296B2 (en) 2009-06-11 2012-08-28 Interest Capturing Systems, Llc System for implementing a security issuer rights management process over a distributed communications network, deployed in a financial marketplace
US20100318445A1 (en) * 2009-06-11 2010-12-16 Hardison Iii Joseph H Security issuer rights management process (SIRMP) and internet-based network for carrying out the same
US10311518B2 (en) 2011-09-02 2019-06-04 Trading Technologies International, Inc. Order feed message stream integrity
US8745157B2 (en) * 2011-09-02 2014-06-03 Trading Technologies International, Inc. Order feed message stream integrity
US9154393B2 (en) 2011-09-02 2015-10-06 Trading Technologies International, Inc. Order feed message stream integrity
US10152751B2 (en) 2011-09-02 2018-12-11 Trading Technologies International, Inc. Order feed message stream integrity
US20130060887A1 (en) * 2011-09-02 2013-03-07 Trading Technologies International, Inc. Order feed message stream integrity
US10664548B2 (en) 2013-07-12 2020-05-26 Trading Technologies International, Inc. Tailored messaging
US11048772B2 (en) 2013-07-12 2021-06-29 Trading Technologies International, Inc. Tailored messaging
US11334641B2 (en) 2013-07-12 2022-05-17 Trading Technologies International, Inc. Tailored messaging
US11687609B2 (en) 2013-07-12 2023-06-27 Trading Technologies International, Inc. Tailored messaging
WO2016144961A1 (en) * 2015-03-09 2016-09-15 Thomson Reuters Global Resources Systems and methods for obtaining and executing computer code specified by code orders in an electronic trading venue
WO2019029468A1 (en) * 2017-08-10 2019-02-14 华为技术有限公司 Method, apparatus and device for granting network permission to terminal

Also Published As

Publication number Publication date
US20030229569A1 (en) 2003-12-11
US8090640B2 (en) 2012-01-03

Similar Documents

Publication Publication Date Title
US8090640B2 (en) Order delivery in a securities market
US7310620B2 (en) Monitoring market participant responses
US11948194B1 (en) Blockchain instrument for transferable equity
US10510114B2 (en) Distributed trading bus architecture
JP5579987B2 (en) Designated quote request method and system
US11411907B2 (en) Systems and methods for consolidating multiple feed data
Guide Release 4.0
US20190080406A1 (en) System and method of providing escrow wallets and closing wallets for transactions
US7895112B2 (en) Order book process and method
Guide Release 3.0
JP5221371B2 (en) Multi-currency implied spread trading
US7318045B2 (en) Event-driven trade link between trading and clearing systems
US20230281717A1 (en) Private currency and trade engine
US20030229570A1 (en) Quote updates in a securities market
US11726963B2 (en) Concurrent write operations for use with multi-threaded file logging
GB2612700A (en) Multiple transfers of blockchain-based tokens
US20060085317A1 (en) Computer-based system and method for executing orders
Cen et al. Improving business process interoperability by shared ledgers
US20030233312A1 (en) Order entry and quote entry in a securities market
WO2001011812A2 (en) Distributed rule enforcement systems
EP3813004A1 (en) Client specific data distribution
US20200226591A1 (en) Blockchain Based Action and Billing
CA2905634A1 (en) Methods, systems and components for integrating purchase and sale of mutual fund units with dealer equity order management systems
Jentzsch Decentralized autonomous organization to manage a trust
JP4589718B2 (en) Financial product providing system and method

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION