FpML (Financial products Markup Language) is the open source XML standard for electronic dealing and processing of OTC derivatives. It establishes a protocol for sharing information electronically on, and dealing in swaps, derivatives and structured products. FpML has been designed to be modular, easy-to-use and in particular intelligible to practitioners in the financial industry. It is expected to become the standard for the derivatives industry in the rapidly growing field of electronic commerce. The FpML message structure is a little distinct in as much as XML element attributes are used as qualifiers, name spaces are used for few elements, and the payment date elements involve computation of dates based on Business day conventions. In a series of blogs we are showing a new approach to Data Integration that is followed in our MOND Platform. MOND hides all the complexities of FpML message creation from the developers and analysts who develop the mapping from the source message to the FpML message. In this example, I will show you how we can create a FpML Execution Advice  document with 10 fields in less than 10 minutes. Just for this example, the target document values are hardcoded. Ina real life map, the values will be fetched from a database or from source document or a combination of both. In the new data transformation approach we use the principle of separating the Business logic from the structure of the document. You may note that this map does not require any knowledge of FpML message structures.

Sample Java Code:

[java]

mondEngine.setTargetHeaderValue("DocumentDateTimeStamp","2010-04-22T16:40:24");

mondEngine.setTargetHeaderValue("Party CUSIPNumber","XXX213S7"); //actual time should be stored here

mondEngine.setTargetHeaderValue("CorrelationIdentifier","133064");

mondEngine.setTargetHeaderValue("TradeIdentifier","TRN 24197");

mondEngine.setTargetHeaderValue("VersionNumber","3576791");

mondEngine.setTargetHeaderValue("TradeDate","2010-04-22");

mondEngine.setTargetHeaderValue("ProductType","VANILLA");

mondEngine.setTargetHeaderValue("FixedLegEffectiveUnadjustedDate","2010-04-26");

mondEngine.setTargetHeaderValue("FixedLegTerminationUnadjustedDate","2020-04-26");

mondEngine.setTargetHeaderValue("FixedLegFirstPaymentDate",1,"2010-10-26");

[/java]

Sample MOND Map:

Transformed FpML Execution Advice Document:

<?xml version="1.0" encoding="UTF-8"?>

<executionAdvice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.fpml.org/FpML-5/confirmation" xsi:schemaLocation="http://www.fpml.org/FpML-5/confirmationfpml-main-5-3.xsd" fpmlVersion="5-3">

<header>

<messageId messageIdScheme="http://www.alphabeta.com/coding-scheme/message-id">8896560</messageId>

<sentBy>AcmeSecurities</sentBy>

<creationTimestamp>2010-04-22T16:40:24</creationTimestamp>

</header>

<validation validationScheme="http://www.alphabeta.com/OTC/validation/ClientField/RiskLegId">XXX213S7</validation>

<correlationId correlationIdScheme="http://www.alphabeta.com/coding-scheme/correlation-id">133064<isCorrection>false</isCorrection></correlationId>

<sequenceNumber>1</sequenceNumber>

<trade>

<tradeHeader>

<partyTradeIdentifier>

<partyReference href="Originator"/>

<versionedTradeId>

<tradeId tradeIdScheme="http://www.swift.com/coding-scheme/contract-id">TRN24197</tradeId>

<version>3576791</version>

</versionedTradeId>

</partyTradeIdentifier>

<tradeDate>2010-04-22</tradeDate>

</tradeHeader>

<swap xmlns:con="http://www.fpml.org/FpML-5/confirmation">

<productType productTypeScheme="http://www.alphabeta.com/OTC/product-type">VANILLA</productType>

<swapStream id="fixedLegId">

<payerPartyReference href="Originator"/>

<receiverPartyReference href="Counterparty"/>

<calculationPeriodDates id="fixedCalcPeriodDates">

<effectiveDate>

<unadjustedDate>2010-04-26</unadjustedDate>

<dateAdjustments>

<businessDayConvention>MODFOLLOWING</businessDayConvention>

<businessCenters>

<businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center-6-0">GBLO</businessCenter>

<businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center-6-0">USNY</businessCenter>

</businessCenters>

</dateAdjustments>

</effectiveDate>

<terminationDate>

<unadjustedDate>2020-04-26</unadjustedDate>

<dateAdjustments>

<businessDayConvention>MODFOLLOWING</businessDayConvention>

<businessCenters>

<businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center-6-0">GBLO</businessCenter>

<businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center-6-0">USNY</businessCenter>

</businessCenters>

</dateAdjustments>

</terminationDate>

</calculationPeriodDates>

</swapStream>

</swap>

</trade>

</executionAdvice>

You may note that in both in the MOND Java based transformation and in the MOND GUI based transformation the developer only builds the business logic for setting values to the commonly understood Business terms of the industry, which represents the various fields in the target document, without worrying about the structure of the target document. The all powerful and comprehensive'Create Output' method provides functionality of creating the target document based on the structure of the FpML Execution Advice document as would be available in the MOND Semantic repository. This new data transformation approach reduces the time to build transformation, renders the transformation reusable to create target documents of different document standards of your trading partners and thereby reduces the time to onboard new trading partners.

Other Posts That Might Interest You.

Your Message to mondCloud
Optional Information That Helps Us Process Your Request Faster