Title: LindFinancialTM API
1LindFinancialTM API
- XML Technology
- for
- Electronic Order Entry and Management
Ernesto L. Aparcedo, Ph.D. Director Systems
Development Lind-Waldock Inc., a division of
Refco LLC
2Agenda
- Design Aspects of an XML API
- Implementing the LindFinancial API
- Developing Order Entry Solutions with the
LindFinancial API - Impact of the New API Architecture
- Trends and Future Directions
3Why a new API Architecture?
- Provide a consistent and scalable
Business-Centric API - Maintain High Performance for Interface Clients
and Server Applications - Minimize costs in software development
maintenance and upgrades - Separate data presentation from business
processing - Encoding and Decoding data via XML
- Provide abstracted interface to Order Routing
Engine - Establish foundations for Order Routing growth
- Preserve current Order Routing investment
4API Technical Challenges
- Scalable and Extensible API
- Multiple development platforms client, servers,
desktop, web, wireless, tablet - Multiple Operating Systems Microsoft Windows,
Linux, AIX, Solaris, etc. - Support for different transports
- Data must be portable across different computer
architectures
5Todays Order Entry World
- Notable characteristics
- Fixed and variable length records. Flat Records.
- Records are transmitted remotely through various
communication protocols - Various Message Queuing Systems are being used
(MSMQ, MQ Series) - Must implement a combination of technologies
Multithreading, sockets, etc. - Consequences
- Clients require substantial software development
and maintenance costs - Limited portability and scalability
6Common API Design
7Flat Record Data Encoding
- FIX Record
- 8FIX.4.2919935D341049VENDOR115CUSTOMER
144CHICAGO EQ56BROKER57DOT143NY522000090
7-09255811ORD_1212110100055KO221482
774611095416020000907-09255638500040244
62.515USD47A1010165 - CUSTOM Record
- ORDER FIRMXX2837485 683321 FIRMXX 6
200210291BUY 2 MAY03BO24 PUT 180 EW
8Progressive API design
- Separate Interfacing, Data Encoding/Decoding and
Transport - XML for Data Portability and Distribution
- Exposure of Transport payloads must be minimized
- Abstract technology implementation by using the
Business-centric concepts in its interface
functions - Symmetric construction of functions for clients
and servers - Object Oriented design with portable language
- Interactions driven by API binaries and not by
published document schemas - Truly Portable Must run everywhere!
9LindFinancial API Design
10XML Data Encoding
- ltordergt
- ltacct f"532" a"322480" /gt
- ltfid t"new" i"342380-N20916164" /gt
- ltleg s"BUY" qo"6"gt
- ltcc c"ES" mH" y"2003" /gt
- ltprice p"1180" /gt
- lt/leggt
- ltleg s"SELL" qo6"gt
- ltcc c"ES" m"Z" y"2003" /gt
- lt/leggt
- ltmsg t"clerk" m"Clerk message from EAPARCED"
/gt - ltmsg t"order" m"Ticket message from EAPARCED"
/gt - lt/ordergt
11LindFinancial API Technical Objectives
- Preserve Order Routing functionality
- Provide a highly scalable and portable system
(Windows, Linux, AIX, Solaris) - Present a consistent API to both the Web, Backend
Server and Order Entry clients - Lay the foundations for an scalable, portable and
distributed Order Routing System - Maintain high performance processing while using
XML - Abstract Transport Layer from Client Experience
12LindAccess Common Programmatic Interface (CPI)
Framework
- LindFinancial API Library
- Generic Application Programming Interface (API)
- Casino
- Data Transport and Multitasking Classes
13LindAccess CPI Architecture
14LindFinancial APIBasic Characteristics
- Asynchronous Business-centric XML API for Order
Entry Clients and backend processing Servers - Full Abstraction of business functionality from
technical implementation - Extensive support for
- Orders, Fills, Status, Alerts, Quotes, Cancels,
Cancel-Replace, Positions, Requests, Funds,
Checks and Heartbeats. - API functionality Over 875 functions, methods,
properties and callbacks. - All Data Encoding in XML
- C API Object Oriented Library
- Portable to multiple operating systems
- Microsoft Windows (98, NT, 2000, XP, .NET, etc.)
- Unix (AIX, Linux, Solaris, etc.),
15LindFinancial APIAdvanced Features
- Provides a platform for distributed Order Entry
System - Fully Extensible API library
- Order management
- Data communication and transports are abstracted
- Fully object oriented its functionality can be
inherited or overridden by other libraries - Order Batching and Replay applications
- Flexible XML design to support hot technologies
like Web Services - Leverage XML design to support data
transformations (XSLT), storage and presentation.
Ready for B2B use. - Readily integrates with software development
technologies and programmatic clients (COM, ATL,
Microsoft .NET, dynamic linking)
16LindFinancial API XML Features
- Automatic Encoding and Decoding (Parsing)
- Publishing of XML document structure (schema) is
not required - Flexibility in providing access to internal XML
- To get the order/fill XML
- Order_XML GetOrder()
- Fill_XML GetFill()
- Transform XML as required (with XSLT)
- LindFinancial XML to FIXML
- XML to HTML for Web
- XML to WML for wireless devices
- Can import XML into Databases
17Transport ClassesCasino
- Data Communications and Transport C classes
- Relevant Transport Protocols can be built as
needed - LindAccess protocol
- Efficient Threading model for multitasking
- Automatic and integrated Logging
- Fast Message Queuing System Orders and Fills are
saved to disk for order/fill recovery and post
processing - Fully Integrated with LindFinancial API and
portable to other operating systems
18LindFinancial APICurrent Applications
- Desktop Clients
- C Windows
- C/MFC - COM Windows
- Visual Basic - COM Windows - LindXpress
- C Linux (Automated Trading System)
- Middleware Order Processing Server
- Web Site clients
- Direct Access clients
- Order Routing Engine Order Processing
- Order and Fills Routing
19A LindFinancial API Client LindXpress
20A LindFinancial API Client LindXpress
D E S K T O P C L I E N T
D E S K T O P C L I E N T
Visual Basic Front End
XML COM Component
Client Entry Point
LindFinancial API
Casino
21LindFinancial APICOM Client
- Entering an order in a Visual Basic client (e.g.
LindXpress) - Dim IOrder As LIND_ACCESS_COMPONENTLib.iOrder
- Dim ILeg As LIND_ACCESS_COMPONENTLib.iLeg
- IOrder.recordType RT_ORDER
- IOrder.firm "532"
- IOrder.account "L2248"
- IOrder.firmIdentifier 371034258796296
- IOrder.enteredBy EAPARCED
- IOrder.clerkMessage "LindFinancial Futures -
Clerk msg" - IOrder.orderMessage "LindFinancial
Futures - Order msg" - IOrder.numberOfLegs LEG_1
- ILeg.buyOrSell TT_BUY
- ILeg.quantity 8
- ILeg.month MT_MAR
- ILeg.year "03"
- ILeg.commodityCode "ES"
- ILeg.orderType OT_LIMIT
22LindFinancial APIDirect Order Entry
- Entering an Order (C direct access)
- Order order
- Leg leg
- order.PutOrder(BLANK)
- order.PutNumberOfLegs(order.LEG_1)
- order.PutRecordType(order.RT_ORDER)
- order.PutFirm("532")
- order.PutAccount("L2248")
- order.PutFirmIdentifier(371034258796296)
- order.PutEnteredBy("EAPARCED")
- order.PutClerkMessage("LindFinancial Futures -
Clerk msg") - order.PutOrderMessage("LindFinancial Futures -
Order msg") -
- leg.PutLeg(BLANK)
- leg.PutBuyOrSell(leg.TT_BUY)
- leg.PutQuantity(8)
- leg.PutMonth(leg.MT_MAR)
- leg.PutYear(3)
- leg.PutCommodityCode("ES")
23LindFinancial APIInternal XML Document
- Resultant Order XML
- ltordergt
- ltacct f"532" aL2248" /gt
- ltfid t"new" i"371034258796296" eEAPARCED
/gt - ltleg s"BUY" qo8"gt
- ltcc c"ES" mH" y"2003" /gt
- ltprice p"108000 /gt
- lt/leggt
- ltmsg t"clerk" m"LindFinancial Futures - Clerk
msg" /gt - ltmsg t"order" m"LindFinancial Futures - Order
msg" /gt - lt/ordergt
24Casino ClassesPayload Transport
- Pass Through Interface
- const char LindBaseSend (const char
Transmit_XML_Record) - if (latp-gtWrite(GetRecordCategory(Transmit_XML_
Record), - strlen(Transmit_XML
_Record), (char)Transmit_XML_Record) -1) - return EMPTY
-
- return Transmit_XML_Record
-
-
25Future Enhancements
- Portable Order Routing Engine
- Able to install in multiple independent
distributed nodes - Develop a Web Service implementation
(SOAPXMLHTTP) - Enhance LindFinancial API to support maintenance
and system management functions - Enhance API to support Plug-and-Play transports
- Apply LindFinancial API to Web presentation
experience - Develop a native XML database for seamless storage
26Summary
- Design Overview of a Distributed XML API
- LindFinancial API
- Truly Scalable and Portable implementation for
client and server solutions - Demonstrated that XML technology can be readily
adapted to Order Entry - I propose consideration of
- XML technology as a Standard for Order Entry