System and method for conducting web-based financial transactions in capital markets6347307Abstract The present invention provides a system and method that enables users, such as institutional investors and financial institutions, to engage in capital market transactions, including the trading of Over-the-Counter financial products, via the Internet (including the World Wide Web). The system includes a variety of servers, applications, and interfaces that enable users to interactively communicate and trade financial instruments among one another, and to manage their portfolios. Interactive communications supported by the system include: requesting price quotes, monitoring and reviewing quote requests, issuing price quotes, monitoring and reviewing price quotes, negotiation between users, acceptance of price quotes, reporting, portfolio management, analysis of financial information and market data, calendaring, and communications among users and/or system administrators, including e-mail, chat, and message boards. The present invention also supports communications with the server side in an automated manner via an automated processor. Such automated communications enable connectivity with users' internal, back-end systems to execute automated, straight-through processing, including transaction pricing, payment scheduling and journaling, derivatives trading, trade confirmation, and trade settlement. Such communications are facilitated using a novel XML-based syntax (FinXML.TM.) and XSL-based processing language (FinScript.TM.). FinXML provides a standard data interchange language for capital market transactions and supports a broad set of elements and attributes that represent a wide variety of financial transactions, reference data, and market data. The common description of the FinXML syntax can be used for all aspects of straight-through-processing, including deal creation, confirmation, settlement, payment, risk management, and accounting. Claims What is claimed is: Description FIELD OF THE INVENTION
<!ELEMENT trade (%parties; , (fxSpot .vertline. fxForward .vertline.
interestRateFixedFloatSwap .vertline.
interestRateFloatFloatSwap .vertline. cap .vertline. floor .vertline.
fixedDeposit .vertline.
fixedLoan .vertline. floatDeposit .vertline. floatLoan .vertline. fxOption
.vertline. fxSwap
.vertline. crossCurrencyFixedFixedSwap .vertline.
crossCurrencyFixedFloatSwap .vertline.
crossCurrencyFloatFloatSwap .vertline.
forwardRateAgreement .vertline. customizedTrade ) )>
<!ATTLIST trade tradeId CDATA #REQUIRED isBuiltFromParameters
CDATA #IMPLIED>
b. Financial Transaction Data The FinXML syntax describes various types of data that comprise a financial transaction, including transaction data, reference data, and market data. Each of these types of data includes elements and attributes. i. Transaction Data Transaction data describes the various components of a financial transaction or trade. These components include "Counterparty" elements, "Trade Type" elements, "Trade Specific" elements, "Financial Event" elements, and "Calculation" elements. (a) Counterparty Elements In a financial transaction of the type described by FinXML, there are typically two parties, also referred to as "counterparties". As described above, FinXML describes such parties to a transaction with Counterparty element 510 (as shown in FIG. 3), including an Internal Party element and an External Party element. In the present embodiment of this invention, Counterparty element 510 has the following XML definition:
<!ENTITY % counterParty "internalParty .vertline.
externalParty">
<!ENTITY % parties "(%counterParty;), (%counterParty;)">
In each transaction, from the perspective of an organization, that organization is the "internal" party and the other, unrelated organization is the "external" party, e.g., a corporation and a third-party bank that engages in a foreign exchange transaction. Alternatively, where a corporation engages in a transaction with a subsidiary legal entity within the corporation, the subsidiary is also an "internal" party. FIG. 4 illustrates the structure of the External Party element 700, which represents an external party to a transaction. Each external party can be either a "disclosed party" or an "undisclosed party". In the present embodiment of this invention, External Party element 700 has the following XML definition:
<!ELEMENT externalParty ((disclosedParty .vertline.undisclosedParty))
>
<!ATTLIST externalParty id ID #IMPLIED type CDATA #IMPLIED >
Disclosed Party element 705 represents a party to a transaction (e.g., a Member) whose details, including corporate identification, are fully known to the other party to the transaction. Each Disclosed Party element 705 includes the following sub-elements (described in greater detail below in the discussion regarding "Reference Data" elements): Organization 710, Contact Information 730, Address 765, and Credit Rating 805. In the present embodiment of this invention, Disclosed Party element 705 has the following XML definition:
<!ELEMENT disclosedParty (organization, contactInformation*, address,
creditRating+ )>
Undisclosed Party element 835 represents a party that remains anonymous to the other party; the only information disclosed is the party's credit rating. Thus, each Undisclosed Party element 835 includes the Credit Rating 805 element (described in greater detail below in the discussion regarding "Reference Data" elements). In the present embodiment of this invention, Undisclosed Party element 805 has the following XML definition:
<!ELEMENT undisclosedParty (creditRating+ )>
FIG. 5 illustrates the structure of the Internal Party element 600, which represents an internal party to a transaction. Internal Party element 600 includes Legal Entity element 605, which represents each of the separate legal (i.e., corporate) entities associated with the internal party, and Book element 625, which represents the trading book(s) in which a party will group transactions for accounting purposes (described in greater detail below in the discussion regarding "Reference Data" elements). In the present embodiment of this invention, Internal Party element 600 has the following XML definition:
<!ELEMENT internalParty (legalEntity? , book? )>
<!ATTLIST internalParty id ID #IMPLIED type CDATA #IMPLIED >
(b) Trade Type Elements As shown in FIG. 3, Trade element 500 includes Trade Type element 530. Each Trade Type element 530, in turn, includes a Trade Type sub-element that describes one type of financial transaction or trade. (1) Foreign Exchange Spot A Foreign Exchange Spot ("FX Spot") transaction is one in which one party acquires a specified quantity of one currency in exchange for another currency from another party, to be paid or settled as soon as is standard (i.e., usually two days) in the foreign exchange market. For example, a Member buys from a Provider 2 million Euro for U.S. Dollars to be paid in two days. The FX Spot element represents such a transaction and includes the following sub-elements and attributes: "Dealt Amount": the specified amount of currency to be converted into the currency being acquired. "Settled Amount": the amount of currency being acquired. "Trade Date": the date on which the currency trade has been agreed to by the parties. "Value Date": the date on which the traded currencies will be exchanged (i.e., the trade will be settled). "FX Rate": the foreign exchange rate at which the trade will be executed. "Base Currency": the currency against which the currency to be acquired will be measured. "Base Units": the number of units of the Base Currency against which the currency to be acquired will be quoted (usually one unit). "Quote Currency": the currency to be acquired or the currency to which the quote is pegged. "Quote Units": the number of units of the Quote Currency to be acquired. In the present embodiment of this invention, the FX Spot element has the following XML definition:
<!-- Foreign Exchange Trades - FXSPOT -->
<!ENTITY % fxTradeSpec "%trade.elements;
, dealtAmount
, settledAmount">
<!ELEMENT fxSpot (%fxTradeSpec; )>
<!ELEMENT dealtAmount (currency, amount )>
<!ATTLIST dealtAmount %payReceiver;>
<!ELEMENT settledAmount (currency, (fxRate .vertline. amount )
)>
<!ATTLIST settledAmount %payReceiver;>
<!ELEMENT fxRate (baseCurrency, baseUnits, quoteCurrency,
quoteUnits, rate )>
<!ELEMENT baseCurrency (#PCDATA )>
<!ELEMENT baseUnits (#PCDATA )>
<!ELEMENT quoteCurrency (#PCDATA )>
<!ELEMENT quoteUnits (#PCDATA )>
<!ENTITY % trade.elements "tradeDate
, settlementDate?
, valueDate?
, externalID?">
(2) Foreign Exchange Forward A Foreign Exchange Forward ("FX Forward") transaction is one in which one party acquires a quantity of one currency in exchange for a specified amount of another currency from another party, with the amounts to be paid on a specified future date. For example, a Member buys from a Provider 2 million Euro for U.S. Dollars to be paid 60 days from the trade date. The FX Forward element represents such a transaction and includes the following sub-elements and attributes: "Dealt Amount": the specified amount of currency to be converted into the currency being acquired. "Settled Amount" the amount of currency being acquired. "Trade Date": the date on which the currency trade has been agreed to by the parties. "Value Date": the date on which the traded currencies will be exchanged (i.e., the trade will be settled). "FX Rate": the foreign exchange rate at which the trade will be executed. "Base Currency": the currency against which the currency to be acquired will be measured. "Base Units": the number of units of the Base Currency against which the currency to be acquired will be quoted (usually one unit). "Quote Currency": the currency to be acquired or the currency to which the quote is pegged. "Quote Units": the number of units of the Quote Currency to be acquired. In the present embodiment of this invention, the FX Forward element has the following XML definition:
<!-- Foreign Exchange Trades - FORWARD -->
<!ENTITY % fxTradeSpec "%trade.elements;
, dealtAmount
, settledAmount">
<!ELEMENT fxForward (%fxTradeSpec; )>
<!ELEMENT dealtAmount (currency, amount )>
<!ATTLIST dealtAmount %payReceiver;>
<!ELEMENT settledAmount (currency, (fxRate .vertline. amount ) )>
<!ATTLIST settledAmount %payReceiver;>
<!ELEMENT fxRate (baseCurrency, baseUnits, quoteCurrency,
quoteUnits, rate )>
<!ELEMENT baseCurrency (#PCDATA )>
<!ELEMENT baseUnits (#PCDATA )>
<!ELEMENT quoteCurrency (#PCDATA )>
<!ELEMENT quoteUnits (#PCDATA )>
<!ENTITY % trade.elements "tradeDate
, settlementDate?
, valueDate?
, externalID?">
(3) Interest Rate Fixed-Float Swap An Interest Rate Fixed-Float Swap is a type of interest rate swap in which two parties exchange periodic payment streams, where one payment stream is based on a fixed interest rate and the other payment stream is based on a floating rate index (e.g., LIBOR), with each payment stream in the same currency. For example, a Member buys from a Provider a fixed payment stream in Euro in exchange for a floating payment stream in Euro based on the LIBOR index. The Interest Rate Fixed-Float Swap element represents such a transaction and includes the following sub-elements and attributes: "Trade Date": the date on which the trade has been agreed to by the parties. "Start Date": the date on which the exchanged payments will begin. "End Date": the date on which the exchanged payments will end. "Fixed Leg Details": the details of the fixed interest payments for the fixed leg. "Float Leg Details": the details of the floating interest payments for the floating leg. "Events": the various payment and calculation events in the swap transaction, including cash payment, principal payment, interest payment, interest calculation, compound interest calculation, and interest rate reset information. In the present embodiment of this invention, the Interest Rate Fixed-Float Swap element has the following XML definition:
<!-- Interest Rate Fixed Float Swap -->
<!ELEMENT interestRateFixedFloatSwap (tradeDate, startDate, endDate,
externalID?, fixedLegDetails, floatLegDetails, events?)>
(4) Interest Rate Float-Float Swap An Interest Rate Float-Float Swap is a type of interest rate swap in which two parties exchange periodic payment streams, where each payment stream is based on a floating rate index (e.g., LIBOR), with each payment stream in the same currency. For example, a Member buys from a Provider a floating payment stream in Euro in exchange for a floating payment stream in Euro, where each payment stream is based on the LIBOR index. The Interest Rate Float-Float Swap element represents such a transaction and includes the following sub-elements and attributes: "Trade Date": the date on which the trade has been agreed to by the parties. "Start Date": the date on which the exchanged payments will begin. "End Date": the date on which the exchanged payments will end. "Float Leg Details": the details of the floating interest payments; separate information for each of the two floating legs. "Events": the various payment and calculation events in the swap transaction, including cash payment, principal payment, interest payment, interest calculation, compound interest calculation, and interest rate reset information. In the present embodiment of this invention, the Interest Rate Float-Float Swap element has the following XML definition:
<!-- Interest Rate Float Float Swap -->
<!ELEMENT interestRateFloatFloatSwap (tradeDate, startDate, endDate,
externalId?, floatLegDetails, floatLegDetails, events?)>
(5) Cap A Cap transaction is one in which one party, in exchange for a premium payment, acquires from another party the right to receive a payment stream from the other party with respect to a specified quantity of one currency if, on the scheduled payment dates, the level of a specified rate or index exceeds an agreed "strike rate" for the period involved. For example, a Member purchases from a Provider an interest rate cap at a strike rate of 8 percent on U.S. Dollars based on the 3-month LIBOR for a period of 12 months, in order to hedge its exposure to increasing interest rates on a 10 million U.S. Dollars floating-rate loan based on the 3-month LIBOR. The Cap element represents such a transaction and includes the following sub-elements and attributes: "Cap Floor Spec": describes the structured elements common to Cap and Floor transactions. "Trade Date": the date on which the trade has been agreed to by the parties. "Settlement Date": the date on which the trade will be settled. "Start Date": the beginning date of the period for which the interest rate is protected. "End Date": the date on which the payment stream will end. "Premium Details": the details of the premium to be paid, as either a percentage ("Premium Percentage") or a specified amount ("Premium Amount"), and the payment date ("Premium Date"). "Strike Rate": the rate that, if exceeded, will trigger the settlement of the transaction. "Buyer": the buyer of the option to be exercised; this is a reference to a Counterparty element. "Writer": the recipient of the premium for the option to be exercised; this is a reference to a Counterparty element. "Volatility Spread": the spread over the volatility calculated using the volatility surface; an additional spread for pricing the cap transaction. "Discount Curve": the definition of the discount curve used to calculate the payment stream. "Forecast Curve": the definition of the forecast curve used to calculate the payment stream. "Notional Amount": the amount used as the basis for calculating the payment stream. "Floating Interest Rate": the floating interest rate. "First Fixing Rate": the interest rate to be used for the first interest calculation period. "Day Count": the day-count method to be used for calculating interest. "Payment Frequency": the frequency of interest/principal payment. "Roll Date": the specific day each month to be used for payment/settlement of interest/principal. "Payment Calendar": the calendar to be used for reference to business holidays. "Rate Reset Calendar": the calendar to be used for reference to business holidays for interest rate resets. "Date Stub": an indicator for an irregular schedule of payments. "Anchor Date": the date to which the payment schedule is anchored, i.e., the end date of the first interest period or specific date of first payment; could be the start of the last interest period if dates generated in reverse. "Amortization Details": details regarding how the payment cashflow should be amortized, including amortization method (em, single payment at end, equal payments over term of stream). "Compounding Details": details regarding how the interest should be compounded, including calculation frequency and rate. In the present embodiment of this invention, the Cap element has the following XML definition:
<!-- Cap -->
<!ENTITY % capFloorSpec "premium details
, strikeRate
, volatilitySpread
, discountCurve?
, forecastCurve?">
<!ELEMENT cap (tradeDate, settlementDate?, startDate, endDate,
externalID?,
%genericSpecDetails; , %floatRateDetails; , %capFloorSpec; ,
events? )>
<!ATTLIST cap buyer IDREF #REQUIRED writer IDREF #REQUIRED>
<!ELEMENT premiumDetails ( (premiumPercentage .vertline. premiumAmount )
,
premiumDate )>
<!ELEMENT premiumAmount (%currencyAmount; )>
<!ATTLIST premiumAmount %payReceiverAmount;>
<!ELEMENT premiumPercentage (#PCDATA )*>
<!ATTLIST premiumPercentage %payReceiverAmount;>
<!ELEMENT volatilitySpread (#PCDATA )>
<!ELEMENT discountCurve (#PCDATA )>
<!ELEMENT forecastCurve (#PCDATA )>
(6) Floor A Floor transaction is one in which one party, in exchange for a premium payment, acquires from another party the right to receive a payment stream from the other party with respect to a specified quantity of one currency if, on the scheduled payment dates, the level of a specified rate or index is less than an agreed "strike rate" for the period involved. For example, a Member purchases from a Provider an interest rate floor at a strike floor level of 8 percent on U.S. Dollars based on the 3-month LIBOR for a period of 12 months, in order to protect its investment returns on a 10 million U.S. Dollars money market investment based on the 3-month LIBOR. The Floor element represents such a transaction and includes the following sub-elements and attributes: "Cap Floor Spec": describes the structured elements common to Cap and Floor transactions. "Trade Date": the date on which the trade has been agreed to by the parties. "Settlement Date": the date on which the trade will be settled. "Start Date": the beginning date of the period for which the interest rate is protected. "End Date": the date on which the payment stream will end. "Premium Details": the details of the premium to be paid, as either a percentage ("Premium Percentage") or a specified amount ("Premium Amount"), and the payment date ("Premium Date"). "Strike Rate": the rate that, if exceeded, will trigger the settlement of the transaction. "Buyer": the buyer of the option to be exercised; this is a reference to a Counterparty element. "Writer": the recipient of the premium for the option to be exercised; this is a reference to a Counterparty element. "Volatility Spread": the spread over the volatility calculated using the volatility surface; an additional spread for pricing the cap transaction. "Discount Curve": the definition of the discount curve used to calculate the payment stream. "Forecast Curve": the definition of the forecast curve used to calculate the payment stream. "Notional Amount": the amount used as the basis for calculating the payment stream. "Floating Interest Rate": the floating interest rate. "First Fixing Rate": the interest rate to be used for the first interest calculation period. "Day Count": the day-count method to be used for calculating interest. "Payment Frequency": the frequency of interest/principal payment. "Roll Date": the specific day each month to be used for payment/settlement of interest/principal. "Payment Calendar": the calendar to be used for reference to business holidays. "Rate Reset Calendar": the calendar to be used for reference to business holidays for interest rate resets. "Date Stub": an indicator for an irregular schedule of payments. "Anchor Date": the date to which the payment schedule is anchored, i.e., the end date of the first interest period or specific date of first payment; could be the start of the last interest period if dates generated in reverse. "Amortization Details": details regarding how the payment cashflow should be amortized, including amortization method (e.g., single payment at end, equal payments over term of stream). "Compounding Details": details regarding how the interest should be compounded, including calculation frequency and rate. In the present embodiment of this invention, the Floor element has the following XML definition:
<!-- Floor -->
<!ENTITY % capFloorSpec "premium details
, strikeRate
, volatilitySpread
, discountCurve?
, forecastCurve?">
<!ELEMENT floor (tradeDate, settlementDate?, startDate, endDate,
externalID?,
%genericSpecDetails; , %floatRateDetails; , %capFloorSpec; ,
events? )>
<!ATTLIST floor buyer IDREF #REQUIRED writer IDREF
#REQUIRED>
<!ELEMENT premiumDetails ( (premiumPercentage .vertline. premiumAmount)
,
premiumDate)>
<!ELEMENT premiumAmount (%currencyAmount; )>
<!ATTLIST premiumAmount %payReceiverAmount;>
<!ELEMENT premiumPercentage (#PCDATA )*>
<!ATTLIST premiumPercentage %payReceiverAmount;>
<!ELEMENT volatilitySpread (#PCDATA )>
<!ELEMENT discountCurve (#PCDATA )>
<!ELEMENT forecastCurve (#PCDATA )>
(7) Fixed Rate Loan/Deposit A Fixed Rate Loan/Deposit transaction is one in which one party borrows a sum of money from another party at a fixed interest rate. For example, a Member borrows from a Provider 1 million U.S. Dollars at a fixed interest rate for one year. The Fixed Loan/Deposit element represents such a transaction and includes the following sub-elements and attributes: "Trade Date": the date on which the loan has been agreed to by the parties. "Start Date": the date on which the loan will begin. "End Date": the date on which the loan will end. "Lender": the lender of the loan; this is a reference to a counterparty element. "Borrower": the borrower of the loan; this is a reference to a Counterparty element. "Notional Amount": the loan amount. "Fixed Interest Rate": the fixed interest rate. "Day Count": the day-count method to be used for calculating interest. "Payment Frequency": the frequency of interest/principal payment. "Roll Date": the specific day each month to be used for payment/settlement of interest/principal. "Payment Calendar": the calendar to be used to generate payment dates. "Date Stub": an indicator for an irregular schedule of loan payments. "Anchor Date": the date to which the payment schedule is anchored, i.e., the end date of the first interest period or specific date of first payment; could be the start of the last interest period if dates generated in reverse. "Amortization Details": details regarding how the loan payment cashflow should be amortized, including amortization method (e.g., single payment at end, equal payments over term of loan). "Compounding Details": details regarding how the loan interest should be compounded, including calculation frequency and rate. In the present embodiment of this invention, the Fixed Loan deposit element has the following XML definition:
<!-- Loan and Deposit -->
<!ELEMENT fixedLoan (tradeDate, startDate, endDate, externalId?,
%genericSpecDetails;
, %fixedRateDetails; , events? )>
<!ATTLIST fixedLoan lender IDREF #REQUIRED
borrower IDREF #REQUIRED>
<!ELEMENT fixedDeposit (tradeDate, startDate, endDate, externalId?,
%genericSpecDetails;
, %fixedRateDetails; , events? )>
<!ATTLIST fixedDeposit lender IDREF #REQUIRED
borrower IDREF #REQUIRED>
<!ENTITY % genericSpecDetails "notionalAmount
, dayCount
, paymentFrequency
, rollDate
, anchorDate?
, paymentCalendar
, dateStub
, amortizationDetails?
, compoundingDetails?">
<!ENTITY % fixedRateDetails " (fixedInterestRate
.vertline. fxRate)">
(8) Floating Rate Loan/Deposit A Floating Rate Loan/Deposit transaction is one in which one party borrows a sum of money from another party at a variable interest rate, generally based on a floating rate index (e.g., London Interbank Offered Rate or "LIBOR"). For example, a Member borrows from a Provider 1 million U.S. Dollars at a variable interest rate for two years. The Floating Loan/Deposit element represents such a transaction and includes the following sub-elements and attributes: "Trade Date": the date on which the loan has been agreed to by the parties. "Start Date": the date on which the loan will begin. "End Date": the date on which the loan will end. "Lender": the lender of the loan; this is a reference to a Counterparty element. "Borrower": the borrower of the loan; this is a reference to a Counterparty element. "Notional Amount": the loan amount. "Floating Interest Rate": the floating interest rate. "First Fixing Rate": the interest rate to be used for the first interest calculation period. "Day Count": the day-count method to be used for calculating interest. "Payment Frequency": the frequency of interest/principal payment. "Roll Date": the specific day each month to be used for payment/settlement of interest/principal. "Payment Calendar": the calendar to be used to generate payment dates. "Rate Reset Calendar": the calendar to be used for reference to business holidays for interest rate resets. "Date Stub": an indicator for an irregular schedule of loan payments. "Anchor Date": the date to which the payment schedule is anchored, i e., the end date of the first interest period or specific date of first payment; could be the start of the last interest period if dates generated in reverse. "Amortization Details": details regarding how the loan payment cashflow should be amortized, including amortization method (em, single payment at end, equal payments over term of loan). "Compounding Details": details regarding how the loan interest should be compounded, including calculation frequency and rate. In the present embodiment of this invention, the Floating Loan/Deposit element has the following XML definition:
<!-- Loan and Deposit -->
<!ELEMENT floatLoan (tradeDate, startDate, endDate, externalId?,
%genericSpecDetails; ,
%floatRateDetails; , events? )>
<!ATTLIST floatLoan lender IDREF #REQUIRED
borrower IDREF #REQUIRED>
<!ELEMENT floatDeposit (tradeDate, startDate, endDate, externalId?,
%genericSpecDetails;
, %floatRateDetails; , events? )>
<!ATTLIST floatDeposit lender IDREF #REQUIRED
borrower IDREF #REQUIRED>
<!ENTITY % genericSpecDetails "notionalAmount
, dayCount
, paymentFrequency
, rollDate
, anchorDate?
, paymentCalendar
, dateStub
, amortizationDetails?
, compoundingDetails?">
<!ENTITY % floatRateDetails "floatingInterestRate
, firstFixingRate?
, rateResetCalendar">
(9) Foreign Exchange Option A Foreign Exchange Option ("FX Option") transaction is one in which one party, in exchange for a premium payment, acquires from another party the right, but not the obligation, to buy (i.e., exercise a put option) or sell (i.e., exercise a call option) a specified quantity of one currency at a specified price on a specified exercise date or during a specified exercise period. For example, a Member pays a premium to a Provider for the right to exercise an option to purchase 1 million Euro for a set price in U.S. Dollars in three months. The FX Option element represents such a transaction and includes the following sub-elements and attributes: "Settlement Date": the date on which the trade will be settled. "Premium Details": the details of the premium to be paid, as either a percentage ("Premium Percentage") or a specified amount ("Premium Amount"), and the payment date ("Premium Date"). "Expiration Date": the expiration date by which the option must be exercised. "Dealt Amount": the specified amount of currency to be converted into the currency to be bought or sold upon exercise of the option. "Settled Amount": the amount of currency to be bought or sold upon exercise of the option. "Delivery Date": the date on which either the cash difference or the underlying contract nominal amount must be exchanged upon exercise of the option. "Delivery Mode": indicator of whether the cash difference ("Cash") or the underlying contract nominal amount ("Physical") must be exchanged upon exercise of the option. "Option Type": the type of option to be exercised ("Put" or "Call"). "Volatility": the definition of the volatility surface used to calculate the option premium. "Buyer": the buyer of the option to be exercised; this is a reference to a Counterparty element. "Writer": the recipient of the premium for the option to be exercised; this is a reference to a Counterparty element. In the present embodiment of this invention, the FX Option element has the following XML definition:
<!-- FX Option -->
<!ENTITY % fxOptionSpec "tradeDate
, settlementDate
, externalId?
, premiumDetails
, expirationDate
, deliveryDate
, optionType
, dealtAmount
, strikeRate?
, settledAmount
, deliveryMode
, volatility?">
<!ELEMENT fxOption (%fxOptionSpec; )>
<!ATTLIST fxOption buyer IDREF #REQUIRED writer IDREF
#REQUIRED>
<!ELEMENT optionType (call .vertline. put )>
<!ELEMENT deliveryMode (physical .vertline. cash )>
<!ELEMENT volatility (#PCDATA )>
<!ELEMENT call (#PCDATA )>
<!ELEMENT put (#PCDATA )>
<!ELEMENT physical EMPTY>
<!ELEMENT cash EMPTY>
(10) Foreign Exchange Swap A Foreign Exchange Swap ("FX Swap") transaction is one in which two parties exchange periodic payment streams, each in a different currency. The first payment stream is delivered at the beginning of the transaction period and the second payment is delivered at the end of the transaction period. The payments may be based upon a specified interest rate. For example, a Member buys a payment stream of 3 million Euro from a Provider in exchange for a payment stream of 1 million U.S. Dollars to be paid six months after the first payment stream. The FX Swap element represents such a transaction and includes the following sub-elements and attributes: "Trade Date": the date on which the trade has been agreed to by the parties. "Near Leg Value Date": the date on which the final payment of the first leg (the "Near Leg") of the swap will be paid. "Far Leg Value Date": the date on which the final payment of the second leg (the "Far Leg") of the swap will be paid. "Notional Amount": the amount used as the basis for calculating the payment streams to be exchanged. "Near Leg Settled Amount": the amount that will be paid under the Near Leg; alternative to Near Leg FXRate. "Near Leg FXRate": the foreign exchange rate of the Near Leg; alternative to Near Leg Settled Amount. Far Leg Settled Amount": the amount that will be paid under the Far Leg; alternative to Far Leg FXRate. Far Leg FXRate": the foreign exchange rate of the Far Leg; alternative to Far Leg Settled Amount. In the present embodiment of this invention, the FX Swap element has the following XML definition:
<!-- FX Swap -->
<!ENTITY % fxSwapSpec "tradeDate
, externalId?
, nearLegValueDate
, farLegValueDate
, notionalAmount
, (nearLegFxRate .vertline. nearLegSettledAmount )
, (farLegFXRate .vertline.farLegSettledAmount )">
<!ELEMENT FXSwap (%fxSwapSpec; )>
<!ELEMENT nearLegValueDate (#PCDATA )>
<!ELEMENT farLegValueDate (#PCDATA )>
<!ELEMENT nearLegFXRate (fxRate )>
<!ELEMENT farLegFXRate ( fxRate )>
<!ELEMENT nearLegSettledAmount (%currencyAmount; )>
<!ATTLIST nearLegSettledAmount %payReceiver;>
<!ELEMENT farLegSettledAmount (%currencyAmount; )>
<!ATTLIST farLegSettledAmount %payReceiver;>
(11) Cross-Currency Fixed-Fixed Swap A Cross-Currency Fixed-Fixed Swap is a type of interest rate swap in which two parties exchange periodic payment streams based on fixed interest rates each in a different currency. The Cross-Currency Fixed-Fixed Swap element represents such a transaction and includes the following sub-elements and attributes: "Trade Date": the date on which the trade has been agreed to by the parties. "Start Date": the date on which the exchanged payments will begin. "End Date": the date on which the exchanged payments will end. "Notional Amount": the amount used as the basis for calculating the payment streams to be exchanged. "Fixed Leg Details": the details of the fixed interest payments; separate information for each of the two fixed legs. "Events": the various payment and calculation events in the swap transaction, including cash payment, principal payment, interest payment, interest calculation, compound interest calculation, and interest rate reset information. In the present embodiment of this invention, the Cross-Currency Fixed-Fixed Swap element has the following XML definition:
<!-- Cross Currency Fixed Fixed Swap -->
<!ELEMENT crossCurrencyFixedFixedSwap (%tenor.elements; ,
fixedLegDetails , fixedLegDetails , events?)>
<!ATTLIST crossCurrencyFixedFixedSwap notionalAmount (Yes .vertline. No
)
#REQUIRED>
(12) Cross-Currency Float-Float Swap A Cross-Currency Float-Float Swap is a type of interest rate swap in which two parties exchange periodic payment streams based on a floating rate index (e.g., LIBOR), each in a different currency. The Cross-Currency Float-Float Swap element represents such a transaction and includes the following sub-elements and attributes: "Trade Date": the date on which the trade has been agreed to by the parties. "Start Date": the date on which the exchanged payments will begin. "End Date": the date on which the exchanged payments will end. "Notional Amount": the amount used as the basis for calculating the payment streams to be exchanged. "Float Leg Details": the details of the floating interest payments; separate information for each of the two fixed legs. "Events": the various payment and calculation events in the swap transaction, including cash payment, principal payment, interest payment, interest calculation, compound interest calculation, and interest rate reset information. In the present embodiment of this invention, the Cross-Currency Float-Float Swap element has the following XML definition:
<!-- Cross Currency Float Float Swap -->
<!ELEMENT crossCurrencyFloatFloatSwap (%tenor.elements; ,
floatLegDetails , floatLegDetails , events?)>
<!ATTLIST crossCurrencyFloatFloatSwap notionalAmount (Yes .vertline. No
)
#REQUIRED>
(13) Cross-Currency Fixed-Float Swap A Cross-Currency Fixed-Float Swap is a type of interest rate swap in which two parties exchange periodic payment streams, where one payment stream is based on a fixed interest rate and the other payment stream is based on a floating rate index (e.g., LIBOR), each in a different currency. The Cross-Currency Fixed-Float Swap element represents such a transaction and includes the following sub-elements and attributes: "Trade Date": the date on which the trade has been agreed to by the parties. "Start Date": the date on which the exchanged payments will begin. "End Date": the date on which the exchanged payments will end. "Notional Amount": the amount used as the basis for calculating the payment streams to be exchanged. "Fixed Leg Details": the details of the fixed interest payments for the fixed leg. "Float Leg Details": the details of the floating interest payments for the floating leg. "Events": the various payment and calculation events in the swap transaction, including cash payment, principal payment, interest payment, interest calculation, compound interest calculation, and interest rate reset information. In the present embodiment of this invention, the Cross-Currency Fixed-Float Swap element has the following XML definition:
<!-- Cross Currency Fixed Float Swap -->
<!ELEMENT CrossCurrencyFixedFloatSwap (%tenor.elements; ,
fixedLegDetails, floatLegDetails, events?)>
<!ATTLIST crossCurrencyFixedFloatSwap notionalAmount (Yes .vertline. No
)
#REQUIRED>
(14) Forward Rate Agreement A Forward Rate Agreement transaction is one in which one party buys a single floating rate payment in exchange for a single fixed rate payment. The fixed rate payment amount is determined by applying a fixed rate of interest to the notional amount of the transaction, while the floating rate payment amount is determined by sampling the value of a specified floating rate option on a specified date and applying the sampled rate to the notional amount. The parties settle the Forward Rate Agreement by netting the effects of the two payments into a single payment made by one or the other of the parties: if the floating rate amount due is greater than the fixed rate amount due, then the floating rate payer pays the excess to the fixed rate payer; conversely, if the fixed rate amount due is greater than the floating rate amount due, then the fixed rate payer pays the excess to the floating rate payer. Settlement occurs at the beginning of the transaction subject to future discounting (i.e., payment of difference in fixed and floating rates). The Forward Rate Agreement element represents such a transaction and includes the following sub-elements and attributes: "Trade Date": the date on which the trade has been agreed to by the parties. "Settlement Date": the date on which payment settlement will be completed. "Start Date": the date on which the transaction will begin. "End Date": the date on which the transaction will end. "Adjusted Start Date": the date on which the transaction will begin, adjusted for holidays. "Adjusted End Date": the date on which the transaction will end, adjusted for holidays. "Notional Amount": the amount used as the basis for calculating the payments to be exchanged. "Fixed Interest Rate": the fixed interest rate for the fixed rate payment. "Interest Index": the details of the floating interest index to be used for the floating rate payment. "Day Count": the day-count method to be used for calculating interest. "Payment Frequency": the frequency of interest/principal payment. "Roll Date": the specific day each month to be used for payment/settlement of interest/principal. "Roll Convention": the convention to be used for rolling the payment dates in the event the date falls on a holiday. "Holiday Calendar": the calendar to be used for reference to business holidays. "Fixing Date": the date on which the rate to be used for settlement is fixed. "Rate Reset Calendar": the calendar to be used for determining the dates on which to reset floating interest rates. "Buyer": the buyer of the floating rate payment; this is a reference to a Counterparty element. "Seller": the seller of the floating rate payment; this is a reference to a Counterparty element. "Premium Details": the details of the premium to be paid, as either a percentage ("Premium Percentage") or a specified amount ("Premium Amount"), and the payment date ("Premium Date"). In the present embodiment of this invention, the Forward Rate Agreement element has the following XML definition:
<!-- Forward Rate Agreement -->
<!ELEMENT forwardRateAgreement (tradeDate, settlementDate?,
startDate, endDate,
externalId?, adjustedStartDate, adjustedEndDate ,
notionalAmount, dayCount, rollConvention, rollDate,
holidayCalendar, fixedInterestRate, interestIndex,
fixingDate, rateResetCalendar, premiumDetails? )>
<!ATTLIST forwardRateAgreement buyer IDREF #REQUIRED>
<!ATTLIST forwardRateAgreement seller IDREF #REQUIRED>
<!ELEMENT adjustedStartDate (#PCDATA )>
<!ELEMENT adjustedEndDate (#PCDATA )>
<!ELEMENT fixingDate (#PCDATA )>
(15) Customized Trade In addition to the financial transactions represented by the elements described above, the present embodiment of this invention supports customized trades and transactions created by Members and/or Providers, so long as such transactions are permitted by applicable law. Such customized transactions might include hybrid trades, where one or more aspects of one type of trade are combined with those of another. For example, a party might structure a foreign exchange "swaption" in which a stream of periodic payments in one currency is exchanged for the right to buy a specified quantity of another currency at a specified price on a specified date. FinXML enables the representation of customized transactions through the combination of elements that comprise different types of transactions. Using FinXML, a party can specify the element fields and values that it wishes to comprise the particular customized transactions. The Customized Trade element represents such a transaction and includes the following sub-elements and attributes: "Field Name": a particular component included in the transaction; separate information for each component; paired with "Field Value". "Field Value": the value of a particular component included in the transaction; separate information for each component; paired with "Field Name". "Buyer": the buyer of the customized trade; this is a reference to a Counterparty element. "Seller": the seller of the customized trade; this is a reference to a Counterparty element. In the present embodiment of this invention, the Customized Trade element has the following XML definition:
<!-- Customized Trade -->
<!ELEMENT customizedTrade ( (fieldName, fieldValue ) * )>
<!ATTLIST customizedTrade buyer IDREF #REQUIRED>
<!ATTLIST customizedTrade seller IDREF #REQUIRED>
<!ELEMENT fieldName (#PCDATA )>
<!ELEMENT fieldValue (#PCDATA )>
(c) Trade Specific Elements In the present embodiment of this invention, FinXML includes a number of elements that represent details common to one or more of the Trade Type elements 530. Such elements may also be included in customized trades. (1) Generic Trade Details Generic trade details include information relating to notional amounts and interest rate, amortization, and compounding calculations that are common to different types of trades. The "Generic Spec Details" element represents such information and includes the following sub-elements and attributes: "Notional Amount": the transaction amount. "Day Count": the day-count method to be used for calculating interest. "Payment Frequency": the frequency of interest/principal payment (e.g., monthly, quarterly, semi-annually). "Roll Date": the specific day each month to be used for payment/settlement of interest/principal. "Anchor Date": the date to which the payment schedule is anchored, i.e., the end date of the first interest period or specific date of first payment. "Payment Calendar": the calendar to be used for reference to business holidays. "Date Stub": an indicator for a schedule of loan payments in which the payment period differs (i.e., is offset from the start of ) from all other payment periods. "Amortization Details": details regarding how the loan payment cashflow should be amortized, including amortization method (e.g., single payment at end, equal payments over term of loan). "Compounding Details": details regarding how the loan interest should be compounded, including calculation frequency and rate. In the present embodiment of this invention, the Generic Spec Details element has the following XML, definition:
<!ENTITY % genericSpecDetails "notionalAmount
, dayCount
, paymentFrequency
, rollDate
, anchorDate?
, paymentCalendar
, dateStub
, amortizationDetails?
, compoundingDetails?">
(2) Fixed Rate Details Fixed rate details include information relating to fixed interest rates. The "Fixed Spec Details" element represents such information and includes the following sub-elements and attributes: "Fixed Interest Rate": the fixed interest rate. "FX Rate": the foreign exchange rate at which a trade will be executed. In the present embodiment of this invention, the Fixed Spec Details element has the following XML definition:
<!ENTITY % fixedSpecDetails "fixedInterestRate .vertline.
fxRate">
(3) Floating Rate Details Floating rate details include information relating to floating interest rates that are based on a floating rate index (e.g., LIBOR). The "Floating Spec Details" element represents such information and includes the following sub-elements and attributes: "Floating Interest Rate": the floating interest rate. "First Fixing Rate": the interest rate to be used for the first interest calculation period. "Rate Reset Calendar": the calendar to be used for reference to business holidays for interest rate resets. In the present embodiment of this invention, the Floating Spec Details element has the following XML definition:
<!ENTITY % floatingSpecDetails "floatingInterestRate, firstFixingRate?,
rateResetCalendar">
(4) Fixed Leg Details A number of the transactions described above include multiple "legs," where each leg is a series of payments or cashflows. Such legs can be "fixed" or "floating." A "fixed leg" is a payment stream based on a fixed interest rate. The "Fixed Leg Details" elements represents information regarding the fixed leg of a trade and includes generic trade details (described above in "Generic Spec Details" element), fixed rate details (described above in "Fixed Spec Details" element), financial events details (described below in "Events" element), and the following additional sub-elements and attributes: "Leg ID": identifier of a particular leg of a trade. "Payer": the payer of the fixed leg in a trade; this is a reference to a Counterparty element. "Receiver": the recipient of the proceeds of the fixed leg in a trade; this is a reference to a Counterparty element. In the present embodiment of this invention, the Fixed Leg Details element has the following XML definition:
<!ELEMENT fixedLegDetails (%genericSpecDetails; ,
%fixedRateDetails; , events? )>
<!ATTLIST fixedLegDetails legID ID #REQUIRED >
<!ATTLIST fixedLegDetails payer IDREF #REQUIRED >
<!ATTLIST fixedLegDetails receiver IDREF #REQUIRED >
(5) Floating Leg Details A "floating leg" is a payment stream based on a floating interest rate. The "Float Leg Details" elements represents information regarding the floating leg of a trade and includes generic trade details (described above in "Generic Spec Details" element), floating rate details (described above in "Float Spec Details" element), financial event details (described below in "Events" element), and the following additional sub-elements and attributes: "Leg ID": identifier of a particular leg of a trade. "Payer": the payer of the floating leg in a trade; this is a reference to a Counterparty element. "Receiver": the recipient of the proceeds of the floating leg in a trade; this is a reference to a Counterparty element. In the present embodiment of this invention, the Float Leg Details element has the following XML definition:
<!ELEMENT floatLegDetails (GenericSpecDetails; , %floatRateDetails; ,
event ,>
<!ATTLIST floatLegDetails legID ID #REQUIRED >
<!ATTLIST floatLegDetails payer IDREF #REQUIRED >
<!ATTLIST floatLegDetails receiver IDREF #REQUIRED >
(d) Financial Event Elements In the present embodiment of this invention, FinXML includes a number of elements that represent details common to certain Trade Type elements 530, including customized trades, that relate to optional events during the life cycle of a trade such as premium payment, interest payment, contingent payment, and interest calculation. "Events" element 900, shown in FIG. 6, describes such information and includes the following sub-elements: "Cash Payment" 910, "Principal Payment" 920, "Interest Payment" 930, "Interest Calculation" 940, "Compound Interest Calculation" 950, and "Contingent Payment" 960. In the present embodiment of this invention, Events element 900 has the following XML definition:
<!ELEMENT events ((cashPayment .vertline. principalPayment .vertline.
interestPayment .vertline.
contingentPayment .vertline. interestCalculation .vertline.
compoundInterestCalculation )+ )>
<!ATTLIST events id ID #IMPLIED >
(1) Cash Payment Cash Payment element 910 describes information relating to cash payments to be made as a part of certain trades, and includes the following sub-elements and attributes: "Currency": the currency of the cash payment. "Amount": the amount of the cash payment. "Payment Date": the date on which the cash payment is to be made. "ID": the identifier of the particular cash payment. "Type": the indicator of type of payment (e.g., "Premium" or "Fees"). "Payer": the payer of the cash payment; this is a reference to a Counterparty element. "Receiver": the recipient of the cash payment; this is a reference to a Counterparty element. In the present embodiment of this invention, Cash Payment element 910 has the following XML definition:
<!ELEMENT cashPayment (currency, amount, paymentDate )>
<!ATTLIST cashPayment id ID #REQUIRED
type ( Premium .vertline. Fees ) #REQUIRED
payer IDREF #REQUIRED
receiver IDREF #REQUIRED >
(2) Principal Payment Principal Payment element 920 describes information relating to principal payments to be made as a part of certain trades, and includes the following sub-elements and attributes: "Currency": the currency of the principal payment. "Amount": the amount of the principal payment. "Payment Date": the date on which the principal payment is to be made. "ID": the identifier of the particular principal payment. "Payer": the payer of the principal payment; this is a reference to a Counterparty element. "Receiver": the recipient of the principal payment; this is a reference to a Counterparty element. In the present embodiment of this invention, Principal Payment element 920 has the following XML definition:
<!ELEMENT principalPaymentcurrency, amount, paymentDate )>
<!ATTLIST principalPayment id ID #REQUIRED
payer IDREF #REQUIRED
receiver IDREF #REQUIRED >
(3) Interest Payment Interest Payment element 930 describes information relating to interest payments to be made as a part of certain trades, and includes the following sub-elements and attributes: "Currency": the currency of the interest payment. "Amount": the amount of the interest payment. "Payment Date": the date on which the interest payment is to be made. "Start Date": the start date of the interest period to which the interest payment pertains. "End Date": the end date of the interest period to which the interest payment pertains. "ID": the identifier of the particular interest payment. "Payer": the payer of the interest payment; this is a reference to a Counterparty element. "Receiver": the recipient of the interest payment; this is a reference to a Counterparty element. "Interest Type": the indicator of type of interest payment (e.g., "Coupon", "Swap", "Loan", "Deposit", or "Other"). "Calculations": the identifier of the particular interest calculation periods. In the present embodiment of this invention, Interest Payment element 930 has the following XML definition:
<!ELEMENT interestPayment (currency, paymentDate, startDate,
endDate )>
<!ATTLIST interestPayment id ID #REQUIRED
payer IDREF #REQUIRED
receiver IDREF #REQUIRED
interestType (Coupon .vertline. Swap .vertline. Loan
.vertline. Deposit .vertline. Other)
#IMPLIED
calculations IDREFS #REQUIRED >
(4) Contingent Payment Contingent Payment element 960 describes information relating to contingent payments to be made in the settlement of certain trades after the exercise of an option, and includes the following sub-elements and attributes: "Underlying Amount": the amount of the option-underlying instrument. "Settlement Amount": the amount to be paid in settlement of the exercise of the option in return for the underlying instrument. "Expiration Date": the date of expiry of the option. "Exercise Begin Date": the first date on which the option may be exercised. "Exercise End Date": the last date on which the option may be exercised. "Exercise Rule": the rule governing normal exercise of the option (e.g., "American"--the option may be exercised on any day within a given period; "European"--the option may only be exercised on the option expiration date). "Exercise Condition": any conditions that must be met to permit exercise of the option (e.g., the 3-month LIBOR rate must be greater than 4.5% on the exercise date). "Volatility": the volatility value to be used when valuing the option. "ID": the identify of the particular interest payment. "Payer": the party responsible for delivering the option underlying instrument; this party will receive the settlement amount in exchange for the option underlying instrument. "Receiver": the recipient of the option-underlying instrument; this party will pay the settlement amount as the price for exercising the option. "Option Type": the nature of the option (e.g., "Call"--an option to buy the underlying instrument at the exercise price; "Put"--an option to sell the underlying instrument at the exercise price). "Delivery Type": an indicator describing whether the Payer will physically deliver the option underlying instrument to the Receiver or, alternatively, that the transaction will be settled for cash where the option writer will, upon exercise, pay to the option holder the difference between the value of the underlying instrument and the exercise price. In the present embodiment of this invention, Contingent Payment element 960 has the following XML definition:
<!ELEMENT contingentPayment (underlyingAmount, settlementAmount,
expirationDate, exerciseBeginDate,
exerciseEndDate, exerciseRule, exerciseCondition, volatility)>
<!ATTLIST contingentPayment id ID #REQUIRED
payer IDREF #REQUIRED
receiver IDREF #REQUIRED
optionType (call .vertline. put)#REQUIRED
deliveryType (deliverable .vertline. non-deliverable)
#REQUIRED>
<!ELEMENT underlyingAmount (currency, amount)>
<!ELEMENT settlementAmount (currency, amount)>
<!ELEMENT exerciseBeginDate (#PCDATA)>
<!ELEMENT exerciseEndDate (#PCDATA)>
<!ELEMENT exerciseRule (#PCDATA)>
<!ELEMENT exerciseCondition (#PCDATA)>
<!ELEMENT volatility (#PCDATA)>
(5) Interest Calculation Interest Calculation element 940 describes information relating to an interest amount calculated for a given period within a particular interest payment, and includes the following sub-elements and attributes: "ID": the identifier of the particular interest calculation period. "Resets": the identifier of the particular rate reset series. "Notional Amount": the amount involved in the interest calculation. "Calculation Date": the date on which the interest calculation is performed. "Start Date": the start date of the interest period for which the interest calculation is to be performed. "End Date": the end date of the interest period for which the interest calculation is to be performed. "Amount": the calculated interest amount. "Day Count": the day-count method to be used for performing the interest calculation. "%InterestRate.Elements": definition of the type of interest rate involved (e.g., "Fixed" or "Floating"). In the present embodiment of this invention, Interest Calculation element 940 has the following XML definition:
<!ELEMENT interestCalculation ((%interestRate.elements; )?,
notionalAmount, calculationDate, startDate, endDate, amount?,
dayCount )>
<!ATTLIST interestCalculation id ID #REQUIRED
resets IDREFS #IMPLIED >
(6) Compound Interest Calculation Compound Interest Calculation element 950 describes information relating to a compound interest amount calculated for a given period within a particular interest payment, and includes the following sub-elements and attributes: "ID": the identifier of the particular interest calculation period. "Rate": the identifier of the particular interest rate. "Resets": the identifier of the particular rate reset series. "Notional Amount": the amount involved in the compound interest calculation. "Calculation Date": the date the compound interest calculation is performed. "Start Date": the start date of the interest period for which the compound interest calculation is to be performed. "End Date": the end date of the interest period for which the compound interest calculation is to be performed. "Amount": the calculated compound interest amount. "%InterestRate.Elements": definition of the type of interest rate involved (e.g., "Fixed" or "Floating"). In the present embodiment of this invention, Compound Interest Calculation element 950 has the following XML definition:
<!ELEMENT compoundInterestCalculation ((fixedInterestRate .vertline.
floatingInterestRate)?,
calculationDate, startDate, endDate, amount)>
<!ATTLIST compoundInterestCalculation id ID #REQUIRED
resets IDREF #REQUIRED
rate IDREF #IMPLIED>
(e) Calculation Elements In the present embodiment of this invention, FinXML includes a number of elements that represent details regarding calculations to be performed in certain Trade Type elements 530, including customized trades. These elements relate to compounding, amortization, and calculation frequency. (1) Compounding Details The "Compounding Details" element describes information relating to any compounding calculations that need to be performed in a particular transaction. This typically arises when the actual interest payment frequency is less than the interest calculation frequency. For example, if interest is calculated every three months but paid every 6 months, then the interest calculated at the end of the 3-month period would be compounded and paid along with the interest calculated for the fourth through sixth months. The Compounding Details element includes the following sub-element: "Calculation Frequency": the frequency at which interest calculations should be performed in a multi-period transaction. In the present embodiment of this invention, the Compounding Details element has the following XML definition:
<!ELEMENT compoundingDetails (calculationFrequency)>
(2) Amortization Details The "Amortization Details" element describes information relating to any amortization calculations that need to be performed in a particular swap transaction. If the amortization method is defined to be "bullet", principal will be paid in one lump sum at maturity, whereas under "equal" amortization, principal will be paid in equal installments during the life of the swap transaction. The Amortization Details element includes the following sub-elements and attributes: "Amortization Frequency": the frequency at which amortization will be performed in a particular transaction (e.g., semi-annual or annual). "Amortization Method": the amortization method (e.g., "bullet" or "equal"). In the present embodiment of this invention, the Amortization Details element has the following XML definition:
<!ELEMENT amortizationDetails (amortizationFrequency )>
<!ATTLIST amortizationDetails amortizationMethod %amortMethod;
#REQUIRED>
(3) Calculation Frequency The "Calculation Frequency" element describes information relating to the frequency of a particular calculation to be performed. The Calculation Frequency element includes the following sub-elements and attributes: "Convention": the particular calculation methodology based on the market convention (e.g., "IMM", "FRN", "Eurodollar", or "Normal"). "End of Month": indicator of whether the particular calculation should be moved to the end of the month. "Term": the period of time for a single calculation period (e.g., 3-months, 6-months, etc.). In the present embodiment of this invention, the Calculation Frequency element has the following XML definition:
<!ELEMENT calculationFrequency (term )>
<!ATTLIST calculationFrequency convention (IMM .vertline. FRN .vertline.
Eurodollar .vertline.
Normal ) `Normal`
endOfMonth (Yes .vertline. No) #REQUIRED >
(4) Payment Frequency The "Payment Frequency" element describes information relating to the frequency of a particular payment to be made. The Payment Frequency element includes the following sub-elements and attributes: "Convention": the particular calculation methodology based on the market convention (e.g., "IMM", "FRN", "Eurodollar", or "Normal"). "End of Month": indicator of whether the particular payment should be moved to the end of the month. "Term": the term of the interest index used in calculating the particular payment (e.g., 3-months, 6-months, etc.). In the present embodiment of this invention, the Payment Frequency element has the following XML definition:
<!ELEMENT paymentFrequency (term )>
<!ATTLIST paymentFrequency convention (IMM .vertline. FRN .vertline.
Eurodollar .vertline.
Normal ) `Normal`
endOfMonth (Yes .vertline. No ) #REQUIRED >
(5) Amortization Frequency The "Amortization Frequency" element describes information relating to the frequency of a particular amortization to be performed. The Amortization Frequency element includes the following sub-elements and attributes: "Convention": a particular calculation methodology based on the market convention (e.g., "IMM", "FRN", "Eurodollar", or "Normal"). "End of Month": indicator of whether the particular amortization should be moved to the end of the month. "Term": the period of time for a single amortization calculation period (e.g., 3-months, 6-months, etc.). In the present embodiment of this invention, the Payment Frequency element has the following XML definition:
<!ELEMENT paymentFrequency (term )>
<!ATTLIST paymentFrequency convention (IMM .vertline. FRN .vertline.
Eurodollar .vertline.
Normal ) `Normal`
endOfMonth (Yes .vertline. No) #REQUIRED >
ii. Reference Data Reference data describes the profile information specific to Members and Providers that will be referenced in any transactions engaged in by such parties. The FinXML syntax represents this profile information with the following elements: "Organization" element 710 (FIG. 4), "Contact Information" element 730 (FIG. 4), "Address" element 765 (FIG. 4), "Credit Rating" element 805 (FIG. 4), "Legal Entity" element 605 (FIG. 5), and "Book" element 625 (FIG. 5). (a) Organization Organization element 710 (as shown in FIG. 4) describes the organizational information regarding a Disclosed Party 705. Organization element 710 includes the following sub-elements and attributes: "Organization Name" 715: the full name of the organization. "Organization Short Name" 720: the short name of the organization. "Address" 725: the address of the organization. In the present embodiment of this invention, Organization element 710 has the following XML definition:
<!ELEMENT organization (organizationShortName, organizationName,
address )>
<!ELEMENT organizationShortName (#PCDATA )>
<!ELEMENT organizationName (#PCDATA )>
(b) Contact Information Contact Information element 730 (as shown in FIG. 4) describes the information necessary to contact a Disclosed Party 705 during the transaction process. Contact Information element 730 includes the following sub-elements and attributes: "Contact Name" 735: name of the specific contact within the party. "Contact ID": the identifier of the particular contact. "Telephone" 740: the telephone details of the party. "Fax" 745: the fax details of the party. "Telex" 750: the telex details of the party. "Email" 755: the electronic mail details of the party. "URL" 760: the Uniform Resource Locator details of the party. In the present embodiment of this invention, Contact Information element 730 has the following XML definition:
<!ELEMENT contactInformation (contactName, (telephone .vertline. fax
.vertline. telex .vertline.
email .vertline. url)* )>
<!ATTLIST contactInformation contactID #REQUIRED
default (Y .vertline. N ) #REQUIRED >
<!ELEMENT contactName (#PCDATA )>
<!ELEMENT telex (#PCDATA )>
<!ELEMENT telephone (#PCDATA )>
<!ELEMENT fax (#PCDATA )>
<!ELEMENT email (#PCDATA )>
<!ELEMENT URL (#PCDATA )>
(c) Address Address element 765 (as shown in FIG. 4) describes the registered address information of the Disclosed Party 705. Address element 765 includes the following sub-elements and attributes: "Address1" 770: the first line of the street address of the party. "Address2" 775: the second line of the street address of the party. "City" 780: the city of the party. "State-Province-County" 785: the state, province, and/or county of the party. "Zip Postal Code" 790: the zip or postal code of the party. "Country" 795: the country of the party. "SWIFT Address" 800: the Bank-identifier Code ("BIC") of the party (as assigned by S.W.I.F.T. sc). In the present embodiment of this invention, Address element 765 has the following XML definition:
<!ELEMENT address (address1, address2, city, stateProvinceCounty,
zipPostalCode, country, swiftAddress?)>
<!ELEMENT address1 (#PCDATA )>
<!ELEMENT address2 (#PCDATA )>
<!ELEMENT city (#PCDATA )>
<!ELEMENT stateProvinceCounty (#PCDATA )>
<!ELEMENT zipPostalCode (#PCDATA )>
<!ELEMENT country (#PCDATA )>
<!ELEMENT swiftAddress (#PCDATA )>
(d) Credit Rating Credit Rating element 805 (as shown in FIG. 4) describes the details of the credit rating of the Disclosed Party 705 or Undisclosed Party 835, as rated by standard credit rating agencies. Credit Rating element 805 includes the following sub-elements and attributes: "Agency" 810: the name of the credit rating agency that provided the credit rating of the party. "Rating" 815: the actual rating value (e.g., AAA, BB, ed.) of the party provided by the credit rating agency. "Country" 820: the country to which the party is assigned for purposes of the credit rating by the credit rating agency. "Industry Group" 825: the industry group to which the party is assigned for purposes of the credit rating by the credit rating agency. "Industry" 830: the industry to which the party is assigned for purposes of the credit rating by the credit rating agency. In the present embodiment of this invention, Credit Rating element 805 has the following XML definition:
<!ELEMENT creditRating (agency, rating, country, industryGroup,
industry )>
<!ELEMENT agency (#PCDATA )>
<!ELEMENT rating (#PCDATA )>
<!ELEMENT name (#PCDATA )>
<!ELEMENT industryGroup (#PCDATA )>
<!ELEMENT industry (#PCDATA )>
(e) Legal Entity Legal Entity element 605 (as shown in FIG. 5) describes the details of any legal entities (e.g., subsidiaries or affiliate companies) associate with an Internal Party 600 (as shown in FIG. 5). Legal Entity element 605 includes the following sub-elements and attributes: "ID" 608: the identifier of the legal entity. "Short Name" 610: the short name of the legal entity. "Description" 615: the description of the legal entity. "Parent" 620: the name of the parent organization of the legal entity. In the present embodiment of this invention, Legal Entity element 605 has the following XML definition:
<!ELEMENT legalEntity (shortName, description, parent)>
<!ATTLIST legalEntity id ID #IMPLIED>
(f) Trading Book Book element 625 (as shown in FIG. 5) describes the details of any internal trading book associated with the transaction by a party. Book element 625 includes the following sub-elements and attributes: "ID": the identifier of the trading book. "Type": the type of trading book. "Short Name" 630: the short name of the trading book. "Name" 635: the full name of the trading book. "Description" 640: the description of the trading book. "Reporting Currency" 645: the reporting currency of the trading book. In the present embodiment of this invention, Book element 625 has the following XML definition:
<!ELEMENT book (shortName, name, description, reportingCurrency )>
<!ATTLIST book id ID #REQUIRED
type CDATA #IMPLIED >
iii. Market Data Market data describes information obtained from market sources for use in financial transactions. FinXML represents this information with the following elements: "Floating Interest Rate" element and "Interest Index" element. (1) Floating Interest Rate The "Floating Interest Rate" element describes information relating to the floating interest rate that can be used in a transaction. The Floating Interest Rate element includes the following sub-elements and attributes: "ID": the identifier of the particular floating interest rate definition. "Interest Index": the details of a particular index used for a floating interest rate, including currency ("Currency"), term ("Term"), and name ("Index Name"). "Spread": the differential (plus or minus) to be applied to the index rate in order to determine the floating interest rate. In the present embodiment of this invention, the Floating Interest Rate element has the following XML definition:
<!ELEMENT floatingInterestRate (interestIndex, spread )>
<!ATTLIST floatingInterestRate id ID #IMPLIED >
(2) Interest Index The "Interest Index" element describes information relating to the interest index used to calculate the floating interest rate. The Interest Index element includes the following sub-elements and attributes: "ID": the identifier of the particular interest index. "Currency": the currency of the interest index. "Term": the term of the interest index (e.g., 3-months, 6-months, etc.). "Index Name": the name of the interest index (e.g., "LIBOR"). In the present embodiment of this invention, the Interest Index element has the following XML definition:
<!ELEMENT interestIndex (currency, term, indexName )>
<!ATTLIST interestIndex id ID #IMPLIED >
<!ELEMENT indexName (#PCDATA)>
2. "Connect" Processor In the present embodiment of this invention, the Connect Processor 20 (as shown in FIG. 1) provides the means for communicating information related to financial transactions between users (i.e., Members and Providers) and the CFOWeb System. Connect Processor 20 performs this function by converting FinXML (or other XML) documents to/from financial (Java) objects using proprietary stylesheets created in XSL, known as "FinScript", as will be described below. In the present embodiment of this invention, both Connect Processor 20 and Connect Messaging Server 90 process messages between users and the CFOWeb System and convert FinXML (or other XML) documents to/from financial (Java) objects. Whereas Connect Processor 20 performs such conversion between FinXML (or other XML) documents and the proprietary objects of Members and Providers, Connect Messaging Server 90 performs such conversion between FinXML (or other XML) documents and the proprietary objects of the CFOWeb System. Connect Messaging Server 90 provides centralized (within the CFOWeb System) messaging and conversion functionality, while Connect Processor 20 provides distributed messaging and conversion functionality at Member and Provider client sites. Therefore, in the present embodiment of this invention, descriptions of the messaging and conversion functionality of Connect Processor 20 are also applicable to Connect Messaging Server 90. a. Functional Overview FIG. 7 illustrates an overview of the Connect Processor and its functionality. Connect Processor 1010 (including Connect Messaging Server) serves as an intermediary between the CFOWeb System 1000, including its various servers (as shown in FIG. 1), and the systems of Members and Providers. Connect Processor 1010 processes "messages" and "trades." Messages include communications between Members/Providers and the various servers of CFOWeb System 1010 (e.g., chat, e-mail, reports, portfolio management, etc.) that describe actions and events to be performed. Messages include trade information regarding financial transactions between Members and Providers. Note, however, that not all messages include information regarding specific financial transactions. Members and Providers send requests for price quotes, price quotes, and other messages via an automated message broker 1150, which in turn sends such information through automated connection 1140 to a messaging middleware client application 1130 that is in communication with Connect Processor 1010. Messaging middleware client application 1130 sends the information, in the form of XML streams 1120 to Connect Processor 1010. Connect Processor 1010 converts 1100 the XML information into "Connect" message objects (including trade objects) 1105 (as will be described below). Connect Processor 1010 processes 1070 the message objects 1105 and, if related to trades, sends the message objects 1105 to the CFOWeb System 1000, including the content 1060 provided by the Member or Provider. Alternatively, if the message objects 1105 do not include information regarding specific financial transactions and relate to non-trade functions on CFOWeb System 1000, Connect Processor 1010 will send the message objects 1105 as actions or events to be performed at one of the system servers. Connect Processor 1010 processes 1070 messages 1050 (which may include trade information) to Members or Providers by converting them into message objects 1075. In addition, Connect Processor 1010 processes actions and events 1030 occurring at any of the system servers by converting them into message objects 1075. Next, Connect Processor 1010 converts 1090 the message objects 1075 into XML documents 1110 (which may be in the form of FinXML documents). Connect Processor 1010 sends the resulting XML documents 1110 (e.g., a price quote or price quote request) to messaging middleware client application 1130. Messaging middleware client application 1130 sends the XML documents 1110 to the automated message broker 1150 of the appropriate Member or Provider through automated connection 1140, for conversion into objects. Note that in parallel to the processing and conversion of messages and objects from CFOWeb System 1000, Connect Processor 1010 routes the appropriate destination 1020 and addressing information 1080 for the particular Member or Provider that will receive the XML documents 1110. The XML documents (which may be in the form of FinXML documents) will be converted into objects appropriate for processing by the Member or Provider (as described below). b. Architecture FIG. 8 shows the architecture of the Connect Processor 3275 in an embodiment of this invention. CFOWeb System 3280 includes Outbound Queue 3200 and Inbound Queue 3205 for the storage of outgoing messages 3210 and incoming messages 3270, respectively. In this embodiment, messages 3210 and 3270 are in "Java Messaging Server" ("JMS") format. Connect Processor 3275 includes Dispatcher module 3215, which extracts the message "payload" 3220 from message 3210 and passes the payload 3220 as a Java object to the appropriate Message Handler 3225. Payload 3220 contains the information represented by the FinXML "Trade" element (described above and in FIG. 3), including information regarding the parties engaged in the transaction and the type of transaction. Connect Processor 3275 contains one or more Message Handlers 3225; a different Message Handler 3225 can be constructed to handle each type of message to be received by the Member or Provider. Using payload 3220, the appropriate Message Handler 3225 will invoke actions 3230 on the target Member or Provider system 3235, where the action is based on the information contained in payload 3220. The Member/Provider system 3235 communicates with Message Handler 3225 by sending a synchronous response 3240. The Member/Provider system 3235 sends an asynchronous response 3245 to Message Constructor Servlet 3250. Message Constructor Servlet 3250 enables the Member/Provider system 3235 to asynchronously construct messages for the CFOWeb System 3280 by sending parameters via transfer protocol (e.g., HTTP/IP) calls. Message Constructor Servlet 3250 will send the asynchronous message 3255 to Message Sender Service 3265. Message Sender Service 3265 also receives synchronous messages 3260 from Message Handler 3225. Message Sender Service 3265, in turn, forwards the messages 3270 to Inbound Queue 3205 of CFOWeb System 3280. c. Message Structure FIG. 9 shows the structure of the messages 1600 that are distributed by the Connect Processor between the CFOWeb System and systems of Members and Providers, in an embodiment of this invention. The system uses the messages to communicate all system events and transactions among system users. There are two categories of messages: "Workflow" messages and "Control" messages. Workflow messages are the main messages that describe the structure and value of transactions, deliver information to and from system servers for portfolio management, trading, and other functions, and deliver information between Members and Providers. Control messages communicate acknowledgement and exception information. In this embodiment, each message 1600 is expressed in XML in Java Messaging Server" ("JMS") format. Each message 1600 consists of JMS-based middleware 1610 and document 1620. Middleware 1610, which may be an off-the-shelf product, includes communications protocol (e.g., HTTP/IP, SSL, TCP) and message administration and logging functionality that enable the reliable transmission of XML documents across networks and between the CFOWeb System and the Connect Processor. Document 1620, which is an XML document, includes header 1630 and message detail 1660. Header 1630, in turn, includes message identification 1640 and routing information 1650. Message identification 1640 includes the message type (e.g., Workflow or Control), a message identifier, and a date/time stamp. Routing information 1650 identifies the message source and destination. Such information is managed by a routing table within the CFOWeb System that maps source and destination identifiers against participating Members and Providers. Message detail 1660 includes text describing the purpose and detail of the message and may contain the payload 1670, which includes FinXML Trade information 1680 (represented by the FinXML "Trade" element described above and in FIG. 3) that defines the transaction. i. XML Message Structure FIG. 10 illustrates the structure of a Connect message, as expressed in XML, in the present embodiment of this invention. (a) Message Root Tag Message root tag 1700 (or "CFOWeb Connect" root tag) identifies the message as a Connect message, and includes the following attributes: "System Name": the name of the system that generated the message, e.g., "CFOWeb", "Connect" (for a Member or Provider system), or the name of a third-party system, if applicable. "System ID": the identifier of the system that generated the message. "Version": the version of the Connect message vocabulary; may differ for different Member/Provider configurations. "Test": identifier of messages as "test" ("Y") or "live" ("N"); a test message in a live environment will be communicated but not included and acted on in the business workflow. In the present embodiment of this invention, the Message root tag 1700 has the following XML definition:
<!ELEMENT Message (header, (workflowMsg .vertline. controlMsg )
)>
<!ATTLIST Message systemName CDATA #REQUIRED
systemId CDATA #REQUIRED
version CDATA #FIXED `1.0`
test (Y .vertline. N ) #REQUIRED >
(b) Header Header element 1705 describes message identification information, and includes the following attributes: "Conversation ID": a system-assigned sequence number that identifies the message as belonging to a particular conversation initiated by one of the communicating parties. "Sequence ID": sequence number generated separately by each communicating node that is used as a reference by control messages and to provide chronological ordering of messages. "Sent Time": a system-assigned timestamp which indicates the time that the XML document was formed. In the present embodiment of this invention, the Header element 1705 has the following XML definition:
<!ELEMENT header (routing )>
<!ATTLIST header conversationId CDATA #REQUIRED
sequenceId CDATA #REQUIRED
sentTime CDATA #REQUIRED >
(c) Routing Information Routing element 1710 contains reference routing information about the source and destination of the message. This information includes the system-defined identifier of Members and Providers. The routing informatio | ||||||
