WO2002041117A2 - System and method for integrating and analyzing financial information from multiple sources - Google Patents

System and method for integrating and analyzing financial information from multiple sources Download PDF

Info

Publication number
WO2002041117A2
WO2002041117A2 PCT/US2001/047436 US0147436W WO0241117A2 WO 2002041117 A2 WO2002041117 A2 WO 2002041117A2 US 0147436 W US0147436 W US 0147436W WO 0241117 A2 WO0241117 A2 WO 0241117A2
Authority
WO
WIPO (PCT)
Prior art keywords
database
security
data
universe
securities
Prior art date
Application number
PCT/US2001/047436
Other languages
French (fr)
Inventor
Stephane Lamoine
Habib Chtourou
Original Assignee
Proof 9, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Proof 9, Inc. filed Critical Proof 9, Inc.
Priority to AU2002237708A priority Critical patent/AU2002237708A1/en
Publication of WO2002041117A2 publication Critical patent/WO2002041117A2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/06Asset management; Financial planning or analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Definitions

  • the present invention generally relates to the field of electronic methods and systems for analyzing historical and real-time data about securities. More particularly, the present invention relates to a system and method for analyzing and integrating financial information from multiple sources, and for back-testing trading strategies with historical data derived from multiple sources.
  • the present invention relates to a system and method for integrating and analyzing financial information from multiple sources.
  • Database vendors began developing front-end interfaces comprising varied functionality and methods for screening data, generating reports, and providing their data in a variety of different formats. The vendors also began expanding the type of information available from their databases.
  • What is needed is a system for automatically integrating multiple, diverse external and internal data sources. What is also needed is a system for providing such integration through a through a common, user-friendly interface. Moreover, there is a need for a system for providing such integration with embedded analytical modules to manipulate the data collected from the various databases on an automatic and real-time basis, and for providing such integration while allowing both static and dynamic analysis of the data collected from the various databases.
  • the system ofthe present invention is a powerful and flexible market analysis and portfolio selection system, allowing the integration of multiple databases into a front-end platform. Integrated databases are cross-referenced, allowing access to data from different databases from a single interface.
  • the system contains embedded analytical modules to manipulate those data collected from various databases.
  • the data integration process gathers information from a plurality of data source servers using a loader client executing in an update process.
  • Each update process receives financial data from its corresponding data source and provides the information to a DataNet server.
  • Data source servers may also include in-house databases imported into or generated by the DataNet software.
  • a loader manager executing on the DataNet server computer manages communications with the loader client.
  • the loader manager uses a locally unique security identifier from the data received to request a globally unique identifier (GSID) for the data from a cross server.
  • GSID globally unique identifier
  • the cross server After receiving the locally unique security identifier from the loader manager, the cross server provides the locally unique security identifier to a database manager to query a cross reference database for the GSID for the security. If the GSID is contained in the cross reference database, the database manager returns the GSID to the cross server, which provides the GSID to the loader manager. If no GSID is found in the cross reference database by the database manager for the locally unique security identifier, the cross server notifies the central GSID server and the loader manager. In this instance, the loader manager does not update a database with the data from the data source.
  • the loader manager After receiving the GSID from the cross server, the loader manager provides the data received from the loader client to the database manager along with the GSID to update the information for the security in the database corresponding to the data source from which the data was received.
  • the database manager then causes the database corresponding to the data source to be updated in response to the request, using the GS-D as a primary key.
  • the DataNet server stores the information received and makes it available in a cross-referenced form via a consistent interface to system users.
  • the user client portion ofthe DataNet system comprises a DataNet engine.
  • the DataNet engine is a modular distributed object-oriented system that preferably comprises a plurality of user modules that interoperate with each other.
  • the DataNet engine comprises a Universe module, a Query module, a Formula module, a Graph module, an Aggregate module, a Simulation module, and a Reporting module.
  • the Universe module holds dynamic or static user-defined sets of securities for manipulation by the user of DataNet system.
  • Universe module forms the data environment on which user operates with the other modules. The contents of a universe are dynamically generated with query modules, static list modules, and indexed list modules.
  • the Query module stores and applies user-selected criteria for retrieving information from data source databases for inclusion in a universe.
  • the Formula module stores and applies user-defined functions for selecting and performing calculations on data from a universe.
  • a formula may be used to describe a trading strategy.
  • the Graphics module creates visual displays of data based on a user defined universe.
  • the Simulations module invokes and tracks the performance of a formula on a universe over a historical period of time.
  • the Aggregates module stores and applies user-selected operations such as mathematical calculations to large collections of historical data.
  • the Reports module allows a user to download data from other DataNet engine modules and present the data in a spread-sheet format.
  • the present invention relates to a system for selecting securities, comprising: a first data receiver receiving data from a first data source transmitting data concerning a security, the data comprising a first identifier ofthe security; a second data receiver receiving data from a second data source transmitting data concerning the security, the data comprising a second identifier ofthe security; and a cross- referencing server receiving cross-reference data, the cross-reference data comprising the first identifier ofthe security, the second identifier ofthe security and a third identifier of the security.
  • the present invention relates to a method for populating a universe of securities comprising: a) receiving a query, the query comprising parameters, the parameters comprising an identifier of a database; b) querying the database, the database storing data concerning one or more securities, the data comprising a unique identifier ofthe security; c) retrieving from the database data concerning the securities satisfying the query; and d) populating the universe with the retrieved data.
  • the present invention relates to a method for generating an aggregate comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier; b) receiving one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; c) receiving a function, the function corresponding to an operation to be applied to a set of data field information, the set of data field information comprising the data field information for each security in the universe; d) receiving one or more sampling points, each sampling point corresponding to a different date; e) querying for each security in the universe and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; f) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe; and g) determining at each sampling point a value based on the application ofthe operation to the set of data field information.
  • the present invention relates to a method for evaluating a formula comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier; b) receiving a formula, the formula comprising one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; c) receiving one or more sampling points, each sampling point corresponding to a different date; d) querying for each security in the universe and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; e) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe; and f) determining at each sampling point a value ofthe formula for each security in the universe.
  • the present invention relates to a method for evaluating a portfolio comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier; b) determining a portfolio, the portfolio comprising one or more securities from the universe; c) receiving a formula, the formula comprising one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; d) receiving one or more sampling points, each sampling point corresponding to a different date; e) querying for each security in the universe and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; f) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe; and g) determining at each sampling point the securities in the portfolio based on the application ofthe formula to each security in the universe.
  • the present invention allows user to access financial information on an automatic and real-time basis from multiple sources via a single interface.
  • the present invention allows users to define a universe of securities both statistically and dynamically.
  • a universe is dynamically defined, the system allows the user to perform calculations on historical sets of data which may change according to the dates for which the calculations are performed.
  • the present invention enables users to build formulas comprising fields from one or more data sources. Formulas may be back tested against historical sets of data and used to evaluate a portfolio of securities. As a result, users may integrate and manipulate data from various data sources in order to develop more powerful stock selection and trading strategies.
  • FIG. 1 schematically illustrates the client-server architecture ofthe DataNet system
  • FIG. 2 schematically illustrates the preferred system software architecture ofthe preferred DataNet example embodiment
  • FIG. 3 schematically illustrates the data source integration process architecture for the preferred DataNet example embodiment
  • FIG. 4 schematically illustrates an object model for the DataNet server
  • FIG. 4a schematically illustrates an object model for the Database Manager in the preferred DataNet example embodiment
  • FIG. 4b schematically illustrates an object model for the Cross Server in the preferred DataNet example embodiment
  • FIG. 5 schematically illustrates the preferred DataNet example embodiment loader client and loader server architecture
  • FIG. 6 schematically illustrates the preferred DataNet example embodiment server side loader architecture
  • FIG. 7 schematically illustrates the architecture ofthe communications layer
  • FIG. 7a schematically illustrates an object model for the Communication Server in the preferred DataNet example embodiment
  • FIG. 8 schematically illustrates the preferred DataNet example embodiment user client architecture and corresponding DataNet user server architecture
  • FIG. 9 schematically illustrates the object model of the preferred DataNet engine example embodiment
  • FIG. 10 is an illustrative Universe dialog box ofthe preferred DataNet example embodiment
  • FIG. 11 is an illustrative Query Setup user interface ofthe preferred DataNet example embodiment
  • FIG. 12 is an illustrative parameters tab ofthe Query Setup user interface of the preferred DataNet example embodiment
  • FIG. 13 is an illustrative criteria tab ofthe Query Setup user interface of the preferred DataNet example embodiment
  • FIG. 14 is an illustrative Data Editor window user interface in the preferred DataNet example embodiment
  • FIG. 15 is an illustrative criteria tab ofthe Query Setup user interface of the preferred DataNet example embodiment
  • FIG. 16 is an illustrative report user interface ofthe preferred DataNet example embodiment
  • FIG. 17 is an illustrative Formula Editor user interface
  • FIG. 18 is an illustrative Simulation Tools user interface ofthe preferred DataNet example embodiment
  • FIG. 19 in an illustrative Simulations Setup user interface ofthe preferred DataNet example embodiment
  • FIG. 20 is an illustrative graphic simulation ofthe preferred DataNet example embodiment
  • FIG. 21 is an illustrative Field Selection Menu ofthe preferred DataNet example embodiment
  • FIG. 22 is an illustrative Plot Data Editor ofthe preferred DataNet example embodiment
  • FIG. 23 is an illustrative Aggregates Setup window ofthe preferred DataNet example embodiment
  • FIG. 24 is an illustrative Graphic Tools window ofthe preferred DataNet example embodiment
  • FIG. 25 is an illustrative Equities Selection dialog box ofthe preferred DataNet example embodiment
  • FIG. 26 is an illustrative sample graphic of the preferred DataNet example embodiment
  • FIG. 27 is an illustrative Reporting Module Access screen ofthe preferred DataNet example embodiment
  • FIG. 28 is an illustrative Cross Table Form ofthe preferred DataNet example embodiment
  • FIG. 29 is an illustrative Field Editor window ofthe preferred DataNet example embodiment
  • FIG. 30 is an illustrative Data Selection menu ofthe preferred DataNet example embodiment
  • FIG. 31 is an illustrative generated Cross Table Form ofthe preferred DataNet example embodiment
  • FIG. 32 is an illustrative Formula Editor menu ofthe preferred DataNet example embodiment
  • FIG. 33 is an illustrative generated Historical Form Model ofthe preferred DataNet example embodiment
  • FIG. 34 is an illustrative Value Form ofthe preferred DataNet example embodiment
  • FIG. 35 is an illustrative generated Value Table ofthe preferred DataNet example embodiment
  • the present invention relates to a system and method for integrating and analyzing financial information from multiple sources.
  • the invention will be described by reference to an example preferred embodiment, referred to as the DataNet system.
  • the DataNet system comprises a client-server computer system that provides for the integration of multiple data sources into a single cross-referenced system, providing users with a consistent interface for accessing and manipulating data concerning a given security from a plurality of available sources.
  • FIG. 1 schematically illustrates the client-server architecture ofthe DataNet system comprising a server system connected via a computer network and a distributed object system.
  • the preferred DataNet example embodiment comprises the Microsoft Distributed Common Object Model (DCOM) software platform operating over a TCP/IP network.
  • DCOM Microsoft Distributed Common Object Model
  • Any other distributed computing model such as CORBA, RPC, Java, RMI, J2EE or other client- server architecture, and any other computer network type adequate for distributed computing may also be used.
  • the particular choice of distributed computing environment is not essential to the invention.
  • the DataNet system as shown in FIG. 1 comprises one or more update processes executing on one or more update processors, collectively shown as 120.
  • the update processors preferably comprise Intel Pentium7 based computers running the Microsoft NT operating system and DataNet software.
  • the DataNet update processes execute one or more Loader Clients 200, which will be explained in greater detail with reference to FIG. 3.
  • the DataNet update processes control network connections to a plurality of data sources 130...N; and to the DataNet Server 100.
  • At least one update process executes for each data source 130.
  • Each update process 120..N receives financial data from its corresponding data source, and provides that information to the DataNet server 100.
  • the DataNet server 100 stores information received from update processes 120...N and makes it available in a cross-referenced form via a consistent interface to DataNet users 110...N.
  • the data is preferably cross referenced at least by a unique security identifier, so that all information from all data sources 130...N for a particular security may be retrieved from the DataNet server 100 once the security identifier for the particular security is determined.
  • the DataNet system assigns a globally unique security identifier (GSID) to each security for which information is received and cross references all information from all data sources 130 ...N received for the security based on the GSID.
  • GSID globally unique security identifier
  • the GSID is typically based on locally or source-dependent unique security identifiers, such as the ticker symbol, or the CUSIP number for securities registered in the United States, or the SEDOL number for European securities.
  • the GSID is generated by a central GSID server 310 using a suitable algorithm for generating alpha numeric characters.
  • the size of each GSID is typically 10 characters.
  • the client systems may comprise any computer system that allows the client to access the server system, hi the preferred embodiment, the client systems 100...N are Intel Pentium-based PCs running the Windows NT7 operating system and DataNet software.
  • the server system may be any general purpose computer system having sufficient resources.
  • DataNet server 100 comprises an Intel Pentium Xeon based computer running the Windows NT7 operating system and DataNet software with 128MB of RAM and a 4Gb SCSI hard disk.
  • client- server and distributed object implementation ofthe preferred DataNet example embodiment allows the DataNet server software to be distributed among a plurality of server machines.
  • FIG. 2 schematically illustrates the preferred system software architecture ofthe preferred DataNet example embodiment.
  • DataNet client programs shown in FIG.2 include a loader client 200, a custom application 201 such as a custom C++ program for a specialized user application, a Microsoft Office977 add-in 202 such as a module for updating a Microsoft Excel 7 spreadsheet automatically, and a DataNet User Client 203.
  • the DataNet Server System 100 preferably includes a Loader Manager 210 for managing communications with a plurality of Loader Clients such as 200, a DataNet server 220, a plurality of user workspaces 230 ... N for temporarily storing user information, a database manager 240, at least one user database and at least one source database, shown collectively as 250, a task scheduler 260, and compression tools 270.
  • the system includes at least one user database for each user, and at least one source database for each data source.
  • the database manager 240 comprises a DataNet time series database engine coupled to a database server.
  • a database server any sufficiently robust database system may be used, such as a relational database, tree, or the Berkeley DB database library.
  • the database manager includes support for hierarchical databases and for time series and case series data types.
  • FIG. 3 schematically illustrates the data source integration process architecture for the preferred DataNet example embodiment.
  • the system integrates data from a number of possibly heterogenous data sources 130...N into a uniform system 250 of data source databases 251...N.
  • the assigned GSID is used as a primary key for accessing data for the corresponding security from each source database 251...N.
  • the DataNet integration process gathers information from a plurality data source servers 130...N.
  • Data source servers may also include in-house databases imported into or generated by the DataNet software.
  • the DataNet data source integration uses a loader client 200 executing in an update process such as 120.
  • the loader client is a client/server program that resides on a client computer system connected to the data source server.
  • the DataNet loader client supports most common protocols for data transfer, such as TCP/IP, FTP, HTTP, email and many others. Any protocol utilized by a data source may be supported by the loader client, which isolates the DataNet Server 100 from details of data source communication and provides all data to the DataNet Server 100 in a previously defined format.
  • the loader manager 220 is a client-server software module executing on the DataNet server 100 computer, which manages communications with the Loader Client 200.
  • the loader manager coordinates communications with the cross server 300 and the database manager 240.
  • the loader manager uses a locally or source-dependent unique security identifier from the data received to request a GSID for the data from a Cross Server 300.
  • the locally unique security identifier is typically the source-dependent identifier used by the data source to identify the security, concatenated with an identifier ofthe data source.
  • the data source is XYZ Data
  • XYZ Data uses the ticker symbol to identify the securities for which information is provided
  • the locally unique security identifier is ofthe form XYZData/TICK, where TICK is the ticker symbol ofthe security.
  • the cross server 300 After receiving the locally unique security identifier from the loader manager 220, the cross server 300 provides the locally unique security identifier to the database manager 240 to query the cross reference database 640 for the GSID for the security. If the GSID is contained in the cross reference database 640, the database manager returns the GSID to the cross server, which provides the GSID to the loader manager 220. If no GSID is found in the cross reference database by the database manager 240 for the locally unique security identifier, the cross server 300 notifies the central GSID server 310 and the loader manager. In this instance, the loader manager does not update the database with the data from the data source.
  • the DataNet loader manager 220 After receiving the GSID from the cross server 300, the DataNet loader manager 220 provides the data received from the loader client 200 to the database manager along with the GSID to update the information for the security in the database (e.g. 251) corresponding to the data source from which the data was received.
  • the database manager 240 then causes the database corresponding to the data source to be updated in response to the request, using the GSID as a primary key.
  • such an update will comprise the addition of a record representing a price for the security.
  • Other updates may include revision of existing price records for the security to account for a stock split or any other corporate action affecting the security.
  • the object model for the DataNet server 220 is schematically illustrated in FIG. 4a.
  • the DataNet server object 405 comprises an Errors collection 410 one or more Error objects 411, a Groups collection 420 of one or more Group objects 421, a Users collection 430 of one or more User objects 431 and a Connections collection 440 of one or more Connection objects 441.
  • User objects such as 431and Group objects such as 421 represent user authorizations and authentication requirements, controlling user access to the system through passwords, user authorizations and group authorizations.
  • User objects such as 431 further comprise a collection of group codes indicating the Groups of which the user is a member.
  • Group objects further comprise a collection of user codes indicating the members ofthe group.
  • Connection objects such as 441 represent connections with client applications such as a DataNet user client 203.
  • Connection objects such as 441 may contain a collection 442 of one or more additional Connection objects such as 443, which may be hierarchically nested.
  • Connection objects have associated workspace objects 450 representing User Workspaces 230...N. Workspace objects are used to temporarily store the current state of the user environment.
  • a Workspace object 451 may request the services ofthe Database Manager 240, and portions of user workspaces 230...N may be persistently stored in a User Database by the database manager.
  • the object model ofthe Database Manager 240 is schematically illustrated in FIG. 4b.
  • the Database Manager comprises a Database Engine object 470.
  • the Database Engine object further comprises a Sessions collection 471 of one or more Session objects 472, a Connections collection 473 of one or more Connection objects 474 and a Databases collection 475 of one or more Database objects 476.
  • the Database Engine object comprises an Error object 477, a Connection object 478, a Session object 479, a Database object 480 and a DataObject object 481.
  • the Database Engine object 470 is used to create and manipulate the other objects 471-481 that comprise it, and to store global environment properties.
  • the Database Engine object comprises properties or attributes that specify whether databases are stored in packed format, how alias attributes of data objects are used, whether wildcards may be used in searching, and timeout period lengths for connections.
  • the Database Engine object 470 supports methods for opening connections with a database server, opening a session over an open connection, creating and opening databases and getting DataObjects from databases.
  • the OpenConnection method is used for opening a connection 474 with a database server, which returns a Connection object 474.
  • the OpenConnection method accepts as parameters the hostname, port, user name and password used to connect to the database.
  • the Database Engine object 470 supports an OpenSession method for opening a session with a database accessible by an open connection.
  • the open session method returns a session object such as 472.
  • the CreateDatabase method is used for creating a database such as 251 and returns a Database object such as 476.
  • the CreateDatabase method accepts as a parameter the full path name for the database such as 251 to be accessed.
  • the OpenDatabase method is used for opening a database already in existence and returns as a Database object such as 476.
  • the OpenDatabase method accepts as parameters the full database pathname, and the access mode (such as read, overwrite, update, or shared).
  • the GetDataObject is used to search for a named DataObject in all the opened databases.
  • the GetDataObject accepts the name ofthe object and returns the corresponding DataObject such as 483 if found.
  • the Database Engine Error object 477 is used to store information concerning errors, including an error number, a description ofthe application, function or procedure that generated the error, a description ofthe error and a pointer to a help file associated with the error.
  • Connection objects such as 474 and 478 represent an open connection to a database server.
  • Each Connection object such as 478 comprises properties for storing the connection key for the database service, the port number for the database server, the hostname ofthe host on which the database server is running, the user name for logging into the database server, and the password for logging into the database server.
  • Each Connection object such as 478 also comprises a collection 484 of one or more Database objects such as 485 containing the Database objects returned by invoking OpenDatabase and CreateDatabase methods.
  • Connection objects such as 478 comprise a plurality of methods for manipulating Database objects such as 485 and thereby, databases such as 251. The Close method is used to close the connection, destroying the Connection object on which the Close method is invoked.
  • the Commit method is used to commit the currently pending unit of work to the database.
  • the Abort method aborts the currently pending unit of work without committing it to the database.
  • the CreateDatabase method accepts a new database pathname, creates a new database such as 251 and returns a new Database object such as 485 for manipulating the database.
  • the OpenDatabase method accepts a pathname of an existing database such as 251 and an access mode indicator and opens the database 251 in the corresponding access mode, such as read, create, overwrite, update or shared.
  • the GetDataObject method accepts a name and searches the database open on the connection and returns the first matching object found.
  • the Collections collection 473 of connection objects such as 474 represents an array of all open connections and comprises properties representing the number of connection objects in the collection, and the connection objects such as 474 themselves.
  • the collection 473 of connection objects also supports methods for clearing the collection, and removing individual connections from the collection.
  • Session objects such as 472 or 473 represent an open database session, a time series database session in the preferred DataNet example embodiment.
  • the session permits the execution of database commands.
  • the Session object 472 comprises properties representing the working date and case ranges for the current session, the working frequency for the current session, and the databases in the session.
  • the Session object 472 also comprises methods for executing database commands, loading and executing database stored procedures or macros, creating and opening databases in the session, and searching.
  • the Execute method ofthe Session object 472 accepts a command string as a parameter and causes the database to execute the command.
  • the LoadProcess command accepts a macro name as a parameter and causes the macro to be loaded and executed by the database.
  • the CreateDatabase method accepts as a parameter the full path name for the database such as 251 to be accessed.
  • the OpenDatabase method is used for opening a database already in existence and returns a Database object such as 476.
  • the OpenDatabase method accepts as parameters the full database pathname, and the access mode (such as read, overwrite, update, or shared).
  • the GetDataObject is used to search for a named DataObject in all the opened databases.
  • the GetDataObject accepts the name ofthe object and returns the corresponding DataObject such as 483 if found.
  • the Sessions collection 471 of Session objects such as 472 represents an array of all open sessions and comprises properties representing the number of Session objects in the collection, and the Session objects such as 472 themselves.
  • the collection 471 of Session objects also supports methods for clearing the collection, and removing individual Session objects from the collection.
  • Database objects such as 476 represent an open database, a time series database in the preferred DataNet example embodiment.
  • a Database object comprises properties representing the database key, database name, access mode, database description, database documentation, database creation date and last modification date, parent object (a Connection object such as 474 or 478, Session object such as 472 or 479, or Engine object such as 470), a read-only flag, an updated flag indicating that the database has been updated, and a database type indicating whether the database is local or remote.
  • Database objects such as 476 also support methods for creating, retrieving, deleting and searching for data objects in the database, and for discarding or posting changes made to the database.
  • the GetDataObject method of a Database object accepts as a parameter a name of a DataObject such as 481, and returns the DataObject from the database if it exists in the database.
  • the CreateDataObject method accepts as a parameter a name for a new DataObject and creates and returns a DataObject such as 481.
  • the DeleteDataObject method accepts as a parameter a name of a DataObject and deletes the DataObject from the database.
  • the Restore method discards any changes made to the database since the database was last opened or posted.
  • the Post method stores and makes permanent any changes made to the database since the database was last opened or posted.
  • the Close method closes the database.
  • the GetObjectsList method accepts a parameter indicating a string containing wildcard search terms and returns a list of objects matching the wildcard.
  • the collection 475 of Database objects such as 476 represents an array of all open databases and comprises properties representing the number of Database objects in the collection, and the Database objects such as 476 themselves.
  • the collection 475 of Database objects also supports methods for clearing the collection, and removing individual Database objects from the collection.
  • DataObject objects such as 481 represent database objects, time series database objects in the preferred example DataNet system. Using the properties and methods of DataObject objects, the system manipulates data in the databases such as 251.
  • DataObject objects include properties representing the name ofthe data object in the database, the object name keys, the object data class (e.g. scalar or series), the object type (e.g. numeric, string or date), the object frequency (e.g.
  • the object basis the object observed attribute, the object creation date and last modification date, the object description, the real name ofthe object, a list of aliases for the object, the text ofthe formula (for formula objects only), the value ofthe object, a pointer to the first value in the case or date range, a pointer to the last value in the case or date range, a list of associated names for the object, a read-only flag, an updated flag, and a pointer to the parent object (which may be a Connection object, a Session object, an Engine object or a Database object).
  • DataObject objects include methods for canceling the last modification to the object, saving the object, renaming the object, copying the object, setting values in a series object, and reading values in a series object.
  • the Reset method cancels the last modification to the object and restores its properties to their last saved values.
  • the Copy method accepts as parameters a destination name, and a destination database key and copies the object to the named destination object in the destination database specified by the destination database key. If the named destination object does not exist, it is created.
  • the SaveValue method accepts as parameters a range and a value, and sets the range to the value.
  • the ReadValue method accepts as a parameter a range and returns the value or values for the range.
  • the collection 482 of Database objects such as 483 represents an array of DataObject objects and comprises properties representing the number of DataObject objects in the collection, and the DataObject objects such as 483 themselves.
  • the collection 482 of DataObject objects also supports methods for clearing the collection, and removing individual DataObject objects from the collection.
  • the object model for Cross Server 300 is schematically illustrated in FIG. 4b.
  • the Cross Server is implemented by a Cross Server Object 494.
  • the Cross Server Object 494 comprises one or more properties that permit definition ofthe Cross Server.
  • the DatabasePath property stores a cross referencing database path.
  • the Converter property stores an object that implements a method for converting a data source key to a GSID key.
  • the NewsManager property stores an object which implements the methods for scheduling loading news files from the central GSID server and updating the Cross Reference Database.
  • the Cross Server Object 494 comprises one or more methods that permit manipulation ofthe Cross Server.
  • the GetCode method provides the loader manager a unique identifier for a data source.
  • the GetCode accepts as parameter database code and source code.
  • the Cross Server Object 494 comprises a NewsManager Object 495.
  • the NewsManager Object 495 comprises one or more properties that permit definition of a News Manager.
  • the News Manager is located at the central GSID server.
  • the RefereshRate property stores a rate for updating the Cross Reference Database.
  • the Messages property stores an object collection of message types for the storage of a news file.
  • the Parent property stores a reference for the Cross Server.
  • NewsManager object 495 also comprises one or more methods that permit manipulation of the news manager.
  • NewsManager object 495 " comprises a CheckTimer method. Upon invocation, the CheckTimer method checks to the determine the time for loading a news file from the central GSID server.
  • information about errors of a Cross Server Object 494 are stored in an error object.
  • the error object comprises a Number property that stores an error code, a Description property that stores an error description, and a Source property that stores the source ofthe error.
  • the error object also comprises a Clear method which clears the stored properties ofthe last error ofthe error object.
  • NewsManager Object 495 comprises a collection 496 of message objects. Each message object comprise one or more properties that permit definition of a message.
  • the Count property stores the number of collection items.
  • Each message also comprises one or more methods that permits manipulation of a message object.
  • the Add method accepts as a parameter a message and upon invocation, adds a new message to the collection.
  • the Item method accepts as a parameter an index and upon invocation, returns the message with the given index.
  • the Remove method accepts as a parameter an index and upon invocation, removes the message with the given index.
  • News Manager Object 495 comprises a collection 496 of a Message Collection Class 497.
  • Message Collection Class 497 object comprise one or more properties that permit definition of a message.
  • the Value property stores a value ofthe message object.
  • the Parent property stores a reference to the news manager class.
  • Message Collection Class 497 also comprises one or more methods that permit manipulation of a message.
  • the Handle method processes messages. Upon invocation, the Handle method updates the Cross Reference Database and sends error messages to the central GS-D server.
  • FIG. 5 schematically illustrates the preferred DataNet example embodiment loader client and loader server architecture.
  • the DataNet embodiment preferably includes a loader client 200 for each data source 130.
  • Each Loader Client 200 comprises a configuration database 530 which holds the criteria upon which information is requested from the data source 130.
  • the DataNet loader client supports a plurality of connection protocols, including FTP, HTTP, TCP/IP, and many others. Connection setup, login, timeouts, and dropped connections are managed by the Connection Manager 510, which is also responsible for determining the protocol used for the connection. Connection parameters including login credentials, data source address and connection protocol are stored in the Configuration Database 530.
  • the Request Manager 500 is responsible for constructing the queries necessary to retrieve data updates from the data source 130.
  • Request parameters including the request types, formats and frequency for requests are stored in the Configuration Database 530.
  • the Configuration Database is managed in part by a Configuration User Interface 550, which permits a user to configure the Loader Client by entering or modifying connection parameters.
  • an Update User Interface 540 permits a user to configure the Loader Client 120 by entering or modifying request parameters.
  • the Update Manager 520 When the Loader Client receives information from the data source 130, the Update Manager 520 translates the data into a predetermined format based on the Configuration Database 530 and stores the translated data in a shared data file 560.
  • the shared data file 560 may be accessed by the Loader Server 570 as well as the Loader Client 200, using any standard network file transfer system such as, for example, the Network File System (NFS), Novell, Microsoft Network File Sharing, the Andrew File System, FTP, HTTP or a Virtual Private Network (VPN).
  • the shared file functions as a buffer between the Loader Client 120 and the database 250 and facilitates load balancing between the Loader Client 200 and the Loader Server 570.
  • FIG. 6 schematically illustrates the preferred DataNet example embodiment server side loader architecture.
  • a Loader Manager 210 controls a plurality of instances of Source Loaders 600...N.
  • one source loader such as 600 corresponds to one data source such as 130, and handles updates from the Loader Client 200 for that Data Source 130.
  • a plurality of source loaders 600...N may be configured to collect data from a single data source using a first-in-first-out queue.
  • the queue may be constructed by time-stamped files in a shared directory, or by a message queuing system such as are available from IBM or TIBCO.
  • An Alert Server 620 transmits alerts to the central GSID server 310 when predefined alert conditions are satisfied using the Communications Layer 630. For example, alerts are transmitted when no GSID is contained in the cross reference database 640 for a security identified in information received from a data source 130.
  • a Loader Client 200 After a Loader Client 200 has stored a data file containing formatted data from its corresponding data source 130 in a shared file 560, the Loader Client 200 invokes the corresponding Source Loader 600 via DCOM. The Source Loader 600 then retrieves the shared file 560 and extracts the formatted information, including a locally unique security identifier. Using the locally unique security identifier, the Source Loader 600 invokes the Cross Manager 610 to retrieve the GSID for the security for which data is received. Using the GSID as a primary key, the Source Loader 600 invokes the Database Manager 240 to update information stored concerning the security in the Source Database (e.g. 251) for that data source 130.
  • the Database Manager 240 e.g. 251
  • the Cross Manager 610 determines whether the Cross Reference Database 640 contains a GSID for the security. If so, it returns the GSID to the Source Loader. If the Cross Reference Database 640 does not contain a GSID for the security, the Cross Manager 610 invokes the Alert Server 620 to send an alert to the central GSID server.
  • the Cross Server 300 retrieves from the central GSID server a new information file.
  • the new information file contains new GSIDs for new securities, adjustments for stock splits, correctness information to resolve conflicts among data sources, and other information.
  • the Cross Server 300 receives a new GSID from the central GSID server 310, it provides the GSID to the Source Loader 600 and updates the Cross Reference Database 640 with the GSID.
  • a communication server 650 is used to provide general purpose communication services with the central GSID server 310.
  • FIG. 7 schematically illustrates the architecture ofthe communications layer.
  • the communications layer is used by several different modules including the Cross Server 300 and the Alert Server 620, and handles many different types of communication including e- mail, ftp, http and others.
  • the object model for the communications server is schematically illustrated in FIG. 7a.
  • the communications server is implemented by a Communication Server Object 700.
  • the Communication Server Object comprises one or more properties that permit definition ofthe communication server.
  • the Message property stores the body of an alert, file, or e-mail message.
  • the MessageType property stores a message type: alert, file, or email.
  • the Error property stores data regarding errors.
  • Communication Server Object 700 comprises one or more methods that permit manipulation ofthe communication server.
  • the GetFile method downloads a file using the connection manager.
  • the SendFile uploads a file using the connection manager.
  • the SendAlert method sends an alert using the connection manager.
  • Communication Server Object 700 comprises a ConnectionManager Object 710.
  • the connection manager is implemented by ConnectionManager Object 710 and manages connection objects.
  • Connection Manager Object 710 comprises one or more properties that permit definition ofthe connection manager.
  • the Status property stores information regarding the status ofthe connection manager.
  • the Connections property stores a collection of connection objects.
  • the Error property stores a collection of errors.
  • the ConnectionManager Object 710 also comprises an Initialize method initializes the connection manager.
  • ConnectionManager Object 710 comprises a collection 492 of one or more Connection Objects 720.
  • Connection Objects 720 comprises a Count property stores the number of connections.
  • the Connection Object 720 also comprises one or more methods that permit manipulation ofthe connections.
  • the Add method adds a connection to the collection.
  • the Add method accepts as a parameter a connection.
  • the Item method returns a connection.
  • the Item method accepts as a parameter an index.
  • the index corresponds to a connection.
  • the Remove method removes a connection from the collection.
  • Connection Object 720 is also responsible for handling connections to the central GSID server.
  • Connections Object comprises one ofthe properties that permit definition ofthe central GSID server.
  • the Properties property stores the properties ofthe connection depending on the type of connection.
  • the Type property stores the type of a connection.
  • the connection may be FTP, e-mail, or others.
  • the Status property stores the status of a connection.
  • the status may be open or closed, for example.
  • the TimeOut property stores the timeout ofthe connection.
  • the Priority property stores the priority of a connection.
  • Connection Object 720 also comprises one or more properties that permit manipulation ofthe connection to the central GSID server.
  • the LoadParameters method loads the parameters ofthe connections in the properties field.
  • the Open method opens a connection.
  • the Close method closes the connection.
  • the Connection Object 720 also comprises one or more events that occur at a given time during a connection with the central GSID server.
  • the OnOpen event is an event that fires upon opening a connection.
  • the OnClose is an event that fires upon closing a connection.
  • FIG. 8 schematically illustrates the preferred DataNet example embodiment user client architecture 1080 and corresponding DataNet user server architecture 1090.
  • the data source description database 250, the data source database 250a, the Database Manager 240, and the DataNet server 220 modules execute on a single server machine 100.
  • the client-server and distributed object architecture ofthe system permit these portions ofthe system to be distributed over a plurality of machines, and some portions of even the entire system may even be located together on a single machine with the user client portions.
  • the user client portion ofthe DataNet system comprises a DataNet engine.
  • the DataNet engine is a modular distributed object-oriented system that preferably comprises a plurality of user modules 810...870 that interoperate with each other.
  • the DataNet engine comprises a Universe module 810, a Query module 820, a Formula module 830, a Graph module 840, an Aggregate module 860, a Simulation module 850, and a Reporting module 870.
  • the Universe module 810 holds dynamic or static user-defined sets of securities for manipulation by the user of DataNet system.
  • Universe module 810 forms the data environment on which user operates with the other modules. The contents of a universe are dynamically generated with Query modules 820, static list modules, and indexed list modules.
  • Query module 820 stores and applies user-selected criteria for retrieving information from data source databases 251...N for inclusion in a universe.
  • Formula module 830 stores and applies user-defined functions for selecting and performing calculations on data from a universe.
  • a formula may be used to describe a trading strategy.
  • Graphics module 840 creates visual displays of data based on a user defined universe.
  • Simulations module 850 invokes and tracks the performance of a formula on a universe over a historical period of time.
  • Aggregates module 860 stores and applies user-selected operations such as mathematical calculations to large collections of historical data.
  • Reports module 870 allows a user to download data from other DataNet engine modules and present the data in a spread-sheet format.
  • the DataNet engine comprises additional modules used to interoperate among the user modules.
  • a static list module comprises a list of GSIDs used to identify a collection of information comprising a universe.
  • a static list may be populated by a Query module.
  • an indexed list module comprises a list of GSIDs used to identify a collection of information comprising a universe, but has an associated date.
  • An indexed list reflects the application of a query to the data source databases as of the associated date, and is used to populate a universe.
  • a universe can be either dynamic or static.
  • the contents of a dynamic universe are calculated based on an associated selected date, to reflect the state ofthe databases 251...N on that date.
  • a dynamic universe comprising a query for closing prices ofthe stocks often companies having the largest market capitalizations available in one or more databases 251...N could contain prices for different stocks each day depending on market performance that day.
  • a static universe is determined based on selection criteria for a particular date.
  • the stocks chosen on this date remain constant - the list is fixed on the date chosen and the stocks do not change as the date changes.
  • a static universe comprising a query for closing prices ofthe stocks often companies having the largest market capitalizations on the first trading day of 1999 would contain the same data regardless ofthe date.
  • FIG. 9 schematically illustrates the object model ofthe preferred DataNet engine example embodiment.
  • the DataNet engine comprises a DataNet engine object 900.
  • the DataNet engine object furthers comprises a collection 901 of one or more Error objects 901a, a collection 910 of one or more Universe objects 910a, a collection 920 of one or more Query objects 920a, a collection 930 of one or more Static List objects 930a, a collection 940 of one or more Index List objects 940a, a collection 950 of one or more Graphics Objects 950a, a collection 960 of one or more Simulations objects 960, a collection 970 of one or more Aggregate objects 970a, a collection 980 of one or more Formulas objects 980a, and a collection 990 of one or more Report objects 990a.
  • the DataNet engine object is used to create and manipulate the other objects 901a-990a and that comprise it.
  • a universe 910 is the starting point of many user features and functions in the preferred DataNet example embodiment.
  • a universe is a selected group of securities, such as equities, bonds, indices and/or closed-end-funds based on a set of user-defined criteria.
  • the currently open universe comprises the data environment on which other DataNet engine modules operate. Only one universe may be open at a time.
  • a universe is defined by the user specifying a plurality of queries 920, static lists 930 and indexed lists 940 from which the data comprising the universe is drawn.
  • queries 920 are created and stored for a specific universe 910. Each query is created and saved separately to allow users to construct a universe comprising a plurality of independently specified queries, each query further comprising a set of query criteria. Thus the contents of a universe are derived from a plurality of stored queries that are used to select data from the available databases 251...N. In a dynamic universe, query results may vary with a selected date. All user operations occur with respect to a universe.
  • the general operation ofthe Universe module comprises receiving a query.
  • the query comprises at least one parameter comprising an identifier for a database.
  • the database stores data concerning one or more securities including the GSIDs ofthe securities.
  • the system queries the database and retrieves data concerning the securities satisfying the parameters ofthe query.
  • the universe is populated with the results ofthe query.
  • Universe module 810 is implemented as Universe object 910a as shown in FIG. 9.
  • Universe object 910a comprises a plurality of properties that define the universe.
  • the UniverseCode property stores a unique identifier ofthe universe.
  • a typical universe code takes the form "Un.000015”.
  • the UniverseName property stores the name of the universe (e.g. "JAPAN 600 TOP MARKET VALUE ").
  • the ArrayListElement property stores a list of all elements of a given universe.
  • Universe object 910a also comprises a plurality of methods that permit manipulation ofthe universe both externally by the user via the user interface and internally by the DataNet Engine.
  • the CreateUniverse method accepts as a parameter a universe name. Upon invoking the CreateUniverse method, a new universe is created.
  • the DestroyUniverse method accepts as a parameter the name of an existing universe. Upon invocation, the DestroyUniverse method deletes the existing universe.
  • the AddElement method associates an element with a universe. Elements may be queries, indexed lists, or static lists.
  • the AddElement method accepts as parameters the type of element and a code identifying the element.
  • the RemoveElement method removes an association between an element and a universe.
  • the RemoveElement method also accepts as parameters a code identifying the element and the type of element.
  • the ExistElement method checks an association between an element and a universe.
  • the Exist Element method also accepts as parameters a code identifying the element and the type of element.
  • the Recuperate method accepts as a parameter a list of elements in an existing universe. Upon invocation, the Recuperate method refreshes the stored list of elements in an existing universe after unstored additions or removals have been made to that universe.
  • Error object 901a comprises a Number property that stores an error code, a Description property that stores an error description, and a Source property that stores the origin ofthe error.
  • Error object 901a also comprises a Clear method. Upon invocation, the Clear method clears the previously stored properties of last error of Error object 901a.
  • a Open Universe dialog box 1005 appears in a DataNet main window 1000. If no universe exists in the application, the user preferably creates a universe before working with DataNet. h order to create a new universe, the user preferably selects either the New option from under a Universe heading 1002 on a main menu bar 1001 or clicks a New Universe 1003 icon on a toolbar 1004. Once the user makes his selection, a New Universe dialog box appears (not shown).
  • the New Universe dialogue box preferably comprises a Based On field and a Name field.
  • the Based On field the user can scroll through the list of existing universes.
  • the user may use an existing universe as a starting point and copy all ofthe properties and queries of that existing universe into a new universe.
  • the Based On field defaults to Anone".
  • the user names the universe, thereby defining the UniverseName property of Universe object 910a.
  • the user After completing the Name and the Based On fields, the user is prompted to create a new universe. By responding affirmatively, the user invokes the CreateUniverse method of the Universe object 910a.
  • the name entered by the user is passed as a parameter to the CreateUniverse method.
  • the name entered by the user is stored by the UniverseName property of Universe object 910a and a new universe is created.
  • a Universe dialog box 1010 shown in FIG. 11 appears in the DataNet main window 1000 and the name ofthe new universe appears in the title bar to the Universe dialogue box 1010.
  • DataNet users define a universe by means ofthe Universe dialog box 1010 illustrated in FIG. 11.
  • the Universe dialog box 1010 allows the user to define properties and invoke methods of Universe object 910a.
  • the universe name is displayed in Universe name text box 1020.
  • the user may type in a different name to select an alternate universe.
  • the date is entered in a Date numeric selection box 1030.
  • An asterisk as shown at 1030 selects the last closed business day.
  • the queries such as 1040 comprising the universe are listed in the Universe Query List text box 1050.
  • the user may select a Delete command from under the Universe heading 1002 ofthe main menu bar 1001 in the DataNet main window 1000.
  • a Delete Universe dialog box appears in the DataNet main window 1000.
  • the user then may select the name ofthe universe that the user wants to delete.
  • the name ofthe selected universe is passed as a parameter to the DestroyUniverse method of Universe object 910a, the DestroyUniverse method is invoked, and the selected universe is deleted.
  • no date is stored for a universe. Rather, the date must be re-entered whenever a universe is opened. The date is used to calculate the contents of dynamic universes.
  • Query module 820 is implemented as Query object 920a.
  • Query object 920a is the principal tool for managing both lists and databases.
  • Query object 920a comprises a plurality of properties that define a query.
  • the QueryName property stores a query name.
  • the QueryCurrencyReference property identifies a reference currency.
  • the reference currency is the currency used by the DataNet engine to perform calculations and data fields in other currencies are converted to the reference currency.
  • the QueryOwner property stores the user name ofthe user who created the query.
  • the QueryOwnerMode property stores the mode ofthe query selected by the user.
  • Modes include Update Mode, whereby by the user can modify the query, and Readonly Mode, in which the user cannot modify the selected query.
  • the QueryOwnerMode may only be changed by the user identified by the QueryOwner property and the system administrator.
  • the QueryMaximumNumber property stores a maximum stock number. The maximum stock number is the maximum number of query results (e.g. securities) that will be included in the universe.
  • Query object 920a also comprises a plurality of lists that may define a query.
  • the QueryDatabase list stores a list of databases (i.e. Datastream, etc.), tables, and countries.
  • the QueryResult list stores a list of unique query result identifiers.
  • the Query object 920a also comprises one or more criteria lists.
  • the QueryLogicalCriteria list stores a list of logical operator criteria. The logical operators include “and” and “or”. If the user specifies only one criteria, then this list is empty.
  • the QueryDateCriteria list stores a list of date criteria.
  • the QueryOperatorCriteria list stores a list of operator criteria. Preferably, the operator criteria include "less than”, “greater than”, “equal”, “not equal”, “greater or equal”, “less or equal” and others.
  • the QueryFunction list stores a list of function criteria. A function is a user-selected predefined or user defined operation to manipulate data.
  • the QueryCodeCriteria list stores a list of code criteria.
  • Each code criterion comprises a code identifying a field of information corresponding to a security.
  • a field represents a category of information regarding a security in the data source database 251.
  • the Query ValueCriteria list stores a list of value criteria.
  • Each value criterion represents a value entered by the user to which the field information corresponding to the field selected by the user is compared using the operator criteria. For example, if the user selects the field Aclose price @ and the operator Agreater than ⁇ , then by entering value criteria A20", the user can create a criteria which will select stocks whose close price is greater than $20 on a given date.
  • the QueryDisplayCriteria list stores a list of displayed value criteria. Displayed value criteria represent the value criterion which are displayed to the user. For example, if the user specifies more than one criteria, he may specify which criteria he wishes displayed in the query result.
  • the Query object also comprises one or more sort lists.
  • the QuerySortCode list stores a list of sort codes.
  • a code identifies a field of information corresponding to a security.
  • a query result may be sorted according to the field.
  • the QuerySortFunctions list stores a list of sort functions. Functions may also be used to sort query data.
  • the QuerySortDate list stores a list of sort dates.
  • a query result may also be sorted by the value of a field on a given date.
  • the QuerySortType list stores a list of sort types. Sort types include ascending and descending.
  • the Querylnput list stores a list of input codes. An input code is a unique identifier associated with the parameters, criteria and options used to setup a query.
  • the QueryOutput stores a list of output codes. An output code is unique identifier associated with the securities retrieved as a result ofthe query.
  • Query object 920a comprises a plurality of methods that permit manipulation ofthe query both externally by the user via the user interface and internally by the DataNet engine.
  • Query objects compromise three categories of methods: list management methods, tool methods, and database management methods.
  • a Query object 920a comprises a plurality of list management methods.
  • the list management methods accept a list type as a parameter.
  • the list type informs the method as to the type of list to manipulate and what list to manipulate.
  • the CreateList method creates a list.
  • the CreateList accepts a list type as a parameter.
  • the SetArraySize method sets the size of a list.
  • the SetArraySize accepts a list size and a list type as parameters.
  • the AddValueToList method adds a value to a list.
  • the AddValueList method accepts as parameters a value and a list type.
  • the Removeltem method remove items, or securities, from a list.
  • the Removeltem method accepts an index and a list type as parameters. An index is a location of an item in a list.
  • the RemoveAllItem method removes all items from a list.
  • the RemoveAllItem accepts a list type as a parameter. The invocation of these
  • a Query object 920a further comprises a plurality of tool methods.
  • User-accessible tool methods appear in the user interface under a Query heading ofthe main menu bar. These tool methods allow the user to manipulate the query the user is currently working with.
  • the Refresh method allows the user to store query parameters in the user database and generates a query result based on the query parameters.
  • the Reset method loads information from the queried database.
  • the EditQuery method allows the user to edit a query and returns a display ofthe results ofthe query.
  • the Sort method is used to sort identifiers in a query associated with a security.
  • the Display Item method accepts as a parameter an item or GSID, and displays a value corresponding to that item. The user may select an item to display by. clicking on the item in the query result.
  • a Query object 920a comprises a plurality of database management methods.
  • the database management methods allows the DataNet engine to manipulate information stored on the DataNet server databases.
  • the GetDataBaseList method is used to search for a list of all data source databases corresponding to external data sources (i.e. Datastream, etc.).
  • the GetDatabaseList returns a list of databases.
  • the GetDataProduct method is used to search for all ofthe products available from a database such as equities, indices and close-end-funds.
  • the GetDataProduct method accepts as a parameter the name of a database and returns all ofthe products available from that database.
  • the GetCountryList method is used to search for all ofthe countries available from a database.
  • the GetCountryList method accepts as parameters a database name and a product name and returns a list of countries available from the named database.
  • the GetMarketType method is used to search for a market type.
  • a market type represents a category of field information associated with a database.
  • Market types includes generalities (i.e. security name, ticker symbol, etc.), market data (i.e. close price, price earnings ratio), and account data (i.e. asset per shares, earnings before interest and taxes, etc.).
  • the GetMarketType method accepts as parameters a database name and a product name and returns a market type.
  • a Query object 920a database management methods include methods used to manipulate database field information.
  • the GetFieldList method is used to search for a list of fields for particular database product, and market type.
  • the GetFieldList method accepts as parameters a database name, a product name, and a market type and returns a list of fields.
  • the GetFieldList is used to search for a field list.
  • the GetSelectedFieldCode method accepts as parameters a database name and a field code and returns a code corresponding to a field selected by the user.
  • Query object 920a database management methods include methods used to manipulate function information.
  • a function is a predefined operation that allows the user to manipulate data retrieved from a data source.
  • the GetFunctionList method is used to search for a function.
  • the GetFunctionList method returns a list of functions.
  • the GetFunctionType method is used to search for a list of functions corresponding to a specified function class.
  • the GetFunctionType method accepts as parameters a name of a function class and returns a list of functions corresponding to the function class.
  • the GetFunctionDescription method is used to retrieve a description of a named function.
  • the GetFunctionDescription method accepts as parameters a function class and a function type and returns a function description.
  • the GetFunctionDefmition method is used to retrieve a definition of a named function.
  • the GetFunctionDefmition method has as parameters a function class and a function type and returns a definition of a named function. The invocation of these methods during the execution of Query module 820 is discussed below.
  • information about errors of a Query object 920a are stored in Error object 901a.
  • Error object 901a comprises a Number property that stores an error code, a Description property that stores an error description, and a Source property that stores the source ofthe error.
  • Error object 901a also comprises a Clear method which clears the stored properties ofthe last error of Error object 901a.
  • DataNet users may manipulate a Query object by means of a Query Setup user interface 1110 shown in FIG. 12.
  • the Query Setup user interface 1110 comprises three tabs: parameters 1115, criteria 1120, and options 1125.
  • the parameters tab 1115 is shown in FIG. 12.
  • the query name is indicated in the Query Name text box 1130.
  • the entered name is stored by the QueryName property of Query object 920a.
  • the database on which the query will act is selected from the available databases 251...N and indicated in the Data Base pull-down menu 1135.
  • the GetDatabase List method is invoked and the Database pull-down menu 1135 is populated with a list of all the available databases 251 . . . N.
  • the table within the database on which the query operates is selected in a Data Table pull-down menu 1140.
  • the Data Table pull-down menu 1140 is populated using the GetDataProduct method, and a list of all ofthe products corresponding to the selected database is presented to the user.
  • the saving mode for the query is selected in a Saving Mode mode pull-down menu 1145. If the saving mode is dynamic, the query results are calculated for the date entered in the Universe date text box 1030. If the saving mode is static, the query results do not vary with date.
  • the currency in which calculations will be computed for the query is selected in a Reference Currency pull-down menu 1160.
  • Reference Currency pull-down menu 1160 the selected currency is stored by the QueryCurrencyReference property of Query object 920a.
  • One or more countries may be selected from the list 1165 of countries represented in the table ofthe selected database.
  • the GetCountryList method is invoked to populate the country list 1165 with the countries corresponding to the selected database and products. If only one country is selected and ALocal Currency ⁇ is selected from Reference Currency menu 1160, then the query calculations are performed in the currency ofthe selected country.
  • the criteria tab of Query Setup user interface 1110 is shown in FIG. 13. When the criteria tab is displayed, country tab 1150 and industry tab 1155 remain visible.
  • Each criterion has an associated index number which indicates where the criterion code, date, operator, value and logic occur in the QueryCodeCriteria, QueryDateCriteria, QueryOperatorCriteria, Query ValueCriteria, and Query Logical Criteria lists ofthe Query object, respectively.
  • the index number may be assigned by the user with an Index numeric selection box 1305. Criteria are applied by a query in the order of their index numbers.
  • the data field ofthe database table to which the criterion is applied is specified by a criterion code shown in a Code text box 1310.
  • the criterion code is specified using a Data Editor user interface 1400 shown in FIG. 14 and discussed below.
  • the date for which the data is sampled is specified in the Date numeric selection box 1540 and stored in the QueryDataCriteria property.
  • Each criterion also comprises an operator to be applied to the data specified by the criterion code.
  • the operator is entered using a Operator pull-down menu 1315 and stored in the QueryOperatorCriteria property.
  • Operators are comparators that provide a boolean result when the data specified by the criterion code is compared with the value specified in a Value text box 1320. Typical operators include Aequal,@ Anot equal, @ Agreater than,@ Agreater than or equal, @ Aless than,@ and Aless than or equal.® Applicable operators depend on the class and type ofthe data specified by the criterion code.
  • Criteria are logically ANDed or OR'd together as they are applied in sequence.
  • the user may specify whether a criterion is ANDed or OR'd with previous criterion using a Logic radio button user interface 1325.
  • the logic is stored in the QueryLogicCriteria property.
  • the Data Editor user interface 1400 is displayed as shown in Fig. 14.
  • the user may select a data source 130...N using a Data Source pull-down menu 1410.
  • the user may then select a type of data available from the selected data source using a Data Type pull-down menu 1430.
  • the Data Type pull-down menu 1430 is populated using the GetMarketType method, and a list of market types is presented to the user.
  • the GetFieldList method is invoked and a list of fields corresponding to the entered data source and data type is presented in a Field List 1420.
  • Field List 1420 displays all the fields ofthe selected data type available for the data source, including user-defined formulas stored in the User Database.
  • DataNet engine 880 queries DataNet server 220 for metadata describing the databases.
  • the DataNet server queries the Database Manager 240 for the metadata from the data source databases 251...N and returns the metadata to DataNet engine 880.
  • the GetFieldCode method is invoked and the DataNet engine retrieves the unique identifier corresponding to the selected field.
  • the code for the selected field is displayed in the Data Value text box 1440.
  • the BCLO code shown in 1310 refers to the close price of a security from the Bloomberg database.
  • a Class text box 1450 indicates whether the data is a series or a single value.
  • a Type text box 1460 indicates the data type ofthe data, such as for example, integer, floating point, boolean, or string.
  • An Index text box 1470 indicates the frequency with which the field information is recorded by the data source (e.g. daily, business daily, weekly, monthly, etc.). After selecting the field, the user may cause the criterion code to be entered into the Code text box 1310 in the criteria tab shown in FIG. 13 by selecting an OK button 1480 in Data Editor user interface 1400 shown in FIG. 14.
  • the user can also choose and/or alter a preexisting function by selecting a Function icon 1441 in the Data Editor user interface. In doing so, a Function Selection dialogue box appears (not shown) from which the GetFunctionList, GetFunctionType, GetFunctionDescription, and GetFunctionDefinition methods are invoked.
  • the GetFunctionList returns a list of functions and the list is displayed to the user in a Function List window.
  • the GetFunctionType returns a list of functions corresponding to the function class selected by the user and the list of function types is displayed in a Function Type window.
  • the GetFunctionDescription method returns a description of a selected function and the description is displayed in the description window. The description of a function is the displayed text describing the function.
  • the GetFunctionDefinition method returns a definition of a selected Function and the definition is displayed in the description window.
  • the definition of a function is the meaning ofthe abbreviation used to denote the function.
  • the definition ofthe function AMAVS is AMoving Average.®
  • the options tab of Query Setup user interface 1110 is shown in FIG. 15.
  • the options tab is used to define a sort order for query results.
  • a ellipsis button 1510 of the options tab the Data Editor user interface 1400 shown in FIG. 14 appears.
  • the Data Editor user interface may be used to select a criterion code on which query results will be sorted.
  • a Type radio button user interface 1530 the user may determine whether the sort is ascending or descending.
  • the user may specify the date for which the data is sampled in Date numeric selection box 1540.
  • the user may determine the maximum number of securities that are included in the query output used to populate a universe. Any number including all results may be set. The user may then store the query to the current universe. Any number of queries may be included in a universe, and the universe will be populated with the results from all ofthe queries.
  • the user selects a Report icon from the main menu bar or selects a Run command from under the Query heading in the DataNet main window.
  • the DataNet engine invokes the list management tools of Query object 920a to create a list containing the results ofthe queries.
  • the DataNet engine first invokes the CreateListMethod.
  • the CreateList method accepts as a parameter the list type (i.e. static or dynamic) selected by the user and creates a list.
  • the DataNet engine next invokes the SetArraySize method.
  • the SetArraySize method accepts as parameters the size ofthe list (i.e. the maximum stock number selected by the user) and the list type and sets the size ofthe created list.
  • the DataNet engine passes as parameters a value to be added to the list and a list type to the AddValueToList method.
  • the AddValueToListMethod in turn adds a value to the list.
  • the DataNet engine may remove a single item or an entire list of items from the list via the Removeltem method and the RemoveAllItem method respectively.
  • Query results for a single query or an entire universe may be viewed using a Report user interface 1600 shown in FIG. 16.
  • the Static List module comprises a list of GSIDs used to identify a collection of information comprising a universe.
  • a static list may be populated by a Query module.
  • the general operation ofthe static list module comprises receiving a query.
  • the query comprises at least one parameter comprising an identifier for a database.
  • the database stores data concerning one or more securities including the GSIDs ofthe securities.
  • the system queries the database and retrieves data concerning the securities satisfying the parameters ofthe query.
  • the static list is populated with the GSIDs ofthe securities satisfying the query.
  • the static list module is implemented as Static List object 930a.
  • the Static List object 930a comprises one or more properties that permit definition of a static list.
  • the StaticListName property stores the name of a static list.
  • the StaticListCode property stores a unique identifier ofthe static list.
  • the StaticListDescription property stores a description ofthe static list.
  • Static list documentation is information regarding the static list made available to the user via a Help menu in the DataNet main window.
  • the StaticCodeList property stores a list of GSIDs.
  • Static List object 930a comprises a plurality of methods that permit manipulation ofthe properties of Static List object 930a.
  • the CreateList method is used to create a list for storing GSIDs codes.
  • the CreateList method accepts as a parameter a list type.
  • the SetListSize method is used to set the size of a static list.
  • the SetListSize method accepts as parameters a list size and a list type.
  • the Addltem method is used to add an item to a static list.
  • the Addltem method accepts as parameters an item, or GSID, to be added and a list type.
  • the Removeltem method is used to remove an item from a static list.
  • the Removeltem method accepts as parameters the index, or location, ofthe item to be removed and a list type.
  • the RemoveAllItem method is used to remove all items from a static list.
  • the RemoveAllItem method accepts as a parameter a list type.
  • the Displayltem method is used to display a value corresponding to the item.
  • the Displayltem method accepts as a parameter an item name. By clicking on the name ofthe item in the query result, a value corresponding to that security is displayed.
  • Error object 901a comprises Number property that stores an error number, a Description property that stores an error description, and a Source property that stores the source ofthe error.
  • Error object 901a also comprises a Clear method which clears the stored properties ofthe last error of Error object 901a.
  • Static list object 930a the execution of the static list module will be discussed next.
  • the static list module is used to store a list of GSIDs and interoperates with Query module 820.
  • Query module 820 uses the information entered by the user during execution of Query Setup user interface 1110 in order to generate and store a collection of GSIDs corresponding to the outputs ofthe query.
  • the DataNet engine invokes the CreateList method of Static list object 930a.
  • the DataNet engine passes as a parameter the list type selected by the user, in this case a static list type.
  • the CreateList Method accepts the parameter and creates a list.
  • the DataNet engine next invokes the SetListSize method.
  • the DataNet engine passes as parameters the size ofthe list (i.e. the maximum stock number as selected by the user) and the list type.
  • the SetListSizeMethod then sets the size ofthe created static list.
  • the Addltem method accepts as a parameter from the DataNet engine the GSID for the item to be added to the list.
  • the DataNet engine retrieves the GSID for the item from the output of the query and the Addltem method adds the item to the static list.
  • the DataNet engine may remove any or all ofthe items from a static list by invoking the Remove Item method or the RemoveAllItem method, respectively.
  • the indexed list module comprises a list of GSIDs used to identify a collection of information comprising a universe, but has an associated date.
  • An indexed list reflects the application of a query to the data source databases as ofthe associated date, and is used to populate the universe.
  • the general operation ofthe indexed list module comprises receiving a query.
  • the query comprises at least one parameter comprising an identifier for a database.
  • the database stores data concerning one or more securities including the GSIDs ofthe securities.
  • the system queries the database and retrieves data concerning the securities satisfying the parameters ofthe query.
  • the static list is populated with the GSIDs ofthe securities satisfying the query and an associated date.
  • indexed list module is implemented as Indexed List object 940a.
  • the indexed list object comprises a plurality of methods that permit manipulation ofthe properties of Indexed List object 940a
  • the IndexedListName property stores the name of an indexed list.
  • the IndexedListCode property stores a unique identifier of an indexed list.
  • the IndexedListDescription property stores a description of an indexed list.
  • the IndexedListDocumentation property stores documentation associated with an indexed list. Indexed list documentation is information regarding the indexed list made available to the user in the Help menu in the DataNet main window.
  • the IndexedCodeList property stores a list ofGS-Ds.
  • the CreateList method is used to create a list for storing GSIDs.
  • the CreateList method accepts as a parameter a list type.
  • the SetListSize method is used to set the size of an indexed list.
  • the SetListSize method accepts as parameters a list size and a list type.
  • the Addltem method is used to add an item, or GSID, to an indexed list.
  • the Addltem method accepts as a parameter a GSID and a list type.
  • the Removeltem method is used to remove an item from an indexed list.
  • the Removeltem method accepts as parameters the index, or location, ofthe item to be removed and a list type.
  • the RemoveAllItem method is used to remove all items from an indexed list.
  • the RemoveAllItem method accepts as a parameter a list type.
  • the Displayltem method is used to display a value corresponding to the item.
  • the Displayltem method accepts as a parameter an item name. By clicking on name ofthe security in the query result, a value corresponding to that security is displayed.
  • Error object 901a information about any errors of Indexed List object 940a are stored in Error object 901a.
  • Error object 901a comprises a Number property that stores an error number, a Description property that stores an error description, and a Source property that stores the source ofthe error.
  • Error object 901a also comprises a Clear method which clears the stored properties ofthe last error of Error object 901a.
  • the Indexed List module stores a list of GSIDs and interoperates with Query module 820.
  • the Query module 930 uses the information entered by the user during execution of Query Setup user interface 1110 in order to generate and store a collection of GSIDs corresponding to the results ofthe query.
  • the indexed list also stores a date associated with the security identified by the GSID.
  • the DataNet engine invokes the CreateList method of Indexed list object 940a.
  • the DataNet engine passes as a parameter the list type selected by the user, in this case an indexed list type.
  • the CreateList Method accepts the parameter and creates a list.
  • the DataNet engine next invokes the SetListSize method.
  • the DataNet engine passes as parameters the size ofthe list (i.e. the maximum stock number as selected by the user) and the list type.
  • the SetListSizeMethod then sets the size ofthe created indexed list.
  • the Addltem method accepts as a parameter from the DataNet engine the GSID to be added to the list.
  • the DataNet engine retrieves the GSID from the output ofthe query and the Addltem method adds the GSID to the index list.
  • the DataNet engine may remove any or all ofthe items from an indexed list by invoking the Remove Item method or the RemoveAllItem method, respectively.
  • a formula applies user-defined functions for selecting and performing calculations on data from a universe.
  • a formula may comprise both fields and functions.
  • a field represents a category of information regarding a security in a data source database 251.
  • a function is a predefined operation that allows the user to manipulate the Field Information from the data source.
  • the general operation ofthe Formula module comprises populating a universe with one or more securities and receiving a formula.
  • the Formula module uses the GSID of each security in the universe to identify the data source database corresponding to the field.
  • the formula module retrieves data field information for the security from the data source database in order to evaluate the formula.
  • the formula may be evaluated at each sampling point for each security in the universe.
  • Formula module 830 is implemented as Formula Object 980a.
  • Formula object 980a comprises one or more properties that permit the definition of a formula.
  • the formula properties represent the information stored for a formula on the DataNet server.
  • the Code property stores a unique identifier ofthe formula.
  • a typical formula code takes the form "FR0000000001".
  • the Mnemonic property stores an alias ofthe unique identifier ofthe formula.
  • the alias is a name associated with the unique identifier ofthe formula.
  • the ResourceType property stores a resource type ofthe formula.
  • the resource type corresponds to the set of databases corresponding to the fields in the formula..
  • the OwnerCode property stores a unique identifier corresponding to the user who created the formula.
  • the Name property stores the name ofthe formula.
  • the Definition property stores the definition ofthe formula.
  • the definition of a formula comprises the definitions ofthe functions and fields that make up the formula.
  • the Description property stores the description ofthe formula.
  • the Documentation property stores documentation regarding a formula made available to the user in the Help menu in the DataNet main window.
  • the BeginDate property stores the first date ofthe time range over which the formula is run in a simulation.
  • the first date is specified by the user in a Simulation Setup user interface 1900 in a First Date numeric selection box 1970 as discussed below.
  • the EndDate property stores the last date ofthe time range over which the formula is run.
  • the end date is specified by the user in Simulation Setup user interface 1900 in a Last Date numeric selection box 1975 as discussed below.
  • the GenerateType property stores a number corresponding to the generate type.
  • the generate type is either a formula or a result. For example, if the generate type is 0, then the syntax (e.g. @ CIO* 100) ofthe formula is saved.
  • the result ofthe calculation is made by applying the syntax to the code of an instrument. For example, if the syntax is @C1O*100 and the code is EQ.EUR.IT2548961, then the result is EQ.EUR.IT2548961.C10*100.
  • the Frequency property stores a frequency. The frequency corresponds to the periods at which data is sampled over a date range during the formula calculation. In the Simulation Module, the frequency is specified by a user in Simulated Setup user interface 1900 using a frequency pull-down menu 1980.
  • the Currency Flag property stores a currency flag.
  • the currency flag indicates whether the formula is dependent on the currency ofthe countries for which the formula is generated.
  • the AutomaticConvert property stores an automatic currency conversion flag.
  • the automatic currency conversion flag indicates whether currency calculations are automatically converted to a currency selected by the user.
  • the ConvertTechnique property stores a technique used to perform a currency conversion.
  • the IgnoreAddition property stores an indicator to ignore addition in a formula.
  • the IgnoreMultiply property stores an indicator to ignore multiplication in a formula.
  • the Observed property stores the observed.
  • the SourceProperty stores the namelist ofthe lists of instruments.
  • Formula object 830a comprises one or more methods that permit manipulation ofthe formula.
  • the Initialize method accepts as parameters a NewCode, a BaseCode, a parent, and a key.
  • the user creates a formula using a Formula Editor user interface 1700.
  • the Initialize method is invoked.
  • the Initialize method sets the parameters of the formula.
  • the Verify method verifies the syntax ofthe formula created by the user by applying the formula to the first security in the universe.
  • the verify method verifies the formula syntax.
  • the CleanUp method accepts as parameters a code corresponding to a formula.
  • the CleanUp method erases codes in the user database by testing if the code already exists in another list user database.
  • the Update method accepts as parameters a list code, a formula code, and a formula definition.
  • the list code may be the code of either a static list or index list stored in the user database.
  • the Update method updates the user database with formula information for a list of securities.
  • the SaveParam method saves the parameters of formula in the user database using the formula code.
  • the Record method also verifies the syntax ofthe formula, saves the parameters, and updates all ofthe lists in the user database with the formula definition.
  • Formula objects such as 990a are defined using the Formula Editor user interface 1700 shown in FIG. 17. Parameters are set using the parameters section 1701.
  • a Name text box 1705 allows the user to define a name by which the formula will be referenced.
  • a Title text box 1710 allows the user to define a description ofthe formula.
  • a Data Base pulldown menu 1715 allows a user to select a database for the desired data source to which the formula will be applied.
  • the Data Table pull-down menu 1720 allows the user to select the table of information from the selected database to which the formula will be applied.
  • the DataNet engine 880 queries the DataNet server 220 for metadata describing the databases.
  • the DataNet server queries the database manager 240 for the metadata from the data source databases 251...N and returns the metadata to the DataNet engine 880.
  • a Country pull-down menu 1730 allows the user to select the countries to which the formula will be applied. All countries may be selected by selecting a Globe button 1735.
  • a currency flag check-box 1725 allows the user to define whether the formula will be dependent on the currency ofthe selected countries.
  • Data fields are selected for inclusion in a formula using a Field List box 1702.
  • the user first specifies a database corresponding to a data source from the available data sources 130...N using a Data Source pull-down menu 1740.
  • the DataNet engine then populates a Data Table pull-down menu 1745 with metadata indicating the data tables stored in the selected data source database.
  • the user next selects a data table from the data tables comprising the selected data source database using the Data Table pull-down menu 1745.
  • the DataNet engine then populates a Data Type pull-down menu 1750 with metadata describing the data types available within the selected data table.
  • the user selects a data type from a Data Type pull-down menu 1750.
  • the DataNet engine then populates a Field List 1755 with metadata describing the fields available within the selected data type.
  • the user may then select a field from the Field List 1755.
  • the DataNet engine populates a Class 1760, Type 1765, and Index 1770 text boxes with metadata respectively describing the class, type and index ofthe field.
  • the DataNet engine adds the field to the formula text at the point currently indicated by a cursor 1775 in a Formula Text section 1780.
  • Functions may be added to a formula using a Function List section 1785.
  • the user first selects a function type from a Function Type pull-down menu 1790.
  • DataNet function types include mathematics, financial, statistics, general, data and case, logical, string, operator and constant, and user.
  • the DataNet engine populates a Function List 1795 with function descriptors such as 1796.
  • function descriptors such as 1796.
  • the user clicks twice on the function descriptor the function is added to the formula at the point indicated by the cursor 1775 in Formula Text section 1780.
  • the Constant Data Selection window 1801 allows the user to select a constant for inclusion in a formula.
  • a constant as used herein is a data field that has the same value regardless ofthe security to which a formula is applied. Constants may and typically do have values that vary with the simulation date. For example, the closing price of an index or of a given security will have the same value on a given day regardless ofthe closing price of other stocks in the universe on that day.
  • a formula comprising the closing price of IBM plus the closing price ofthe security to which the formula is applied comprises a constant (the closing price of IBM) plus a non-constant (the closing price ofthe security to which the formula is applied).
  • the Constant Data Selection window 1801 In order to open the Constant Data Selection window 1801, the user selects a Select Data 1702 button from the Formula Editor tool bar.
  • the Constant Data Selection window comprises three boxes: a Data Source section, a List section, and a Data List section.
  • the Constant Data Selection window comprises three boxes: a Data Source section, a List section, and a Data List section.
  • the Constant Data Selection window comprises three boxes: a Data Source section, a List section, and a Data List section.
  • the Constant Data Selection window comprises three boxes: a Data Source section, a List section, and a Data List section.
  • the DataNet engine populates a Data Table pull-down menu 1803 with metadata indicating the data tables stored in the selected database.
  • the user next selects a data table from the data tables (i.e. Equity, Index, Closed-end-funds, commodities, Economic series, Simulation Index, Aggregate index) comprising the selected data source database using the Data Table pull-down menu 1803.
  • a List section 1805 displays the corresponding list of items available to the user. For example, if the user selects the table "Indice", the list box displays the Indice List 1811. The DataNet engine then populates the Indice list with metadata describing the indices covered by the selected indice table. Here, the user specifies the index he wants to use as a constant. The user may also select a country from the Country pull-down menu 1804. In the Data List section 1812, the user specifies a data type (e.g. market data) from the Data Type pull-down menu 1806. The DataNet engine then populates the Data List 1813 with metadata indicating the available fields ofthe selected data type. The user may then select a desired data field (e.g. close price, dividend yield etc.) ofthe selected data type.
  • a desired data field e.g. close price, dividend yield etc.
  • a Class text box 1807 indicates whether the data is a series or a single value.
  • a Type text box 1808 indicates the data type ofthe data, such as for example, integer, floating point, boolean, or string.
  • a Index text box 1809 indicates the frequency with which the field information is recorded by the data source (i.e. daily, business daily, weekly, monthly, etc.). To enter the selected code for the constant in the formula, the user clicks a Ok button 1810.
  • a formula may be saved in the user's user database 895. After saving, it will appear in the formula field list 1755 when the Auser database-, data-source is selected in the Data Source pull-down menu 1740. The formula may then be used to build a universe, run a simulation or aggregate, or construct new formulas. Formulas may be backtested with historical data using Simulation module 850.
  • simulations are used to back-test a formula and as a portfolio definition tool. Simulations apply a selected formula to every stock in the open universe for each date in a range of dates, and rank the stocks in the universe based on the formula value for that security.
  • a portfolio is defined through a combination of a partitioning ofthe ranked securities into classes, and threshold stock number which determines the number of securities in the portfolio.
  • the simulated formula is applied to calculate a value for each security in the universe. Every security in the universe is ranked according to its value, from highest to lowest. The securities are assigned to classes according to their rank. A fixed number of different securities are held in the portfolio, as defined by the stock number SN. Initially, the highest-ranked SN securities in the universe are assigned to the portfolio. As the rankings change, securities are moved in and out ofthe portfolio (Atradedg) as follows: Each security in the portfolio remains in the portfolio unless and until its ranking falls into the next lower class. At that point, it is traded out ofthe portfolio, and the highest ranking security not in the portfolio is traded into the portfolio.
  • the universe may be partitioned into classes by formula value or by stock number (rank). If the universe is partitioned by stock number, then equal numbers of securities are assigned to each class in rank order. Thus, for a universe containing 100 securities and five classes, each class contains 20 securities - the highest ranked 20 securities in class 1, the next 20 in class 2 and so on. As the rankings change with simulation date, so will the contents of each class. Each class always contains one-fifth ofthe securities in the universe.
  • class 1 contains securities having a market capitalization ranging from $451 million USD - $500 million USD
  • class 2 contains securities having a market capitalization ranging from $401 million USD - $450 million USD and so on. As the rankings change, so does the contents of each class.
  • Each class may contain differing numbers of securities, depending on the formula values.
  • the general operation ofthe Simulations module comprises populating a universe with one or more securities and determining a portfolio.
  • the user specifies a formula and a date range and a sampling frequency over which the simulation is run.
  • the Simulation module uses the GSID of each security in the universe to identify the data source database corresponding to the field.
  • the Simulations module retrieves data field information for the security from the data source database in order to evaluate the formula.
  • the Simulations module determines at each sampling point the securities in the portfolio based on the application ofthe formula to each security in the universe.
  • Simulation module 850 is implemented as simulation object 960a.
  • Simulation objects 960a is composed of two macros, the SimModul macro and the SimTools macro. Both macros may be written in languages such as 4GL, Visual C++, Visual Basic, and others.
  • the macros define all the operations ofthe simulation including the setting of all ofthe simulation variables, the evolution ofthe backtest according the variables, the definition of classes and of a portfolio, and the generation of two reports: a performance report and a portfolio report.
  • the SimModul macro comprises one or more procedures that permit manipulation ofthe ofthe simulation. These procedures are accessible to the user under a simulations heading in the DataNet main window.
  • the Open_Simulation procedure opens an existing simulation by initializing the simulation data and loading the properties ofthe simulation into a work database.
  • the Open_Simulation procedure accepts as parameters a simulation code and simulation graphics.
  • the simulation code is a unique identifier corresponding to a simulation.
  • the simulation graphics parameter represents the graphics generated for an existing simulation.
  • the New_Simulation procedure creates a new simulation.
  • the New_Simulation procedure accepts as a parameter a simulation source index.
  • the simulation source index stores an index ofthe data sources that are accessed during a simulation.
  • the New_Simulation procedure sets up the simulation data and loads it into a work database.
  • the Delete_Simulation procedure deletes a simulation.
  • the Delete_Simulation procedure accepts as a parameter a simulation code.
  • the user selects the Delete Simulation command from under the Simulations heading, the user is presented with a list of existing simulations.
  • the Rename_Simulation procdure gives a simulation a new name.
  • the Rename_Simulation procedure accepts as a parameter a simulation name.
  • the user selects the Rename Simulation command from under the Simulations heading, the user is presented with a list of existing simulations. Upon clicking on the name of a simulation, the user is prompted to enter a new name for the simulation.
  • the name entered by the user is passed as a parameter to the Rename_Simulation procedure and the simulation is given the entered name.
  • the Import_Simulation procedure imports a simulation.
  • the ImportjSimulation procedure accepts as a parameter a simulation file name.
  • the user selects the Import Simulation command from under the Simulations heading, the user is prompted to enter a simulation file name for the simulation he wishes to import.
  • the simulation file name is passed as a parameter to the ImportjSimulation procedure and the external simulation file is imported into the Simulation module.
  • the Export_Simulation procedure exports a internal simulation file.
  • the Export_Simulation procedure accepts as parameters a simulation code and a simulation file name.
  • the user selects the Export Simulation command from under the Simulations heading, the user is prompted to a enter simulation file name for the simulation he wishes to export.
  • the simulation file name and corresponding simulation code are passed as parameters to the ExportjSimulation procedures and the internal simulation file is exported from the Simulations module.
  • the View_Simulation procedure displays the results of a simulation.
  • the View_Simulation procedure accepts as a parameter simulation graphics.
  • the user selects the View command from under the Simulations heading, the user is presented with a list of existing simulations.
  • the Print_Simulation procedure prints the graphics ofthe opened simulation.
  • the Print_Simulation procedure accepts as parameters simulation graphics, a graphic file name, a graphic page width, and a graphic page height.
  • the user selects the Print command from under the Simulations heading, the user is presented with a list of existing simulations.
  • the simu!ation s graphics, the graphics file
  • the Test_Simulation procedure tests whether or not a formula is used by a simulation.
  • the Test_Simulation procedure accepts as a parameter a formula code.
  • the formula code is a unique identifier corresponding to the formula to be tested.
  • a simulation is set up using a Simulation Setup user interface 1900 as discussed below in connection with FIG. 19.
  • the user may click a Ok button 1936. In doing so, the user may invoke one or more ofthe following procedures ofthe SimModul macro.
  • the Set_Simulation procedure defines all ofthe simulation variables and sets them according to the data entered by the user in Simulation Setup user interface 1900 as discussed below in connection with FIG. 19.
  • the Set_Simulation procedure accepts as a parameter a formula code.
  • the formula code is a unique identifier associated with the formula specified by the user in a Formula text box 1910.
  • the Set_Simulation procedure also accepts as a parameter a benchmark code.
  • the benchmark code is a unique identifier associated with the benchmark specified by the user in a Benchmark text box 1920.
  • the benchmark may comprise another data field or formula and serves as a point of comparison for the formula specified in the simulation.
  • the Set_Simulation procedure also accepts as a parameter a weighting code.
  • the weighting code is a unique identifier associated with a weight specified by the user in a Weight pulldown menu 1930.
  • the weighting determines the weight given to each security during trading of a portfolio in a simulation.
  • the SetjSimulation procedure also accepts as a parameter a universe type.
  • the universe type may be either static or dynamic and is specified by the user using Universe radio buttons 1940.
  • the SetjSimulation procedure accepts as a parameter a frequency.
  • the frequency is specified by the user using the Frequency pull-down menu 1980.
  • the frequency corresponds to the periods at which data is sampled over a date range during a simulation.
  • the SetjSimulation procedure also accepts as parameters a start date and an end date.
  • the start date and the end date are specified by the user in a First Date numeric selection box 1970 and a Last Date numeric selection box 1975 respectively.
  • the start date and the end date define the date range over which a simulation is run.
  • the SetjSimulation procedure also accepts as a parameter a sorting type.
  • the sorting type is specified by the user using Partitioning by radio buttons 1950.
  • the sorting type determines how classes of stocks is partitioned during a simulation.
  • the SetjSimulation also accepts as a parameter a number of classes.
  • the number of classes is specified by the user using a Class Number numeric selection box 1955.
  • the class number is the number of partitions of a simulation portfolio.
  • the SetjSimulation procedure also accepts as a parameter a tolerance value.
  • the tolerance value is specified by the user using a Tolerance numeric selection box 1960.
  • the tolerance may be used to reduce churning ofthe portfolio.
  • the SetjSimulation procedure also accepts as a parameter a maximum deviation value.
  • the maximum deviation value is specified by the user using the Maximum Deviation numeric selection box 1965.
  • the maximum deviation value represents the maximum percentage deviation permitted in the weight of each stock in the portfolio.
  • the SetjSimulation procedure accepts as a parameter a dividend flag.
  • the dividend flag may be specified by the user using a Dividend Invested check box 1907. If the dividend flag is selected by the user, then dividends earned on securities in the portfolio are reinvested in the portfolio during the simulation.
  • the SetjSimulation procedure also accepts an exclusion flag as a parameter.
  • the exclusion flag may be specified using an Exclusion Enabled box 1906.
  • the exclusion flag designates whether certain stocks or certain types of stocks are excluded from the portfolio during the simulation.
  • the SetjSimulation procedure also accepts as a parameter an exclusion code.
  • the exclusion code may be specified by the user using a Field text box 1911.
  • the exclusion code represents a unique identifier associated with the field with which the user specifies an exclusion.
  • the SetjSimulation procedure also accepts as parameters an exclusion operator and an exclusion value.
  • the exclusion operator and the exclusion value may be specified by the user using an operator pull-down menu 1916 and a value text box 1920. The user may set-up a comparison using the field, the operator, and the value. If the comparison is true, then a security or a group of securities are excluded from the portfolio during the simulation.
  • the SetjSimulation procedure also accepts as a parameter a preference flag.
  • the preference flag may be specified by the user using a Preference Enabled check box 1926.
  • the SetjSimulation procedure also accepts as a parameter a preference code.
  • the preference code is specified by the user using a Field text box 1931.
  • the preference code is a unique identifier associated with the field specified by the user. If the preference flag is selected by the user, then the securities in the portfolio may be sorted according to the field specified by the user. As discussd above, upon completing the simulation setup, the user may click OK button 1936. In doing so, the SetjSimulation procedure is invoked.
  • the SetjSimulation procedure sets the simulation variables according to the data entered by the user.
  • the SimModul also comprises a SetjSimulation_Country procedure.
  • the SetjSimulation_Country procedure defines country data of a simulation.
  • the SetjSimulation_Country procedure accepts as parameters a country code, a exchange rate value, and a broker fee.
  • the country code is a unique identifier associated with a country specified by the user in a Country pull-down menu 1985.
  • the exchange rate value represents the costs of currency exchanges as specified by the user using a Change numeric selection box 1995.
  • the broker fee represents the transaction costs as a percentage of each transaction as specified by the user in a Change numeric selection box 1995.
  • the user may specify the trading and currency exchange costs for a country.
  • the SetjSimulation_Country procedure loads data about the countries for which the simulation is run.
  • the SetjSimulationJData procedure defines the simulation portfolio data.
  • the SetjSimualtionJData procedure accepts as parameters a name of a simulation, a class index, and a number of titles in the portfolio.
  • the name parameter comprises the name ofthe simulation as specified by the user during the creation of a new simulation.
  • the class index corresponds to the index selected by the user using a Class Index numeric selection box 2025.
  • the number of titles in the portfolio corresponds to the size ofthe simulation portfolio as specified by the user in a Stock Number numeric selection box 2015.
  • the SetjSimulationJData procedure sets up the simulation portfolio.
  • SimulationJPartition procedure partitions the universe according to the partitioning method specified by the user using Partitioning by radio buttons 1950.
  • the SimulationJPartition procedure accepts as parameters a class index and a stock number.
  • the SimulationJPartition procedure divides the universe into classes and updates the related data in the work database.
  • the SimulationJ-nitialize procedure initializes the calculation in the simulation.
  • the SimulationJ-nitialize procedure accepts as parameters a class index, a stock number, and simulation graphics.
  • the SimulationJ-nitialize calculates the first step ofthe simulation.
  • the SimulationJExecute procedure calculates the steps ofthe simulation.
  • the Simulation JExecute procedure calculates each step ofthe simulation. Each step ofthe simulation corresponds to a date. The steps ofthe simulation being calculated is indicated at the bottom of Simulation . Tools window 2000 during the execution ofthe simulation.
  • the SavejSimulation procedure creates an index ofthe results ofthe simulation.
  • the SavejSimulation procedure accepts as a parameter a sampling frequency.
  • the SavejSimulation procedure creates a series ofthe performance results ofthe simulation.
  • the ReportjSimulation procedure builds a performance report.
  • the ReportjSimulation procedure reads the results ofthe simulation and updates the work database with values corresponding to each box at the bottom ofthe Simulation Tools window 2000.
  • the ReportJPortfolio procedure builds a portfolio report.
  • the ReportJPortfolio procedure reads the results ofthe simulation and updates the work database with values corresponding to each box in at the bottom ofthe Simulation Tools window 2000.
  • the SimTools macro comprises one or more procedures and methods that permit manipulation ofthe simulation.
  • the procedures ofthe SimTools macro may be invoked upon completing the simulation setup. The user may click a Ok button 1936 and in doing so, the user may invoke one or more ofthe following procedures ofthe SimTools macro.
  • the Simulation_Read_Class procedure reads the securities in a universe at a given date.
  • the SimulationJ-tead_Class accepts as parameters a user code and a date value.
  • the date value represents a given date.
  • the user code is a unique identifier corresponding to the user who created the simulation.
  • the Simulation _Read_Class reads the unique codes associated with the securities ofthe universe at the given date.
  • the Simulation module uses these codes to retrieve field information from the data source databases for the securities in the universe.
  • the SimulationJPartition procedure also partitions the universe into classes.
  • the SimulationJPartition procedure accepts as parameters a user code, a ranking, and a date value.
  • the ranking corresponds to a securities rank in the universe according a field value.
  • the SimulationJPartition procedure sets up the variables ofthe securities ofthe universe, applies the formula to each security, sort the securities in the universe, and partitions the universe into classes according to the partitioning method selected by the user.
  • the Simulation J-leadJ-Jniverse procedure reads a universe.
  • the Simulation_Read jUniverse procedure accepts as parameters a user code, a ranking, a date value, and a currency.
  • the SimulationJ eadJUniverse loads the codes, the formula values, and the country of each security ofthe universe.
  • the SimulationJExcIusion procedure excludes securities from a simulation.
  • the SimulationJExcIusion procedure accepts as parameters a user code, a calculation date, and a currency.
  • the calculation date corresponds to the date for which the exclusion comparison is calculated.
  • the Simulation_Exclusion procedure updates the universe according to the exclusion specified by the user.
  • the Simulation jSort procedure sorts a series result of a simulation.
  • the SimulationjSort accepts as parameters a rank order and a list of series to classify.
  • the the SimulationjSort procedure sorts a series according to the rank order.
  • the Simulation_CountryJ?ercentage procedure calculates percentages by country.
  • the Simulation_CountryJPercentage procedure accepts as parameter a user code and a date.
  • the Simulation_Graph creates a simulation graph.
  • the Simulation 3raph procedure accepts as a parameter a user code.
  • the Simulation_Graph procedure draws the graph at each step ofthe simulation.
  • the SimulationjSetup Graph procedure initializes the graph before drawing.
  • the SimulationjSetup_Graph procedure accepts as parameters a simulation database and a graphic code.
  • the simulation database stores the results of a simulation.
  • the graphic code is a unique identifier associated with a simulation graphic.
  • the TestjSimulation method tests a simulation configuration.
  • the TestjSimulation method accepts as parameters a simulation database and a simulation code.
  • the simulation code is a unique identifier associated with a simulation.
  • the TestjSimulation method tests the benchmark, the formula, the preference parameters, and the exclusion parameters.
  • the Simulation Jniverse method reads the code ofthe securities in the universe.
  • the Simulation Universe method accepts as parameters a user code, a date value, and a currency ofthe universe.
  • the currency ofthe universe is the currency in which the simulation calculations are performed.
  • the Simulation_GetJSToteCodes method checks if a formula has been applied to a code of a securities in the universe.
  • the Simulation_Get_Notecodes accepts as parameters a user code, a formula code, and a calculation date. Upon invocation, the Simualtion_Get_Notecode method returns a code indicating whether the formula has been applied.
  • the Simulation_Get_Country method reads the country codes ofthe universe.
  • the Simulation_Get_Country method accepts as parameters a list of codes.
  • the Simulation_Get_Country method returns the countries corresponding to the input codes.
  • the PortfolioJWeight method defines the weight ofthe assets in the portfolio.
  • the PortfolioJWeight method accepts as parameters a user code and a date.
  • the PortfolioJWeight method calculates the weight of each asset in the portfolio following the weight specified by the user.
  • the Simulation_GetJ?rice method checks if at least one close price ofthe securities in the universe is defined.
  • the Simulation_GetJPrice method accepts as parameters a list of codes.
  • the Simulation J retJPrice method returns a close price of a security in the universe, if available.
  • the Simulation_ReadJ?rice method checks the universe to determine if at least one close price is defined.
  • the Simulation_ReadJ?rice method accepts as parameters a list of codes, a calculation date, and a currency of calculation.
  • the Simulation_ReadJ?rice method calculates the price ofthe securities in the universe on the calculation date according to the currency specified by the user.
  • the Simulation_Read_Capitaliztion method checks the universe to determine if at least one capitalization is defined.
  • the Simulation R.ead_Capitalization method accepts as parameters a list of codes, a calculation date, and a currency of calculation.
  • the Simulation JReadJDividend method checks the universe to determine if at least one capitalization is defined and converts it from end to summed.
  • the SimulationJReadJDividend accepts as parameters a list of codes, a calculation date, and a currency of calculation.
  • Simulation object 960a the user aspect of Simulation module 960 is discussed next.
  • FIG. 18 is an illustrative Simulation Tools user interface 1800.
  • the user defines a simulation name by entering the name into a Simulation Name text box 1860.
  • the user may then partition the simulation into one or more classes by entering a number in a Class Index text window 1820.
  • the Class window 1840 displays the securities in the class index indicated in Class Index text window 1820.
  • the user also selects the size ofthe portfolio by entering a stock number in a Stock Number text window 1830.
  • a portfolio is a collection of stocks whose performance is monitored during the execution ofthe simulation.
  • a Portfolio window 1850 displays the securities in the portfolio.
  • FIG. 19 is an illustrative Simulation Setup user interface. In order to set up a simulation, the user preferably selects the Setup command under a Simulation heading in the DataNet main window. Alternatively, the user may select the Simulation setup icon from the Universe toolbar 1060.
  • the user may specify the Formula to be simulated in the Formula text box 1910.
  • the Formula ellipsis button 1915 the Field Selection menu appears.
  • the user may specify the formula or field he wants to simulate by selecting a database, a table, and a data type.
  • the Field Selection Menu comprises two sections: a Data Source section 2140 and a Data Type section 2150.
  • the DataNet engine populates a Data Table pull-down menu 2160 with metadata indicating the data tables stored in the selected database.
  • the user next selects a data table from the data tables (i.e. Equity, Index, Closed-end-funds, commodities, Economic series, Simulation Index, Aggregate index.) corresponding to the selected data source database using the Data Table pull-down menu 2160.
  • a Field List section 2165 displays a list of fields available to the user.
  • the DataNet engine then populates the Field List 2166 with metadata describing the fields covered by the selected table.
  • the user may select a table via the Data table pull-down menu 2167.
  • the user may select the field he wants to use by clicking on the name ofthe field in the Field list.
  • the Class text box 2170 indicates whether the data is a series or a single value.
  • the Type text box 2175 indicates the data type ofthe data, such as for example, integer, floating point, boolean, or string.
  • the Index text box 2180 indicates the frequency with the field information is recorded by the data source (i.e. daily, business daily, weekly, monthly, etc.). To enter the selected field as the code for the field 1911, the user clicks the Ok button.
  • a benchmark may be specified using the Benchmark text box 1920 or selected from a data field list by selecting a Benchmark Ellipsis button 1925. When the user selects the Benchmark Ellipsis button, the Constant Data Selection window appears, and is used as described above in connection with FIG. 18a.
  • the user may specify the weights ofthe assets in the simulation portfolio by selecting either equal weights or market cap weights from the Weight pull-down menu 1930. If the user selects equal weighting, trading ofthe portfolio is simulated to maintain an equal value of each security. If the user selects market cap weights, the trading ofthe portfolio is simulated so that the value of each security in the portfolio is proportional to the market capitalization ofthe issuer. The user may specify a maximum weight in the Maximum Weight text box 1935, which causes the trading ofthe portfolio to be simulated so that the proportion of each security is prevented from exceeding the maximum weight.
  • the user may also set the universe to either dynamic or static using radio buttons 1940. If the user sets the universe type to a type different from his selection in the universe module, then the user's new selection overrides his original selection and the simulation is carried out according to the selection made in the Simulation Setup.
  • the user may also specify a reference currency using Reference Currency pull-down menu 1945. All currency amounts are converted to the reference currency during simulation.
  • the user specifies the parameters for the simulation setup.
  • the user may select to partition the classes of stocks by formula value or stock number using the Partitioning By radio buttons 1950.
  • the user may select a number of classes for the simulation using the Class Number numeric selection box 1955.
  • the class number determines the number of partitions.
  • the user may also select a tolerance using the Tolerance numeric selection box 1960.
  • the tolerance represents a percentage by which the formula value of a security in the portfolio may fall short ofthe value at which it would otherwise be traded out ofthe portfolio, and remain in the portfolio instead.
  • the tolerance may be used to reduce churning ofthe portfolio.
  • the Maximum Deviation numeric selection box 1965 the user may specify the maximum percentage deviation permitted in the weight of each stock in the portfolio from the specified weighting scheme.
  • the user may specify a beginning date for the simulation using the First Date numeric selection box 1970, and an ending date using the Last Date numeric selection box 1975.
  • the user may also specify the frequency with which the data will be sampled (i.e. Daily, Business, Weekly, etc.) in the Frequency pull-down menu 1980.
  • the user may specify trading and currency exchange costs for each country.
  • the user may select a country.
  • the user may select a Globe icon 1986 to apply specified costs to all the countries listed in the Country pull-down menu.
  • the user may set transaction costs as a percentage of each transaction.
  • the Change numeric selection box 1995 the user may specify the cost of currency exchanges as a percentage ofthe exchanged amount.
  • the user may specify the reinvestment of dividend options using the Dividend Invested check box 1907.
  • the user may specify whether to exclude certain stocks or types of stocks from the portfolio.
  • the user double clicks in a Field text box 1911 and a Field Selection menu appears.
  • the user may specify a Field for possible exclusion from dividend reinvestment.
  • the user uses a pull-down menu 1916 to select a comparison operator to compare the selected field to the value specified by the user in text box 1921. If the comparison is true, then the security is excluded from the portfolio.
  • the user may specify a means an alternate sort order for the securities in the universe based on a particular field.
  • the user selects the field by double clicking in 1931 and selecting a field from the Field Selection menu as discussed above.
  • FIG. 20 An example graphic simulation result is shown in figure FIG. 20.
  • the performance ofthe simulation portfolio 2010 and the benchmark 2020 are displayed.
  • the annual performance ofthe simulation portfolio 2030 and the benchmark 2040 are also displayed.
  • the user selects the commands Report and Performance from under the Simulation heading in the main menu bar.
  • the simulation results are stored in the user database.
  • the user can access the simulation results in both formula module 830 and in graphics module 840.
  • formula module 830 the user clicks on the Selected Data button on the Data Editor toolbar and the Constant Data Selection window appears.
  • the user may select the simulation results from the Field List for the user database.
  • the DataNet engine comprises an Aggregate module 860.
  • An aggregate is an operation (e.g. sum, average, etc.) calculated on a universe of stocks.
  • Aggregate module 860 enables the user to build historical summaries of large sets of equities, bonds, etc. and manipulate the data and results for the purposes of comparative analysis.
  • the Aggregate module aggregates to a single value any combination of information (e.g. field, formula, etc.) calculable for individual securities. Any data from any ofthe data sources, as well as any formula, can be aggregated for any index or universe of stocks.
  • Aggregate module 860 can take a given set of values in a universe and perform a plurality of operations.
  • the general operation ofthe Aggregates module comprises populating a universe with one or more securities and determining a portfolio.
  • the user specifies a function and a date range and a sampling frequency over which the simulation is run.
  • the user also specifies the field he wants to aggregate.
  • the Aggregates module uses the GSDD of each security in the universe to identify the data source database corresponding to the field.
  • the Aggregates module retrieves a set of data field information for the securities in the universe from the data source database in order to evaluate the aggregate.
  • the Aggregates module determines at each sampling point a value based on the application of the function to the set of data field information.
  • Aggregate module 860 is implemented by Aggregates object 970c.
  • Aggregates object 970c comprises a Weight class.
  • the weight class comprises a Weight property that stores a weight. Results ofthe aggregate module may be weighted according to any field.
  • Aggregates object 970c also comprises a Function class.
  • the function represents the arithmetic operation to be run on a field specified by the user as discussed below.
  • the function may be "average”, “median”, “maximum”, “minimum”, or "sum”.
  • the function class comprises a plurality of properties that permit definition ofthe Function class.
  • the Name property stores the function name.
  • the Description property that stores the function description.
  • Aggregates object 970c comprises a Field class.
  • the field represents the category of data of which the aggregate is run (e.g, close price, market value, analysts revision ratio, etc.).
  • the Field class comprises a Name property stores the field name.
  • the Aggregate object comprises an Aggregates class.
  • the Aggregate class comprises the Field class, the Function class, and the Weight class.
  • the Aggregates class comprises a plurality of properties that permit the definition of Aggregates object 970c.
  • the following properties are specified by the system during the aggregate setup.
  • the Code property stores a unique identifier corresponding an aggregate.
  • the Mnemonic property stores an alias of the aggregate code.
  • the Type property stores a resource type.
  • the resource type is a database 251 from which data is retrieved.
  • the Owner property stores a resource owner. The resource owner corresponds to a user during a DataNet session.
  • the Name property stores the aggregate name.
  • the Description property stores a description ofthe aggregate.
  • the Memo property stores a memo corresponding to the aggregate.
  • a memo is a notation regarding the aggregate.
  • the Universe Code property stores the unique identifier of a universe.
  • the universe is the collection of securities on which the aggregate is run.
  • the UniverseType property stores the type ofthe universe as specified by the user in the aggregates setup as discussed below. The universe type may either be dynamic or static.
  • the UniverseFrequency property stores a frequency of a universe.
  • the universe frequency represents the frequency (e.g. daily, weekly, monthly, etc.) ofthe data is stored in the universe.
  • the Frequency property stores a frequency ofthe aggregate as specified by the user.
  • the frequency (e.g., daily, weekly, monthly, etc.) ofthe aggregate is the frequency at which data is sampled in a date range during execution ofthe Aggregate module.
  • the BeginDate property stores the first date ofthe date range over which the aggregate is run.
  • the EndDate property stores the last date ofthe date range over which the aggregate is run.
  • the FieldsCode property stores a unique identifier ofthe field for which the aggregate is run.
  • the Functions property stores the functions collection.
  • the Weight property stores the weight collection.
  • the Aggregate object 960c comprises a Run method returns the result ofthe execution ofthe aggregate module.
  • aggregates are defined using Aggregates Setup user interface 2300.
  • An illustrative Aggregates Setup user interface is shown in FIG. 23.
  • there are five steps to setting up an aggregate (1) setting the parameters (2) setting the options (3) setting the data fields (4) setting the functions and (5) setting the weight field. They may be performed in any order.
  • the user may set the parameters in a Aggregate Setup Parameters section 2301. hi a Name text box 2302, the user specifies the name ofthe aggregate.
  • the name specified is stored by the Name property of Aggregates object 970c.
  • the user may use First Date numeric selection box 2303 and a Last Date numeric selection box 2304 to specify the date range for which the user wants to aggregate data.
  • the dates specified are stored by the aggregate Begin Date and End Date property of Aggregates object 970c respectively.
  • the user may specify the frequency at which the data is sampled using a Frequency pull-down menu 2305.
  • the Frequency is stored by the Frequency property of Aggregates object 970c.
  • the user may specify the options in the Options section 2306.
  • the user may specify the currency in which the user wants the aggregate results to be calculated.
  • the user may set the universe to be static or dynamic. If the user sets the universe type to a type different from his selection in universe module 810, then the users new selection overrides his original selection and the aggregate is carried out according to the selection made in the Aggregate Setup 2300.
  • the universe selection is stored by the UniverseType property of Aggregates object 970c.
  • the user may specify the data fields to be aggregated in the Data Fields section 2309. To select an existing field or formula, the user may right-click in the Data Fields text window 2310 and select the New option.
  • the Field Selection menu appears in response, and may be used as discussed above to select a field for inclusion in the Data Fields list 2310.
  • the user may highlight the name of a field in the Data Fields list 2310.
  • a list of operations appears in a Functions List box 2312.
  • the user may specify any or all ofthe aggregation operations the user wants performed by clicking on the desired operations.
  • the operations include average, median, maximum, minimum, and sum.
  • weights comprise the Weights class of Aggregates object 970c.
  • aggregates may be viewed in one of two ways : a Statistics Graph or a Count Graph.
  • the Statistics Graph arranges the aggregated average, median, maximum and minimum functions that are performed on the fields chosen in the Data Fields field.
  • the Count Graph charts sums and the number of stocks in the universe at each sampling point.
  • the aggregate results are stored in the user database.
  • the user can access the aggregate results in both formula module 830 and in graphics module 840.
  • formula module 830 the user select the Selected Data button on the Data Editor toolbar and the Constant Data Selection window appears, and the user may select the aggregate from the field list for the user database.
  • graphics module 840 the user may highlight the plot, right click, and choose the Select Data option or alternatively click the Selected Data button on the Data Editor toolbar.
  • Reporting module 870 is implemented as Report object 990a. Reporting module 870 incorporates the functionality of the DataNet engine and exports data to an Excel spreadsheet. Reporting module 870 allows the user to download external data and/or internal data and/or user results from other DataNet engine modules (i.e. simulation, aggregates, formulas).
  • Reporting module 870 is integrated with a spreadsheet program such as Microsoft Excel.
  • the user may access reporting module 870 through Excel by selecting a DataNet heading 2702 from the Excel main menu bar 2701. A drop down menu appears from which Connect 2703 may be selected.
  • An illustrative Reporting Module Access screen is shown in FIG. 27.
  • the reporting module displays information in one of three forms: (1) a Cross Table that compares data across one date (2) a Historical Table that compares data across a range of dates (3) and a Value Table that is used to build data fields in the chosen universe.
  • Product Selection window 2810 comprises an Available Instruments window 2811, a Selected Instrument window 2812, a Date Range section 2813, and a Reporting Currency section 2824.
  • the user may make selections instrument by instrument from the Available Instruments window 2811 to populate the Selected Instruments window 2812.
  • the user may select specific instruments from the Available Instruments window 2811 by double clicking on an instrument name.
  • the user may click once on the instrument name and click once on a right pointing arrow 2815 between Available Instruments window 2811 and Selected Instruments window 2812. By clicking on a left pointing arrow 2817, the user may delete a highlighted selection from Selected Instruments window 2812.
  • a set of upward and downward pointing arrows 2819 allow the user to scroll in either direction through the selected instruments.
  • the user may refine the Universe selection 2802 to a specific set of securities.
  • the user may select a reporting date in Reporting Date text box 2816.
  • the user may select a downward pointing arrow 2820 to access a drop down calendar menu from which the user may select a date.
  • a list ofthe selected securities will appear in the form of a table.
  • the user may then double click on the words Fields List which appear highlighted. In doing so, a Field Editor screen 2900 appears.
  • Field Editor 2900 comprises a Field Selection window 2910, a Formula section 2920, and a Selected Fields window 2930.
  • the user may select fields from Field Selection window 2910 in order to construct a formula.
  • the selected fields appear in Selected Fields window 2930.
  • Field Editor 2900 allows the user to write formulas or apply pre-existing formulas to Universe 2801.
  • the user may enter a formula in Formula box 2922.
  • the user may enter a label for the formula in a Label text box 2921.
  • the user may manipulate the ordering ofthe components ofthe formula by selecting a field and using an Insert After button 2923 and an Add-Replace button 2924.
  • the user may delete a field from the formula using Delete button 2985.
  • Currency Flag check box 2926 allows the user to define whether the formula depends on the currency ofthe countries corresponding to the securities in the universe. By clicking a Select Data button 2940, a Data Selection menu 3000 appears. An illustrative Data selection menu is shown in FIG. 30.
  • Data Selection menu 3000 comprises an Available Instruments window 3001 and a Select Fields for Current Instrument window 3002. Formula components may be selected through Data Selection menu 3000. Selections from Data Selection menu 3000 appear in the Formula box 2922.
  • FIG. 31 depicts data for a universe or securities for the fields close price, price earnings, dividend yield, and market value for the date January 2, 2000.
  • Formula Editor Menu 3200 comprises a Formula window 3210, a Function List window 3220, a Field Selection window 3230, a Date Range section 3240, and a Reporting Currency section 3250.
  • the user may select a function from the Function List window 3220 in order to create a formula.
  • the user may select the fields he wants included in his formula from the Field Selection window 3230.
  • the user may select a range of dates in Date Range box 3240 by specifying a first date in the First Date text box 3242 and a last date in the Last Date text box 3243.
  • the user may select the first and last date from drop-down calender menus 3244 and 3245, respectively.
  • the user may select Show Dates check box 3246 in order to have the dates shown in the Historical Table.
  • the user may select a reporting currency in Reporting Currency section 3250 using Reporting Currency pull-down menu 3251.
  • FIG. 33 depicts a Historical table for a universe of securities based on earnings per shares from the date range September 13, 1999 to September 24, 1999.
  • Value Form 3400 is used to build data fields in a chosen universe.
  • a user may create a universe by double clicking on Universe 3403 or selecting a Universe tab 3402. The user may create a universe following the same procedure described in connection with Cross Table Form 2800.
  • a spreadsheet appears.
  • Formula Editor 3200 appears.
  • the user may use Formula Editor 3200 to create formulas for the value table.
  • Data Selection window 3000 appears. The user may select other data to apply to the universe by from Available Instruments list 3001 and Select Fields for Current Instrument list 3002.
  • FIG. 35 depicts a value table for a security with a ticker symbol AAXP ⁇ comprising close price, market cap, price earnings ratio and FI mean for the date range September 13, 1997 to September 24, 1999.
  • Graphics module 840 is implemented as Graphics object 950a.
  • Graphics module 840 is a tool that allows the user to produce graphs and charts that display the results of different aspects ofthe user's predefined formula and the results of backtesting formulas against other market strategies.
  • a Graphics List is displayed in the lower half of the Universe window.
  • the Graphics List lists all ofthe graphics previously created for the open universe.
  • the user may either right click in the Graphics List field and select the New option or alternatively select the New option from under the Graphics heading on the DataNet main menu bar. In doing so, a Graphic Tools user interface 2400 appears.
  • An illustrative Graphic Tools user interface is shown in FIG. 24.
  • the user may set the graph parameters in a Graphic Tool parameters section 2401.
  • the user specifies the name ofthe graphic.
  • the user may use a First Date numeric selection box 2403 and a Last Date numeric selection box 2404 to set the date range the user wants to graph data.
  • the user may specify the frequency at which the user would like the data sampled in a Frequency pull-down menu 2411.
  • the user may specify the list of stocks to apply a graph in a Universe Data List window 2405.
  • the user may right click in the Universe Data List window 2405 to select the equities to graph. In doing so, a Equities Selection dialog box 2500 appears.
  • An illustrative Equities Selection dialog box is shown in FIG. 25.
  • Equities Selection dialog box 2500 comprises an Equities List window 2501. The user may select to graph the equities in the universe 2502 or may select to graph another set of equities, 2503, by using a Database pull-down menu 2504, a Data Table pull-down menu 2505, and a country pull-down menu 2506. When complete the user selects a Ok button 2507.
  • the user may set the field for graphing in a Plot list window 2407.
  • Field data There are two types of Field data that may be graphed: edit data and constant data.
  • Edit data is data that is dependant on the stock, such as a stock price.
  • Constant data is data that does not change with the stock, such as an interest rate series or an aggregate result.
  • the user may double click on a Field name in the Plot List window 2408.
  • the user may highlight the plot, right click and select the Edit Data option or, alternatively, the user may click the Edit Data button on a Graphic Module toolbar. In doing any ofthe above, a Plot Data Editor user interface 220 appears.
  • FIG. 22 depicts an illustrative Plot Data Editor user interface.
  • the Plot Data Editor 2200 comprises a Field Text window 2280, a Function List section 2290, and a Fields List section 2205.
  • the user may set the plot variables in the Fields List 2205 using a Database pulldown menu 2210, a Data Table pull-down menu 2220, and a Data Type pull-down menu 2230.
  • the field information corresponding to the users selection appears in the Fields List 2240.
  • the user may select the desired Field by double clicking on the Field name in the Fields List.
  • the code for the selected formula then appears in the Field Text window 2280.
  • Functions list section 2290 The user may specify a function type in the Functions list section 2290.
  • Function Type window 2291 the user may select the function type to be used to manipulate the selected field.
  • Function types include mathematics, financial, statistics, general, date and case, logical, string, operator and constant, and user.
  • Functions List window 2292 comprises all ofthe function options for each function type. The list varies depending on the selected function type. The user may select a function to add to the plot by double clicking on the function in the Functions List window. The selected function appears at a cursor position 2281 in Field Text window 2280.
  • the user may also incorporate a constant into a plot.
  • the user may select the Select Data button 2281 ofthe Plot Data Editor 2200. In doing so, the Constant Data Selection window 1801 appears. Use ofthe Constant Data Editor is discussed above.
  • hi order to create a new constant data plot the user may double click on a Field name in the Plot List box 2408.
  • the user may highlight the plot, right click and select the Constant Data option or alternatively the user may select the Constant Data icon on the Graphic Module toolbar, hi doing so, the Plot Data Editor window 2280 appears.
  • the user may select the field the user wants to graph, the selected field from the Field List window 2240 will appear in the Plot List window 2408.
  • a Plot List section 2407 the user may use the buttons on the right to move the selected plot up, 2412, duplicate the selected plot, 2413, delete the selected plot, 2414, and move the selected plot down, 2415.
  • the user may name the plot in a Name text box 2409. The name ofthe plot will appear at the top ofthe graph in the same color as the line it represents on the graph.
  • the user may enter a descriptive name for the plot in a Description text box 2410.
  • the user may select a ellipsis button 2416. In doing so, the user reopens the Plot Data Editor 2200 window. There, the user may set a formula for description conventions. The description ofthe plot will appear at the top ofthe graph in the same color as the line it represents on the graph.
  • the user may select the Refresh icon in the Graphic Module toolbar to run a graph.
  • An illustrative sample graphic is depicted in FIG. 26. Once the graph is plotted, the user may alter the axis and scale to ensure that the required information is displayed correctly.

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Operations Research (AREA)
  • Human Resources & Organizations (AREA)
  • Game Theory and Decision Science (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

The preferred DataNet system of the present invention is a powerful and flexible market analysis and portfolio selection system, allowing the integration of multiple databases into a front-end platform. Integrated databases are cross-referenced, allowing acess to data from different databases from a single interface. In the preferred DataNet example embodiment, the data integration process gathers information from a plurality of data source servers using a loader client executing in an update process. Each update process receives financial data from its corresponding data source and provides the information to a DataNet server. When data for a particular security is received from the loader client, a loader manager uses a locally unique security identifier from the data received to request a a globally unique identifier (GSID) for the data from a cross server. The cross server provides the locally unique security identifier to a database manager to query a cross reference database for the GSID for the security. After receiving the GSID from the cross server, the loader manager provides the data received from the loader client to the database manager along with the GSID to update the information for the security in a database corresponding to the data source from which the data was received. All information from all data sources for a particular security may be retrieved from the database once the GSID for the security is determined. In the preferred embodiment, the user client portion of the DataNet system comprises a DataNet engine. The dataNet engine is a modular distributed object-oriented system that preferably comprises a plurality of user modules that interoperate with each other. The DataNet engine comprises a plurality of user modules that interoperate with each other. The DataNet engine comprises a Universe module, a Query module, a Formula module, a Graph module, an Aggregate module, a Simulation module, and a Reporting module. The DataNet engine modules allow the user to manipulate the data collected from the various databases.

Description

SYSTEM AND METHOD FOR INTEGRATING AND ANALYZING FINANCIAL INFORMATION FROM MULTIPLE SOURCES
CROSS-REFERENCE TO RELATED APPLICATION
This application is based on and claims filing priority of copending provisional patent application serial number 60/246,673, filed on November 8, 2000, which is incorporated by reference herein.
FIELD OF THE INVENTION
The present invention generally relates to the field of electronic methods and systems for analyzing historical and real-time data about securities. More particularly, the present invention relates to a system and method for analyzing and integrating financial information from multiple sources, and for back-testing trading strategies with historical data derived from multiple sources.
BACKGROUND OF THE INVENTION
The present invention relates to a system and method for integrating and analyzing financial information from multiple sources.
In the 1980's, securities markets were mainly organized by geographical specialities. United States fund managers typically invested in United States markets while foreign fund managers typically invested in the markets of their respective countries. International diversification was rare. Consequently, most fund managers typically only covered a small number of securities.
During that period, there was relatively little demand among fund managers for financial information databases. Typically, the accuracy of information provided by these financial databases was poor, and data was often out of date. As a result, the information was of little use to fund managers and there was little incentive for financial information database development.
In the early 1990's, factors such as emerging markets, diversification, and worldwide sectorial integration made geographical specialization impractical. Portfolio management required fund managers to cover international markets and a broader range of securities.
At the same time, both the number of financial information database vendors and the development of financial information databases increased. Database vendors began developing front-end interfaces comprising varied functionality and methods for screening data, generating reports, and providing their data in a variety of different formats. The vendors also began expanding the type of information available from their databases.
Despite increased development, use of financial information databases among fund managers still lagged. Financial information databases were not central to the decision making process of many fund managers who typically traded in reaction to rapidly changing market information. Typically, only specialized quantitative fund managers based their investment decisions on information from these databases. Thus, demand for such databases remained limited.
However, recent investment management and investment performance standards have fueled demand for financial information databases. Because these standards suggest that fund management firms have a "decision making process", the industry of asset management has begun to move towards a more organized way of using data. Fund managers are now seeking to integrate data from various external sources and internal information into their trading decisions.
Currently, fund managers wishing to use multiple sources of financial data face numerous problems. Financial information databases are typically accessed via a specific software or a specific terminal system, each requiring specialized knowledge to operate. As such, the data can not be accessed through a single interface. In addition, the data from the various external and internal data sources can not be integrated on an automatic and real-time basis.
What is needed is a system for automatically integrating multiple, diverse external and internal data sources. What is also needed is a system for providing such integration through a through a common, user-friendly interface. Moreover, there is a need for a system for providing such integration with embedded analytical modules to manipulate the data collected from the various databases on an automatic and real-time basis, and for providing such integration while allowing both static and dynamic analysis of the data collected from the various databases.
It would also be desirable to have a system and method for integrating and analyzing financial information from multiple sources that cross references the integrated databases such that the data from the different databases can be accessed from a single interface.
It would be further desirable to have a system and method for integrating and analyzing financial information from multiple sources that provides such integration with embedded analytical modules that allow the user to manipulate the data collected from the various databases on an automatic and real-time basis. It would be further desirable to have a system and method for integrating and analyzing financial information from multiple sources that provides such integration while allowing both static and dynamic analysis ofthe data collected from the various databases.
SUMMARY OF THE INVENTION
The system ofthe present invention is a powerful and flexible market analysis and portfolio selection system, allowing the integration of multiple databases into a front-end platform. Integrated databases are cross-referenced, allowing access to data from different databases from a single interface. The system contains embedded analytical modules to manipulate those data collected from various databases.
In the preferred DataNet example embodiment, the data integration process gathers information from a plurality of data source servers using a loader client executing in an update process. Each update process receives financial data from its corresponding data source and provides the information to a DataNet server. Each data source server typically comprises one or more databases of financial information made available by financial information service providers such as Datastream, Bloomberg, Reuters, MSCI, I/B/E/S, Stoxx, Worldscope, Compustat, Extel, Standard & Poor=s, Bride and others. Data source servers may also include in-house databases imported into or generated by the DataNet software.
In the preferred DataNet example embodiment, a loader manager executing on the DataNet server computer manages communications with the loader client. When data for a particular security is received from the loader client, the loader manager uses a locally unique security identifier from the data received to request a globally unique identifier (GSID) for the data from a cross server.
After receiving the locally unique security identifier from the loader manager, the cross server provides the locally unique security identifier to a database manager to query a cross reference database for the GSID for the security. If the GSID is contained in the cross reference database, the database manager returns the GSID to the cross server, which provides the GSID to the loader manager. If no GSID is found in the cross reference database by the database manager for the locally unique security identifier, the cross server notifies the central GSID server and the loader manager. In this instance, the loader manager does not update a database with the data from the data source. After receiving the GSID from the cross server, the loader manager provides the data received from the loader client to the database manager along with the GSID to update the information for the security in the database corresponding to the data source from which the data was received. The database manager then causes the database corresponding to the data source to be updated in response to the request, using the GS-D as a primary key. The DataNet server stores the information received and makes it available in a cross-referenced form via a consistent interface to system users.
In the preferred embodiment, the user client portion ofthe DataNet system comprises a DataNet engine. The DataNet engine is a modular distributed object-oriented system that preferably comprises a plurality of user modules that interoperate with each other. The DataNet engine comprises a Universe module, a Query module, a Formula module, a Graph module, an Aggregate module, a Simulation module, and a Reporting module. The Universe module holds dynamic or static user-defined sets of securities for manipulation by the user of DataNet system. Universe module forms the data environment on which user operates with the other modules. The contents of a universe are dynamically generated with query modules, static list modules, and indexed list modules. The Query module stores and applies user-selected criteria for retrieving information from data source databases for inclusion in a universe. The Formula module stores and applies user-defined functions for selecting and performing calculations on data from a universe. A formula may be used to describe a trading strategy. The Graphics module creates visual displays of data based on a user defined universe. The Simulations module invokes and tracks the performance of a formula on a universe over a historical period of time. The Aggregates module stores and applies user-selected operations such as mathematical calculations to large collections of historical data. The Reports module allows a user to download data from other DataNet engine modules and present the data in a spread-sheet format.
According to one aspect, the present invention relates to a system for selecting securities, comprising: a first data receiver receiving data from a first data source transmitting data concerning a security, the data comprising a first identifier ofthe security; a second data receiver receiving data from a second data source transmitting data concerning the security, the data comprising a second identifier ofthe security; and a cross- referencing server receiving cross-reference data, the cross-reference data comprising the first identifier ofthe security, the second identifier ofthe security and a third identifier of the security.
According to another aspect, the present invention relates to a method for populating a universe of securities comprising: a) receiving a query, the query comprising parameters, the parameters comprising an identifier of a database; b) querying the database, the database storing data concerning one or more securities, the data comprising a unique identifier ofthe security; c) retrieving from the database data concerning the securities satisfying the query; and d) populating the universe with the retrieved data.
According to another aspect, the present invention relates to a method for generating an aggregate comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier; b) receiving one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; c) receiving a function, the function corresponding to an operation to be applied to a set of data field information, the set of data field information comprising the data field information for each security in the universe; d) receiving one or more sampling points, each sampling point corresponding to a different date; e) querying for each security in the universe and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; f) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe; and g) determining at each sampling point a value based on the application ofthe operation to the set of data field information.
According to another aspect, the present invention relates to a method for evaluating a formula comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier; b) receiving a formula, the formula comprising one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; c) receiving one or more sampling points, each sampling point corresponding to a different date; d) querying for each security in the universe and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; e) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe; and f) determining at each sampling point a value ofthe formula for each security in the universe.
According to another aspect, the present invention relates to a method for evaluating a portfolio comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier; b) determining a portfolio, the portfolio comprising one or more securities from the universe; c) receiving a formula, the formula comprising one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; d) receiving one or more sampling points, each sampling point corresponding to a different date; e) querying for each security in the universe and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; f) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe; and g) determining at each sampling point the securities in the portfolio based on the application ofthe formula to each security in the universe.
The advantages ofthe present invention are numerous. First, the present invention allows user to access financial information on an automatic and real-time basis from multiple sources via a single interface.
Second, because data regarding a particular security is cross-referenced by a unique security identifier, all information from all data sources for a particular security may be retrieved from the DataNet server once the security identifier for the particular security is determined. Accordingly, during execution ofthe user modules the system may retrieve and manipulate data regarding a particular security merely by possessing the unique identifier for the security.
In addition, the present invention allows users to define a universe of securities both statistically and dynamically. When a universe is dynamically defined, the system allows the user to perform calculations on historical sets of data which may change according to the dates for which the calculations are performed.
Finally, the present invention enables users to build formulas comprising fields from one or more data sources. Formulas may be back tested against historical sets of data and used to evaluate a portfolio of securities. As a result, users may integrate and manipulate data from various data sources in order to develop more powerful stock selection and trading strategies.
These above features and advantages, as well as the many other features and advantages described below, are not all inclusive. Many additional features and advantages will be apparent to one of ordinary skill in the art in view ofthe drawings, detailed description, and claim hereof.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other objects, features and advantages ofthe invention are more fully set forth in the accompanying Detailed Description ofthe Invention in which:
FIG. 1 schematically illustrates the client-server architecture ofthe DataNet system;
FIG. 2 schematically illustrates the preferred system software architecture ofthe preferred DataNet example embodiment; FIG. 3 schematically illustrates the data source integration process architecture for the preferred DataNet example embodiment;
FIG. 4 schematically illustrates an object model for the DataNet server;
FIG. 4a schematically illustrates an object model for the Database Manager in the preferred DataNet example embodiment;
FIG. 4b schematically illustrates an object model for the Cross Server in the preferred DataNet example embodiment;
FIG. 5 schematically illustrates the preferred DataNet example embodiment loader client and loader server architecture;
FIG. 6 schematically illustrates the preferred DataNet example embodiment server side loader architecture;
FIG. 7 schematically illustrates the architecture ofthe communications layer;
FIG. 7a schematically illustrates an object model for the Communication Server in the preferred DataNet example embodiment;
FIG. 8 schematically illustrates the preferred DataNet example embodiment user client architecture and corresponding DataNet user server architecture;
FIG. 9 schematically illustrates the object model ofthe preferred DataNet engine example embodiment;
FIG. 10 is an illustrative Universe dialog box ofthe preferred DataNet example embodiment;
FIG. 11 is an illustrative Query Setup user interface ofthe preferred DataNet example embodiment;
FIG. 12 is an illustrative parameters tab ofthe Query Setup user interface ofthe preferred DataNet example embodiment;
FIG. 13 is an illustrative criteria tab ofthe Query Setup user interface ofthe preferred DataNet example embodiment;
FIG. 14 is an illustrative Data Editor window user interface in the preferred DataNet example embodiment;
FIG. 15 is an illustrative criteria tab ofthe Query Setup user interface ofthe preferred DataNet example embodiment;
FIG. 16 is an illustrative report user interface ofthe preferred DataNet example embodiment;
FIG. 17 is an illustrative Formula Editor user interface;
FIG. 18 is an illustrative Simulation Tools user interface ofthe preferred DataNet example embodiment; FIG. 19 in an illustrative Simulations Setup user interface ofthe preferred DataNet example embodiment;
FIG. 20 is an illustrative graphic simulation ofthe preferred DataNet example embodiment;
FIG. 21 is an illustrative Field Selection Menu ofthe preferred DataNet example embodiment;
FIG. 22 is an illustrative Plot Data Editor ofthe preferred DataNet example embodiment;
FIG. 23 is an illustrative Aggregates Setup window ofthe preferred DataNet example embodiment;
FIG. 24 is an illustrative Graphic Tools window ofthe preferred DataNet example embodiment;
FIG. 25 is an illustrative Equities Selection dialog box ofthe preferred DataNet example embodiment;
FIG. 26 is an illustrative sample graphic ofthe preferred DataNet example embodiment;
FIG. 27 is an illustrative Reporting Module Access screen ofthe preferred DataNet example embodiment;
FIG. 28 is an illustrative Cross Table Form ofthe preferred DataNet example embodiment;
FIG. 29 is an illustrative Field Editor window ofthe preferred DataNet example embodiment;
FIG. 30 is an illustrative Data Selection menu ofthe preferred DataNet example embodiment;
FIG. 31 is an illustrative generated Cross Table Form ofthe preferred DataNet example embodiment;
FIG. 32 is an illustrative Formula Editor menu ofthe preferred DataNet example embodiment;
FIG. 33 is an illustrative generated Historical Form Model ofthe preferred DataNet example embodiment;
FIG. 34 is an illustrative Value Form ofthe preferred DataNet example embodiment;
FIG. 35 is an illustrative generated Value Table ofthe preferred DataNet example embodiment;
DETAILED DESCRIPTION OF THE INVENTION The present invention relates to a system and method for integrating and analyzing financial information from multiple sources. The invention will be described by reference to an example preferred embodiment, referred to as the DataNet system. The DataNet system comprises a client-server computer system that provides for the integration of multiple data sources into a single cross-referenced system, providing users with a consistent interface for accessing and manipulating data concerning a given security from a plurality of available sources.
FIG. 1 schematically illustrates the client-server architecture ofthe DataNet system comprising a server system connected via a computer network and a distributed object system. The preferred DataNet example embodiment comprises the Microsoft Distributed Common Object Model (DCOM) software platform operating over a TCP/IP network. Any other distributed computing model such as CORBA, RPC, Java, RMI, J2EE or other client- server architecture, and any other computer network type adequate for distributed computing may also be used. The particular choice of distributed computing environment is not essential to the invention.
The DataNet system as shown in FIG. 1 comprises one or more update processes executing on one or more update processors, collectively shown as 120. The update processors preferably comprise Intel Pentium7 based computers running the Microsoft NT operating system and DataNet software. The DataNet update processes execute one or more Loader Clients 200, which will be explained in greater detail with reference to FIG. 3. The DataNet update processes control network connections to a plurality of data sources 130...N; and to the DataNet Server 100.
In the preferred DataNet example embodiment, at least one update process executes for each data source 130. There may be a plurality of update processes running on a single update processor using the Windows NT7 multitasking operating system, provided that sufficient system resources are available for the update processes. Each update process 120..N receives financial data from its corresponding data source, and provides that information to the DataNet server 100.
The DataNet server 100 stores information received from update processes 120...N and makes it available in a cross-referenced form via a consistent interface to DataNet users 110...N. The data is preferably cross referenced at least by a unique security identifier, so that all information from all data sources 130...N for a particular security may be retrieved from the DataNet server 100 once the security identifier for the particular security is determined. The DataNet system assigns a globally unique security identifier (GSID) to each security for which information is received and cross references all information from all data sources 130 ...N received for the security based on the GSID. The GSID is typically based on locally or source-dependent unique security identifiers, such as the ticker symbol, or the CUSIP number for securities registered in the United States, or the SEDOL number for European securities. The GSID is generated by a central GSID server 310 using a suitable algorithm for generating alpha numeric characters. The size of each GSID is typically 10 characters.
The client systems may comprise any computer system that allows the client to access the server system, hi the preferred embodiment, the client systems 100...N are Intel Pentium-based PCs running the Windows NT7 operating system and DataNet software.
The server system may be any general purpose computer system having sufficient resources. In the preferred DataNet example embodiment, DataNet server 100 comprises an Intel Pentium Xeon based computer running the Windows NT7 operating system and DataNet software with 128MB of RAM and a 4Gb SCSI hard disk. However, the client- server and distributed object implementation ofthe preferred DataNet example embodiment allows the DataNet server software to be distributed among a plurality of server machines.
FIG. 2 schematically illustrates the preferred system software architecture ofthe preferred DataNet example embodiment. DataNet client programs shown in FIG.2 include a loader client 200, a custom application 201 such as a custom C++ program for a specialized user application, a Microsoft Office977 add-in 202 such as a module for updating a Microsoft Excel 7 spreadsheet automatically, and a DataNet User Client 203.
As depicted in Fig. 2, in a preferred embodiment, the DataNet Server System 100 preferably includes a Loader Manager 210 for managing communications with a plurality of Loader Clients such as 200, a DataNet server 220, a plurality of user workspaces 230 ... N for temporarily storing user information, a database manager 240, at least one user database and at least one source database, shown collectively as 250, a task scheduler 260, and compression tools 270. Preferably, the system includes at least one user database for each user, and at least one source database for each data source.
In the preferred DataNet example embodiment, the database manager 240 comprises a DataNet time series database engine coupled to a database server. However, nearly any sufficiently robust database system may be used, such as a relational database, tree, or the Berkeley DB database library. Preferably, the database manager includes support for hierarchical databases and for time series and case series data types. FIG. 3 schematically illustrates the data source integration process architecture for the preferred DataNet example embodiment. The system integrates data from a number of possibly heterogenous data sources 130...N into a uniform system 250 of data source databases 251...N. The assigned GSID is used as a primary key for accessing data for the corresponding security from each source database 251...N.
The DataNet integration process gathers information from a plurality data source servers 130...N. Each data source server typically comprises one or more databases of financial information made available by financial information service providers such as Datastream, Bloomberg, Reuters, MSCI, I/B/E/S, Stoxx, Worldscope, Compustat, Extel, or Standard & Poor=s, Bride and others. Data source servers may also include in-house databases imported into or generated by the DataNet software.
The DataNet data source integration uses a loader client 200 executing in an update process such as 120. The loader client is a client/server program that resides on a client computer system connected to the data source server. The DataNet loader client supports most common protocols for data transfer, such as TCP/IP, FTP, HTTP, email and many others. Any protocol utilized by a data source may be supported by the loader client, which isolates the DataNet Server 100 from details of data source communication and provides all data to the DataNet Server 100 in a previously defined format.
The loader manager 220 is a client-server software module executing on the DataNet server 100 computer, which manages communications with the Loader Client 200. The loader manager coordinates communications with the cross server 300 and the database manager 240. When data for a particular security is received from the loader client 200, the loader manager uses a locally or source-dependent unique security identifier from the data received to request a GSID for the data from a Cross Server 300.
In the preferred DataNet example embodiment, the locally unique security identifier is typically the source-dependent identifier used by the data source to identify the security, concatenated with an identifier ofthe data source. For example, if the data source is XYZ Data, and XYZ Data uses the ticker symbol to identify the securities for which information is provided, the locally unique security identifier is ofthe form XYZData/TICK, where TICK is the ticker symbol ofthe security.
After receiving the locally unique security identifier from the loader manager 220, the cross server 300 provides the locally unique security identifier to the database manager 240 to query the cross reference database 640 for the GSID for the security. If the GSID is contained in the cross reference database 640, the database manager returns the GSID to the cross server, which provides the GSID to the loader manager 220. If no GSID is found in the cross reference database by the database manager 240 for the locally unique security identifier, the cross server 300 notifies the central GSID server 310 and the loader manager. In this instance, the loader manager does not update the database with the data from the data source.
After receiving the GSID from the cross server 300, the DataNet loader manager 220 provides the data received from the loader client 200 to the database manager along with the GSID to update the information for the security in the database (e.g. 251) corresponding to the data source from which the data was received. The database manager 240 then causes the database corresponding to the data source to be updated in response to the request, using the GSID as a primary key. Typically, such an update will comprise the addition of a record representing a price for the security. Other updates may include revision of existing price records for the security to account for a stock split or any other corporate action affecting the security.
The object model for the DataNet server 220 is schematically illustrated in FIG. 4a. The DataNet server object 405 comprises an Errors collection 410 one or more Error objects 411, a Groups collection 420 of one or more Group objects 421, a Users collection 430 of one or more User objects 431 and a Connections collection 440 of one or more Connection objects 441. User objects such as 431and Group objects such as 421 represent user authorizations and authentication requirements, controlling user access to the system through passwords, user authorizations and group authorizations. User objects such as 431 further comprise a collection of group codes indicating the Groups of which the user is a member. Group objects further comprise a collection of user codes indicating the members ofthe group. Connection objects such as 441 represent connections with client applications such as a DataNet user client 203. Connection objects such as 441 may contain a collection 442 of one or more additional Connection objects such as 443, which may be hierarchically nested. Connection objects have associated workspace objects 450 representing User Workspaces 230...N. Workspace objects are used to temporarily store the current state of the user environment. Using an associated SessionManager object 460, a Workspace object 451 may request the services ofthe Database Manager 240, and portions of user workspaces 230...N may be persistently stored in a User Database by the database manager.
The object model ofthe Database Manager 240 is schematically illustrated in FIG. 4b. The Database Manager comprises a Database Engine object 470. The Database Engine object further comprises a Sessions collection 471 of one or more Session objects 472, a Connections collection 473 of one or more Connection objects 474 and a Databases collection 475 of one or more Database objects 476. In addition the Database Engine object comprises an Error object 477, a Connection object 478, a Session object 479, a Database object 480 and a DataObject object 481.
The Database Engine object 470 is used to create and manipulate the other objects 471-481 that comprise it, and to store global environment properties. The Database Engine object comprises properties or attributes that specify whether databases are stored in packed format, how alias attributes of data objects are used, whether wildcards may be used in searching, and timeout period lengths for connections.
The Database Engine object 470 supports methods for opening connections with a database server, opening a session over an open connection, creating and opening databases and getting DataObjects from databases. The OpenConnection method is used for opening a connection 474 with a database server, which returns a Connection object 474. The OpenConnection method accepts as parameters the hostname, port, user name and password used to connect to the database. The Database Engine object 470 supports an OpenSession method for opening a session with a database accessible by an open connection. The open session method returns a session object such as 472. The CreateDatabase method is used for creating a database such as 251 and returns a Database object such as 476. The CreateDatabase method accepts as a parameter the full path name for the database such as 251 to be accessed. The OpenDatabase method is used for opening a database already in existence and returns as a Database object such as 476. The OpenDatabase method accepts as parameters the full database pathname, and the access mode (such as read, overwrite, update, or shared). The GetDataObject is used to search for a named DataObject in all the opened databases. The GetDataObject accepts the name ofthe object and returns the corresponding DataObject such as 483 if found.
The Database Engine Error object 477 is used to store information concerning errors, including an error number, a description ofthe application, function or procedure that generated the error, a description ofthe error and a pointer to a help file associated with the error.
Connection objects such as 474 and 478 represent an open connection to a database server. Each Connection object such as 478 comprises properties for storing the connection key for the database service, the port number for the database server, the hostname ofthe host on which the database server is running, the user name for logging into the database server, and the password for logging into the database server. Each Connection object such as 478 also comprises a collection 484 of one or more Database objects such as 485 containing the Database objects returned by invoking OpenDatabase and CreateDatabase methods. Connection objects such as 478 comprise a plurality of methods for manipulating Database objects such as 485 and thereby, databases such as 251. The Close method is used to close the connection, destroying the Connection object on which the Close method is invoked. The Commit method is used to commit the currently pending unit of work to the database. The Abort method aborts the currently pending unit of work without committing it to the database. The CreateDatabase method accepts a new database pathname, creates a new database such as 251 and returns a new Database object such as 485 for manipulating the database. The OpenDatabase method accepts a pathname of an existing database such as 251 and an access mode indicator and opens the database 251 in the corresponding access mode, such as read, create, overwrite, update or shared. The GetDataObject method accepts a name and searches the database open on the connection and returns the first matching object found.
The Collections collection 473 of connection objects such as 474 represents an array of all open connections and comprises properties representing the number of connection objects in the collection, and the connection objects such as 474 themselves. The collection 473 of connection objects also supports methods for clearing the collection, and removing individual connections from the collection.
Session objects such as 472 or 473 represent an open database session, a time series database session in the preferred DataNet example embodiment. The session permits the execution of database commands. The Session object 472 comprises properties representing the working date and case ranges for the current session, the working frequency for the current session, and the databases in the session. The Session object 472 also comprises methods for executing database commands, loading and executing database stored procedures or macros, creating and opening databases in the session, and searching. The Execute method ofthe Session object 472 accepts a command string as a parameter and causes the database to execute the command. The LoadProcess command accepts a macro name as a parameter and causes the macro to be loaded and executed by the database. The CreateDatabase method accepts as a parameter the full path name for the database such as 251 to be accessed. The OpenDatabase method is used for opening a database already in existence and returns a Database object such as 476. The OpenDatabase method accepts as parameters the full database pathname, and the access mode (such as read, overwrite, update, or shared). The GetDataObject is used to search for a named DataObject in all the opened databases. The GetDataObject accepts the name ofthe object and returns the corresponding DataObject such as 483 if found. The Sessions collection 471 of Session objects such as 472 represents an array of all open sessions and comprises properties representing the number of Session objects in the collection, and the Session objects such as 472 themselves. The collection 471 of Session objects also supports methods for clearing the collection, and removing individual Session objects from the collection.
Database objects such as 476 represent an open database, a time series database in the preferred DataNet example embodiment. A Database object comprises properties representing the database key, database name, access mode, database description, database documentation, database creation date and last modification date, parent object (a Connection object such as 474 or 478, Session object such as 472 or 479, or Engine object such as 470), a read-only flag, an updated flag indicating that the database has been updated, and a database type indicating whether the database is local or remote.
Database objects such as 476 also support methods for creating, retrieving, deleting and searching for data objects in the database, and for discarding or posting changes made to the database. The GetDataObject method of a Database object accepts as a parameter a name of a DataObject such as 481, and returns the DataObject from the database if it exists in the database. The CreateDataObject method accepts as a parameter a name for a new DataObject and creates and returns a DataObject such as 481. The DeleteDataObject method accepts as a parameter a name of a DataObject and deletes the DataObject from the database. The Restore method discards any changes made to the database since the database was last opened or posted. The Post method stores and makes permanent any changes made to the database since the database was last opened or posted. The Close method closes the database. The GetObjectsList method accepts a parameter indicating a string containing wildcard search terms and returns a list of objects matching the wildcard.
The collection 475 of Database objects such as 476 represents an array of all open databases and comprises properties representing the number of Database objects in the collection, and the Database objects such as 476 themselves. The collection 475 of Database objects also supports methods for clearing the collection, and removing individual Database objects from the collection.
DataObject objects such as 481 represent database objects, time series database objects in the preferred example DataNet system. Using the properties and methods of DataObject objects, the system manipulates data in the databases such as 251. DataObject objects include properties representing the name ofthe data object in the database, the object name keys, the object data class (e.g. scalar or series), the object type (e.g. numeric, string or date), the object frequency (e.g. daily or weekly), the object basis, the object observed attribute, the object creation date and last modification date, the object description, the real name ofthe object, a list of aliases for the object, the text ofthe formula (for formula objects only), the value ofthe object, a pointer to the first value in the case or date range, a pointer to the last value in the case or date range, a list of associated names for the object, a read-only flag, an updated flag, and a pointer to the parent object (which may be a Connection object, a Session object, an Engine object or a Database object).
DataObject objects include methods for canceling the last modification to the object, saving the object, renaming the object, copying the object, setting values in a series object, and reading values in a series object. The Reset method cancels the last modification to the object and restores its properties to their last saved values. The Refresh object saves the object=s current state to the database. The Rename object accepts an object name as a parameter and causes the object=s name to be changed to the name parameter. The Copy method accepts as parameters a destination name, and a destination database key and copies the object to the named destination object in the destination database specified by the destination database key. If the named destination object does not exist, it is created. The SaveValue method accepts as parameters a range and a value, and sets the range to the value. The ReadValue method accepts as a parameter a range and returns the value or values for the range.
The collection 482 of Database objects such as 483 represents an array of DataObject objects and comprises properties representing the number of DataObject objects in the collection, and the DataObject objects such as 483 themselves. The collection 482 of DataObject objects also supports methods for clearing the collection, and removing individual DataObject objects from the collection.
The object model for Cross Server 300 is schematically illustrated in FIG. 4b. In the preferred DataNet example embodiment, the Cross Server is implemented by a Cross Server Object 494. The Cross Server Object 494 comprises one or more properties that permit definition ofthe Cross Server. The DatabasePath property stores a cross referencing database path. The DataBaseManager property stores an object allows the cross server to access the DataBase Manager=s methods and properties. The CommunicationServer property stores an object that allows the crossserver to access the communication server=s methods and properties. The Converter property stores an object that implements a method for converting a data source key to a GSID key. The NewsManager property stores an object which implements the methods for scheduling loading news files from the central GSID server and updating the Cross Reference Database. In the preferred DataNet example embodiment, the Cross Server Object 494 comprises one or more methods that permit manipulation ofthe Cross Server. The GetCode method provides the loader manager a unique identifier for a data source. The GetCode accepts as parameter database code and source code.
In the preferred DataNet example embodiment, the Cross Server Object 494 comprises a NewsManager Object 495. The NewsManager Object 495 comprises one or more properties that permit definition of a News Manager. The News Manager is located at the central GSID server. The RefereshRate property stores a rate for updating the Cross Reference Database. The Messages property stores an object collection of message types for the storage of a news file. The Parent property stores a reference for the Cross Server. NewsManager object 495 also comprises one or more methods that permit manipulation of the news manager. NewsManager object 495 " comprises a CheckTimer method. Upon invocation, the CheckTimer method checks to the determine the time for loading a news file from the central GSID server.
In the preferred DataNet example embodiment, information about errors of a Cross Server Object 494 are stored in an error object. The error object comprises a Number property that stores an error code, a Description property that stores an error description, and a Source property that stores the source ofthe error. The error object also comprises a Clear method which clears the stored properties ofthe last error ofthe error object. hi the preferred DataNet example embodiment, NewsManager Object 495 comprises a collection 496 of message objects. Each message object comprise one or more properties that permit definition of a message. The Count property stores the number of collection items. Each message also comprises one or more methods that permits manipulation of a message object. The Add method accepts as a parameter a message and upon invocation, adds a new message to the collection. The Item method accepts as a parameter an index and upon invocation, returns the message with the given index. The Remove method accepts as a parameter an index and upon invocation, removes the message with the given index.
In the preferred DataNet example embodiment, News Manager Object 495 comprises a collection 496 of a Message Collection Class 497. Message Collection Class 497 object comprise one or more properties that permit definition of a message. The Value property stores a value ofthe message object. The Parent property stores a reference to the news manager class. Message Collection Class 497 also comprises one or more methods that permit manipulation of a message. The Handle method processes messages. Upon invocation, the Handle method updates the Cross Reference Database and sends error messages to the central GS-D server. FIG. 5 schematically illustrates the preferred DataNet example embodiment loader client and loader server architecture. As described above, the DataNet embodiment preferably includes a loader client 200 for each data source 130. Each Loader Client 200 comprises a configuration database 530 which holds the criteria upon which information is requested from the data source 130.
The DataNet loader client supports a plurality of connection protocols, including FTP, HTTP, TCP/IP, and many others. Connection setup, login, timeouts, and dropped connections are managed by the Connection Manager 510, which is also responsible for determining the protocol used for the connection. Connection parameters including login credentials, data source address and connection protocol are stored in the Configuration Database 530.
The Request Manager 500 is responsible for constructing the queries necessary to retrieve data updates from the data source 130. Request parameters, including the request types, formats and frequency for requests are stored in the Configuration Database 530.
The Configuration Database is managed in part by a Configuration User Interface 550, which permits a user to configure the Loader Client by entering or modifying connection parameters. In addition, an Update User Interface 540 permits a user to configure the Loader Client 120 by entering or modifying request parameters.
When the Loader Client receives information from the data source 130, the Update Manager 520 translates the data into a predetermined format based on the Configuration Database 530 and stores the translated data in a shared data file 560. The shared data file 560 may be accessed by the Loader Server 570 as well as the Loader Client 200, using any standard network file transfer system such as, for example, the Network File System (NFS), Novell, Microsoft Network File Sharing, the Andrew File System, FTP, HTTP or a Virtual Private Network (VPN). The shared file functions as a buffer between the Loader Client 120 and the database 250 and facilitates load balancing between the Loader Client 200 and the Loader Server 570.
FIG. 6 schematically illustrates the preferred DataNet example embodiment server side loader architecture. A Loader Manager 210 controls a plurality of instances of Source Loaders 600...N. For batch loaded data, one source loader such as 600 corresponds to one data source such as 130, and handles updates from the Loader Client 200 for that Data Source 130. For real-time data, a plurality of source loaders 600...N may be configured to collect data from a single data source using a first-in-first-out queue. The queue may be constructed by time-stamped files in a shared directory, or by a message queuing system such as are available from IBM or TIBCO. An Alert Server 620 transmits alerts to the central GSID server 310 when predefined alert conditions are satisfied using the Communications Layer 630. For example, alerts are transmitted when no GSID is contained in the cross reference database 640 for a security identified in information received from a data source 130.
After a Loader Client 200 has stored a data file containing formatted data from its corresponding data source 130 in a shared file 560, the Loader Client 200 invokes the corresponding Source Loader 600 via DCOM. The Source Loader 600 then retrieves the shared file 560 and extracts the formatted information, including a locally unique security identifier. Using the locally unique security identifier, the Source Loader 600 invokes the Cross Manager 610 to retrieve the GSID for the security for which data is received. Using the GSID as a primary key, the Source Loader 600 invokes the Database Manager 240 to update information stored concerning the security in the Source Database (e.g. 251) for that data source 130.
When the Cross Manager 610 is invoked by the Source Loader 300, the Cross Manager 610 determines whether the Cross Reference Database 640 contains a GSID for the security. If so, it returns the GSID to the Source Loader. If the Cross Reference Database 640 does not contain a GSID for the security, the Cross Manager 610 invokes the Alert Server 620 to send an alert to the central GSID server.
Periodically, generally once a day, the Cross Server 300 retrieves from the central GSID server a new information file. The new information file contains new GSIDs for new securities, adjustments for stock splits, correctness information to resolve conflicts among data sources, and other information. When the Cross Server 300 receives a new GSID from the central GSID server 310, it provides the GSID to the Source Loader 600 and updates the Cross Reference Database 640 with the GSID.
In the preferred DataNet example embodiment, a communication server 650 is used to provide general purpose communication services with the central GSID server 310. FIG. 7 schematically illustrates the architecture ofthe communications layer. The communications layer is used by several different modules including the Cross Server 300 and the Alert Server 620, and handles many different types of communication including e- mail, ftp, http and others. The communications layer interface allows the module using the communications layer to determine the message=s type, information, source, and destination.
The object model for the communications server is schematically illustrated in FIG. 7a. In the preferred DataNet example embodiment, the communications server is implemented by a Communication Server Object 700. The Communication Server Object comprises one or more properties that permit definition ofthe communication server. The Message property stores the body of an alert, file, or e-mail message. The MessageType property stores a message type: alert, file, or email. The ConnectionManager property stores data regarding the communication server=s communication with a connection manager. The Error property stores data regarding errors.
In the preferred DataNet example embodiment, Communication Server Object 700 comprises one or more methods that permit manipulation ofthe communication server. The GetFile method downloads a file using the connection manager. The SendFile uploads a file using the connection manager. The SendAlert method sends an alert using the connection manager.
In the preferred DataNet example embodiment, Communication Server Object 700 comprises a ConnectionManager Object 710. The connection manager is implemented by ConnectionManager Object 710 and manages connection objects. Connection Manager Object 710 comprises one or more properties that permit definition ofthe connection manager. The Status property stores information regarding the status ofthe connection manager. The Connections property stores a collection of connection objects. The Error property stores a collection of errors. The ConnectionManager Object 710 also comprises an Initialize method initializes the connection manager.
In the preferred DataNet example embodiment, ConnectionManager Object 710 comprises a collection 492 of one or more Connection Objects 720. Connection Objects 720 comprises a Count property stores the number of connections.
The Connection Object 720 also comprises one or more methods that permit manipulation ofthe connections. The Add method adds a connection to the collection. The Add method accepts as a parameter a connection. The Item method returns a connection. The Item method accepts as a parameter an index. The index corresponds to a connection. The Remove method removes a connection from the collection. i the preferred DataNet example embodiment, Connection Object 720 is also responsible for handling connections to the central GSID server. Connections Object comprises one ofthe properties that permit definition ofthe central GSID server. The Properties property stores the properties ofthe connection depending on the type of connection. The Type property stores the type of a connection. The connection may be FTP, e-mail, or others. The Status property stores the status of a connection. The status may be open or closed, for example. The TimeOut property stores the timeout ofthe connection. The Priority property stores the priority of a connection. Connection Object 720 also comprises one or more properties that permit manipulation ofthe connection to the central GSID server. The LoadParameters method loads the parameters ofthe connections in the properties field. The Open method opens a connection. The Close method closes the connection.
In the preferred DataNet example embodiment, the Connection Object 720 also comprises one or more events that occur at a given time during a connection with the central GSID server. The OnOpen event is an event that fires upon opening a connection. The OnClose is an event that fires upon closing a connection.
The foregoing discussion was directed to the data loading infrastructure aspect ofthe invention as exemplified by the preferred DataNet example embodiment. The user aspect of the invention as exemplified by the preferred DataNet example embodiment will be discussed next.
FIG. 8 schematically illustrates the preferred DataNet example embodiment user client architecture 1080 and corresponding DataNet user server architecture 1090. Normally, as shown, the data source description database 250, the data source database 250a, the Database Manager 240, and the DataNet server 220 modules execute on a single server machine 100. However, the client-server and distributed object architecture ofthe system permit these portions ofthe system to be distributed over a plurality of machines, and some portions of even the entire system may even be located together on a single machine with the user client portions.
The user client portion ofthe DataNet system comprises a DataNet engine. The DataNet engine is a modular distributed object-oriented system that preferably comprises a plurality of user modules 810...870 that interoperate with each other. The DataNet engine comprises a Universe module 810, a Query module 820, a Formula module 830, a Graph module 840, an Aggregate module 860, a Simulation module 850, and a Reporting module 870. The Universe module 810 holds dynamic or static user-defined sets of securities for manipulation by the user of DataNet system. Universe module 810 forms the data environment on which user operates with the other modules. The contents of a universe are dynamically generated with Query modules 820, static list modules, and indexed list modules. Query module 820 stores and applies user-selected criteria for retrieving information from data source databases 251...N for inclusion in a universe. Formula module 830 stores and applies user-defined functions for selecting and performing calculations on data from a universe. A formula may be used to describe a trading strategy. Graphics module 840 creates visual displays of data based on a user defined universe. Simulations module 850 invokes and tracks the performance of a formula on a universe over a historical period of time. Aggregates module 860 stores and applies user-selected operations such as mathematical calculations to large collections of historical data. Reports module 870 allows a user to download data from other DataNet engine modules and present the data in a spread-sheet format. hi addition to the universe 810, query 820, formula 830, graphics 840, simulations 850 and aggregate 860 user modules, the DataNet engine comprises additional modules used to interoperate among the user modules. A static list module comprises a list of GSIDs used to identify a collection of information comprising a universe. A static list may be populated by a Query module. Similarly, an indexed list module comprises a list of GSIDs used to identify a collection of information comprising a universe, but has an associated date. An indexed list reflects the application of a query to the data source databases as of the associated date, and is used to populate a universe.
A universe can be either dynamic or static. The contents of a dynamic universe are calculated based on an associated selected date, to reflect the state ofthe databases 251...N on that date. For example, a dynamic universe comprising a query for closing prices ofthe stocks often companies having the largest market capitalizations available in one or more databases 251...N could contain prices for different stocks each day depending on market performance that day.
A static universe is determined based on selection criteria for a particular date. The stocks chosen on this date remain constant - the list is fixed on the date chosen and the stocks do not change as the date changes. For example, a static universe comprising a query for closing prices ofthe stocks often companies having the largest market capitalizations on the first trading day of 1999 would contain the same data regardless ofthe date.
FIG. 9 schematically illustrates the object model ofthe preferred DataNet engine example embodiment.
The DataNet engine comprises a DataNet engine object 900. The DataNet engine object furthers comprises a collection 901 of one or more Error objects 901a, a collection 910 of one or more Universe objects 910a, a collection 920 of one or more Query objects 920a, a collection 930 of one or more Static List objects 930a, a collection 940 of one or more Index List objects 940a, a collection 950 of one or more Graphics Objects 950a, a collection 960 of one or more Simulations objects 960, a collection 970 of one or more Aggregate objects 970a, a collection 980 of one or more Formulas objects 980a, and a collection 990 of one or more Report objects 990a. The DataNet engine object is used to create and manipulate the other objects 901a-990a and that comprise it. In the preferred DataNet example embodiment, a universe 910 is the starting point of many user features and functions in the preferred DataNet example embodiment. A universe is a selected group of securities, such as equities, bonds, indices and/or closed-end-funds based on a set of user-defined criteria. The currently open universe comprises the data environment on which other DataNet engine modules operate. Only one universe may be open at a time. A universe is defined by the user specifying a plurality of queries 920, static lists 930 and indexed lists 940 from which the data comprising the universe is drawn.
In the preferred DataNet example embodiment, queries 920 are created and stored for a specific universe 910. Each query is created and saved separately to allow users to construct a universe comprising a plurality of independently specified queries, each query further comprising a set of query criteria. Thus the contents of a universe are derived from a plurality of stored queries that are used to select data from the available databases 251...N. In a dynamic universe, query results may vary with a selected date. All user operations occur with respect to a universe.
In the preferred DataNet example embodiment, the general operation ofthe Universe module comprises receiving a query. The query comprises at least one parameter comprising an identifier for a database. The database stores data concerning one or more securities including the GSIDs ofthe securities. The system queries the database and retrieves data concerning the securities satisfying the parameters ofthe query. The universe is populated with the results ofthe query.
The preferred operation ofthe Universe module is now described.
In the preferred DataNet example embodiment, Universe module 810 is implemented as Universe object 910a as shown in FIG. 9.
Preferably, Universe object 910a comprises a plurality of properties that define the universe. The UniverseCode property stores a unique identifier ofthe universe. A typical universe code takes the form "Un.000015". The UniverseName property stores the name of the universe (e.g. "JAPAN 600 TOP MARKET VALUE "). The ArrayListElement property stores a list of all elements of a given universe.
Preferably, Universe object 910a also comprises a plurality of methods that permit manipulation ofthe universe both externally by the user via the user interface and internally by the DataNet Engine. The CreateUniverse method accepts as a parameter a universe name. Upon invoking the CreateUniverse method, a new universe is created. The DestroyUniverse method accepts as a parameter the name of an existing universe. Upon invocation, the DestroyUniverse method deletes the existing universe. The AddElement method associates an element with a universe. Elements may be queries, indexed lists, or static lists. The AddElement method accepts as parameters the type of element and a code identifying the element. The RemoveElement method removes an association between an element and a universe. The RemoveElement method also accepts as parameters a code identifying the element and the type of element. The ExistElement method checks an association between an element and a universe. The Exist Element method also accepts as parameters a code identifying the element and the type of element.
The Recuperate method accepts as a parameter a list of elements in an existing universe. Upon invocation, the Recuperate method refreshes the stored list of elements in an existing universe after unstored additions or removals have been made to that universe.
In the preferred DataNet example embodiment, information about any errors of Universe object 910a is stored in an Error object 901a. Error object 901a comprises a Number property that stores an error code, a Description property that stores an error description, and a Source property that stores the origin ofthe error. Error object 901a also comprises a Clear method. Upon invocation, the Clear method clears the previously stored properties of last error of Error object 901a.
Having described the properties and methods of Universe object 910a, the user aspect of universe module 810 will be discussed next.
In the preferred DataNet example embodiment, upon starting DataNet, a Open Universe dialog box 1005 appears in a DataNet main window 1000. If no universe exists in the application, the user preferably creates a universe before working with DataNet. h order to create a new universe, the user preferably selects either the New option from under a Universe heading 1002 on a main menu bar 1001 or clicks a New Universe 1003 icon on a toolbar 1004. Once the user makes his selection, a New Universe dialog box appears (not shown).
The New Universe dialogue box preferably comprises a Based On field and a Name field. In the Based On field, the user can scroll through the list of existing universes. The user may use an existing universe as a starting point and copy all ofthe properties and queries of that existing universe into a new universe. Typically, the Based On field defaults to Anone".
In the Name field, the user names the universe, thereby defining the UniverseName property of Universe object 910a.
After completing the Name and the Based On fields, the user is prompted to create a new universe. By responding affirmatively, the user invokes the CreateUniverse method of the Universe object 910a. The name entered by the user is passed as a parameter to the CreateUniverse method. The name entered by the user is stored by the UniverseName property of Universe object 910a and a new universe is created. A Universe dialog box 1010 shown in FIG. 11 appears in the DataNet main window 1000 and the name ofthe new universe appears in the title bar to the Universe dialogue box 1010.
DataNet users define a universe by means ofthe Universe dialog box 1010 illustrated in FIG. 11. The Universe dialog box 1010 allows the user to define properties and invoke methods of Universe object 910a. The universe name is displayed in Universe name text box 1020. The user may type in a different name to select an alternate universe. The date is entered in a Date numeric selection box 1030. An asterisk as shown at 1030 selects the last closed business day. The queries such as 1040 comprising the universe are listed in the Universe Query List text box 1050.
In order to delete an existing universe, the user may select a Delete command from under the Universe heading 1002 ofthe main menu bar 1001 in the DataNet main window 1000. Next, a Delete Universe dialog box (not shown) appears in the DataNet main window 1000. The user then may select the name ofthe universe that the user wants to delete. The name ofthe selected universe is passed as a parameter to the DestroyUniverse method of Universe object 910a, the DestroyUniverse method is invoked, and the selected universe is deleted.
In the preferred DataNet example embodiment, no date is stored for a universe. Rather, the date must be re-entered whenever a universe is opened. The date is used to calculate the contents of dynamic universes.
In the preferred DataNet example embodiment, Query module 820 is implemented as Query object 920a. Query object 920a is the principal tool for managing both lists and databases. hi the preferred DataNet example embodiment, Query object 920a comprises a plurality of properties that define a query. The QueryName property stores a query name. The QueryCurrencyReference property identifies a reference currency. The reference currency is the currency used by the DataNet engine to perform calculations and data fields in other currencies are converted to the reference currency. The QueryOwner property stores the user name ofthe user who created the query. The QueryOwnerMode property stores the mode ofthe query selected by the user. Modes include Update Mode, whereby by the user can modify the query, and Readonly Mode, in which the user cannot modify the selected query. The QueryOwnerMode may only be changed by the user identified by the QueryOwner property and the system administrator. The QueryMaximumNumber property stores a maximum stock number. The maximum stock number is the maximum number of query results (e.g. securities) that will be included in the universe.
In the preferred DataNet example embodiment, Query object 920a also comprises a plurality of lists that may define a query. The QueryDatabase list stores a list of databases (i.e. Datastream, etc.), tables, and countries. The QueryResult list stores a list of unique query result identifiers.
Query object 920a also comprises one or more criteria lists. The QueryLogicalCriteria list stores a list of logical operator criteria. The logical operators include "and" and "or". If the user specifies only one criteria, then this list is empty. The QueryDateCriteria list stores a list of date criteria. The QueryOperatorCriteria list stores a list of operator criteria. Preferably, the operator criteria include "less than", "greater than", "equal", "not equal", "greater or equal", "less or equal" and others. The QueryFunction list stores a list of function criteria. A function is a user-selected predefined or user defined operation to manipulate data. The QueryCodeCriteria list stores a list of code criteria. Each code criterion comprises a code identifying a field of information corresponding to a security. A field represents a category of information regarding a security in the data source database 251. The Query ValueCriteria list stores a list of value criteria. Each value criterion represents a value entered by the user to which the field information corresponding to the field selected by the user is compared using the operator criteria. For example, if the user selects the field Aclose price @ and the operator Agreater thanθ, then by entering value criteria A20", the user can create a criteria which will select stocks whose close price is greater than $20 on a given date. The QueryDisplayCriteria list stores a list of displayed value criteria. Displayed value criteria represent the value criterion which are displayed to the user. For example, if the user specifies more than one criteria, he may specify which criteria he wishes displayed in the query result.
Preferably, the Query object also comprises one or more sort lists. The QuerySortCode list stores a list of sort codes. A code identifies a field of information corresponding to a security. A query result may be sorted according to the field. The QuerySortFunctions list stores a list of sort functions. Functions may also be used to sort query data. The QuerySortDate list stores a list of sort dates. A query result may also be sorted by the value of a field on a given date. The QuerySortType list stores a list of sort types. Sort types include ascending and descending. The Querylnput list stores a list of input codes. An input code is a unique identifier associated with the parameters, criteria and options used to setup a query. The QueryOutput stores a list of output codes. An output code is unique identifier associated with the securities retrieved as a result ofthe query.
In the preferred DataNet example embodiment, Query object 920a comprises a plurality of methods that permit manipulation ofthe query both externally by the user via the user interface and internally by the DataNet engine. Query objects compromise three categories of methods: list management methods, tool methods, and database management methods.
A Query object 920a comprises a plurality of list management methods. The list management methods accept a list type as a parameter. The list type informs the method as to the type of list to manipulate and what list to manipulate. The CreateList method creates a list. The CreateList accepts a list type as a parameter. The SetArraySize method sets the size of a list. The SetArraySize accepts a list size and a list type as parameters. The AddValueToList method adds a value to a list. The AddValueList method accepts as parameters a value and a list type. The Removeltem method remove items, or securities, from a list. The Removeltem method accepts an index and a list type as parameters. An index is a location of an item in a list. The RemoveAllItem method removes all items from a list. The RemoveAllItem accepts a list type as a parameter. The invocation of these methods during execution ofthe query module is discussed below.
A Query object 920a further comprises a plurality of tool methods. User-accessible tool methods appear in the user interface under a Query heading ofthe main menu bar. These tool methods allow the user to manipulate the query the user is currently working with. The Refresh method allows the user to store query parameters in the user database and generates a query result based on the query parameters. The Reset method loads information from the queried database. The EditQuery method allows the user to edit a query and returns a display ofthe results ofthe query. The Sort method is used to sort identifiers in a query associated with a security. The Display Item method accepts as a parameter an item or GSID, and displays a value corresponding to that item. The user may select an item to display by. clicking on the item in the query result.
In the preferred DataNet example embodiment, a Query object 920a comprises a plurality of database management methods. The database management methods allows the DataNet engine to manipulate information stored on the DataNet server databases. The GetDataBaseList method is used to search for a list of all data source databases corresponding to external data sources (i.e. Datastream, etc.). The GetDatabaseList returns a list of databases. The GetDataProduct method is used to search for all ofthe products available from a database such as equities, indices and close-end-funds. The GetDataProduct method accepts as a parameter the name of a database and returns all ofthe products available from that database. The GetCountryList method is used to search for all ofthe countries available from a database. The GetCountryList method accepts as parameters a database name and a product name and returns a list of countries available from the named database. The GetMarketType method is used to search for a market type. A market type represents a category of field information associated with a database. Market types includes generalities (i.e. security name, ticker symbol, etc.), market data (i.e. close price, price earnings ratio), and account data (i.e. asset per shares, earnings before interest and taxes, etc.). The GetMarketType method accepts as parameters a database name and a product name and returns a market type.
A Query object 920a database management methods include methods used to manipulate database field information. The GetFieldList method is used to search for a list of fields for particular database product, and market type. The GetFieldList method accepts as parameters a database name, a product name, and a market type and returns a list of fields. The GetFieldList is used to search for a field list. The GetSelectedFieldCode method accepts as parameters a database name and a field code and returns a code corresponding to a field selected by the user.
In the preferred DataNet example embodiment, Query object 920a database management methods include methods used to manipulate function information. A function is a predefined operation that allows the user to manipulate data retrieved from a data source. The GetFunctionList method is used to search for a function. The GetFunctionList method returns a list of functions. The GetFunctionType method is used to search for a list of functions corresponding to a specified function class. The GetFunctionType method accepts as parameters a name of a function class and returns a list of functions corresponding to the function class. The GetFunctionDescription method is used to retrieve a description of a named function. The GetFunctionDescription method accepts as parameters a function class and a function type and returns a function description. The GetFunctionDefmition method is used to retrieve a definition of a named function. The GetFunctionDefmition method has as parameters a function class and a function type and returns a definition of a named function. The invocation of these methods during the execution of Query module 820 is discussed below. hi the preferred DataNet example embodiment, information about errors of a Query object 920a are stored in Error object 901a. Error object 901a comprises a Number property that stores an error code, a Description property that stores an error description, and a Source property that stores the source ofthe error. Error object 901a also comprises a Clear method which clears the stored properties ofthe last error of Error object 901a.
Having described the properties and methods of Query object 920a, the user aspect of Query module 820 will be discussed next.
In the preferred DataNet example embodiment, DataNet users may manipulate a Query object by means of a Query Setup user interface 1110 shown in FIG. 12. The Query Setup user interface 1110 comprises three tabs: parameters 1115, criteria 1120, and options 1125. The parameters tab 1115 is shown in FIG. 12. The query name is indicated in the Query Name text box 1130. When the user enters a query name, the entered name is stored by the QueryName property of Query object 920a. The database on which the query will act is selected from the available databases 251...N and indicated in the Data Base pull-down menu 1135. When the user opens the Query Setup user interface 1110, the GetDatabase List method is invoked and the Database pull-down menu 1135 is populated with a list of all the available databases 251 . . . N. The table within the database on which the query operates is selected in a Data Table pull-down menu 1140. The Data Table pull-down menu 1140, is populated using the GetDataProduct method, and a list of all ofthe products corresponding to the selected database is presented to the user. The saving mode for the query is selected in a Saving Mode mode pull-down menu 1145. If the saving mode is dynamic, the query results are calculated for the date entered in the Universe date text box 1030. If the saving mode is static, the query results do not vary with date.
The currency in which calculations will be computed for the query is selected in a Reference Currency pull-down menu 1160. When the user selects Reference Currency pull-down menu 1160, the selected currency is stored by the QueryCurrencyReference property of Query object 920a.
One or more countries may be selected from the list 1165 of countries represented in the table ofthe selected database. The GetCountryList method is invoked to populate the country list 1165 with the countries corresponding to the selected database and products. If only one country is selected and ALocal CurrencyΘ is selected from Reference Currency menu 1160, then the query calculations are performed in the currency ofthe selected country.
The criteria tab of Query Setup user interface 1110 is shown in FIG. 13. When the criteria tab is displayed, country tab 1150 and industry tab 1155 remain visible. Each criterion has an associated index number which indicates where the criterion code, date, operator, value and logic occur in the QueryCodeCriteria, QueryDateCriteria, QueryOperatorCriteria, Query ValueCriteria, and Query Logical Criteria lists ofthe Query object, respectively. The index number may be assigned by the user with an Index numeric selection box 1305. Criteria are applied by a query in the order of their index numbers. The data field ofthe database table to which the criterion is applied is specified by a criterion code shown in a Code text box 1310. The criterion code is specified using a Data Editor user interface 1400 shown in FIG. 14 and discussed below. The date for which the data is sampled is specified in the Date numeric selection box 1540 and stored in the QueryDataCriteria property. Each criterion also comprises an operator to be applied to the data specified by the criterion code. The operator is entered using a Operator pull-down menu 1315 and stored in the QueryOperatorCriteria property. Operators are comparators that provide a boolean result when the data specified by the criterion code is compared with the value specified in a Value text box 1320. Typical operators include Aequal,@ Anot equal, @ Agreater than,@ Agreater than or equal, @ Aless than,@ and Aless than or equal.® Applicable operators depend on the class and type ofthe data specified by the criterion code.
Criteria are logically ANDed or OR'd together as they are applied in sequence. The user may specify whether a criterion is ANDed or OR'd with previous criterion using a Logic radio button user interface 1325. The logic is stored in the QueryLogicCriteria property.
When the ellipsis button 1340 on the criteria tab is selected, the Data Editor user interface 1400 is displayed as shown in Fig. 14. The user may select a data source 130...N using a Data Source pull-down menu 1410. The user may then select a type of data available from the selected data source using a Data Type pull-down menu 1430. The Data Type pull-down menu 1430 is populated using the GetMarketType method, and a list of market types is presented to the user. When the user selects a data source and a data type, the GetFieldList method is invoked and a list of fields corresponding to the entered data source and data type is presented in a Field List 1420. Field List 1420 displays all the fields ofthe selected data type available for the data source, including user-defined formulas stored in the User Database. To populate Data Source pull-down menu 1410, Data Type pull-down menu 1430, and Field List 1420, DataNet engine 880 queries DataNet server 220 for metadata describing the databases. The DataNet server queries the Database Manager 240 for the metadata from the data source databases 251...N and returns the metadata to DataNet engine 880.
When the user selects a field from Field List 1420, the GetFieldCode method is invoked and the DataNet engine retrieves the unique identifier corresponding to the selected field. The code for the selected field is displayed in the Data Value text box 1440. For example, the BCLO code shown in 1310 refers to the close price of a security from the Bloomberg database.
A Class text box 1450 indicates whether the data is a series or a single value. A Type text box 1460 indicates the data type ofthe data, such as for example, integer, floating point, boolean, or string. An Index text box 1470 indicates the frequency with which the field information is recorded by the data source (e.g. daily, business daily, weekly, monthly, etc.). After selecting the field, the user may cause the criterion code to be entered into the Code text box 1310 in the criteria tab shown in FIG. 13 by selecting an OK button 1480 in Data Editor user interface 1400 shown in FIG. 14.
The user can also choose and/or alter a preexisting function by selecting a Function icon 1441 in the Data Editor user interface. In doing so, a Function Selection dialogue box appears (not shown) from which the GetFunctionList, GetFunctionType, GetFunctionDescription, and GetFunctionDefinition methods are invoked. The GetFunctionList returns a list of functions and the list is displayed to the user in a Function List window. The GetFunctionType returns a list of functions corresponding to the function class selected by the user and the list of function types is displayed in a Function Type window. The GetFunctionDescription method returns a description of a selected function and the description is displayed in the description window. The description of a function is the displayed text describing the function. The GetFunctionDefinition method returns a definition of a selected Function and the definition is displayed in the description window. The definition of a function is the meaning ofthe abbreviation used to denote the function. For example, the definition ofthe function AMAVS is AMoving Average.®
The options tab of Query Setup user interface 1110 is shown in FIG. 15. The options tab is used to define a sort order for query results. Using a ellipsis button 1510 of the options tab, the Data Editor user interface 1400 shown in FIG. 14 appears. The Data Editor user interface may be used to select a criterion code on which query results will be sorted. Using a Type radio button user interface 1530, the user may determine whether the sort is ascending or descending. Using a set of up and down arrow buttons, the user may specify the date for which the data is sampled in Date numeric selection box 1540.
After determining the query parameters, criteria, and options, the user may determine the maximum number of securities that are included in the query output used to populate a universe. Any number including all results may be set. The user may then store the query to the current universe. Any number of queries may be included in a universe, and the universe will be populated with the results from all ofthe queries. In order to run a query, the user selects a Report icon from the main menu bar or selects a Run command from under the Query heading in the DataNet main window.
When queries are run, the DataNet engine invokes the list management tools of Query object 920a to create a list containing the results ofthe queries. The DataNet engine first invokes the CreateListMethod. The CreateList method accepts as a parameter the list type (i.e. static or dynamic) selected by the user and creates a list. The DataNet engine next invokes the SetArraySize method. The SetArraySize method accepts as parameters the size ofthe list (i.e. the maximum stock number selected by the user) and the list type and sets the size ofthe created list. The DataNet engine passes as parameters a value to be added to the list and a list type to the AddValueToList method. The AddValueToListMethod in turn adds a value to the list. The DataNet engine may remove a single item or an entire list of items from the list via the Removeltem method and the RemoveAllItem method respectively.
Query results for a single query or an entire universe may be viewed using a Report user interface 1600 shown in FIG. 16.
As discussed above, the Static List module comprises a list of GSIDs used to identify a collection of information comprising a universe. A static list may be populated by a Query module.
In the preferred DataNet example embodiment, the general operation ofthe static list module comprises receiving a query. The query comprises at least one parameter comprising an identifier for a database. The database stores data concerning one or more securities including the GSIDs ofthe securities. The system queries the database and retrieves data concerning the securities satisfying the parameters ofthe query. The static list is populated with the GSIDs ofthe securities satisfying the query.
The preferred operation ofthe static list module is now described.
In the preferred DataNet example embodiment, the static list module is implemented as Static List object 930a. Preferably, the Static List object 930a comprises one or more properties that permit definition of a static list. The StaticListName property stores the name of a static list. The StaticListCode property stores a unique identifier ofthe static list. The StaticListDescription property stores a description ofthe static list. Static list documentation is information regarding the static list made available to the user via a Help menu in the DataNet main window. The StaticCodeList property stores a list of GSIDs.
In the preferred DataNet example embodiment, Static List object 930a comprises a plurality of methods that permit manipulation ofthe properties of Static List object 930a. The CreateList method is used to create a list for storing GSIDs codes. The CreateList method accepts as a parameter a list type. The SetListSize method is used to set the size of a static list. The SetListSize method accepts as parameters a list size and a list type. The Addltem method is used to add an item to a static list. The Addltem method accepts as parameters an item, or GSID, to be added and a list type. The Removeltem method is used to remove an item from a static list. The Removeltem method accepts as parameters the index, or location, ofthe item to be removed and a list type. The RemoveAllItem method is used to remove all items from a static list. The RemoveAllItem method accepts as a parameter a list type. The Displayltem method is used to display a value corresponding to the item. The Displayltem method accepts as a parameter an item name. By clicking on the name ofthe item in the query result, a value corresponding to that security is displayed.
In the preferred DataNet example embodiment, information about any errors of Static List object 930a are stored in Error object 901a. Error object 901a comprises Number property that stores an error number, a Description property that stores an error description, and a Source property that stores the source ofthe error. Error object 901a also comprises a Clear method which clears the stored properties ofthe last error of Error object 901a.
Having described the properties and methods of Static list object 930a, the execution ofthe static list module will be discussed next.
In the preferred DataNet example embodiment, the static list module is used to store a list of GSIDs and interoperates with Query module 820. Query module 820 uses the information entered by the user during execution of Query Setup user interface 1110 in order to generate and store a collection of GSIDs corresponding to the outputs ofthe query.
When a Query is run, the DataNet engine invokes the CreateList method of Static list object 930a. The DataNet engine passes as a parameter the list type selected by the user, in this case a static list type. The CreateList Method accepts the parameter and creates a list. The DataNet engine next invokes the SetListSize method. The DataNet engine passes as parameters the size ofthe list (i.e. the maximum stock number as selected by the user) and the list type. The SetListSizeMethod then sets the size ofthe created static list. The Addltem method accepts as a parameter from the DataNet engine the GSID for the item to be added to the list. The DataNet engine retrieves the GSID for the item from the output of the query and the Addltem method adds the item to the static list. The DataNet engine may remove any or all ofthe items from a static list by invoking the Remove Item method or the RemoveAllItem method, respectively.
As described above, the indexed list module comprises a list of GSIDs used to identify a collection of information comprising a universe, but has an associated date. An indexed list reflects the application of a query to the data source databases as ofthe associated date, and is used to populate the universe.
In the preferred DataNet example embodiment, the general operation ofthe indexed list module comprises receiving a query. The query comprises at least one parameter comprising an identifier for a database. The database stores data concerning one or more securities including the GSIDs ofthe securities. The system queries the database and retrieves data concerning the securities satisfying the parameters ofthe query. The static list is populated with the GSIDs ofthe securities satisfying the query and an associated date.
The preferred operation ofthe indexed list module is now described.
In the preferred DataNet example embodiment, indexed list module is implemented as Indexed List object 940a. In the preferred DataNet example embodiment, the indexed list object comprises a plurality of methods that permit manipulation ofthe properties of Indexed List object 940a
The IndexedListName property stores the name of an indexed list. The IndexedListCode property stores a unique identifier of an indexed list. The IndexedListDescription property stores a description of an indexed list. The IndexedListDocumentation property stores documentation associated with an indexed list. Indexed list documentation is information regarding the indexed list made available to the user in the Help menu in the DataNet main window. The IndexedCodeList property stores a list ofGS-Ds.
The CreateList method is used to create a list for storing GSIDs. The CreateList method accepts as a parameter a list type. The SetListSize method is used to set the size of an indexed list. The SetListSize method accepts as parameters a list size and a list type. The Addltem method is used to add an item, or GSID, to an indexed list. The Addltem method accepts as a parameter a GSID and a list type. The Removeltem method is used to remove an item from an indexed list. The Removeltem method accepts as parameters the index, or location, ofthe item to be removed and a list type. The RemoveAllItem method is used to remove all items from an indexed list. The RemoveAllItem method accepts as a parameter a list type. The Displayltem method is used to display a value corresponding to the item. The Displayltem method accepts as a parameter an item name. By clicking on name ofthe security in the query result, a value corresponding to that security is displayed.
In the preferred DataNet example embodiment, information about any errors of Indexed List object 940a are stored in Error object 901a. Error object 901a comprises a Number property that stores an error number, a Description property that stores an error description, and a Source property that stores the source ofthe error. Error object 901a also comprises a Clear method which clears the stored properties ofthe last error of Error object 901a.
Having described the properties and methods of Indexed List object 940a, the execution ofthe indexed list module will be discussed next.
In the preferred DataNet example embodiment, the Indexed List module stores a list of GSIDs and interoperates with Query module 820. The Query module 930 uses the information entered by the user during execution of Query Setup user interface 1110 in order to generate and store a collection of GSIDs corresponding to the results ofthe query. The indexed list also stores a date associated with the security identified by the GSID.
When a Query is run, the DataNet engine invokes the CreateList method of Indexed list object 940a. The DataNet engine passes as a parameter the list type selected by the user, in this case an indexed list type. The CreateList Method accepts the parameter and creates a list. The DataNet engine next invokes the SetListSize method. The DataNet engine passes as parameters the size ofthe list (i.e. the maximum stock number as selected by the user) and the list type. The SetListSizeMethod then sets the size ofthe created indexed list. The Addltem method accepts as a parameter from the DataNet engine the GSID to be added to the list. The DataNet engine retrieves the GSID from the output ofthe query and the Addltem method adds the GSID to the index list. The DataNet engine may remove any or all ofthe items from an indexed list by invoking the Remove Item method or the RemoveAllItem method, respectively.
As described above, a formula applies user-defined functions for selecting and performing calculations on data from a universe. A formula may comprise both fields and functions. A field represents a category of information regarding a security in a data source database 251. A function is a predefined operation that allows the user to manipulate the Field Information from the data source. Once the user creates a formula, the user may save the formula in the user database. The user may access the formula through the other DataNet modules. The formula may be applied to a universe of data for a date range and a sampling frequency as specified by the user in those modules.
In the preferred DataNet example embodiment, the general operation ofthe Formula module comprises populating a universe with one or more securities and receiving a formula. For each field in the formula, the Formula module uses the GSID of each security in the universe to identify the data source database corresponding to the field. The formula module retrieves data field information for the security from the data source database in order to evaluate the formula. The formula may be evaluated at each sampling point for each security in the universe. The preferred operation ofthe Formula module is now described.
In the preferred DataNet example embodiment, Formula module 830 is implemented as Formula Object 980a. Formula object 980a comprises one or more properties that permit the definition of a formula. The formula properties represent the information stored for a formula on the DataNet server.
In the preferred DataNet example embodiment, the Code property stores a unique identifier ofthe formula. A typical formula code takes the form "FR0000000001". The Mnemonic property stores an alias ofthe unique identifier ofthe formula. The alias is a name associated with the unique identifier ofthe formula. The ResourceType property stores a resource type ofthe formula. The resource type corresponds to the set of databases corresponding to the fields in the formula.. The OwnerCode property stores a unique identifier corresponding to the user who created the formula. The Name property stores the name ofthe formula. The Definition property stores the definition ofthe formula. The definition of a formula comprises the definitions ofthe functions and fields that make up the formula. The Description property stores the description ofthe formula. The Documentation property stores documentation regarding a formula made available to the user in the Help menu in the DataNet main window.
The BeginDate property stores the first date ofthe time range over which the formula is run in a simulation. In the Simulation module, the first date is specified by the user in a Simulation Setup user interface 1900 in a First Date numeric selection box 1970 as discussed below. The EndDate property stores the last date ofthe time range over which the formula is run. In the Simulation module, for example, the end date is specified by the user in Simulation Setup user interface 1900 in a Last Date numeric selection box 1975 as discussed below. The GenerateType property stores a number corresponding to the generate type. The generate type is either a formula or a result. For example, if the generate type is 0, then the syntax (e.g. @ CIO* 100) ofthe formula is saved. If the generate type is 1, then the result ofthe calculation is made by applying the syntax to the code of an instrument. For example, if the syntax is @C1O*100 and the code is EQ.EUR.IT2548961, then the result is EQ.EUR.IT2548961.C10*100. The Frequency property stores a frequency. The frequency corresponds to the periods at which data is sampled over a date range during the formula calculation. In the Simulation Module, the frequency is specified by a user in Simulated Setup user interface 1900 using a frequency pull-down menu 1980.
In the preferred DataNet example embodiment, the following formula options may be set by the DataNet server system administrator in a time series database session before a formula calculation is performed. The Currency Flag property stores a currency flag. The currency flag indicates whether the formula is dependent on the currency ofthe countries for which the formula is generated. The AutomaticConvert property stores an automatic currency conversion flag. The automatic currency conversion flag indicates whether currency calculations are automatically converted to a currency selected by the user. The ConvertTechnique property stores a technique used to perform a currency conversion. The IgnoreAddition property stores an indicator to ignore addition in a formula. The IgnoreMultiply property stores an indicator to ignore multiplication in a formula.
The Observed property stores the observed. The SourceProperty stores the namelist ofthe lists of instruments.
In the preferred DataNet example embodiment, Formula object 830a comprises one or more methods that permit manipulation ofthe formula. The Initialize method accepts as parameters a NewCode, a BaseCode, a parent, and a key. As discussed below, the user creates a formula using a Formula Editor user interface 1700. Upon the saving ofthe formula, the Initialize method is invoked. The Initialize method then sets the parameters of the formula. The Verify method verifies the syntax ofthe formula created by the user by applying the formula to the first security in the universe. Upon the saving ofthe formula to the user database, the verify method verifies the formula syntax. The CleanUp method accepts as parameters a code corresponding to a formula. Upon the saving ofthe formula, the CleanUp method erases codes in the user database by testing if the code already exists in another list user database. The Update method accepts as parameters a list code, a formula code, and a formula definition. The list code may be the code of either a static list or index list stored in the user database. Upon the saving ofthe formula, the Update method updates the user database with formula information for a list of securities. Also upon the saving of the formula, the SaveParam method saves the parameters of formula in the user database using the formula code. The Record method also verifies the syntax ofthe formula, saves the parameters, and updates all ofthe lists in the user database with the formula definition.
Having described the properties and methods of Formula object 980a, the user aspect ofthe Formula module 830 is discussed next.
Formula objects such as 990a are defined using the Formula Editor user interface 1700 shown in FIG. 17. Parameters are set using the parameters section 1701. A Name text box 1705 allows the user to define a name by which the formula will be referenced. A Title text box 1710 allows the user to define a description ofthe formula. A Data Base pulldown menu 1715 allows a user to select a database for the desired data source to which the formula will be applied. The Data Table pull-down menu 1720 allows the user to select the table of information from the selected database to which the formula will be applied. To populate the Data Base pull-down menu 1715 and the Data Table pull-down menu 1720, the DataNet engine 880 queries the DataNet server 220 for metadata describing the databases. The DataNet server queries the database manager 240 for the metadata from the data source databases 251...N and returns the metadata to the DataNet engine 880.
A Country pull-down menu 1730 allows the user to select the countries to which the formula will be applied. All countries may be selected by selecting a Globe button 1735. A currency flag check-box 1725 allows the user to define whether the formula will be dependent on the currency ofthe selected countries.
Data fields are selected for inclusion in a formula using a Field List box 1702. To select a field, the user first specifies a database corresponding to a data source from the available data sources 130...N using a Data Source pull-down menu 1740. The DataNet engine then populates a Data Table pull-down menu 1745 with metadata indicating the data tables stored in the selected data source database. The user next selects a data table from the data tables comprising the selected data source database using the Data Table pull-down menu 1745. The DataNet engine then populates a Data Type pull-down menu 1750 with metadata describing the data types available within the selected data table. The user then selects a data type from a Data Type pull-down menu 1750. The DataNet engine then populates a Field List 1755 with metadata describing the fields available within the selected data type. The user may then select a field from the Field List 1755.
When the user selects a field from the Field List 1755 by clicking once on it, the field is highlighted and the DataNet engine populates a Class 1760, Type 1765, and Index 1770 text boxes with metadata respectively describing the class, type and index ofthe field. When the user clicks twice on a field, the DataNet engine adds the field to the formula text at the point currently indicated by a cursor 1775 in a Formula Text section 1780.
Functions may be added to a formula using a Function List section 1785. The user first selects a function type from a Function Type pull-down menu 1790. DataNet function types include mathematics, financial, statistics, general, data and case, logical, string, operator and constant, and user. After the user selects the function type, the DataNet engine populates a Function List 1795 with function descriptors such as 1796. When the user selects a function descriptor such as 1798 by clicking once on the descriptor, the descriptor is highlighted and a detailed description and function definition is displayed in a detail text box 1797. When the user clicks twice on the function descriptor, the function is added to the formula at the point indicated by the cursor 1775 in Formula Text section 1780.
Referring to FIG. 18a, the Constant Data Selection window 1801 allows the user to select a constant for inclusion in a formula. A constant as used herein is a data field that has the same value regardless ofthe security to which a formula is applied. Constants may and typically do have values that vary with the simulation date. For example, the closing price of an index or of a given security will have the same value on a given day regardless ofthe closing price of other stocks in the universe on that day. Thus, a formula comprising the closing price of IBM plus the closing price ofthe security to which the formula is applied comprises a constant (the closing price of IBM) plus a non-constant (the closing price ofthe security to which the formula is applied).
In order to open the Constant Data Selection window 1801, the user selects a Select Data 1702 button from the Formula Editor tool bar. The Constant Data Selection window comprises three boxes: a Data Source section, a List section, and a Data List section. To select a constant, the user first specifies a database 251...N using a Data Base pull-down menu 1802. The DataNet engine then populates a Data Table pull-down menu 1803 with metadata indicating the data tables stored in the selected database. The user next selects a data table from the data tables (i.e. Equity, Index, Closed-end-funds, commodities, Economic series, Simulation Index, Aggregate index) comprising the selected data source database using the Data Table pull-down menu 1803. When the user selects a table, a List section 1805 displays the corresponding list of items available to the user. For example, if the user selects the table "Indice", the list box displays the Indice List 1811. The DataNet engine then populates the Indice list with metadata describing the indices covered by the selected indice table. Here, the user specifies the index he wants to use as a constant. The user may also select a country from the Country pull-down menu 1804. In the Data List section 1812, the user specifies a data type (e.g. market data) from the Data Type pull-down menu 1806. The DataNet engine then populates the Data List 1813 with metadata indicating the available fields ofthe selected data type. The user may then select a desired data field (e.g. close price, dividend yield etc.) ofthe selected data type.
A Class text box 1807 indicates whether the data is a series or a single value. A Type text box 1808 indicates the data type ofthe data, such as for example, integer, floating point, boolean, or string. A Index text box 1809 indicates the frequency with which the field information is recorded by the data source (i.e. daily, business daily, weekly, monthly, etc.). To enter the selected code for the constant in the formula, the user clicks a Ok button 1810.
Upon completion, a formula may be saved in the user's user database 895. After saving, it will appear in the formula field list 1755 when the Auser database-, data-source is selected in the Data Source pull-down menu 1740. The formula may then be used to build a universe, run a simulation or aggregate, or construct new formulas. Formulas may be backtested with historical data using Simulation module 850.
In the preferred DataNet example embodiment, simulations are used to back-test a formula and as a portfolio definition tool. Simulations apply a selected formula to every stock in the open universe for each date in a range of dates, and rank the stocks in the universe based on the formula value for that security. A portfolio is defined through a combination of a partitioning ofthe ranked securities into classes, and threshold stock number which determines the number of securities in the portfolio.
For each day (or other period depending on simulation frequency) during the simulated period, the simulated formula is applied to calculate a value for each security in the universe. Every security in the universe is ranked according to its value, from highest to lowest. The securities are assigned to classes according to their rank. A fixed number of different securities are held in the portfolio, as defined by the stock number SN. Initially, the highest-ranked SN securities in the universe are assigned to the portfolio. As the rankings change, securities are moved in and out ofthe portfolio (Atradedg) as follows: Each security in the portfolio remains in the portfolio unless and until its ranking falls into the next lower class. At that point, it is traded out ofthe portfolio, and the highest ranking security not in the portfolio is traded into the portfolio.
The universe may be partitioned into classes by formula value or by stock number (rank). If the universe is partitioned by stock number, then equal numbers of securities are assigned to each class in rank order. Thus, for a universe containing 100 securities and five classes, each class contains 20 securities - the highest ranked 20 securities in class 1, the next 20 in class 2 and so on. As the rankings change with simulation date, so will the contents of each class. Each class always contains one-fifth ofthe securities in the universe.
If the universe is partitioned by formula value, then the classes equally partition the range of formula values on a given date. Thus if the formula being back-tested yields market capitalization as its value, and the highest-ranked security in the universe has a market capitalization of $500 million USD, and the universe is partitioned by formula value into 10 classes, class 1 contains securities having a market capitalization ranging from $451 million USD - $500 million USD, class 2 contains securities having a market capitalization ranging from $401 million USD - $450 million USD and so on. As the rankings change, so does the contents of each class. Each class may contain differing numbers of securities, depending on the formula values.
In the preferred DataNet example embodiment, the general operation ofthe Simulations module comprises populating a universe with one or more securities and determining a portfolio. As discussed below, the user specifies a formula and a date range and a sampling frequency over which the simulation is run. For each field in the formula, the Simulation module uses the GSID of each security in the universe to identify the data source database corresponding to the field. The Simulations module retrieves data field information for the security from the data source database in order to evaluate the formula. The Simulations module determines at each sampling point the securities in the portfolio based on the application ofthe formula to each security in the universe.
The preferred operation ofthe Simulations module is now described.
In the preferred DataNet example embodiment, Simulation module 850 is implemented as simulation object 960a. Simulation objects 960a is composed of two macros, the SimModul macro and the SimTools macro. Both macros may be written in languages such as 4GL, Visual C++, Visual Basic, and others. The macros define all the operations ofthe simulation including the setting of all ofthe simulation variables, the evolution ofthe backtest according the variables, the definition of classes and of a portfolio, and the generation of two reports: a performance report and a portfolio report.
In the preferred DataNet example embodiment, the SimModul macro comprises one or more procedures that permit manipulation ofthe ofthe simulation. These procedures are accessible to the user under a simulations heading in the DataNet main window.
The Open_Simulation procedure opens an existing simulation by initializing the simulation data and loading the properties ofthe simulation into a work database. The Open_Simulation procedure accepts as parameters a simulation code and simulation graphics. The simulation code is a unique identifier corresponding to a simulation. The simulation graphics parameter represents the graphics generated for an existing simulation. When the user selects the Open Simulation command from the Simulations heading in the DataNet main window, the user is presented with a list of existing simulations. Upon clicking on the name of a simulation, the simulation=s code and graphics are passed as parameters to the Open_Simulation procedure and the simulation is opened.
The New_Simulation procedure creates a new simulation. The New_Simulation procedure accepts as a parameter a simulation source index. The simulation source index stores an index ofthe data sources that are accessed during a simulation. When the user selects the New Simulation command from the Simulations heading in the DataNet main window, the New_Simulation procedure sets up the simulation data and loads it into a work database.
The Delete_Simulation procedure deletes a simulation. The Delete_Simulation procedure accepts as a parameter a simulation code. When the user selects the Delete Simulation command from under the Simulations heading, the user is presented with a list of existing simulations. Upon clicking on the name of a simulation, the simulation=s code is passed as a parameter to the Delete_Simulation procedure and the simulation is deleted.
The Rename_Simulation procdure gives a simulation a new name. The Rename_Simulation procedure accepts as a parameter a simulation name. When the user selects the Rename Simulation command from under the Simulations heading, the user is presented with a list of existing simulations. Upon clicking on the name of a simulation, the user is prompted to enter a new name for the simulation. The name entered by the user is passed as a parameter to the Rename_Simulation procedure and the simulation is given the entered name.
The Import_Simulation procedure imports a simulation. The ImportjSimulation procedure accepts as a parameter a simulation file name. When the user selects the Import Simulation command from under the Simulations heading, the user is prompted to enter a simulation file name for the simulation he wishes to import. The simulation file name is passed as a parameter to the ImportjSimulation procedure and the external simulation file is imported into the Simulation module.
The Export_Simulation procedure exports a internal simulation file. The Export_Simulation procedure accepts as parameters a simulation code and a simulation file name. When the user selects the Export Simulation command from under the Simulations heading, the user is prompted to a enter simulation file name for the simulation he wishes to export. The simulation file name and corresponding simulation code are passed as parameters to the ExportjSimulation procedures and the internal simulation file is exported from the Simulations module.
The View_Simulation procedure displays the results of a simulation. The View_Simulation procedure accepts as a parameter simulation graphics. When the user selects the View command from under the Simulations heading, the user is presented with a list of existing simulations. Upon clicking on the name of a simulation, the simulation=s graphics are passed as parameters to the View_Simulation procedure and the simulation results are displayed.
The Print_Simulation procedure prints the graphics ofthe opened simulation. The Print_Simulation procedure accepts as parameters simulation graphics, a graphic file name, a graphic page width, and a graphic page height. When the user selects the Print command from under the Simulations heading, the user is presented with a list of existing simulations. Upon clicking on the name of a simulation, the simu!ation=s graphics, the graphics file
• Al - name, the graphic page width, and the graphic page height are passed as parameters to the Print_Simulation procedure and the simulation graphics are printed.
In the preferred DataNet example embodiment, the Test_Simulation procedure tests whether or not a formula is used by a simulation. The Test_Simulation procedure accepts as a parameter a formula code. The formula code is a unique identifier corresponding to the formula to be tested.
In the preferred DataNet example embodiment, a simulation is set up using a Simulation Setup user interface 1900 as discussed below in connection with FIG. 19. Upon completing the simulation setup, the user may click a Ok button 1936. In doing so, the user may invoke one or more ofthe following procedures ofthe SimModul macro.
In the preferred DataNet example embodiment, the Set_Simulation procedure defines all ofthe simulation variables and sets them according to the data entered by the user in Simulation Setup user interface 1900 as discussed below in connection with FIG. 19. The Set_Simulation procedure accepts as a parameter a formula code. The formula code is a unique identifier associated with the formula specified by the user in a Formula text box 1910. The Set_Simulation procedure also accepts as a parameter a benchmark code. The benchmark code is a unique identifier associated with the benchmark specified by the user in a Benchmark text box 1920. The benchmark may comprise another data field or formula and serves as a point of comparison for the formula specified in the simulation. The Set_Simulation procedure also accepts as a parameter a weighting code. The weighting code is a unique identifier associated with a weight specified by the user in a Weight pulldown menu 1930. The weighting determines the weight given to each security during trading of a portfolio in a simulation. The SetjSimulation procedure also accepts as a parameter a universe type. The universe type may be either static or dynamic and is specified by the user using Universe radio buttons 1940.
In the preferred DataNet example embodiment, the SetjSimulation procedure accepts as a parameter a frequency. The frequency is specified by the user using the Frequency pull-down menu 1980. The frequency corresponds to the periods at which data is sampled over a date range during a simulation. The SetjSimulation procedure also accepts as parameters a start date and an end date. The start date and the end date are specified by the user in a First Date numeric selection box 1970 and a Last Date numeric selection box 1975 respectively. The start date and the end date define the date range over which a simulation is run.
In the preferred DataNet example embodiment, the SetjSimulation procedure also accepts as a parameter a sorting type. The sorting type is specified by the user using Partitioning by radio buttons 1950. The sorting type determines how classes of stocks is partitioned during a simulation. The SetjSimulation also accepts as a parameter a number of classes. The number of classes is specified by the user using a Class Number numeric selection box 1955. The class number is the number of partitions of a simulation portfolio. The SetjSimulation procedure also accepts as a parameter a tolerance value. The tolerance value is specified by the user using a Tolerance numeric selection box 1960. The tolerance may be used to reduce churning ofthe portfolio. The SetjSimulation procedure also accepts as a parameter a maximum deviation value. The maximum deviation value is specified by the user using the Maximum Deviation numeric selection box 1965. The maximum deviation value represents the maximum percentage deviation permitted in the weight of each stock in the portfolio.
In the preferred DataNet example embodiment, the SetjSimulation procedure accepts as a parameter a dividend flag. The dividend flag may be specified by the user using a Dividend Invested check box 1907. If the dividend flag is selected by the user, then dividends earned on securities in the portfolio are reinvested in the portfolio during the simulation. The SetjSimulation procedure also accepts an exclusion flag as a parameter. The exclusion flag may be specified using an Exclusion Enabled box 1906. The exclusion flag designates whether certain stocks or certain types of stocks are excluded from the portfolio during the simulation. The SetjSimulation procedure also accepts as a parameter an exclusion code. The exclusion code may be specified by the user using a Field text box 1911. The exclusion code represents a unique identifier associated with the field with which the user specifies an exclusion. The SetjSimulation procedure also accepts as parameters an exclusion operator and an exclusion value. The exclusion operator and the exclusion value may be specified by the user using an operator pull-down menu 1916 and a value text box 1920. The user may set-up a comparison using the field, the operator, and the value. If the comparison is true, then a security or a group of securities are excluded from the portfolio during the simulation.
In the preferred DataNet example embodiment, the SetjSimulation procedure also accepts as a parameter a preference flag. The preference flag may be specified by the user using a Preference Enabled check box 1926. The SetjSimulation procedure also accepts as a parameter a preference code. The preference code is specified by the user using a Field text box 1931. The preference code is a unique identifier associated with the field specified by the user. If the preference flag is selected by the user, then the securities in the portfolio may be sorted according to the field specified by the user. As discussd above, upon completing the simulation setup, the user may click OK button 1936. In doing so, the SetjSimulation procedure is invoked. The SetjSimulation procedure sets the simulation variables according to the data entered by the user.
In the preferred DataNet example embodiment, the SimModul also comprises a SetjSimulation_Country procedure. The SetjSimulation_Country procedure defines country data of a simulation. The SetjSimulation_Country procedure accepts as parameters a country code, a exchange rate value, and a broker fee. The country code is a unique identifier associated with a country specified by the user in a Country pull-down menu 1985. The exchange rate value represents the costs of currency exchanges as specified by the user using a Change numeric selection box 1995. The broker fee represents the transaction costs as a percentage of each transaction as specified by the user in a Change numeric selection box 1995. During the simulation set-up, the user may specify the trading and currency exchange costs for a country. Upon invocation, the SetjSimulation_Country procedure loads data about the countries for which the simulation is run.
In the preferred DataNet example embodiment, the SetjSimulationJData procedure defines the simulation portfolio data. The SetjSimualtionJData procedure accepts as parameters a name of a simulation, a class index, and a number of titles in the portfolio. The name parameter comprises the name ofthe simulation as specified by the user during the creation of a new simulation. The class index corresponds to the index selected by the user using a Class Index numeric selection box 2025. The number of titles in the portfolio corresponds to the size ofthe simulation portfolio as specified by the user in a Stock Number numeric selection box 2015. Upon invocation, the SetjSimulationJData procedure sets up the simulation portfolio.
In the preferred DataNet example embodiment, SimulationJPartition procedure partitions the universe according to the partitioning method specified by the user using Partitioning by radio buttons 1950. The SimulationJPartition procedure accepts as parameters a class index and a stock number. Upon invocation, the SimulationJPartition procedure divides the universe into classes and updates the related data in the work database.
In the preferred DataNet example embodiment, the SimulationJ-nitialize procedure initializes the calculation in the simulation. The SimulationJ-nitialize procedure accepts as parameters a class index, a stock number, and simulation graphics. Upon invocation, the SimulationJ-nitialize calculates the first step ofthe simulation. The SimulationJExecute procedure calculates the steps ofthe simulation. Upon invocation, the Simulation JExecute procedure calculates each step ofthe simulation. Each step ofthe simulation corresponds to a date. The steps ofthe simulation being calculated is indicated at the bottom of Simulation . Tools window 2000 during the execution ofthe simulation.
In the preferred DataNet example embodiment, the SavejSimulation procedure creates an index ofthe results ofthe simulation. The SavejSimulation procedure accepts as a parameter a sampling frequency. Upon invocation, the SavejSimulation procedure creates a series ofthe performance results ofthe simulation. The ReportjSimulation procedure builds a performance report. Upon invocation, the ReportjSimulation procedure reads the results ofthe simulation and updates the work database with values corresponding to each box at the bottom ofthe Simulation Tools window 2000. The ReportJPortfolio procedure builds a portfolio report. Upon invocation, the ReportJPortfolio procedure reads the results ofthe simulation and updates the work database with values corresponding to each box in at the bottom ofthe Simulation Tools window 2000.
In the preferred DataNet example embodiment, the SimTools macro comprises one or more procedures and methods that permit manipulation ofthe simulation. Like the SimModul macro, the procedures ofthe SimTools macro may be invoked upon completing the simulation setup. The user may click a Ok button 1936 and in doing so, the user may invoke one or more ofthe following procedures ofthe SimTools macro.
The Simulation_Read_Class procedure reads the securities in a universe at a given date. The SimulationJ-tead_Class accepts as parameters a user code and a date value. The date value represents a given date. The user code is a unique identifier corresponding to the user who created the simulation. Upon invocation, the Simulation _Read_Class reads the unique codes associated with the securities ofthe universe at the given date. The Simulation module uses these codes to retrieve field information from the data source databases for the securities in the universe.
The SimulationJPartition procedure also partitions the universe into classes. The SimulationJPartition procedure accepts as parameters a user code, a ranking, and a date value. The ranking corresponds to a securities rank in the universe according a field value. Upon invocation, the SimulationJPartition procedure sets up the variables ofthe securities ofthe universe, applies the formula to each security, sort the securities in the universe, and partitions the universe into classes according to the partitioning method selected by the user.
In the preferred DataNet example embodiment, the Simulation J-leadJ-Jniverse procedure reads a universe. The Simulation_Read jUniverse procedure accepts as parameters a user code, a ranking, a date value, and a currency. Upon invocation, the SimulationJ eadJUniverse loads the codes, the formula values, and the country of each security ofthe universe. In the preferred DataNet example embodiment, the SimulationJExcIusion procedure excludes securities from a simulation. The SimulationJExcIusion procedure accepts as parameters a user code, a calculation date, and a currency. The calculation date corresponds to the date for which the exclusion comparison is calculated. The Simulation_Exclusion procedure updates the universe according to the exclusion specified by the user.
The Simulation jSort procedure sorts a series result of a simulation. The SimulationjSort accepts as parameters a rank order and a list of series to classify. Upon invocation, the the SimulationjSort procedure sorts a series according to the rank order.
The Simulation_CountryJ?ercentage procedure calculates percentages by country. The Simulation_CountryJPercentage procedure accepts as parameter a user code and a date. Upon invocation, the Simulation CountryJPercentage procedure loads a country=s properties and calculates the percentage that country securities make up ofthe universe.
In the preferred DataNet example embodiment, the Simulation_Graph creates a simulation graph. The Simulation 3raph procedure accepts as a parameter a user code. Upon invocation, the Simulation_Graph procedure draws the graph at each step ofthe simulation. The SimulationjSetup Graph procedure initializes the graph before drawing. The SimulationjSetup_Graph procedure accepts as parameters a simulation database and a graphic code. The simulation database stores the results of a simulation. The graphic code is a unique identifier associated with a simulation graphic. hi the preferred DataNet example embodiment, the TestjSimulation method tests a simulation configuration. The TestjSimulation method accepts as parameters a simulation database and a simulation code. The simulation code is a unique identifier associated with a simulation. Upon invocation, the TestjSimulation method tests the benchmark, the formula, the preference parameters, and the exclusion parameters. The Simulation Jniverse method reads the code ofthe securities in the universe. The Simulation Universe method accepts as parameters a user code, a date value, and a currency ofthe universe. The currency ofthe universe is the currency in which the simulation calculations are performed.
In the preferred DataNet example embodiment, the Simulation_GetJSToteCodes method checks if a formula has been applied to a code of a securities in the universe. The Simulation_Get_Notecodes accepts as parameters a user code, a formula code, and a calculation date. Upon invocation, the Simualtion_Get_Notecode method returns a code indicating whether the formula has been applied. The Simulation_Get_Country method reads the country codes ofthe universe. The Simulation_Get_Country method accepts as parameters a list of codes. Upon invocation, the Simulation_Get_Country method returns the countries corresponding to the input codes. hi the preferred DataNet example embodiment, the PortfolioJWeight method defines the weight ofthe assets in the portfolio. The PortfolioJWeight method accepts as parameters a user code and a date. Upon invocation, the PortfolioJWeight method calculates the weight of each asset in the portfolio following the weight specified by the user.
In the preferred DataNet example embodiment, the Simulation_GetJ?rice method checks if at least one close price ofthe securities in the universe is defined. The Simulation_GetJPrice method accepts as parameters a list of codes. Upon invocation, the Simulation J retJPrice method returns a close price of a security in the universe, if available. The Simulation_ReadJ?rice method checks the universe to determine if at least one close price is defined. The Simulation_ReadJ?rice method accepts as parameters a list of codes, a calculation date, and a currency of calculation. Upon invocation, the Simulation_ReadJ?rice method calculates the price ofthe securities in the universe on the calculation date according to the currency specified by the user. The Simulation_Read_Capitaliztion method checks the universe to determine if at least one capitalization is defined. The Simulation R.ead_Capitalization method accepts as parameters a list of codes, a calculation date, and a currency of calculation. The Simulation JReadJDividend method checks the universe to determine if at least one capitalization is defined and converts it from end to summed. The SimulationJReadJDividend accepts as parameters a list of codes, a calculation date, and a currency of calculation.
Having described the properties, procedures, and methods of Simulation object 960a, the user aspect of Simulation module 960 is discussed next.
Simulations are defined in DataNet using the Simulations Tools user interface 1800 and Simulations Setup user interface 1900 illustrated in FIGS. 18 and 19 respectively. FIG. 18 is an illustrative Simulation Tools user interface 1800. The user defines a simulation name by entering the name into a Simulation Name text box 1860. The user may then partition the simulation into one or more classes by entering a number in a Class Index text window 1820. The Class window 1840 displays the securities in the class index indicated in Class Index text window 1820. The user also selects the size ofthe portfolio by entering a stock number in a Stock Number text window 1830. A portfolio is a collection of stocks whose performance is monitored during the execution ofthe simulation. A Portfolio window 1850 displays the securities in the portfolio. FIG. 19 is an illustrative Simulation Setup user interface. In order to set up a simulation, the user preferably selects the Setup command under a Simulation heading in the DataNet main window. Alternatively, the user may select the Simulation setup icon from the Universe toolbar 1060.
In the preferred DataNet example embodiment, there are five steps to setting up a simulation: (1) setting the variables (2) setting the parameters (3) setting the dates (4) setting the options and (5) setting the country charges. They may be performed in any order. hi a Variable Setup section 1901, the user may specify the Formula to be simulated in the Formula text box 1910. When the user selects the Formula ellipsis button 1915, the Field Selection menu appears. Here, the user may specify the formula or field he wants to simulate by selecting a database, a table, and a data type.
An illustrative Field Selection menu is shown in FIG. 21. The Field Selection Menu comprises two sections: a Data Source section 2140 and a Data Type section 2150. In order to select a field, the user first specifies a database corresponding to a database 251...N using a Data Base pull-down menu 2155. The DataNet engine then populates a Data Table pull-down menu 2160 with metadata indicating the data tables stored in the selected database. The user next selects a data table from the data tables (i.e. Equity, Index, Closed-end-funds, commodities, Economic series, Simulation Index, Aggregate index.) corresponding to the selected data source database using the Data Table pull-down menu 2160. When the user selects a table, a Field List section 2165 displays a list of fields available to the user. The DataNet engine then populates the Field List 2166 with metadata describing the fields covered by the selected table. The user may select a table via the Data table pull-down menu 2167. The user may select the field he wants to use by clicking on the name ofthe field in the Field list.
The Class text box 2170 indicates whether the data is a series or a single value. The Type text box 2175 indicates the data type ofthe data, such as for example, integer, floating point, boolean, or string. The Index text box 2180 indicates the frequency with the field information is recorded by the data source (i.e. daily, business daily, weekly, monthly, etc.). To enter the selected field as the code for the field 1911, the user clicks the Ok button.
By selecting the user database from the Data Base pull-down menu 2155, the user may select a predefined formula from the user=s user database 895 to be simulated. Simulations may be compared with a benchmark, which may comprise another data field or formula. A benchmark may be specified using the Benchmark text box 1920 or selected from a data field list by selecting a Benchmark Ellipsis button 1925. When the user selects the Benchmark Ellipsis button, the Constant Data Selection window appears, and is used as described above in connection with FIG. 18a.
The user may specify the weights ofthe assets in the simulation portfolio by selecting either equal weights or market cap weights from the Weight pull-down menu 1930. If the user selects equal weighting, trading ofthe portfolio is simulated to maintain an equal value of each security. If the user selects market cap weights, the trading ofthe portfolio is simulated so that the value of each security in the portfolio is proportional to the market capitalization ofthe issuer. The user may specify a maximum weight in the Maximum Weight text box 1935, which causes the trading ofthe portfolio to be simulated so that the proportion of each security is prevented from exceeding the maximum weight.
The user may also set the universe to either dynamic or static using radio buttons 1940. If the user sets the universe type to a type different from his selection in the universe module, then the user's new selection overrides his original selection and the simulation is carried out according to the selection made in the Simulation Setup.
The user may also specify a reference currency using Reference Currency pull-down menu 1945. All currency amounts are converted to the reference currency during simulation.
In a Parameters Setup section 1902, the user specifies the parameters for the simulation setup. The user may select to partition the classes of stocks by formula value or stock number using the Partitioning By radio buttons 1950. The user may select a number of classes for the simulation using the Class Number numeric selection box 1955. The class number determines the number of partitions. The user may also select a tolerance using the Tolerance numeric selection box 1960. The tolerance represents a percentage by which the formula value of a security in the portfolio may fall short ofthe value at which it would otherwise be traded out ofthe portfolio, and remain in the portfolio instead. The tolerance may be used to reduce churning ofthe portfolio. Using the Maximum Deviation numeric selection box 1965, the user may specify the maximum percentage deviation permitted in the weight of each stock in the portfolio from the specified weighting scheme.
In the Dates setup section 1904, the user may specify a beginning date for the simulation using the First Date numeric selection box 1970, and an ending date using the Last Date numeric selection box 1975. The user may also specify the frequency with which the data will be sampled (i.e. Daily, Business, Weekly, etc.) in the Frequency pull-down menu 1980.
In a Country Charges setup section 1903, the user may specify trading and currency exchange costs for each country. In the Country pull-down menu 1985 the user may select a country. Alternatively, the user may select a Globe icon 1986 to apply specified costs to all the countries listed in the Country pull-down menu. Using the Transaction numeric selection box 1990, the user may set transaction costs as a percentage of each transaction. Using the Change numeric selection box 1995, the user may specify the cost of currency exchanges as a percentage ofthe exchanged amount.
In the Options setup section 1905, the user may specify the reinvestment of dividend options using the Dividend Invested check box 1907.
Using the Exclusion Enabled check box 1906, the user may specify whether to exclude certain stocks or types of stocks from the portfolio. After checking the Exclusion Enabled box 1906, the user double clicks in a Field text box 1911 and a Field Selection menu appears. Using the Field Selection box as described above, the user may specify a Field for possible exclusion from dividend reinvestment. The user then uses a pull-down menu 1916 to select a comparison operator to compare the selected field to the value specified by the user in text box 1921. If the comparison is true, then the security is excluded from the portfolio.
Using the Preference Enabled check box 1926, the user may specify a means an alternate sort order for the securities in the universe based on a particular field. The user selects the field by double clicking in 1931 and selecting a field from the Field Selection menu as discussed above.
Once the user completes the simulation setup, the user clicks a Ok button 1936 to run the simulation. Alternatively, the user can select and Execute command under the Simulation heading in the main menu bar.
An example graphic simulation result is shown in figure FIG. 20. The performance ofthe simulation portfolio 2010 and the benchmark 2020 are displayed. The annual performance ofthe simulation portfolio 2030 and the benchmark 2040 are also displayed. In order to view a report ofthe simulation results, the user selects the commands Report and Performance from under the Simulation heading in the main menu bar. hi the preferred DataNet example embodiment, the simulation results are stored in the user database. The user can access the simulation results in both formula module 830 and in graphics module 840. i formula module 830, the user clicks on the Selected Data button on the Data Editor toolbar and the Constant Data Selection window appears. The user may select the simulation results from the Field List for the user database. In graphics module 840, the user may highlight the plot, right click and choose the select data option or alternatively click the Selected Data button on the Data Editor toolbar. In the preferred DataNet example embodiment, the DataNet engine comprises an Aggregate module 860. An aggregate is an operation (e.g. sum, average, etc.) calculated on a universe of stocks. Aggregate module 860 enables the user to build historical summaries of large sets of equities, bonds, etc. and manipulate the data and results for the purposes of comparative analysis. The Aggregate module aggregates to a single value any combination of information (e.g. field, formula, etc.) calculable for individual securities. Any data from any ofthe data sources, as well as any formula, can be aggregated for any index or universe of stocks. Aggregate module 860 can take a given set of values in a universe and perform a plurality of operations.
In the preferred DataNet example embodiment, the general operation ofthe Aggregates module comprises populating a universe with one or more securities and determining a portfolio. As discussed below, the user specifies a function and a date range and a sampling frequency over which the simulation is run. The user also specifies the field he wants to aggregate. For each field in the formula, the Aggregates module uses the GSDD of each security in the universe to identify the data source database corresponding to the field. The Aggregates module retrieves a set of data field information for the securities in the universe from the data source database in order to evaluate the aggregate. The Aggregates module determines at each sampling point a value based on the application of the function to the set of data field information.
The preferred operation ofthe Aggregates module is now described.
In the preferred DataNet example embodiment, Aggregate module 860 is implemented by Aggregates object 970c. Aggregates object 970c comprises a Weight class. The weight class comprises a Weight property that stores a weight. Results ofthe aggregate module may be weighted according to any field.
In the preferred DataNet example embodiment, Aggregates object 970c also comprises a Function class. The function represents the arithmetic operation to be run on a field specified by the user as discussed below. The function may be "average", "median", "maximum", "minimum", or "sum".
In the preferred DataNet example embodiment, the function class comprises a plurality of properties that permit definition ofthe Function class. The Name property stores the function name. The Description property that stores the function description.
In the preferred DataNet example embodiment, Aggregates object 970c comprises a Field class. The field represents the category of data of which the aggregate is run (e.g, close price, market value, analysts revision ratio, etc.). The Field class comprises a Name property stores the field name. In the preferred DataNet example embodiment, the Aggregate object comprises an Aggregates class. The Aggregate class comprises the Field class, the Function class, and the Weight class.
In the preferred DataNet example embodiment, the Aggregates class comprises a plurality of properties that permit the definition of Aggregates object 970c. The following properties are specified by the system during the aggregate setup. The Code property stores a unique identifier corresponding an aggregate. The Mnemonic property stores an alias of the aggregate code. The Type property stores a resource type. The resource type is a database 251 from which data is retrieved. The Owner property stores a resource owner. The resource owner corresponds to a user during a DataNet session.
In the preferred DateNet example embodiment, the following properties are specified user using a Aggregates Setup user interface 2300 as discussed below. The Name property stores the aggregate name. The Description property stores a description ofthe aggregate. The Memo property stores a memo corresponding to the aggregate. A memo is a notation regarding the aggregate. The Universe Code property stores the unique identifier of a universe. The universe is the collection of securities on which the aggregate is run. The UniverseType property stores the type ofthe universe as specified by the user in the aggregates setup as discussed below. The universe type may either be dynamic or static. The UniverseFrequency property stores a frequency of a universe. The universe frequency represents the frequency (e.g. daily, weekly, monthly, etc.) ofthe data is stored in the universe. The Frequency property stores a frequency ofthe aggregate as specified by the user. The frequency (e.g., daily, weekly, monthly, etc.) ofthe aggregate is the frequency at which data is sampled in a date range during execution ofthe Aggregate module. The BeginDate property stores the first date ofthe date range over which the aggregate is run. The EndDate property stores the last date ofthe date range over which the aggregate is run. The FieldsCode property stores a unique identifier ofthe field for which the aggregate is run. The Functions property stores the functions collection. The Weight property stores the weight collection. hi the preferred DataNet example embodiment, the Aggregate object 960c comprises a Run method returns the result ofthe execution ofthe aggregate module.
In the preferred DataNet example embodiment, aggregates are defined using Aggregates Setup user interface 2300. An illustrative Aggregates Setup user interface is shown in FIG. 23. In the preferred DataNet example embodiment, there are five steps to setting up an aggregate: (1) setting the parameters (2) setting the options (3) setting the data fields (4) setting the functions and (5) setting the weight field. They may be performed in any order.
The user may set the parameters in a Aggregate Setup Parameters section 2301. hi a Name text box 2302, the user specifies the name ofthe aggregate. The name specified is stored by the Name property of Aggregates object 970c. The user may use First Date numeric selection box 2303 and a Last Date numeric selection box 2304 to specify the date range for which the user wants to aggregate data. The dates specified are stored by the aggregate Begin Date and End Date property of Aggregates object 970c respectively. The user may specify the frequency at which the data is sampled using a Frequency pull-down menu 2305. The Frequency is stored by the Frequency property of Aggregates object 970c.
The user may specify the options in the Options section 2306. Using the Currency pull-down menu 2307, the user may specify the currency in which the user wants the aggregate results to be calculated. Using Universe radio buttons 2308, the user may set the universe to be static or dynamic. If the user sets the universe type to a type different from his selection in universe module 810, then the users new selection overrides his original selection and the aggregate is carried out according to the selection made in the Aggregate Setup 2300. The universe selection is stored by the UniverseType property of Aggregates object 970c.
The user may specify the data fields to be aggregated in the Data Fields section 2309. To select an existing field or formula, the user may right-click in the Data Fields text window 2310 and select the New option. The Field Selection menu appears in response, and may be used as discussed above to select a field for inclusion in the Data Fields list 2310.
After selecting the data on which the user wants to aggregate, the user may highlight the name of a field in the Data Fields list 2310. In response, a list of operations appears in a Functions List box 2312. The user may specify any or all ofthe aggregation operations the user wants performed by clicking on the desired operations. In the preferred DataNet example embodiment, the operations include average, median, maximum, minimum, and sum. These functions comprise the Functions class of Aggregates object 970c.
If the user selects average, then the user may select how the user want the elements ofthe aggregate weighted in a Weight Field box 2313. The user may right click in the Weight Field box 2313 and may select either New or Edit from the menu that appears. In doing so, the Field Selection menu and the user may select a field by which to weight the aggregate result. These weights comprise the Weights class of Aggregates object 970c. In the preferred DataNet example embodiment, aggregates may be viewed in one of two ways : a Statistics Graph or a Count Graph. The Statistics Graph arranges the aggregated average, median, maximum and minimum functions that are performed on the fields chosen in the Data Fields field. The Count Graph charts sums and the number of stocks in the universe at each sampling point.
In the preferred DataNet example embodiment, the aggregate results are stored in the user database. The user can access the aggregate results in both formula module 830 and in graphics module 840. In formula module 830, the user select the Selected Data button on the Data Editor toolbar and the Constant Data Selection window appears, and the user may select the aggregate from the field list for the user database. In graphics module 840, the user may highlight the plot, right click, and choose the Select Data option or alternatively click the Selected Data button on the Data Editor toolbar.
In the preferred DataNet example embodiment, Reporting module 870 is implemented as Report object 990a. Reporting module 870 incorporates the functionality of the DataNet engine and exports data to an Excel spreadsheet. Reporting module 870 allows the user to download external data and/or internal data and/or user results from other DataNet engine modules (i.e. simulation, aggregates, formulas).
In the preferred DataNet example embodiment, Reporting module 870 is integrated with a spreadsheet program such as Microsoft Excel. The user may access reporting module 870 through Excel by selecting a DataNet heading 2702 from the Excel main menu bar 2701. A drop down menu appears from which Connect 2703 may be selected. An illustrative Reporting Module Access screen is shown in FIG. 27.
The reporting module displays information in one of three forms: (1) a Cross Table that compares data across one date (2) a Historical Table that compares data across a range of dates (3) and a Value Table that is used to build data fields in the chosen universe.
In order to create a Cross Table, the user selects the DataNet heading 2702, Models 2704, and Open Cross Table Model 2705. In doing do, a Cross Table Form 2800 appears. An illustrative Cross Table Form 2800 is shown in FIG. 28.
In Cross Table Form 2800, the user may double click Universe 2801 and a Products Selection window 2810 appears. Product Selection window 2810 comprises an Available Instruments window 2811, a Selected Instrument window 2812, a Date Range section 2813, and a Reporting Currency section 2824. The user may make selections instrument by instrument from the Available Instruments window 2811 to populate the Selected Instruments window 2812. The user may select specific instruments from the Available Instruments window 2811 by double clicking on an instrument name. Alternatively, the user may click once on the instrument name and click once on a right pointing arrow 2815 between Available Instruments window 2811 and Selected Instruments window 2812. By clicking on a left pointing arrow 2817, the user may delete a highlighted selection from Selected Instruments window 2812. By clicking on a double left pointing arrow 2818, the user may delete all the instruments in the Selected Instruments menu 2812. A set of upward and downward pointing arrows 2819 allow the user to scroll in either direction through the selected instruments. By manipulating the list of selected instruments, the user may refine the Universe selection 2802 to a specific set of securities.
In Date Range section 2813, the user may select a reporting date in Reporting Date text box 2816. The user may select a downward pointing arrow 2820 to access a drop down calendar menu from which the user may select a date.
In order to save the selected instruments list, the user clicks a Save button 2822. Next, the user may click a Report Model button 2823. A list ofthe selected securities will appear in the form of a table. The user may then double click on the words Fields List which appear highlighted. In doing so, a Field Editor screen 2900 appears.
Field Editor 2900 comprises a Field Selection window 2910, a Formula section 2920, and a Selected Fields window 2930. The user may select fields from Field Selection window 2910 in order to construct a formula. The selected fields appear in Selected Fields window 2930. Field Editor 2900 allows the user to write formulas or apply pre-existing formulas to Universe 2801. The user may enter a formula in Formula box 2922. The user may enter a label for the formula in a Label text box 2921. The user may manipulate the ordering ofthe components ofthe formula by selecting a field and using an Insert After button 2923 and an Add-Replace button 2924. The user may delete a field from the formula using Delete button 2985. Currency Flag check box 2926 allows the user to define whether the formula depends on the currency ofthe countries corresponding to the securities in the universe. By clicking a Select Data button 2940, a Data Selection menu 3000 appears. An illustrative Data selection menu is shown in FIG. 30.
Data Selection menu 3000 comprises an Available Instruments window 3001 and a Select Fields for Current Instrument window 3002. Formula components may be selected through Data Selection menu 3000. Selections from Data Selection menu 3000 appear in the Formula box 2922.
Once all ofthe data has been entered, the user may select the DataNet heading 2702 from the Excel menu bar 2701 and a drop down menu appears. From the drop down menu, the user selects a Generate Cross Table Model option 2706. An illustrative generated Cross Table Form 3100 is shown in FIG. 31. FIG. 31 depicts data for a universe or securities for the fields close price, price earnings, dividend yield, and market value for the date January 2, 2000.
In order to create a Historical Table, the user selects the DataNet heading 2702, Models 2704, and Open Historical Form Model 2705. hi doing do, a Historical Table Form appears.
In order to build a universe, the user follows the same procedures as described in connection with the Cross Table Form. However, in order to create a formula for a Historical Table, a Formula Editor menu 3200 is used.
Formula Editor Menu 3200 comprises a Formula window 3210, a Function List window 3220, a Field Selection window 3230, a Date Range section 3240, and a Reporting Currency section 3250. The user may select a function from the Function List window 3220 in order to create a formula. The user may select the fields he wants included in his formula from the Field Selection window 3230. The user may select a range of dates in Date Range box 3240 by specifying a first date in the First Date text box 3242 and a last date in the Last Date text box 3243. The user may select the first and last date from drop-down calender menus 3244 and 3245, respectively. The user may select Show Dates check box 3246 in order to have the dates shown in the Historical Table. The user may select a reporting currency in Reporting Currency section 3250 using Reporting Currency pull-down menu 3251.
Once all ofthe data and date ranges have been selected, the user may select DataNet heading 2702, Models 2704, and Generate Historical Form Model 2708. An illustrative Generated Historical Form Model 3300 is shown in FIG. 33. FIG. 33 depicts a Historical table for a universe of securities based on earnings per shares from the date range September 13, 1999 to September 24, 1999.
In order to create a Value Table, the user selects the DataNet heading 2702, Models 2704, and Create Value Form Model 2705. hi doing do, a Value Form 3400 appears. An illustrative Value Form is shown in FIG. 34. Value Form 3400 is used to build data fields in a chosen universe. A user may create a universe by double clicking on Universe 3403 or selecting a Universe tab 3402. The user may create a universe following the same procedure described in connection with Cross Table Form 2800.
By selecting a ValueForm tab 3401, a spreadsheet appears. By clicking within a box in the spreadsheet, Formula Editor 3200 appears. The user may use Formula Editor 3200 to create formulas for the value table. By selecting a Select Data 3260 button, Data Selection window 3000 appears. The user may select other data to apply to the universe by from Available Instruments list 3001 and Select Fields for Current Instrument list 3002.
Once the user has selected the desired data and layout, the user may then click the DataNet heading 2702, Models 2704, and the Generate Value Form Model option 2710 to obtain the Value Table results. An illustrative Generated Value Table is shown in FIG. 35. FIG. 35 depicts a value table for a security with a ticker symbol AAXPΘ comprising close price, market cap, price earnings ratio and FI mean for the date range September 13, 1997 to September 24, 1999.
In the preferred DataNet example embodiment, Graphics module 840 is implemented as Graphics object 950a. Graphics module 840 is a tool that allows the user to produce graphs and charts that display the results of different aspects ofthe user's predefined formula and the results of backtesting formulas against other market strategies.
In order to create a graph, the user may select Graphic Module button 1070. hi doing so, a Graphics List is displayed in the lower half of the Universe window. The Graphics List lists all ofthe graphics previously created for the open universe. The user may either right click in the Graphics List field and select the New option or alternatively select the New option from under the Graphics heading on the DataNet main menu bar. In doing so, a Graphic Tools user interface 2400 appears. An illustrative Graphic Tools user interface is shown in FIG. 24.
In the preferred DataNet example embodiment, there are three steps to setting up a graphic: (1) setting the graph parameters (2) setting the graph Universe Data list (3) setting the graph Plot List. They may be performed in any order.
The user may set the graph parameters in a Graphic Tool parameters section 2401. In the Graphic Name text box 2402, the user specifies the name ofthe graphic. The user may use a First Date numeric selection box 2403 and a Last Date numeric selection box 2404 to set the date range the user wants to graph data. The user may specify the frequency at which the user would like the data sampled in a Frequency pull-down menu 2411.
The user may specify the list of stocks to apply a graph in a Universe Data List window 2405. The user may right click in the Universe Data List window 2405 to select the equities to graph. In doing so, a Equities Selection dialog box 2500 appears. An illustrative Equities Selection dialog box is shown in FIG. 25.
Equities Selection dialog box 2500 comprises an Equities List window 2501. The user may select to graph the equities in the universe 2502 or may select to graph another set of equities, 2503, by using a Database pull-down menu 2504, a Data Table pull-down menu 2505, and a country pull-down menu 2506. When complete the user selects a Ok button 2507.
The user may set the field for graphing in a Plot list window 2407. There are two types of Field data that may be graphed: edit data and constant data. Edit data is data that is dependant on the stock, such as a stock price. Constant data is data that does not change with the stock, such as an interest rate series or an aggregate result.
In order to create a New plot in the edit data mode, the user may double click on a Field name in the Plot List window 2408. In order to alter an existing edit data plot, the user may highlight the plot, right click and select the Edit Data option or, alternatively, the user may click the Edit Data button on a Graphic Module toolbar. In doing any ofthe above, a Plot Data Editor user interface 220 appears.
FIG. 22 depicts an illustrative Plot Data Editor user interface. In the preferred DataNet example embodiment, the Plot Data Editor 2200 comprises a Field Text window 2280, a Function List section 2290, and a Fields List section 2205.
The user may set the plot variables in the Fields List 2205 using a Database pulldown menu 2210, a Data Table pull-down menu 2220, and a Data Type pull-down menu 2230. The field information corresponding to the users selection appears in the Fields List 2240. The user may select the desired Field by double clicking on the Field name in the Fields List. The code for the selected formula then appears in the Field Text window 2280.
The user may specify a function type in the Functions list section 2290. In Function Type window 2291, the user may select the function type to be used to manipulate the selected field. Function types include mathematics, financial, statistics, general, date and case, logical, string, operator and constant, and user. Functions List window 2292 comprises all ofthe function options for each function type. The list varies depending on the selected function type. The user may select a function to add to the plot by double clicking on the function in the Functions List window. The selected function appears at a cursor position 2281 in Field Text window 2280.
The user may also incorporate a constant into a plot. The user may select the Select Data button 2281 ofthe Plot Data Editor 2200. In doing so, the Constant Data Selection window 1801 appears. Use ofthe Constant Data Editor is discussed above. hi order to create a new constant data plot, the user may double click on a Field name in the Plot List box 2408. In order to alter an existing constant data plot, the user may highlight the plot, right click and select the Constant Data option or alternatively the user may select the Constant Data icon on the Graphic Module toolbar, hi doing so, the Plot Data Editor window 2280 appears. Here, the user may select the field the user wants to graph, the selected field from the Field List window 2240 will appear in the Plot List window 2408.
In a Plot List section 2407, the user may use the buttons on the right to move the selected plot up, 2412, duplicate the selected plot, 2413, delete the selected plot, 2414, and move the selected plot down, 2415. The user may name the plot in a Name text box 2409. The name ofthe plot will appear at the top ofthe graph in the same color as the line it represents on the graph. The user may enter a descriptive name for the plot in a Description text box 2410. Alternatively, the user may select a ellipsis button 2416. In doing so, the user reopens the Plot Data Editor 2200 window. There, the user may set a formula for description conventions. The description ofthe plot will appear at the top ofthe graph in the same color as the line it represents on the graph.
In the preferred DataNet example embodiment, the user may select the Refresh icon in the Graphic Module toolbar to run a graph. An illustrative sample graphic is depicted in FIG. 26. Once the graph is plotted, the user may alter the axis and scale to ensure that the required information is displayed correctly.
While the present invention has been described with reference to the preferred embodiments, those skilled in the art will recognize that numerous variations and modifications may be made without departing from the scope ofthe present invention. Moreover, while a preferred embodiment regarding the system architecture ofthe present invention has been disclosed in view ofthe foregoing description, other system architectures that can carry out one or more ofthe methods ofthe present invention may also be available, and all such other system architectures are contemplated to be within the scope of the present invention. For example, a system falling within the scope of this invention could employ a different configuration for the data storage, such as combining the databases, etc. In view ofthe foregoing, it should also be clear that only certain portions of the data preferably stored at the servers are necessary for carrying out the various methods ofthe present invention. Moreover, as is well known in the art, the operation ofthe servers, could be divided among a number of computer devices. Accordingly, it should be clearly understood that the embodiments ofthe invention described above are not intended as limitations on the scope ofthe invention, which is defined only by the claims that are now or may later be presented.

