STPml Message Specification STPML is the Straight Through Processing Markup Language. It is an XML message specification designed for the financial securities trading industry to meet the requirements of straight through processing. In general, all datatypes are required to be valid XML datatypes as defined by the XML Schema specification. Except where noted, all attributes and element data are defined as strings. This allows the message structure to support many different formats without breaking the schema. Mappings to and from more restrictive individual formats can be easily accomplished through the use of an XSL style sheet or similar transformation mechanism. Attributes expressly named as Date correspond to the timeInstant datatype, and are used to store a description of a date and or time. This type of data will only be used as an attribute of another element. References to a Date Indicator are to an indicator element, which contains qualified string values, rather than an actual date. Attributes expressly described as Boolean contain boolean values, either TRUE or FALSE. Attribute values which are to be interpreted as a code or a type should be specified using all upper case. This allows for easier specification of types, due to the case-sensitive nature of XML. While specific attribute values are not specified, several possible values are often listed in the attribute definition section. The various messages described in this document can be grouped into four main categories: Order Processing; Transaction Settlement; Market Data; and Notifications. Each of these types is described in the sections that follow The main goal of this message specification is to facilitate Straight Through Processing. The main messages involved in this process are defined below. A manager may send out a Quote Request to one or more brokers, indicating interest in buying or selling a security. Brokers may respond to these requests with a Quote Message. Alternatively, a broker may send an Indication of Interest (IOI) message over the network to one or several investment managers, indicating interest in selling or purchasing some block of securities. This is basically the equivalent of an unsolicited quote. The manager decides to change their position for a given security. An Order message for the resulting block trade is generated and forwarded to the broker. The broker then transmits the Order message to an exchange for execution. The exchange transmits an Execution message to the broker, indicating the details of the trade, including number of securities traded, price, and fees. The broker then adds any additional info, and transmits the Execution message to the manager via the network. The manager allocates the results of the trade across the various affected portfolios, and calculates any additional fees, taxes, and other costs. The results of this operation are returned to the broker in an Allocation message. The broker analyzes the data returned in the Allocation message and, if they are in agreement, returns a Confirmation message to the manager. The manager acknowledges the receipt of the Confirmation message by issuing an Affirmation message. This message serves to complete the contract of the trade. The trade is now considered complete and cannot be revoked. Settlement messages are forwarded to the custodians and other interested parties to inform them of the results of the trade. These messages contain the complete details of the trade, including all fees, taxes, and costs, and details on the allocation across multiple portfolios and/or accounts. Settlement messages are forwarded to the custodians and other interested parties to inform them of the results of the trade. These messages contain the complete details of the trade, including all fees, taxes, and costs, and details on the allocation across multiple portfolios and/or accounts. Transaction reporting messages are similar to settlement reports, but contain only a single detail of the trade. Many smaller transaction messages may be sent in place of one larger, but complete settlement message. While there are many different kinds of market data messages, they all have a similar structure. When market data is required, a request message is sent to a data provider. This message may request a snapshot of the data, or it may request that messages be sent every time the data is updated. In response to the request the data provider, or an agent acting on their behalf, will respond with the requested data. If updates are requested, then new messages will be sent as required. When the consumers no longer want to receive updates, they can indicate this by sending a cancel message to the data provider. This specification was prepared by Financial Models Company Inc. (FMC). The specification is based on the contributions of FMC staff, as well as Bridge Information Systems, Inc., Infinity, A SunGard Company, and Microsoft Corporation. FMC offers this specification without restriction to software developers associated with the financial securities trading industry. The specification is provided on an "as is" basis and FMC disclaims all warranties, express or implied, including any warranty that the use of the information herein will not infringe any rights or any implied warranties of merchantability or fitness for a particular purpose. Any suggestions for additions, augmentations, or other modifications of this specification should be submitted to ideas@stpml.org. All accepted modifications will be made available on www.stpml.org. The submitter acknowledges that modifications are not subject to any confidentiality requirement or other restriction on dissemination. The STPML message protocol does not make provision for continuous message acknowledgement, but is designed instead to assume successful transmission of messages. Explicit acknowledgement of message delivery may be accomplished by utilizing receipt messages. The messageId and messageDT attribuites should be filled in by the sender of the message. In the case where the sender is forwarding the message, such as for an intermediate network, the original messageId and messageDT would be stored in the originatorId and originatorDT, respectively. If a message cannot be successfully delivered, then it should be marked as failed. Failed messages reverse routed, which is to say, they are routed from the target to the sender, back to the original source of the message. If possible, the message should be returned by the same path through any intermediate networks. The message header is an envelope for all other messages. This allows a standard form of addressing and routing messages, without necessarily having to parse the body of the message. The payload or body of the message may be encrypted, regardless of transport level encryption of the message, thereby providing application level security. These elements contain all of the data required to transport the message between participants. Message routing information. These elements contain information on the route that the message took through any intermediate networks. If the trace route attribute is set to true, then any participating network should try and add information to this collection. This data can then be used to diagnose networks errors and problems. Route tracing information. This contains the conversation elements for all of the conversations in which this message is a participant. A collection of conversation elements. These elements describe why the message could not be delivered to the destination. This element should be considered mandatory when the failure attribute of the message element is set to true, and should be ignored if the attribute is false of not specified. A collection of failureReason elements. This is the addressing information for the system which originated the message, if different from the sender. The source of the message. This is the addressing information for the system which will eventually receive the message, if different from the target. The source of the message. This is the addressing information for the current sender of the message. The sender of the message. This is the addressing information for the next system to receive the message. The target of the message. This element may be used to provide a logical, higher level grouping of messages. A conversation may consist of multiple messages, and may need to be treated as a whole transaction. Similarly, multiple conversations may be contained in a session; especially when there are multiple parties involved. Additional sub-elements may be used to extend this tag, but these are outside the scope of this specification. This element describes the different conversations in which this message is involved. When message tracing is enabled, (the trace attribute is set to true) one of these elements should be created by every system involved in the delivery of the message. This block may contain additional information on any message processing performed by the system. Route tracing information This element should be populated when a message cannot be successfully delivered to the destination. The element contents should describe the reason for the failure, and could assist in diagnosing and correcting the problem. A description of a message processing failure. The payload element contains the actual application data of the STPML message.
The contents of this element may be encrypted, and may also be subject to verification. Such processing is optional and is specified by the contents of the scurityLevel attribute.
The application message data.
STPml allows for a wide varirty of instruments and derivatives to be described. This is due to the flexible structure of this element. This element can contain one instrumentClass, and zero or more derivative information blocks. It is this allowing for multiple derivates that provides the heightened flexibility. It is also important to note that often, the sub-elements will be ommitted, and the information specified in the attributes only. For instance, the message could just be instrumentId="MSFT", idType="TICKER", idSource="NASDAQ", instrumentClass="EQUITY". The full contents of this block would be populated during an enrichment operation, when full details are desired. This block contains the descriptive data for the instrument or security referenced in the message. Fixed income securities include bonds, notes, and other institutional debt instruments. The description information for a fixed income security. Information about a traded commodity Information about a deposit. An instrument representing a share of equity in a corporation. A foreign exchange transaction Information describing a loan. Information describing a payment. A swap of two instruments. This is a derivative, applied to some class of instrument. A future is a standardized, transferrable, exchange-traded contract that requires delivery of an instrument, at a specified price, on a specified future date. A futures contract. This is a derivative, applied to some class of instrument. An option is the right, but not the obligation, to buy or sell a specific amount of an instrument at a specified price, during a specified period of time. An option to purchase an instrument at a future date. This instrument block is identical to a normal instrument. The FROM instrument in a swap trade. This instrument block is identical to a normal instrument. The TO instrument in a swap trade. This element contains the details of an account used in a transaction. The text of this element represents a value. A value. A textual description. Information about an exchange of currencies. Information about a cash flow. Information on a payment contained within a cash flow. A fixed interest cash flow. A floating interest cash flow. This element describes a complex, floating interest rate cahsflow. Complex Cashflow Definition This element is a collection of Complex Cashflow Rate Description elements Complex Cashflow Rate Observations Complex Cashflow Rate Observation This element is a collection of Complex Cashflow Reset Description elements Complex Cashflow Reset Descriptions This element describes a period over which a portion of a complex, floating interest cashflow occurs. Complex Cashflow Reset Description The formula used to calculate the interest rate for a period. This element contains all the information about the parties involved in a transaction, the roles they play, and the accounts they use. The constituents of a transaction. A collection of parties. A collection of roles. A collection of accounts. A collection of conmtacts. A party description element. This element is identical to the party element. An isseuer description element. This element describes a roll palyed by a party involved in a transaction. A Role descriptor element. The text of this element contains a contact description. A contact descrioption. Country Code Indicator Trade Side Indicator Coupon This element describes the From currency in a currency exchange. From Currency Descriptor This element describes the To currency in a currency exchange. To Currency Descriptor This is a collection of idAlias elements. Id Aliases This element is used to contain alternate identification codes for various elements. Any element which is described using the set of id, idType, and idSource, can optionally contain a collection of idAliases for the same element. This element contains instructions to the role for which it is a descendant. Instructional text accompanying a transaction. A collection of link elemenrts. This element is used to link multiple messages together, either for reference purposes, or because the messages are to be processed as a group. One example of such a linking, would be in an order which is being sent in response to a previously received IOI. The order would contain a link to the IOI, with a link sequence of INFORMATIONAL, and a reference of PREVIOUSRECEIVED. Another example would be a basket trade order. A master order would be sent with links to all of the child orders. The child orders would each have a reference to the master. All of the link sequence attributes would be set to WITH, indicating that all the messages should be processed as a group. A link to another message. A description of a market, or other trade location. A textual name. A code indicating the type of market. A market type indicator. The order detail block contains all of the data describing the requested transaction.. This block is sent in the original order message, and is then included in various other messages sent subsequently. The details of an securities trade order. This element describes the type of order. Standard values for this element are: MARKET, MARKETNOTHELD, ALLORNONE, LIMIT, FILLORKILL, STOPLIMIT, LIMITWITHRNDLOT, DISCRETIONARY, CAREFULLY, NOREDUCTION, NOINCREASE, NOTHELD, COMBO, ORDERRULE, MARKETREACH, STOP,BUYMINUS,BUYCONTRASHORT, and BUYCONTRASHORTEXEMPT. Order type indicator. This element describes the time limit for the execution of the order. Standard values for this element are: GOODTILLCANCEL, GOODTILLEXEC, GOODFORDAY, GOODFORMONTH, GOODTILLCROSS, GOODTILLEXPIREDT, CLOSE, OPEN, and IMMEDIATEORCANCEL. TIme limit indicator This element may contain an actual date, or a code such as NEXTBUSDAY, TOMORROW, ENDOFWEEK, ENDOFMONTH, or ENDFOPERIOD. Trade date indicator A code indicating the palce at which the trade is to occur. Possible values for this element include: EXCHANGE, and OTC. Trade place indicator A code indicating the priority which is to be given to the execution of this trade. Possible values for this element include: LOW, MEDIUM, and HIGH. Priority Indicator A code indicating the condition that must be met before the trade will be allocated. Possible values for this element include: FULL, PRORATED, and ROUNDUPFRACTIONALSHARES. Pre-allocation indicator. A collection of trade condition indicators. A collection of processing requirement indicators. A collection of reporting requirement indicators. A collection of settlement condition indicators. This element describes the basis upon which commisions are shared for this transaction. Possible values include PERUNIT, PERCENT, and FLATFEE. Commision sharing basis indicator. This element describes the type of commision sharing for this transaction. Possible values include SOFTDOLLAR, STEPOUT, and CLIENTDIRECTED. Commision sharing type indicator. This element describes the basis upon which taxes are to be calculated for this transaction. Charging tax basis indicator This element provides directions for the generation of settlement instructions. Possible values include ETCGENERATE and NOETCGENERATE. Settlement instruction generation indicator. This element describes a quantity of an instrument involved in a trade. A quantity descriptor. A collection of prices. A code indicating the condition under which the trade should be executed. Possible values for this element include: BLOCKORDER, FRACTIONALPARTS, CUMBONUS, CUMCOUPON, CUMDIVIDEND, CUMRIGHTS, EXBONUS, EXCOUPON, EXDIVIDEND, EXRIGHTS, TRADEEXDIVIDEND, SPECIALCUMDIVIDEND, SPECIALEXDIVIDEND, CROSS, and NOCROSS. Trade condition indicator. A code indicating an additional processing direction associated with an order. Possible values for this element include: ACCCOUNTCLOSURE, OPENPOSITION, and ROLLOVERPOSITION. Processing indicator. A code indicating a reporting requirement associated with an order. Possible values for this element include: REGULATORY and EXCHANGE. Reporting requirements indicator. A code indicating a condition which must be met before settlement of this order can occur. Settlement condition indicator. The text of this element describes the capacity in which a party may operate. Party capacity. Party declaration. Address string. The contents of this element contain the information required to fully describe a price. A price. The contents of this element indicate the denomination for a represented value. Possible values for this element include: DOLLARSANDEIGHTHS, CENTS, DOLLARS, PARVALUE, NET, and AVERAGE. Denomination indicator. The contents of this element indicate the source of a price. Possible values for this element include: OTC, EXCHANGE, and VARIOUS. Price source indicator. The contents of this element indicate the date on which a price is effective. This element may contain an actual date, or a code such as NEXTBUSDAY, TODAY, and TOMORROW. Price date indicator. A collection of market data properties. If the market data message has a useMasterProperties attribute of true, then the property name must be one of the enumerated values contained in the list below. An item of market data. A collection of reject reasons. A collection of process results. The text of this element describes why a message was rejected. Reject reason data. The text of this element describes a processing result. Result data. The transaction detail block contains all of the data describing a portion of a securities transaction. There is a transaction detail generated for each allocated portion of a order. Therefore, an order which was executed in three trades, and allocated accross 10 portfolios, will result in thirty transactionDetails. The details of an securities trade transaaction. A collection of instruction elements. A collection of transaction detail elements. A collection of amounts. A collection of exchange set elements. An exchange set is used to group market data properties which are common to a particular exchange. A set of properties for an exchange. A collection of IOI Type indicators. This element contains a code indicating the type of the IOI. IOI type indicator. this element may contain an actual date, or an externally defined code. Transaction date indicator. Indicates the relative quality of the offer. IOI Quality indicator A collection of Service Indicators. This indicator describes an additional service being offered. Service indicator A collection of qualifier indicators. The code contained in this element indicates a qualifier to the offer. Qualifier indicator. The text of this element can be interpreted as a URL, specifing where to find additional information. A Uniform Resource Locator This element describes the type of trade indicated. Common trade type codes are: BASKET, LIST, PROGRAM, INDEX and TRADE. Trade type indicator. This describes the current status of an order. Common order status codes are: PARTIALLYFILLED, FILLED, DONEFORDAY, CALCULATED, and EXPIRED. Order processing status indicator. This describes the current status of an allocation. Common allocation status codes are: PARTIAL, and COMPLETE. Allocation status indicator. A collection of certificate indicators. This element will contain an identification code for an instrument certificate, or an understood code which represents a group of certificates. Certificate indicator. Commodity type indicator. A collection of coupon description elements. The measurement unit for a commodidty. The type of future contract being described. This element will usually contain either PUT or CALL. The type of option being described. Possible values for this element include: ONDATE, WITHINPERIOD, OCOUPONDATE, AMERICAN and EUROPEAN. The style of the option. A collection of repurchase indicators. This is a derivative, applied to some class of instrument. A repurchase agreement is a contract in which the seller of an instrument aggrees to buy them back at a specific time and price. Repurchase agreement indicator. A collection of market description elements. The textual data associated with a command message. The textual data associated with a Notify message. A collection of syncrozization elements. Often, data needs to be synchronized between disparate systems. The synchronization element is used for this purpose. Any other STPML element can be contained within A data synchronization element. A command message. Command type indicator. Command code indicator. A notification message. A receipt message should be sent in response to a message received with the receiptRequested attribute set to TRUE. A receipt of a previously received message. This message is sent to reject a previously received message. A rejection message is a new message, and as such, is addressed with the target as the sender of the original message. Note that this is different from a messages marked as failed, which are reverse routed from target to sender. Also, the definition of a rejection is funcdamentaly different than a failure. A failed message is one which could not be delivered to the destination. A message would be rejected because it fails to meet some requirements for further processing. A reject message. This message is sent to inform a sender of results of message processing. A result message is similar to both a reject and a receipt. The result serves to notify the originating party of some results of message processing. While a receipt indicates that the destination has received the message, the result communicates what happened. Unlike a reject message, however, a result does not indicate any situation which requires correction, and may be safely ignored by the originating party. A reject message. A request for market data for a particular vehicle. A request for news headlines. A collection of fiter elements. The contents of this element are dictated by the requirements of the particular market data provider. A filter used when retrieving market data. A news headline. News story requests are usually generated by reference to a news headline. News stories are non-updating and as such cannot be subscribed to. A news story Histories are non-updating and as such cannot be subscribed to. A request for historical market data. Historical market data. A related set of market data. A related set of market data. A related set of market data. Time and sales data is non-updating and as such cannot be subscribed to. A request for time and sales market data. Time and sales market data. XSDA:AttrDesc = ""/> A currency identification code. A collection of location elements. A location description. This element indicates the type of fixed income instrument being referenced. Fixed income type indicator. This element indicates the type of deposit instrument being referenced. Deposit type indicator. This element indicates the type of foreign exchange instrument being referenced. Foreign exchange type indicator. This element indicates the type of loan instrument being referenced. Loan type indicator. This element indicates the type of payment instrument being referenced. Payment type indicator. This element describes a fund, or a similar pool of instruments. A fund instrument. This element indicates the type of fund instrument being referenced. Fund type indicator. A collection of instruments This elemnt describes a mortgage based instrument. A mortgage based instrument. This element indicates the type of mortgage instrument being referenced. Mortgage type indicator. This is a derivative, applied to some class of instrument. An warrant is a certificate, usually issued with the sale of an instrument, which entitles the holder to buy a specific amount of an instrument, at a specific price, for an extended period. This period may be anywhere from a few years to forever. Warrant information. Indicates the type of warrant being referenced. Warrant type indicator. This is a derivative, applied to some class of instrument. A right is a privledge which allows an investor to buy a quantity of an instrument shortly before it is offered for public sale. This purchase is offered at a specified, and usually discounted price, ond usually in proportion to the amount of the instrument already owned. A right derivative information element. Indicates the type of right being referenced. Right type indicator.