Automated securities trading system4674044Abstract Data processing based apparatus makes an automated trading market for one or more securities. The system retrieves the best obtaining bid and asked prices from a remote data base, covering the ensemble of institutions or others making a market for the relevant securities. Data characterizing each securities buy/sell order requested by a customer is supplied to the system. The order is qualified for execution by comparing its specifics against predetermined stored parameters. The stored parameters include the operative bid and asked prices, the amount of stock available for customer purchase or sale, and maximum single order size. Once qualified, the order is executed and the appropriate parameters are updated. The system provides inventory (position) control and profit accounting for the market maker. Finally, the system reports the executed trade details to the customer, and to national stock price reporting systems. Upon a change in the quoted price for a security, the system updates all relevant qualification parameters. Claims What is claimed is: Description BACKGROUND AND SUMMARY OF THE INVENTION
______________________________________
Variable Functional Description
______________________________________
Order Variable
STK An order field identifying a
particular stock a customer
wishes to buy or sell.
N.0.SH Number of shares of stock
STK in a transaction.
CUSTID Customer identification.
B/S Buy vis-a-vis sell bit, iden-
tifying whether the customer
wishes to buy or sell security
STK
PR/M An order variable field con-
taining a customer price for
a limit order (minimum price
for a sale of securities or a
maximum price he will pay for
a purchase) - or a code
designating a market order
where the customer will
accept the currently pre-
vailing market price.
SP Special instructions field
(e.g., special commission
structure or the like.
.0.RN Order number (usually sequen-
tial).
.0.RIGID Identification of the origi-
nator of the transaction
(e.g., a branch office or
account executive).
Market Trade
Criteria
BSTB(STK) Best bid price for the stock
STK as retrieved from NASDAQ,
i.e., the highest price some
market maker is willing to pay
for the stock. This is an
indexed variable, or array,
having one element for each
security handled by the system
proprietor. The other arrays
below are similarly indexed
by STK.
BSTA(STK) Best asked price for the stock
STK supplied by NASDAQ, i.e.,
the lowest price a market
maker is willing to sell the
stock STK.
BSZ(STK) Buy size, which is the number
of shares of each stock (the
array index STK) available for
customer purchase at a partic-
ular price from the system
proprietor
SSZ(STK) The number of shares of each
stock STK that the market
maker will accept from cus-
tomer sales at a particular
price (a sell size array).
.0.RSZ(STK) The maximum acceptable order
size which the system operator
will accept for the stock STK.
Profitability
Variables
AVCST(STK) Average cost of the stock
STK.
P.0.S(STK) The amount of shares
(current position) of each
stock STK held by the market
maker. P.0.S(STK) is positive
for a long position and nega-
tive for a short position.
LP.0. S(STK) The previous (last) position
of the market maker in the
stock STK before execution of
a current trade in STK.
PR(STK) Profit to date made by the
system operator on purchases
or sales of stock STK.
______________________________________
Turning now to the drawing, FIG. 1 illustrates in overview a system arrangement for implementing the over the counter (or other) stock market making system of the instant invention. For specificity and without limitation, over the counter stock trading is presumed and it will further be assumed that the market making institution (system proprietor) is a brokerage firm. The market making system includes composite digital computing apparatus 10 which includes a processor and ancillary memory. The memory constituents of processor 10 store the system controlling program, and an appropriate scratch pad memory stores all necessary processing operands. Digital computer 10 is connected by an output line 12 to a customer account processor 13, for example the brokerage firm computer which handles all of the customer account records and files including customer balances, securities positions, trade records, and the like. It should be understood that CPU 10 and customer account processor 13 could be combined in single, integrated computing equipment. The processor 10 communicates over a link 11 with a trader terminal position 15 containing an output signalling device such as a cathode ray tube display, and data input apparatus such as a keyboard. Trader terminal 15 has two portions. A terminal position section Tl communicates with the processor 10; and a section T2 is connected by link 16 to the National Association of Securities Dealers Automated Quotation (NASDAQ) system 18. The trader terminal 15 communicates its current bid and asked prices for stocks in which it makes a market to NASDAQ via link 16--as do other market makers bridged (17) to link 16. The terminal portions Tl and T2 may be one integrated smart terminal (computer) assembly, or two separate devices available to the trader at the station 15. The processor 10 receives and stores the best (highest) bid (processing variable BSTB(STK)) for each stock (STK) in which it makes a market, and the best (lowest) asked price BSTA(STK) from the NASDAQ system 18 via a communications path 22. The best bid and best asked prices as reported by NASDAQ form the so-called "insider market" for over the counter securities. Processor 10 communicates to the NASDAQ system 18 via a link 23 each reportable, executed trade for various informational and regulatory purposes. Link 23 also reports trades to the Consolidated Tape Authority (CTA) and the NASD National Market System (NMS) for subsequent reporting to the financial industry and general public. Communications path 23 also connects processor 10 with the NASD small order execution system (SOES) and computer assisted execution system (CAES) which can participate in relatively small order execution. Input/output network 25 provides data communication with the various branch offices 27 of the brokerage house. Line 25 permits communication with either the branch order entry clerk or directly to the account executives at each branch. While only one branch 27.sub.1 is shown in FIG. 1, it is to be understood that a multiplicity of branches 27.sub.i are in data communication with processor 10. Computer 10 also communicates with third party financial houses 29.sub.i via a two-way data link 26 (e.g., including INSTINET). To characterize the FIG. 1 arrangement in overview, the operative (best bid, best asked inside market) prices for each stock in which the system proprietor makes a market are communicated over link 22 from NASDAQ and repose in memory at processor 10. The market maker has a position in each security in which he makes a market and the particulars of that position also repose in memory within the composite processor 10. Orders for trades in the relevant securities are funneled to the processor 10 in real time as they occur. Orders can be received in several ways. For example and most typically, orders may be generated by the brokerage firm's account executives at the branches 27 and communicated to the CPU 10 via the communication path 25. Orders are also supplied to the processor 10 from third party financial sources 29 (e.g., other brokerage firms, directly from computer equipped customers, banks or the like) over communication network 26. Each of the orders includes appropriate data fields outlined above and more fully discussed below, such as an identification of the office and customer or other originator of order, stock identification, price particulars and so forth. The processor 10 first determines whether or not each received order can be executed, i.e., "qualifies" the order. There are various reasons why an order will not be executed by the market maker. Thus, for example, the customer may seek to sell stock above the current bid price or to purchase the security below the current asked price. A customer may seek to trade a number of shares which exceeds the amount which the particular market maker is willing to accommodate, either in gross or for any one order. Orders not executable, i.e., orders not qualified, are either stored in memory in the processor 10 for later execution if they become qualified (such as by a favorable change in the market price for a security which can then accommodate the customer's price limits) or are forwarded to other market makers for potential execution over communication links 23 or 26. Assuming that an order is executable, the processor 10 "executes" the order, appropriately adjusting all balances. Information characterizing the executed order is sent to computer 13 for customers of that brokerage house or reported to the appropriate other institution via links 23 or 26. The specifics of appropriate transactions are also reported to the NASD for informational purposes and to the Consolidated Tape Authority and so forth and may become stock ticker entries. The NASDAQ system 18 is apprised of the current quotations from all traders making a market in the subject securities via communication path 16. The insider market (best bid and asked prices) are communicated to the market maker's processor 10 via link 22. When the insider market price changes (a variation in the best bid or best asked price), the processor 10 in accordance with the instant invention signals the trader at station 15 who is then given the opportunity to readjust his quantity or other market-characterizing criteria. Following each price change, all non-executable orders stored in the processor 10 memory are reviewed to determine whether they have become executable and, if so, they are in fact executed. Processing then continues as above described to accommodate the real time order inflow. With the above overview in mind, attention is now directed to FIG. 2 which is a flow chart of data processing for qualifying for execution an order communicated from a branch order entry clerk or account executive 27.sub.i. Proceeding from a start node 50, the data fields comprising this next-recorded order is loaded (block 51). The order data fields include the name of the stock (STK); the number of shares for the transaction (N.0.SH); customer identification (CUSTID); a buy vis-a-vis sell bit (B/S); the customer's price limit if he wants one or, if not, a market order designator (PR/M); special instructions if any (SP); an order number (.0.RN); and an originator (e.g., office, account executive, or third party institution) identification (.0.RIGID). The computer includes a number of stored variables characterizing the market for the stock STK which the customer wishes to trade, and the market maker's own criteria for his participation in STK trading. Thus, for example, the computer stores the best bid BSTB(STK); the best asked price BSTA(STK); the buy size BSZ(STK), i.e., the total amount of shares of STK the market maker is willing to sell for customer purchase at the current price; the market maker's sell size SSZ(STK); the maximum single order size for stock STK which the market maker will accept .0.RSZ(STK); the present number of shares of stock STK long or short in the market maker's position P.0.S(STK)--long being positive and short being negative; the average per share cost AVCST(STK) for the stock STK long or short in the market maker's portfolio; and a running profit total PR(STK) of the market maker in the stock STK. Block 53 functioning next determines if order processing is operative in the normal, automated market mode for the particular stock STK. If not (please see below with respect to FIG. 5), program flow branches to block 54 to store the order for later retrieval or manual execution. Program flow then returns to start node 50 for retrieval of the next order. Assuming normal automated mode processing (YES output of test 53), program flow continues to test 55 to verify the incoming data (order) to assure correct reception and internal consistency. If an error occurred, an error message is produced (block 56) and program flow returns to the start node 50 for entry of the incoming next order. In the usual case, the order is verified at test 55, and program flow continues to block 67 to determine if the order is a market order or has a limit price (test of the PR/M variable). If the order is not a market order but rather is to be executed at or better than a customer specified price (N.0. branch from test 67), program flow proceeds to block 69 which distinguishes a customer buy (B/S=B) from a sell order (B/S=S). If it is a buy order (YES, (BUY) branch from test 69), block 70 determines if the price at which the order is to be executed (contents of PR/M) is greater than or equal to the prevailing asked price (BSTA(STK)) of the stock. If the purchase price of the order to be executed is greater than the best asked price (YES branch of test 70), block 72 determines if the number of shares N.0.SH in the trade is less than or equal to the shares available for purchase from the market maker, i.e., less than the buy size BSZ(STK). If so (YES branch of test 72), the number of shares N.0.SH in the transaction is compared to the maximum acceptable single order size .0.RSZ(STK)--step 90. Assuming this final criteria is satisfied (N.0. exit), the order is qualified for execution, and program flow continues to block 92 where a variable storing the last position in stock STK, LP.0.S(STK) is set equal to P.0.S(STK). The program thereafter proceeds to order execution as detailed in FIG. 3 and discussed below. If the price or buy size tests performed at blocks 70 and 72 fail (N.0. branch), or if the order size test performed at block 90 indicates the order is too large (YES branch), the order is not qualified for and will not be executed. When any of these conditions obtain, program flow branches to block 86 to store the order for possible later execution if market conditions or market maker criteria change. An appropriate report is generated at block 88 via terminal 15 (FIG. 1) to characterize non-executed order. Thereafter program flow returns to node 50 to process the next received order. The human market system controller receiving the report may of course over-ride and complete the trade by hand or manual entry--e.g., by authorizing more stock (increasing BSZ(STK)) if that criterion inhibited order execution. The foregoing analysis has considered a limit buy order. Returning now to block 69, program flow for a customer sale will next be considered. If the buy/sell flag signals a sale, program flow branches to block 82 where the PR/M limit price is compared to the best bid price (PR/M.ltoreq.BSTB(STK)). If so (YES branch), the number of shares N.0.SH in the order is compared against the available sell size (N.0.SH.ltoreq.SSZ(STK)). If there are sufficient shares in the sell size (YES branch), block 90 determines if the number of shares (N.0.SH) is greater than the maximum permissible single order size (.0.RSZ(STK)). If the number of shares N.0.SH does not exceed .0.RSZ(STK) all criteria are satisfied and the sell order will be executed. Processing proceeds to block 92 where the "last" position intermediate processing variable LP.0.S(STK) is set equal to P.0.S(STK), and order execution proceeds as set forth in FIG. 3. If any price or sell size test performed at blocks 82, or 90 fails, program flow branches to block 86 for storage and reporting (block 88). The above description details order qualification for a limit price transaction. In a trade that is to be executed at market, the price tests performed at block 70 for a buy and block 82 for a sale are by-passed. Accordingly, when block 67 determines that the order is to be executed at market (PR/M=market), block 68 is reached and branches the program to size test 84 for a customer sale and test 72 for a customer purchase. The system then operates in the manner above described, qualifying the order for execution if the two operative size criteria are satisfied or, otherwise, storing the order and reporting (step 88). FIG. 3 illustrates data processing for executing and accounting for orders that have been qualified for execution by the order qualifying data processing of FIG. 2. A block 110 determines whether the order is a customer purchase or sale. If the buy/sell digit signals indicate a customer buy, program flow branches to block 112 for decrementing the amount of shares remaining available for customer purchase (BSZ(STK)) from the market maker. BSZ(STK) is decremented by the number of shares of the stock (N.0.SH) purchased by the customer, i.e., BSZ(STK)=BSZ(STK)-N.0.SH. The market maker's position in the stock is algebraically decremented by the number of shares purchased, P.0.S(STK)=P.0.S(STK)-N.0.SH (step 115). If at block 110 it is determined that the order is a sell, block 116 decrements sell size SSZ(STK) by the number of shares sold to the customer, SSZ(STK)=SSZ(STK)-N.0.SH. The market maker's position P.0.S(STK) in the stock is updated by algebraically incrementing the number of shares sold by the customer, P.0.S(STK)=P.0.S(STK)+N.0.SH (step 119). After the position P.0.S(STK), buy size BSZ(STK), and sell size SSZ(STK) variables have been updated, program flow continues to block 122 where messages confirming execution of the trade are furnished to the customer account processor 13 which sends out confirmations of the transaction and otherwise performs the necessary accounting functions for the customer account. The branch clerk or account executive 27.sub.i is also notified of order execution via link 25. The order variables CUSTID, SP, .0.RN and .0.RIGID are used to appropriately distribute trade reporting, proper commission computation and the like. Further, the transaction price is typically communicated to the NASDAQ system 18 and the various tape services for reporting. The updated internal market maker variables (e.g., SSZ(STK), BSZ(STK), LP.0.S(STK), P.0.S(STK)) are stored in memory for use in subsequent order transactions (step 127). Program flow proceeds to block 130 to update the market maker's average per share inventory cost AVCST(STK) and profit PR(STK) internal management variables for the stock STK, the data processing for which is described below in conjunction with FIGS. 4 and 4A. After inventory updating and profit accounting, data processing exits at node 132 ready to process the next trade. FIGS. 4 and 4A are the left and right portions of a flow chart for the data processing of block 130 (FIG. 3) for updating the inventory cost (average share price AVCST(STK)) of the stock STK and the running profit PR(STK) realized from the execution of each trade. To this end, the last position of the market maker LP.0.S(STK) before the just executed trade is tested to determine whether the market maker was previously long or short in the stock STK (step 154). If LP.0.S(STK).gtoreq.0 then the market maker's previous position was long and program flow proceeds to block 153 where the present (post trade) position of the market maker P.0.S(STK) is tested to determine if it is long (P.0.S(STK).gtoreq.0?=YES) or short (N.0.). If the market maker's present position is short (N.0. branch), the transaction was a branches to block 155 to update profit PR(STK) for stock STK, as by: PR(STK)=PR(STK)+(LP.0.S(STK)*(BSTA(STK)-AVCST(STK))). Eq. 1. In the right side of the programming statement of Equation 1, the variable BSTA(STK)-AVCST(STK) is the profit (or loss) margin on the sale representing the difference between the current asked price BSTA(STK) at which the trade occurred and the average per share cost AVCST(STK) of the stock. When multiplied by the number of shares previously in the long position (LP.0.S(STK)), the right factor following the plus sign in the statement of Equation 1 is the profit (or loss) for the transaction. When added to the previous running profit total PR(STK), the final result stored in PR(STK) is an updated running total of the profit of the market maker in the stock STK since the PR(STK) storage array element was last cleared. Thereafter for the assumed event, program flow proceeds to block 156 where the average per share cost of the new short position in the stock is calculated. In this instance, the average cost of the stock is equal to the operative asked price, i.e., AVCST(STK)=BSTA(STK). FIG. 4 programming then exits at the PR.0.CEED node. If at block 153 the market maker's present position is long (P.0.S(STK).gtoreq.0?=YES), program flow continues to test 160 where the buy/sell digit determines whether the transaction is a customer purchase or sale. If the trade is a customer sale thus increasing the initially long LPOS(STK) position, it is an inventory transaction and program flow branches to block 163 to update the average cost of the STK stock position: AVCST(STK)=((N.0.SH*BSTB(STK))+(AVCST(STK)*LP.0.S(STK)))/P.0.S(STK).Eq. 2. In the statement of Equation 2, N.0.SH*BSTB(STK) is the cost of the shares just purchased from the customer and AVCST(STK)*LP.0.S(STK) is the cost of the previous LP.0.S(STK) inventory. Thus, by dividing the sum of the new and former purchases by the number of shares held P.0.S(STK) the new average cost AVCST(STK) is determined. If at block 160 the transaction was determined to be a customer purchase (market maker sale), program flow proceeds to block 166 where the market maker's profit is updated: PR(STK)=PR(STK)+(N.0.SH*(BSTA(STK)-AVCST(STK))). Eq. 3. The above FIG. 4 processing has reviewed the three possibilities beginning with a long (positive) market maker stock position entering a transaction as signalled by the contents of LP.0.S(STK). Comparable functioning obtains if the contents of LP.0.S(STK) in test 150 are negative, signalling an initial short position (N.0. output of test 150). Assuming such an initial short position, program flow passes to that shown in FIG. 4A which is the analog of that shown in FIG. 4. In brief, a test 170 of FIG. 4A determines whether the present position P.0.S(STK) is short or long. If the present position is also short (P.0.S(STK)<0), program flow proceeds to block 172 where the buy/sell bit is read. If the buy/sell digit indicates a customer buy, the transaction represents an inventory accumulation (the previous short position in LP.0.S(STK) being increased in P.0.S(STK)) and program flow branches ("YES") to block 174 where the average cost of the stock is updated: AVCST(STK)=((N.0.SH*BSTA(STK))+(AVCST(STK)*LP.0.S(STK)))/P.0.S(STK).Eq. 4. If at block 172 the transaction is determined a sell, block 175 updates the profit total: PR(STK)=PR(STK)+(N.0.SH*(BSTB(STK)-AVCST(STK))). Eq. 5. As a final possibility in FIG. 4A, if at block 170 the market maker's present position is long (P.0.S(STK)<0?=N.0.), the transaction was necessarily a customer sale (market maker purchase), and program flow branches to block 176 where the profit PR(STK) is updated: PR(STK)=PR(STK)+(LP.0.S(STK)*(BSTB(STK)-AVCST(STK))). Eq. 6. The average share cost of the new P.0.S(STK) short position is the best bid (transaction) price (AVCST=BSTB(STK))-block 1786. This concludes the profit and cost updating for the transaction. In most instances, more than one institution makes a market in a particular stock. Any market maker may change its bid or asked price at any time, transmitting the change to the NASDAQ system via link 16 as above discussed. In such an instance, it may be necessary to update the market maker's own prices--as where the change affects the insider market (best current bid and asked) to afford the customer execution at the best prevailing price. FIG. 5 is a flow chart illustrating data processing upon receipt of a new market maker quotation from the NASDAQ system 18. Beginning at an interrupt entry node 180, the system is placed in non-automatic execution mode (step 182) which prevents automatic execution of any orders in the particular stock (STK) until the market maker has had a chance to respond to the new market prices. If at block 184 it is determined that the best bid BSTB(STK) or best asked BSTA(STK) price has changed, program flow proceeds to block 186 where the best bid BSTB(STK) and/or best asked price BSTA(STK) are updated to the new values received from NASDAQ. The system then interactively communicates with the trader terminal 15. A prompt appears on trader Tl terminal 15 requesting input regarding possible changes in the maximum acceptable order size (.0.RS(STK)), the number of shares available for customer purchase (BSZ(STK)), and the number of shares acceptable for customer sales (SSZ(STK)). After input of the requested parameters (or initializing to default values), any orders previously stored in memory are reprocessed (block 190) as these orders may now be qualified for execution due to the change in price or other parameters. After stored orders are reviewed and executed if possible, data processing is restored to automatic mode (block 192)--as by simply setting a variable AUT.0. to a predetermined state (e.g., "AUT.0."), and interrupt mode is exited at node 194. If at block 184 it is determined that the insider market price was not changed by the new market maker quotation, program flow branches directly to block 192 to restore automatic mode and exit interrupt mode. The market making system of the above-described invention has thus been shown to automatically accommodate a random, real time order flow for security purchases or sales. Incoming orders are first examined to assure that they satisfy currently operative criteria regarding securities price, stock availability and stock order size. Those orders being qualified under the existing criteria are executed and profit and inventory price internal management storage elements are appropriately updated to reflect the several transactions experienced by the system. Orders not qualified for execution are stored and re-examined from time to time for possible later executability. The system proceeds automatically without human intervention, save to update operative market maker order qualification criteria. The above-described arrangement is merely illustrative of the principles of the present invention. Numerous modifications and adaptations thereof will be readily apparent to those skilled in the art without departing from the spirit and scope of the present invention.
|
Same subclass Same class Consider this |
||||||||||