Claims

WHAT IS CLAIMED IS:
1. A system for selecting securities, comprising: a first data receiver receiving data from a first data source transmitting data concerning a security, the data comprising a first identifier ofthe security; a second data receiver receiving data from a second data source transmitting data concerning the security, the data comprising a second identifier ofthe security; and a cross-referencing server receiving cross-reference data, the cross-reference data comprising the first identifier ofthe security, the second identifier ofthe security and a third identifier ofthe security.
2. The system of claim 1, further comprising: a database storing the first identifier ofthe security and the second identifier ofthe security using a retrieval key comprising the third identifier ofthe security.
3. The system of claim 1, further comprising: a database storing the data concerning the security from the first data source using a retrieval key comprising the third identifier ofthe security.
4. The system of claim 3, further comprising:
a database storing the data concerning the security from the second data source using a retrieval key comprising the third identifier ofthe security.
5. The system of claim 3, further comprising: a query module storing a query comprising the third identifier ofthe security, the query module causing data concerning the security to be retrieved from the first database and the second database.
6. In a system for selecting securities, a method for populating a universe of securities comprising: a) receiving a query, the query comprising parameters, the parameters comprising an identifier of a database; b) querying the database, the database storing data concerning one or more securities, the data comprising a unique identifier ofthe security; c) retrieving from the database data concerning the securities satisfying the query, d) populating the universe with the retrieved data.
7. The method of claim 6 further comprising a) using the unique identifier to identify a database.
8. The method of claim 6 wherein the parameters further comprise a data table, the data table corresponding to a class of securities.
9. The method of claim 6 wherein the query further comprises a country name.
10. The method of claim 6 wherein the query further comprises one or more criteria, the criteria being related to each other by a logical operator.
11. The method of claim 9 wherein the logical operator is and.
12. The method of claim 9 where the logical operator is or.
13. The method of claim 9 wherein the criteria comprises a field code, the field code corresponding to a field ofthe database.
14. The method of claim 9 wherein the criteria comprises a date.
15. The method of claim 10 wherein the criteria further comprises an operator, the operator relating the field code to a value.
16. In a system for selecting securities, a method for generating a static list of securities comprising: a) receiving a query, the query comprising parameters, the parameters comprising an identifier of a database; b) querying the database, the database storing data concerning one or more securities, the data comprising a unique identifier ofthe security; c) retrieving from the database data concerning the securities satisfying the query; and d) populating the static list with the unique identifier ofthe security.
17. The method of claim 16 further comprising a) using the unique identifier to identify a database.
18. In a system for selecting securities, a method for generating an indexed list of securities comprising: a) receiving a query, the query comprising parameters, the parameters comprising an identifier of a database; b) querying the database, the database storing data concerning one or more securities, the data comprising a unique identifier ofthe security and an associated date; c) retrieving from the database data concerning the securities satisfying the query, d) populating the indexed list with the unique identifier ofthe security and the associated date.
19. The method of claim 18 further comprising a) using the unique identifier to identify a database.
20. In a system for selecting securities, a method for generating an aggregate comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier; b) receiving one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; c) receiving a function, the function corresponding to an operation to be applied to a set of data field information, the set of data field information comprising the data field information for each security in the universe; d) receiving one or more sampling points, each sampling point corresponding to a different date; e) querying for each security in the universe and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; f) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe; and g) determining at each sampling point a value based on the application ofthe operation to the set of data field information.
21. In a system for selecting securities, a method for generating an aggregate comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier, the universe corresponding to a set of securities on a date; b) receiving one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; c) receiving a function, the function corresponding to an operation to be applied to a set of data field information, the set of data field information comprising the data field information for each security in the universe on at a sampling point; d) receiving one or more sampling points, each sampling point corresponding to a different date; e) querying for each security in the universe on the date of each sampling point and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; f) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe on the given date; g) determining at each sampling point a value based on the application ofthe operation to the set of data field information.
22. In a system for selecting securities, a method for evaluating a formula comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier; b) receiving a formula, the formula comprising one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; c) receiving one or more sampling points, each sampling point corresponding to a different date; d) querying for each security in the universe and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; e) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe; and f) determining at each sampling point a value ofthe formula for each security in the universe.
23. In a system for selecting securities, a method for evaluating a formula comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier, the universe corresponding to a set of securities on a date; b) receiving a formula, the formula comprising one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one of more securities, the data field information corresponding to the data field ofthe database; c) receiving one or more sampling points, each sampling point corresponding to a different date; d) querying for each security in the universe on the date of each sampling point and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; e) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe on the date of each sampling point; f) determining at each sampling point a value ofthe formula for each security in the universe on the date of each sampling point.
24. In a system for selecting securities, a method for evaluating a portfolio comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier; b) determining a portfolio, the portfolio comprising one or more securities from the universe; c) receiving a formula, the formula comprising one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; d) receiving one or more sampling points, each sampling point corresponding to a different date; ~~ e) querying for each security in the universe and for each field the database corresponding to the field, the database being identified using the unique identifier corresponding to the security; f) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe; and g) determining at each sampling point the securities in the portfolio based on the application ofthe formula to each security in the universe.
25. The method of claim 24 step a further comprising: partitioning the universe into classes of securities by a class number, the class number corresponding to a number of classes of securities in the universe, each class having a rank.
26. The method of claim 24 step b further comprising: receiving a stock number, the stock number corresponding to a number of securities in the portfolio.
27. The method of claim 25 step g further comprising: ranking each security in the universe according to its formula value; trading a security from the portfolio if the security=s ranking falls into a next lower class.
28. The method of claim 27 step g further comprising: trading into the portfolio the security having the highest rank ofthe securities not in the portfolio.
29. The method of claim 24 step a further comprising: partitioning the universe into classes of securities by the securities= formula values, each class corresponding to a range of formula values, each class having a rank.
30. The method of claim 24 step b further comprising: receiving a stock number, the stock number corresponding to a number of securities in the portfolio.
31. The method of claim 29 step g further comprising: ranking each security in the universe according to its formula value; trading a security from the portfolio if the security=s ranking falls into a next lower class.
32. The method of claim 31 step g further comprising: trading into the portfolio the security having the highest rank ofthe securities not in the portfolio.
33. In a system for selecting securities, a method for evaluating a portfolio comprising: a) populating a universe with one or more securities, each security corresponding to a unique identifier, the universe corresponding to a set of securities on a date; b) determining a portfolio, the portfolio comprising one or more securities from the universe; c) receiving a formula, the formula comprising one or more fields, each field corresponding to a database, the database comprising data field information corresponding to the field for one or more securities; d) receiving one or more sampling points, each sampling point corresponding to a different date; e) querying for each security in the universe on the date of each sampling point for each field the database corresponding to each field, the database being identified using the unique identifier corresponding to the security; f) retrieving from the database corresponding to the field the data field information at each sampling point for each security in the universe on the date ofthe sampling point; g) determining at each sampling point the securities in the portfolio based on the application ofthe formula to each security in the universe on the date ofthe sampling point.
34. The method of claim 33 further comprising after step a: partitioning the universe into classes of securities by a class number, the class number corresponding to a number of classes of securities in the universe, each class having a rank.
35. The method of claim 33 step b further comprising: receiving a stock number, the stock number corresponding to a number of securities in the portfolio.
36. The method of claim 34 step g further comprising: ranking each security in the universe according to its formula value; trading a security from the portfolio if the security=s ranking falls into a next lower class.
37. The method of claim 36 step g further comprising: trading into the portfolio the security having the highest rank ofthe securities not in the portfolio.
38. The method of claim 33 further comprising after step a: partitioning the universe into classes of securities by the securities= formula values, each class corresponding to a range of formula values, each class having a rank.
39. The method of claim 33 step b further comprising: receiving a stock number, the stock number corresponding to a number of securities in the portfolio.
40. The method of claim 38 step g further comprising: ranking each security in the universe according to its formula value; trading a security from the portfolio if the security=s ranking falls into a next lower class.
41. The method of claim 40 step g further comprising: trading into the portfolio the security having the highest rank ofthe securities not in the portfolio.
PCT/US2001/047436 2000-11-08 2001-11-08 System and method for integrating and analyzing financial information from multiple sources WO2002041117A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2002237708A AU2002237708A1 (en) 2000-11-08 2001-11-08 System and method for integrating and analyzing financial information from multiple sources

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US24667300P 2000-11-08 2000-11-08
US60/246,673 2000-11-08

Publications (1)

Publication Number Publication Date
WO2002041117A2 true WO2002041117A2 (en) 2002-05-23

Family

ID=22931698

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/047436 WO2002041117A2 (en) 2000-11-08 2001-11-08 System and method for integrating and analyzing financial information from multiple sources

Country Status (2)

Country Link
AU (1) AU2002237708A1 (en)
WO (1) WO2002041117A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016001797A1 (en) * 2014-07-01 2016-01-07 Vf Worldwide Holdings Limited A computer implemented system and method for collating and presenting multi-format information
US10467697B2 (en) 2016-04-18 2019-11-05 Laurent Bensemana Method and system for building an enhanced investment portfolio
US11574323B2 (en) 2016-12-06 2023-02-07 Xignite, Inc. Methods and systems for processing market data

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016001797A1 (en) * 2014-07-01 2016-01-07 Vf Worldwide Holdings Limited A computer implemented system and method for collating and presenting multi-format information
US10467697B2 (en) 2016-04-18 2019-11-05 Laurent Bensemana Method and system for building an enhanced investment portfolio
US11574323B2 (en) 2016-12-06 2023-02-07 Xignite, Inc. Methods and systems for processing market data

Also Published As

Publication number Publication date
AU2002237708A1 (en) 2002-05-27

Similar Documents

Publication Publication Date Title
US7634478B2 (en) Metadata driven intelligent data navigation
US7353232B1 (en) Computer assisted and/or implemented method and system for layered access and/or supervisory control of projects and items incorporating electronic information
US6567812B1 (en) Management of query result complexity using weighted criteria for hierarchical data structuring
US7386535B1 (en) Computer assisted and/or implemented method for group collarboration on projects incorporating electronic information
US7149734B2 (en) Managing reusable software assets
US7747559B2 (en) Systems and processes for automated criteria and attribute generation, searching, auditing and reporting of data
US5926817A (en) Graphical user interface-based, client-server system and method for decision making applications
US8340995B2 (en) Method and system of using artifacts to identify elements of a component business model
US6606740B1 (en) Development framework for case and workflow systems
US6343291B1 (en) Method and apparatus for using an information model to create a location tree in a hierarchy of information
US7610258B2 (en) System and method for exposing a child list
US5774661A (en) Rule engine interface for a visual workflow builder
US8239757B2 (en) System and method for creating and modifying test data files
US7383234B2 (en) Extensible data mining framework
US11443390B1 (en) Systems and user interfaces for dynamic and interactive table generation and editing based on automatic traversal of complex data structures and incorporation of metadata mapped to the complex data structures
US20060090071A1 (en) Systems and methods for project management
US20020178099A1 (en) Methods and systems for managing a portfolio of securities
US20050288956A1 (en) Systems and methods for integrating business process documentation with work environments
CN101110021A (en) Method for visually programming instruction set for process
JPH0589173A (en) Classification device for structured document
WO2002001395A1 (en) Method and system for providing distributed functionality and data analysis system utilizing same
WO2000075849A2 (en) Method and apparatus for data access to heterogeneous data sources
EP1683049A1 (en) Sytems and methods for searching and displaying reports
US20050171934A1 (en) System and method for generating a parameterized query
US7440969B2 (en) Data processing systems and methods for processing a plurality of application programs requiring an input database table having a predefined set of attributes

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWW Wipo information: withdrawn in national office

Ref document number: 2002237708

Country of ref document: AU

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

NENP Non-entry into the national phase in:

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP