US8768811B2 - Class-based distributed evolutionary algorithm for asset management and trading - Google Patents

Class-based distributed evolutionary algorithm for asset management and trading Download PDF

Info

Publication number
US8768811B2
US8768811B2 US12/769,605 US76960510A US8768811B2 US 8768811 B2 US8768811 B2 US 8768811B2 US 76960510 A US76960510 A US 76960510A US 8768811 B2 US8768811 B2 US 8768811B2
Authority
US
United States
Prior art keywords
class
server
server computer
individuals
computer system
Prior art date
Legal status (The legal status 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 status listed.)
Active, expires
Application number
US12/769,605
Other versions
US20100274736A1 (en
Inventor
Babak Hodjat
Hormoz Shahrzad
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cognizant Technology Solutions US Corp
Original Assignee
Sentient Technologies Barbados Ltd
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
Priority to US12/769,605 priority Critical patent/US8768811B2/en
Application filed by Sentient Technologies Barbados Ltd filed Critical Sentient Technologies Barbados Ltd
Assigned to GENETIC FINANCE HOLDINGS LIMITED reassignment GENETIC FINANCE HOLDINGS LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HODJAT, BABAK, SHAHRZAD, HORMOZ
Publication of US20100274736A1 publication Critical patent/US20100274736A1/en
Priority to US13/184,307 priority patent/US8909570B1/en
Assigned to GENETIC FINANCE (BARBADOS) LIMITED reassignment GENETIC FINANCE (BARBADOS) LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GENETIC FINANCE HOLDINGS LIMITED
Priority to US14/011,062 priority patent/US9466023B1/en
Priority to US14/259,005 priority patent/US20140229362A1/en
Publication of US8768811B2 publication Critical patent/US8768811B2/en
Application granted granted Critical
Priority to US14/539,908 priority patent/US9684875B1/en
Assigned to SENTIENT TECHNOLOGIES (BARBADOS) LIMITED reassignment SENTIENT TECHNOLOGIES (BARBADOS) LIMITED CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: GENETIC FINANCE (BARBADOS) LIMITED
Priority to US15/179,801 priority patent/US9734215B2/en
Assigned to Cognizant Technology Solutions U.S. Corporation reassignment Cognizant Technology Solutions U.S. Corporation ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SENTIENT TECHNOLOGIES (BARBADOS) LIMITED, SENTIENT TECHNOLOGIES (USA) LLC, SENTIENT TECHNOLOGIES HOLDINGS LIMITED
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • 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
    • 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

Definitions

  • G Genetic Algorithms
  • an evolutionary algorithm can be used to evolve complete programs in declarative notation.
  • the basic elements of an evolutionary algorithm are an environment, a model for a gene, a fitness function, and a reproduction function.
  • An environment may be a model of any problem statement.
  • a gene may be defined by a set of rules governing its behavior within the environment.
  • a rule is a list of conditions followed by an action to be performed in the environment.
  • a fitness function may be defined by the degree to which an evolving rule set is successfully negotiating the environment. A fitness function is thus used for evaluating the fitness of each gene in the environment.
  • a reproduction function generates new genes by mixing rules with the fittest of the parent genes. In each generation, a new population of genes is created.
  • genes constituting the initial population are created entirely randomly, by putting together the building blocks, or alphabets, that form a gene.
  • the alphabets are a set of conditions and actions making up rules governing the behavior of the gene within the environment.
  • a population is established, it is evaluated using the fitness function.
  • Genes with the highest fitness are then used to create the next generation in a process called reproduction.
  • reproduction rules of parent genes are mixed, and sometimes mutated (i.e., a random change is made in a rule) to create a new rule set.
  • This new rule set is then assigned to a child gene that will be a member of the new generation.
  • the fittest members of the previous generation called elitists, are also copied over to the next generation.
  • a networked computer system in accordance with one embodiment of the present invention, includes one or more sever computers and a multitude of client computers each of which is assigned to a different class with each class being defined by a subset of indictors.
  • Each client computer includes, in part, a memory, a communication port, and a processor.
  • the memory in each client computer is operative to store a multitude of genes each characterized by a set of conditions and the subset of indicators associated with the class to which the client computer is assigned.
  • the communication port in each client computer continues to periodically receive data associated with the genes stored in the memory.
  • the processor in each client computer evaluates the performance characteristic of each of its genes by comparing a solution provided by that gene with the periodically received data associated with that gene. Accordingly, the performance characteristic of each gene is updated and varied with each periodically received data.
  • the performance characteristic of a gene defines its fitness.
  • the data associated with each gene is historical trading data and the solution provided by each gene is a trade recommended by the gene.
  • at least two of the subsets of indicators are overlapping indicators.
  • genes whose fitness are determined as falling below a first predefined threshold value following an evaluation covering a first time period are discarded. The remaining (surviving) genes continue to be evaluated by their client computers as new data is received on a periodic basis.
  • genes that survive the first evaluation time period continue to be evaluated by the client computers for one or more additional time periods in response to instructions from the server computer. During each additional evaluation period, genes whose fitness fall below a threshold value are discarded. Genes that survive the one or more evaluation periods, as requested by the server, are stored in an elitist gene pool for selection by the server.
  • the threshold values used to evaluate a gene's fitness corresponding to multiple time periods may or may not be equal.
  • the server computer selects genes from the clients computers' elitist pool and stores them in its memory.
  • the server may send the genes it receives from any class of clients back to the clients of the same class for further evaluation covering additional time periods. Such client computers perform further evaluation of the genes for the additional time periods and attempt to send the surviving genes back to the server. Genes that are discarded by the client computers are reported to the server.
  • the server only receives genes whose fitness as determined by the client computers is equal to or greater than the fitness of the genes previously stored by the server.
  • genes initially evaluated by the client computers are generated in accordance with computer instructions stored and executed by the client computers.
  • the server stores a fixed number of genes in its memory at any given time. The server, after accepting a new gene from a client computer, combines the fitness value of the accepted gene with a corresponding fitness value the server has previously stored in the server for that gene.
  • a method of solving a computational problem includes in part, storing a multitude of genes each characterized by a number of conditions, a subset of indicators and a gene class; continuing to periodically receive data associated with the genes; and evaluating performance characteristic of each gene by comparing a solution provided by the gene with the periodically received data associated with that gene. Accordingly, the performance characteristic of each gene is updated and varied with each periodically received data.
  • the performance characteristic of a gene defines its fitness.
  • the data associated with each gene is historical trading data and the solution provided by each gene is a trade recommended by the gene.
  • at least two of the subsets of indicators are overlapping indicators.
  • genes whose fitness are determined as falling below a first predefined threshold value following an evaluation covering a first time period are discarded. The remaining (surviving) genes continue to be evaluated by their client computers as new data is received on a periodic basis.
  • genes that survive the first evaluation time period continue to be evaluated for one or more additional time periods in response to instructions. During each additional evaluation period, genes whose fitness fall below a threshold value are discarded. Genes that survive the one or more evaluation periods are stored in an elitist gene pool for selection.
  • the threshold values used to evaluate a gene's fitness corresponding to multiple time periods may or may not be equal.
  • the server computer selects genes from the clients computers' elitist pool and stores them in its memory.
  • the server may send the genes it receives from any class of clients back to the clients of the same class for further evaluation covering additional time periods. Such client computers perform further evaluation of the genes for the additional time periods and attempt to send the surviving genes back to the server. Genes that are discarded by the client computers are reported to the server.
  • the server only receives genes whose fitness as determined by the client computers are equal to or greater than the fitness of the genes previously stored by the server.
  • genes initially evaluated by the client computers are generated in accordance with computer instructions stored and executed by the client computers.
  • the server stores a fixed number of genes in its memory at any given time. The server, after accepting a new gene from a client computer, combines the fitness value of the accepted gene with a corresponding fitness value the server has previously stored in the server for that gene.
  • genes whose fitness are determined as falling below a first predefined threshold value following an evaluation covering a first time period spanning P days are discarded.
  • the remaining genes that survive the evaluation continue to be evaluated as new data are received on a periodic basis.
  • genes that survive the first evaluation time period continue to be evaluated for one or more additional time periods in response to instructions. During each additional evaluation period, genes whose fitness fall below a threshold value are discarded. Genes that survive the one or more evaluation periods are stored in an elitist gene pool for possible selection. The selected genes are stored in a memory by a server computer.
  • the threshold values used to evaluate a gene's fitness corresponding to multiple time periods may or may not be equal.
  • the selected genes that are stored by the server computer are sent back for further evaluation—covering additional time periods—only to client computers that previously evaluated these genes and thus have the same class as the genes they receive. Genes that survive this further evaluation are provided for selection. Genes that do not survive the further evaluation are discarded but noted in a report. In one embodiment, only genes whose fitness is determined as being equal to or greater than the fitness of previously stored genes are selected for storage. In another embodiment, the selected genes that are stored by the server computer may be sent back for further evaluation to client computers that did not previously evaluate these genes as long as the client class is the same as the gene class.
  • the genes are generated in accordance with computer instructions stored and executed by the client computers. In one embodiment, a fixed number of selected genes are stored at any given time by the server computer. In one embodiment, the fitness value of a newly selected gene by the server computer is combined with a corresponding fitness value of the same gene if that gene was previously selected and stored by the server computer.
  • FIG. 1 is an exemplary high-level block diagram of a network computing system configured to execute an evolutionary algorithm, in accordance with one embodiment of the present invention.
  • FIG. 2 shows a number of functional logic blocks of the client and server computer system of FIG. 1 , in accordance with one exemplary embodiment of the present invention.
  • FIG. 3 shows an exemplary convergence factor as a function of evaluation time for a given pool.
  • FIG. 4 shows a network computer system having a server and a multitude of clients forming a multitude of different classes, in accordance with one exemplary embodiment of the present inventions.
  • FIG. 5A shows an exemplary flowchart for evaluating performance characteristics of a number of genes by one or more client computers, in accordance with one embodiment of the present invention.
  • FIG. 5B shows an exemplary flowchart for evaluating performance characteristics of a number of genes by one or more server computers, in accordance with one embodiment of the present invention.
  • FIG. 6 shows a number of components of the client and server computers of FIG. 1 .
  • a server computer and a multitude of client computers form a network computing system that is scalable and is adapted to continue to evaluate the performance characteristics of a number of genes generated using a software application running on the client computers.
  • Each client computer is assigned to one of a multitude of classes.
  • Each class is associated with and represented by a subset of indicators that are used by the client members of that class to create new genes.
  • two or more classes are merged to generate a new class of genes represented by at least the union of the indicator subsets of the merged classes. Accordingly, in some embodiments the new class is represented by the union of the indicator subsets of the merged classes.
  • the new class is represented by the union of the indicator subsets of the merged classes in combination with a new subset of indicators different from the indicator subsets of the merged classes.
  • a merge of two classes additionally results in the addition of a new class represented by a different subset of indicators that may be randomly generated.
  • a server computer is understood to refer to any data processing device having one or more CPUs or GPUs that coordinates, supervises, collects data from, controls, or directs the actions of one or more client computer.
  • one processing core may be assigned to be the server while the remaining three processing cores may be assigned as client computers.
  • client computers may be personal computation/communication devices that are supervised, are in part controlled by, receive instructions from, etc. from another computing device designated as the server computer.
  • the genes are virtual asset traders that recommend trading options.
  • a system refers to a hardware system, a software system, or a combined hardware/software system
  • a network computing system refers to a multitude of mobile or stationary computer systems that are in communication with one another either wirelessly or using wired lines
  • a network computing system includes, in part, a multitude of computers at least one of which is a central or distributed server computer, with the remaining computers being client computers; each server or client computer includes at least one CPU and a memory.
  • FIG. 1 is an exemplary high-level block diagram of a network computing system 100 , in accordance with one embodiment of the present invention.
  • Network computing system 100 is shown as including, in part, N client computers 20 and one server computer 10 .
  • server 10 may be a central or a distributed server.
  • a client computer may be a laptop computer, a desktop computer, a cellular/VoIP handheld communication/computation device, a table computer, or the like.
  • a broadband connection connects the client computers (alternatively referred to herein as client) 20 to server computer (alternatively referred to herein as server) 10 .
  • client client computers
  • server computer alternatively referred to herein as server
  • Such connection may be cable, DSL, WiFi, 3G wireless, 4G wireless or any other existing or future wireline or wireless standard that is developed to connect a CPU to the Internet. Any CPU may be used if a client software, in accordance with the present invention and as described further below, is enabled to run on that CPU.
  • network computing system 100 implements financial algorithms/analysis and computes trading policies. To achieve this, the computational task associated with the algorithms/analysis is divided into a multitude of sub-tasks each of which is assigned and delegated to a different one of the clients. The computation results achieved by the clients are thereafter collected and combined by server 10 to arrive at a solution for the task at hand.
  • the sub-task received by each client may include an associated algorithm or computational code, data to be implemented by the algorithm, and one or more problems/questions to be solved using the associated algorithm and data. Accordingly, in some examples, server 10 receives and combines the partial solutions supplied by the CPU(s) disposed in the clients to generate a solution for the requested computational problem.
  • the final result achieved by integration of the partial solutions supplied by the clients may involve a recommendation on trading of one or more assets.
  • the tasks performed by the clients are independent from one another. Accordingly, in such embodiments, the results achieved by the clients are not combined with one another, although the server pools the results it receives from clients to advance the solution.
  • Scaling of the evolutionary algorithm may be done in two dimensions, namely by the pool size and/or evaluation.
  • the larger the pool or population of the genes the greater is the diversity of the genes. Consequently, the likelihood of finding fitter genes increases with increases in pool size.
  • the gene pool may be distributed over many clients. Each client evaluates its pool of genes and sends the fittest genes to the server, as described further below.
  • Each client that is connected to the network receives or downloads a client software.
  • the client software automatically generates a multitude of genes whose number may vary depending on the memory size and the CPU processing power of the client. For example, in one embodiment, a client may have 1000 genes for evaluation.
  • a gene is assumed to be a virtual trader that is given a hypothetical sum of money to trade using historical data. Such trades are performed in accordance with a set of rules of that define the gene thereby prompting it to buy, sell, hold its position, or exit its position.
  • a rule is a list of conditions followed by an action, which may be, for example, buy, sell, exit or hold. Rules may also be designed to contain gain-goal and stop-loss targets, thus rendering the exit action redundant.
  • a hold occurs when no rule in the gene is triggered, therefore, the gene effectively holds its current position.
  • a condition is a conjunction list of indicator based conditions. Indicators are the system inputs that can be fed to a condition, such as tick, or the closing price. Indicators could also be introspective to indicate the fitness or other attributes of the gene at any given moment.
  • the following code defines a rule within a gene in terms of conditions and indicators, as well as the action taken by the gene, in accordance with one exemplary embodiment of the present invention:
  • a stock-day is a day's worth of historical data for a specific stock.
  • rules of a gene are evaluated by assigning the current values of the indicators into the conditions of each rule. If none of the conditions of a gene are true for the indicator values, the gene holds its previous position. If the gene had no position, it performs no action.
  • a gene may be designed to take the action of its first rule whose conditions are satisfied. If, for example, the rule's action is a sell, then the trade proposed by the gene is taken to be a sell. In another example, a rule that fires with the exit action may trump all other votes and force an exit from the gene's current position.
  • a gene's fitness or success is determined by approximation and using a large amount of data.
  • the model used to evaluate the genes may thus be partial and cover shorter time spans, while improving in accuracy as the genes are evaluated over more stock-days and gain experience.
  • the genes' fitness are first evaluated over a subset of the available data. The time period over which a gene's fitness has been evaluated is referred to herein as the gene's maturity age, also referred to herein as the gene's age.
  • Genes that reach a predefined age are enabled to reproduce and contribute to the next generation of genes. Each such genes can continue to live and stay in the gene pool as long as its cumulative fitness meets predefined conditions.
  • the historical data used to evaluate a gene's fitness is significant. Therefore, even with today's high processing power and large memory capacity computers, achieving quality results within a reasonable time is often not feasible on a single machine.
  • a large gene pool also requires a large memory and high processing power.
  • scaling is used to achieve high quality evaluation results within a reasonable time period. The scaling operation is carried out in two dimensions, namely in pool size as well as in evaluation of the same gene to generate a more diverse gene pool so as to increase the probability of finding fitter genes. Therefore, in accordance with one embodiment of the present invention, the gene pool is distributed over a multitude of clients for evaluation. Each client continues to evaluate its gene pool using historical data that the client periodically receives on a sustained and continuing basis. In other words, a gene's performance (also referred to herein as the genes' fitness) continues to be evaluated over additional historical data that are received periodically and on a continuing basis by the clients. Genes that satisfy one or more predefined conditions are transmitted to the server.
  • gene distribution is also used to increase the speed of evaluation of the same gene.
  • genes that are received by the server but have not yet reached a certain maturity age or have not yet met one or more predefined conditions may be sent back from the server to a multitude of clients for further evaluation.
  • the evaluation result achieved by the clients (alternatively called herein as partial evaluation) for a gene is transferred back to the server.
  • the server merges the partial evaluation results of a gene with that gene's fitness value at the time it was sent to the clients to arrive at a fitness measure for that gene. For example, assume that a gene is 500 evaluation days old and is sent from the server to, for example, two clients each instructed to evaluate the gene for 100 additional days.
  • each client further evaluates the gene for the additional 100 stock-days and reports its evaluation results to the server.
  • These two results are combined with the gene's fitness measure at the time it was sent to the two clients.
  • the combined results represent the gene's fitness evaluated over 700 days.
  • the distributed system in accordance with this example, increases the maturity age of a gene from 500 days to 700 days using only 100 different evaluation days for each client.
  • a distributed system in accordance with the present invention, is thus highly scalable in evaluating its genes.
  • clients are enabled to use the genes stored in the server in their local reproductions, thereby improving the quality of their genes.
  • Each client is a self-contained evolution device, not only evaluating the genes in its pool, but also creating a new generation of genes and moving the evolutionary process forward locally. Since the clients continue to advance with their own local evolutionary process, their processing power is not wasted even if they are not in constant communication with the server. Once communication is reestablished with the server, clients can send in their fittest genes to the server and receive genes from the server for further evaluation.
  • Each client computer has a communication port to access one or more data feed servers, generally shown using reference numeral 30 , to obtain information required to solve the problem at hand.
  • the information supplied by the data feed servers includes the asset values covering a specified time period.
  • the information required to solve the problem at hand may be supplied from a data feed server 30 to the clients 20 via server 10 .
  • server 10 is shown as a single central server in FIG. 1 , it is understood that server 10 may be a distributed server.
  • FIG. 2 shows a number of logic blocks of each client 20 and server 10 .
  • each client 20 is shown as including a pool 24 of genes that are generated by a self-contained application software running on the client.
  • each gene is assumed to be a trader of financial asset (e.g., stock), although it is understood that a gene may generally be suited to finding solutions to any other computational problem.
  • the performance characteristics of each gene of a client is evaluated over a first predefined time period, spanning P trading days, e.g. 600 days, using evaluation block 22 .
  • the evaluation for each gene is performed by comparing the trading recommendations of that gene and determining its corresponding rate of return over the predefined time period.
  • the performance characteristic of a gene is alternatively referred to herein as the gene's fitness.
  • Client 20 receives historical trading data to determine the fitness of its genes.
  • each client computer Upon completion of the performance evaluation of all its genes, each client computer selects and places its best performing genes (surviving genes) in elitist pool 26 .
  • the surviving genes may be, e.g., the top 5% performers of the gene pool as determined by the rate of return of their recommendations.
  • the surviving genes are genes whose fitness exceeds a predefined threshold value. The remaining genes that fail to meet the required conditions for fitness do not survive and are discarded.
  • Each client continues to evaluate its elitist (surviving) genes using the historical trading data that the client continues to receive on a periodic basis.
  • the surviving genes are further evaluated for a multitude S of additional time periods each spanning Q other trading days. For example, following the initial evaluation of the genes during the first 600 trading days, each surviving gene is further evaluated over two additional time periods, each spanning 600 more trading days. Therefore, in such examples, each gene is evaluated for 1800 trading days. Such multitude of time periods may be non-overlapping consecutive time periods. Furthermore, the number of trading days, i.e. Q, of each additional time period may or may not be equal to the number of trading days, i.e. P, of the initial evaluation period. Evaluation in each such additional time period may result in discarding of genes that have survived previous evaluations.
  • a gene that may have survived the initial evaluation period of, e.g. 600 days, may not survive the evaluation carried out during the second time period of, e.g. 600 days, if its fitness during the trading days spanning the, e.g. 1200 days, is below a predefined threshold level. Genes stored in the elitist pool 26 that fail to survive such additional evaluation periods are discarded.
  • the fitness threshold level that is required to pass the initial evaluation period may or may not be the same as the fitness threshold levels required to pass successive evaluations.
  • Genes that survive the fitness conditions of the initial and successive evaluation periods remain stored in elitist pool 26 and are made available to gene selection block 28 for possible selection and transmission to server 10 , as shown in FIG. 2 .
  • Genes received by server 10 from client computers are stored in server gene pool 14 of server 10 .
  • Gene selection block 28 compares the fitness of the genes in its associated elitist pool 26 with those of the worst performing genes stored in pool 14 .
  • server 10 only accepts genes whose fitness, as determined by a client computer, is at least equal to or better than the fitness of the genes stored in gene pool 14 .
  • Server 10 thus informs the client computer about the fitness of its worst performing genes to enable the gene selection module 28 make this comparison and identify genes that server 10 will accept.
  • server 10 may send an inquiry to gene selection module 28 stating “the fitness of my worst gene is X, do you have better performing genes?” Gene selection module 28 may respond by saying “I have these 10 genes that are better” and attempt to send those genes to the server.
  • gene pool 14 has a fixed size. Therefore in order to accepting a new gene, server 10 discards one of the genes stored in its pool 14 .
  • the initial population of pool 14 is formed from the fittest of all the genes initially stored in the clients' collective elitist pools. This process continues until pool 14 reaches its full capacity that may dynamically vary. In another embodiment, to form its initial gene population, pool 14 continues to accept genes stored in the elitist pools until pool 14 reaches its full capacity.
  • Gene acceptance block 12 is configured to ensure that a gene arriving from a client has a better fitness than the genes already stored in server pool 14 before that gene is added to server pool 358 .
  • Gene acceptance block 12 stamps each accepted gene with an ID, and performs a number of house cleaning operations prior to adding the accepted gene to server pool 14 .
  • Genes in elitist pool 26 are allowed to reproduce. To achieve this, gene reproduction block 30 randomly selects and combines two or more genes, i.e., by mixing the rules used to create the parent genes. Pool 24 is subsequently repopulated with the newly created genes (children genes) as well as the genes that were in the elitist pool. The old gene pool is discarded. The new population of genes in pool 24 continue to be evaluated as described above.
  • server 10 sends each genes stored in pool 14 whose maturity age (i.e., the sum of the trading days over which a gene's fitness has been evaluated) is less than a predefined value back to a group of selected client computers for more fitness evaluation over additional time periods spanning W trading days. Genes whose fitness as evaluated over the additional W trading days fail to satisfy one or more predefined conditions, e.g., their fitness is less than a required a threshold value, are discarded by the client computers. Genes whose fitness as evaluated over the additional W trading days satisfy the one or more predefined conditions are sent back to the server 10 for storage in pool 14 . The discarded genes are reported to the server by the client computers.
  • maturity age i.e., the sum of the trading days over which a gene's fitness has been evaluated
  • server 10 sends the gene to a number of client computers each instructed to perform further evaluation of the gene over a different set of trading days. For example, assume four client computers are selected to further evaluate the fitness of a gene stored in pool 14 . Accordingly, the first selected client computer is instructed to evaluate the gene over a first time period; the second selected client computer is instructed to evaluate the gene over a second time period; the third selected client computer is instructed to evaluate the gene over a third time period; and the fourth selected client computer is instructed to evaluate the gene over a fourth time period. It is understood that the first, second, third and fourth time periods are different time periods that may or may not overlap with one another.
  • the server receives the fitness values from the selected client computers and combines these fitness results with the previous fitness value of the gene—as was maintained by the server prior to sending the gene back to the client—to arrive at an updated value for the gene's fitness value. Therefore, in accordance with the present invention, the speed at which the genes are aged is enhanced by distributing the evaluation task among a number of client computers operating in parallel. In one embodiment, the average of previous and new fitness values is used to compute a new fitness value for a gene that is sent to clients by the server for further evaluation. Since the genes in the server are sent to several clients for evaluation, only the results of partial evaluations of the genes are lost if one or more clients fail.
  • a backup/restore process for the server pool gene may be performed to ensure continuity in the event of the server failure. Moreover, because the clients are configured to have copies of the server genes they were instructed to evaluate and because the clients are self sufficient in their evolutionary process, the clients can continue evaluating their genes and advance the evolutionary process even when the server fails or is otherwise off line. When the server is back on-line, the server pool can even be recreated from genes stored in the clients. Therefore, a network computing system, in accordance with embodiments of the present invention does not lose the history of the prior processing of the genes.
  • Data feed server 50 provides historical financial data for a broad range of traded assets, such as stocks, bonds, commodities, currencies, and their derivatives such as options, futures etc.
  • Data feed server 50 may be interfaced directly with server 20 or clients.
  • Data feed servers may also provide access to a range of technical analysis tools, such as financial indicators MACD, Bollinger Bands, ADX, RSI, and the like.
  • the genes in the server pool may over time begin to behave similarly and use the same set of indicators in a correlated manner to arrive at their recommendations. This indicates that the search for fitter genes is converging on a set of identifiable conditions and indicators initially used to define the genes. As convergence occurs, the rate at which fitter genes in any give pool can be identified starts to diminish. In other words, as the genes age, their fitness increases, thereby leading to a higher convergence factor for the genes. Convergence may reach a point at which the surviving gene pool remains relatively unchanged despite further evaluations of the genes. Thus, convergence while required to identify fitter genes, can adversely affect the diversity of the gene pool. In the continuing search for fitter genes, convergence may therefore represent a local optima and not an optimum point.
  • FIG. 3 shows an exemplary convergence factor as a function of evaluation time for a given pool. It is seen that as the evaluation time increases, the rate of convergence asymptotically approaches a constant value of Q.
  • a number of different techniques may be used to measure the degree of convergence and homogeneity of a gene pool.
  • Expression (1) below provides one measure of the convergence factor of a gene pool:
  • the server divides the gene pool into a number Z of different classes. Accordingly, the server divides the client computers into Z groups each being associated with a different gene class. For example, clients in group 1 are associated with class 1 genes; clients in group 2 are associated with class 2 genes; and clients in group Z are associated with class Z genes. Different groups may or may not have the same number of client.
  • the server maintains a record of the class to which each gene and client belong.
  • the genes in each class are characterized, in part, by a different subset of indicators that collectively and together with a multitude of conditions define the gene pool. Each class is thus enabled to contribute to a partial solution or make recommendations in a search space defined by the indicators associated with that class.
  • the server redistributes the genes for further evaluation only among clients that are members of the same class. Consequently, multiple classes of clients are run at the same time with a common server pool. For example, assume, that a server has divided the client computers into three groups (classes) each being assigned to (i.e., being associated with or a member of) a different one of the three class of genes.
  • the genes in the first class are enabled to use, for example, Tick-price, the trade volume and the volatility of the stocks as indicators.
  • the genes in the second class are enabled to use, for example, Tick-price, MACD and ADX information as indicators.
  • each class operates independently and transfers its elitist pool to the server, as described above.
  • the server sends the genes of each class only to client members of that class.
  • the elitist genes of class 1 identified by client members of class 1 can only be sent to the client members of class 1 for further evaluation by the server. Therefore, in such embodiments, genes belonging to different classes are not merged.
  • FIG. 4 shows a network computer system 300 having a server 310 and a multitude of clients 320 ij forming Z different classes, in accordance with one exemplary embodiment of the present inventions.
  • Index i identifies the client number within each class and is shown to vary from 1 to N;
  • index j identifies the class number and is shown to vary from 1 to Z.
  • client 320 11 identifies the first client computer in gene class number 1;
  • client 320 21 identifies the second client computer in gene class number 1, and
  • client 320 1N identifies the N th client computer in gene class number 1.
  • client 320 Z1 identifies the first client in gene class number Z
  • client 320 Z2 identifies the second client computer in gene class number Z
  • client 320 ZN identifies the N th client in class number Z. It is understood that N and Z are integers, and that each class may have a different number N of clients.
  • genes received by server 310 from any of class j clients can only be sent back to class j clients for further evaluation.
  • genes received by the server from class 1 clients 320 i1 i.e., class 1 genes
  • class 1 clients 320 i1 can only be sent to class 1 client 320 i1 for further evaluation.
  • the classification of the genes, as described above, and their association with client computers may, as described above, result in gene homogeneity, faster convergence and absence of correlation between different gene classes.
  • the server merges the classes that have converged sufficiently to generate a new class of genes.
  • the server is enabled to transfer the genes it receives from one member of a client class to member clients of a different class.
  • the server may form a new class of genes by merging two or more existing classes.
  • the new class is thus defined by combining the indicators used by the merged classes.
  • a new class generated by merging two different classes may be characterized by the union of the set of indicators used by the two merged classes.
  • server 310 enables mixing of the genes. Accordingly, server 310 may send, for example, class 1 genes it receives from clients 320 i1 only to other class 1 clients for further evaluation; or send, for example, class 4 genes it receives from clients 320 i4 only to class 4 clients for further evaluation. Assume, for example, that the genes in the first class are enabled to use indicators Tick-price, trade volume and the volatility of the stocks, and the genes in the second class are enabled to use indicators Tick-price, MACD and ADX information. Assume further that the server merges the first and second class of genes to from a new class of genes.
  • the indicators used by the newly generated class include Tick-price, trade volume, volatility, MACD, and ADX information.
  • the merging of the genes helps to minimizes any convergence that may result from finding a local optima that is not the optimum point.
  • the merged classes may or may not be discarded.
  • FIG. 5A shows an exemplary flowchart 500 for evaluating performance characteristics of a number of genes by a multitude of client computers, in accordance with one embodiment of the present invention.
  • the client computers contact the server to be assigned 502 by the server to one of N different classes, each class being associated with and corresponding to one of N classes of genes. Accordingly, there are N classes of genes each associated with one of the N classes of client computers.
  • the genes are evaluated 508 using the received data to determine their performance characteristics or fitness.
  • genes whose fitness are determined 510 as being less than a threshold value are discarded 512 .
  • Genes whose fitness are determined 510 as being greater than or equal to the threshold value are stored and provided 514 for selection and acceptance by a server computer.
  • FIG. 5B shows an exemplary flowchart 550 for evaluating performance characteristics of a number of genes by one or more server computers, in accordance with one embodiment of the present invention.
  • the server computer determines 562 whether the new gene was previously accepted and stored by the server. If the server computer determines that the new gene was previously accepted and stored by the server computer, the server computer combines 564 the fitness value of the new gene with its old fitness value and accepts 554 the gene for storage. If the server computer determines that the new gene was not previously accepted and stored by the server computer, the server computer compares 552 the fitness value of each such gene to the fitness values of the genes previously stored by the server computer.
  • this comparison 552 shows that the fitness value of a gene provided for acceptance is greater than or equal to the fitness values of the genes previously stored by the server computer, the server computer accepts 554 the gene. If this comparison 552 shows that the fitness value of the gene provided for acceptance is less than the fitness values of the genes previously stored by the server computer, the server computer may not accepts 560 the gene.
  • the server computer determines whether the convergence factor of the gene class to which the accepted gene belongs meets 556 a specified threshold or condition. If the convergence factor of the gene class to which the accepted gene belongs meets 556 the specified threshold or condition, the gene class is merged 574 with another gene class that has been qualified for merging, thereby generating a new class.
  • the server changes 568 the class of the genes that are merged to the new class.
  • the class of the client computers of the merged classes is similarly changed. Once the class of the merged classes changes 568 , a determination is made 558 about the time period used to evaluate the newly accepted gene.
  • the server computer stores 570 the newly accepted gene together with its fitness value. If it is determined 558 that a newly accepted gene does not meet the required duration condition, the server sends 566 the gene back to one or more client computers for further evaluation covering more time periods. In such embodiments, the gene is only sent back to clients that had previously evaluated the gene and provided the gene for acceptance to the server computer. In other words, server genes that were evaluated by class j computers are only sent 560 to class j computers for further evaluation, where j is a variable varying from 1 to N.
  • the process moves to act 558 to determine whether the time period used to evaluate the newly accepted gene meets the required duration condition, as described above. It is understood that the order in which the various acts and decisions are shown in FIG. 5B are only exemplary and may be varied without departing from the functions described above.
  • FIG. 6 shows a number of components of the client and server computers of FIG. 1 .
  • Each server or client device is shown as including at least one processor 402 , which communicates with a number of peripheral devices via a bus subsystem 404 .
  • peripheral devices may include a storage subsystem 406 , including, in part, a memory subsystem 408 and a file storage subsystem 410 , user interface input devices 412 , user interface output devices 414 , and a network interface subsystem 416 .
  • the input and output devices allow user interaction with data processing system 402 .
  • Network interface subsystem 416 provides an interface to other computer systems, networks, and storage resources 404 .
  • the networks may include the Internet, a local area network (LAN), a wide area network (WAN), a wireless network, an intranet, a private network, a public network, a switched network, or any other suitable communication network.
  • Network interface subsystem 416 serves as an interface for receiving data from other sources and for transmitting data to other sources.
  • Embodiments of network interface subsystem 416 include an Ethernet card, a modem (telephone, satellite, cable, ISDN, etc.), (asynchronous) digital subscriber line (DSL) units, and the like.
  • User interface input devices 412 may include a keyboard, pointing devices such as a mouse, trackball, touchpad, or graphics tablet, a scanner, a barcode scanner, a touchscreen incorporated into the display, audio input devices such as voice recognition systems, microphones, and other types of input devices.
  • pointing devices such as a mouse, trackball, touchpad, or graphics tablet
  • audio input devices such as voice recognition systems, microphones, and other types of input devices.
  • use of the term input device is intended to include all possible types of devices and ways to input information to.
  • User interface output devices 414 may include a display subsystem, a printer, a fax machine, or non-visual displays such as audio output devices.
  • the display subsystem may be a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), or a projection device.
  • CTR cathode ray tube
  • LCD liquid crystal display
  • output device is intended to include all possible types of devices and ways to output information.
  • Storage subsystem 406 may be configured to store the basic programming and data constructs that provide the functionality in accordance with embodiments of the present invention.
  • software modules implementing the functionality of the present invention may be stored in storage subsystem 406 . These software modules may be executed by processor(s) 402 .
  • Storage subsystem 406 may also provide a repository for storing data used in accordance with the present invention.
  • Storage subsystem 406 may include, for example, memory subsystem 408 and file/disk storage subsystem 410 .
  • Memory subsystem 408 may include a number of memories including a main random access memory (RAM) 418 for storage of instructions and data during program execution and a read only memory (ROM) 420 in which fixed instructions are stored.
  • File storage subsystem 410 provides persistent (non-volatile) storage for program and data files, and may include a hard disk drive, a floppy disk drive along with associated removable media, a Compact Disk Read Only Memory (CD-ROM) drive, an optical drive, removable media cartridges, and other like storage media.
  • CD-ROM Compact Disk Read Only Memory
  • Bus subsystem 404 provides a mechanism for enabling the various components and subsystems of the client/server to communicate with each other. Although bus subsystem 404 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses.
  • the client/server may be of varying types including a personal computer, a portable computer, a workstation, a network computer, a mainframe, a kiosk, or any other data processing system. It is understood that the description of the client/server depicted in FIG. 3 is intended only as one example. Many other configurations having more or fewer components than the system shown in FIG. 3 are possible.

Abstract

A server computer and a multitude of client computers form a network computing system that is scalable and adapted to continue to evaluate the performance characteristics of a number of genes generated using a software application. Each client computer continues to periodically receive data associated with the stored genes stored in its memory. Using this data, the client computers evaluate the performance characteristic of their genes by comparing a solution provided by the gene with the periodically received data associated with that gene. Accordingly, the performance characteristic of each gene may be updated and varied with each periodically received data. The performance characteristic of a gene defines its fitness. The genes may be virtual asset traders that recommend trading options. The genes may be assigned initially to different classes to improve convergence but may later be decided to merge with genes of other classes to improve diversity.

Description

CROSS-REFERENCES TO RELATED APPLICATIONS
The present application claims benefit under 35 USC 119(e) of U.S. provisional application No. 61/173,581, filed Apr. 28, 2009, entitled “Distributed Evolutionary Algorithm for Stock Trading”, and U.S. provisional application No. 61/173,582, filed Apr. 28, 2009, entitled “Distributed Evolutionary Algorithm for Stock Trading” the contents of both of which are incorporated herein by reference in their entirety.
BACKGROUND OF THE INVENTION
Complex financial trend and pattern analysis processing is conventionally done by supercomputers, mainframes or powerful workstations and PCs, typically located within a firm's firewall and owned and operated by the firm's Information Technology (IT) group. The investment in this hardware and in the software to run it is significant. So is the cost of maintaining (repairs, fixes, patches) and operating (electricity, securing data centers) this infrastructure.
Stock price movements are generally unpredictable but occasionally exhibit predictable patterns. Genetic Algorithms (GA) are known to have been used in stock categorization. According to one theory, at any given time, 5% of stocks follow a trend. Genetic algorithms are thus sometimes used, with some success, to categorize a stock as following or not following a trend.
Evolutionary algorithms, which are supersets of Genetic Algorithms, are good at traversing chaotic search spaces. As has been shown by Koza, J. R., “Genetic Programming: On the Programming of Computers by Means of Natural Selection”, 1992, MIT Press, an evolutionary algorithm can be used to evolve complete programs in declarative notation. The basic elements of an evolutionary algorithm are an environment, a model for a gene, a fitness function, and a reproduction function. An environment may be a model of any problem statement. A gene may be defined by a set of rules governing its behavior within the environment. A rule is a list of conditions followed by an action to be performed in the environment. A fitness function may be defined by the degree to which an evolving rule set is successfully negotiating the environment. A fitness function is thus used for evaluating the fitness of each gene in the environment. A reproduction function generates new genes by mixing rules with the fittest of the parent genes. In each generation, a new population of genes is created.
At the start of the evolutionary process, genes constituting the initial population are created entirely randomly, by putting together the building blocks, or alphabets, that form a gene. In genetic programming, the alphabets are a set of conditions and actions making up rules governing the behavior of the gene within the environment. Once a population is established, it is evaluated using the fitness function. Genes with the highest fitness are then used to create the next generation in a process called reproduction. Through reproduction, rules of parent genes are mixed, and sometimes mutated (i.e., a random change is made in a rule) to create a new rule set. This new rule set is then assigned to a child gene that will be a member of the new generation. In some incarnations, the fittest members of the previous generation, called elitists, are also copied over to the next generation.
BRIEF SUMMARY OF THE INVENTION
A networked computer system, in accordance with one embodiment of the present invention, includes one or more sever computers and a multitude of client computers each of which is assigned to a different class with each class being defined by a subset of indictors. Each client computer includes, in part, a memory, a communication port, and a processor. The memory in each client computer is operative to store a multitude of genes each characterized by a set of conditions and the subset of indicators associated with the class to which the client computer is assigned. The communication port in each client computer continues to periodically receive data associated with the genes stored in the memory. The processor in each client computer evaluates the performance characteristic of each of its genes by comparing a solution provided by that gene with the periodically received data associated with that gene. Accordingly, the performance characteristic of each gene is updated and varied with each periodically received data. The performance characteristic of a gene defines its fitness.
In one embodiment, the data associated with each gene is historical trading data and the solution provided by each gene is a trade recommended by the gene. In one embodiment at least two of the subsets of indicators are overlapping indicators. In one embodiment, genes whose fitness are determined as falling below a first predefined threshold value following an evaluation covering a first time period are discarded. The remaining (surviving) genes continue to be evaluated by their client computers as new data is received on a periodic basis.
In one embodiment, genes that survive the first evaluation time period continue to be evaluated by the client computers for one or more additional time periods in response to instructions from the server computer. During each additional evaluation period, genes whose fitness fall below a threshold value are discarded. Genes that survive the one or more evaluation periods, as requested by the server, are stored in an elitist gene pool for selection by the server. The threshold values used to evaluate a gene's fitness corresponding to multiple time periods may or may not be equal.
In one embodiment, the server computer selects genes from the clients computers' elitist pool and stores them in its memory. The server may send the genes it receives from any class of clients back to the clients of the same class for further evaluation covering additional time periods. Such client computers perform further evaluation of the genes for the additional time periods and attempt to send the surviving genes back to the server. Genes that are discarded by the client computers are reported to the server. In one embodiment, the server only receives genes whose fitness as determined by the client computers is equal to or greater than the fitness of the genes previously stored by the server.
In one embodiment, genes initially evaluated by the client computers are generated in accordance with computer instructions stored and executed by the client computers. In one embodiment, the server stores a fixed number of genes in its memory at any given time. The server, after accepting a new gene from a client computer, combines the fitness value of the accepted gene with a corresponding fitness value the server has previously stored in the server for that gene.
A method of solving a computational problem, in accordance with one embodiment of the present invention, includes in part, storing a multitude of genes each characterized by a number of conditions, a subset of indicators and a gene class; continuing to periodically receive data associated with the genes; and evaluating performance characteristic of each gene by comparing a solution provided by the gene with the periodically received data associated with that gene. Accordingly, the performance characteristic of each gene is updated and varied with each periodically received data. The performance characteristic of a gene defines its fitness.
In one embodiment, the data associated with each gene is historical trading data and the solution provided by each gene is a trade recommended by the gene. In one embodiment at least two of the subsets of indicators are overlapping indicators. In one embodiment, genes whose fitness are determined as falling below a first predefined threshold value following an evaluation covering a first time period are discarded. The remaining (surviving) genes continue to be evaluated by their client computers as new data is received on a periodic basis.
In one embodiment, genes that survive the first evaluation time period continue to be evaluated for one or more additional time periods in response to instructions. During each additional evaluation period, genes whose fitness fall below a threshold value are discarded. Genes that survive the one or more evaluation periods are stored in an elitist gene pool for selection. The threshold values used to evaluate a gene's fitness corresponding to multiple time periods may or may not be equal.
In one embodiment, the server computer selects genes from the clients computers' elitist pool and stores them in its memory. The server may send the genes it receives from any class of clients back to the clients of the same class for further evaluation covering additional time periods. Such client computers perform further evaluation of the genes for the additional time periods and attempt to send the surviving genes back to the server. Genes that are discarded by the client computers are reported to the server. In one embodiment, the server only receives genes whose fitness as determined by the client computers are equal to or greater than the fitness of the genes previously stored by the server.
In one embodiment, genes initially evaluated by the client computers are generated in accordance with computer instructions stored and executed by the client computers. In one embodiment, the server stores a fixed number of genes in its memory at any given time. The server, after accepting a new gene from a client computer, combines the fitness value of the accepted gene with a corresponding fitness value the server has previously stored in the server for that gene.
In one embodiment, genes whose fitness are determined as falling below a first predefined threshold value following an evaluation covering a first time period spanning P days are discarded. The remaining genes that survive the evaluation continue to be evaluated as new data are received on a periodic basis.
In one embodiment, genes that survive the first evaluation time period continue to be evaluated for one or more additional time periods in response to instructions. During each additional evaluation period, genes whose fitness fall below a threshold value are discarded. Genes that survive the one or more evaluation periods are stored in an elitist gene pool for possible selection. The selected genes are stored in a memory by a server computer. The threshold values used to evaluate a gene's fitness corresponding to multiple time periods may or may not be equal.
In one embodiment, the selected genes that are stored by the server computer are sent back for further evaluation—covering additional time periods—only to client computers that previously evaluated these genes and thus have the same class as the genes they receive. Genes that survive this further evaluation are provided for selection. Genes that do not survive the further evaluation are discarded but noted in a report. In one embodiment, only genes whose fitness is determined as being equal to or greater than the fitness of previously stored genes are selected for storage. In another embodiment, the selected genes that are stored by the server computer may be sent back for further evaluation to client computers that did not previously evaluate these genes as long as the client class is the same as the gene class.
In one embodiment, the genes are generated in accordance with computer instructions stored and executed by the client computers. In one embodiment, a fixed number of selected genes are stored at any given time by the server computer. In one embodiment, the fitness value of a newly selected gene by the server computer is combined with a corresponding fitness value of the same gene if that gene was previously selected and stored by the server computer.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is an exemplary high-level block diagram of a network computing system configured to execute an evolutionary algorithm, in accordance with one embodiment of the present invention.
FIG. 2 shows a number of functional logic blocks of the client and server computer system of FIG. 1, in accordance with one exemplary embodiment of the present invention.
FIG. 3 shows an exemplary convergence factor as a function of evaluation time for a given pool.
FIG. 4 shows a network computer system having a server and a multitude of clients forming a multitude of different classes, in accordance with one exemplary embodiment of the present inventions.
FIG. 5A shows an exemplary flowchart for evaluating performance characteristics of a number of genes by one or more client computers, in accordance with one embodiment of the present invention.
FIG. 5B shows an exemplary flowchart for evaluating performance characteristics of a number of genes by one or more server computers, in accordance with one embodiment of the present invention.
FIG. 6 shows a number of components of the client and server computers of FIG. 1.
DETAILED DESCRIPTION OF THE INVENTION
In accordance with one embodiment of the present invention, a server computer and a multitude of client computers form a network computing system that is scalable and is adapted to continue to evaluate the performance characteristics of a number of genes generated using a software application running on the client computers. Each client computer is assigned to one of a multitude of classes. Each class is associated with and represented by a subset of indicators that are used by the client members of that class to create new genes. In some embodiments, two or more classes are merged to generate a new class of genes represented by at least the union of the indicator subsets of the merged classes. Accordingly, in some embodiments the new class is represented by the union of the indicator subsets of the merged classes. In other embodiments, the new class is represented by the union of the indicator subsets of the merged classes in combination with a new subset of indicators different from the indicator subsets of the merged classes. In yet other embodiments, a merge of two classes additionally results in the addition of a new class represented by a different subset of indicators that may be randomly generated. In the following, a server computer is understood to refer to any data processing device having one or more CPUs or GPUs that coordinates, supervises, collects data from, controls, or directs the actions of one or more client computer. For example, in a device having a CPU with four processing core, one processing core may be assigned to be the server while the remaining three processing cores may be assigned as client computers. Alternatively, for example, client computers may be personal computation/communication devices that are supervised, are in part controlled by, receive instructions from, etc. from another computing device designated as the server computer. In one embodiment, the genes are virtual asset traders that recommend trading options.
In the following description it is understood that (i) a system refers to a hardware system, a software system, or a combined hardware/software system; (ii) a network computing system refers to a multitude of mobile or stationary computer systems that are in communication with one another either wirelessly or using wired lines; a network computing system includes, in part, a multitude of computers at least one of which is a central or distributed server computer, with the remaining computers being client computers; each server or client computer includes at least one CPU and a memory.
FIG. 1 is an exemplary high-level block diagram of a network computing system 100, in accordance with one embodiment of the present invention. Network computing system 100 is shown as including, in part, N client computers 20 and one server computer 10. It is understood that server 10 may be a central or a distributed server. A client computer may be a laptop computer, a desktop computer, a cellular/VoIP handheld communication/computation device, a table computer, or the like.
A broadband connection connects the client computers (alternatively referred to herein as client) 20 to server computer (alternatively referred to herein as server) 10. Such connection may be cable, DSL, WiFi, 3G wireless, 4G wireless or any other existing or future wireline or wireless standard that is developed to connect a CPU to the Internet. Any CPU may be used if a client software, in accordance with the present invention and as described further below, is enabled to run on that CPU.
In one embodiment, network computing system 100 implements financial algorithms/analysis and computes trading policies. To achieve this, the computational task associated with the algorithms/analysis is divided into a multitude of sub-tasks each of which is assigned and delegated to a different one of the clients. The computation results achieved by the clients are thereafter collected and combined by server 10 to arrive at a solution for the task at hand. The sub-task received by each client may include an associated algorithm or computational code, data to be implemented by the algorithm, and one or more problems/questions to be solved using the associated algorithm and data. Accordingly, in some examples, server 10 receives and combines the partial solutions supplied by the CPU(s) disposed in the clients to generate a solution for the requested computational problem. When the computational task being processed by network computing system 100 involves financial algorithms, the final result achieved by integration of the partial solutions supplied by the clients may involve a recommendation on trading of one or more assets. In other examples, the tasks performed by the clients are independent from one another. Accordingly, in such embodiments, the results achieved by the clients are not combined with one another, although the server pools the results it receives from clients to advance the solution. Although the following description is provided with reference to making recommendations for trading of financial assets (e.g., stocks, indices, currencies, etc.) using genes, it is understood that the embodiments of the present invention are equally applicable to finding solutions to any other computational problem, as described further below.
Scaling of the evolutionary algorithm may be done in two dimensions, namely by the pool size and/or evaluation. In an evolutionary algorithm, the larger the pool or population of the genes, the greater is the diversity of the genes. Consequently, the likelihood of finding fitter genes increases with increases in pool size. In order to achieve this, the gene pool may be distributed over many clients. Each client evaluates its pool of genes and sends the fittest genes to the server, as described further below.
Each client that is connected to the network, in accordance with the present invention, receives or downloads a client software. The client software automatically generates a multitude of genes whose number may vary depending on the memory size and the CPU processing power of the client. For example, in one embodiment, a client may have 1000 genes for evaluation.
A gene is assumed to be a virtual trader that is given a hypothetical sum of money to trade using historical data. Such trades are performed in accordance with a set of rules of that define the gene thereby prompting it to buy, sell, hold its position, or exit its position. A rule is a list of conditions followed by an action, which may be, for example, buy, sell, exit or hold. Rules may also be designed to contain gain-goal and stop-loss targets, thus rendering the exit action redundant. A hold occurs when no rule in the gene is triggered, therefore, the gene effectively holds its current position. A condition is a conjunction list of indicator based conditions. Indicators are the system inputs that can be fed to a condition, such as tick, or the closing price. Indicators could also be introspective to indicate the fitness or other attributes of the gene at any given moment.
The following code defines a rule within a gene in terms of conditions and indicators, as well as the action taken by the gene, in accordance with one exemplary embodiment of the present invention:
if(PositionProfit >= 2% and !(tick= (−54/10000)% prev tick and MACD is
negative)
and !(tick= (−119/10000)% prev tick and Position is long ))
and !(ADX × 100 <= 5052))
then SELL

where “and” represents logical “AND” operation, “!” represents logical “NOT” operation, “tick”, “MACD” and “ADX” are examples of stock indicators, “SELL” represents action to sell, and “PositionProfit” represents the profit position of the gene.
Genes are evaluated over stock-days. A stock-day is a day's worth of historical data for a specific stock. At a specific interval in a given stock-day, for example, every 5 minutes, rules of a gene are evaluated by assigning the current values of the indicators into the conditions of each rule. If none of the conditions of a gene are true for the indicator values, the gene holds its previous position. If the gene had no position, it performs no action. A gene may be designed to take the action of its first rule whose conditions are satisfied. If, for example, the rule's action is a sell, then the trade proposed by the gene is taken to be a sell. In another example, a rule that fires with the exit action may trump all other votes and force an exit from the gene's current position.
In accordance with one embodiment of the present invention, a gene's fitness or success is determined by approximation and using a large amount of data. The model used to evaluate the genes may thus be partial and cover shorter time spans, while improving in accuracy as the genes are evaluated over more stock-days and gain experience. To establish an initial approximation for the genes' fitness, as described further below, the genes' fitness are first evaluated over a subset of the available data. The time period over which a gene's fitness has been evaluated is referred to herein as the gene's maturity age, also referred to herein as the gene's age. Genes that reach a predefined age are enabled to reproduce and contribute to the next generation of genes. Each such genes can continue to live and stay in the gene pool as long as its cumulative fitness meets predefined conditions.
The historical data used to evaluate a gene's fitness is significant. Therefore, even with today's high processing power and large memory capacity computers, achieving quality results within a reasonable time is often not feasible on a single machine. A large gene pool also requires a large memory and high processing power. In accordance with one embodiment of the present invention, scaling is used to achieve high quality evaluation results within a reasonable time period. The scaling operation is carried out in two dimensions, namely in pool size as well as in evaluation of the same gene to generate a more diverse gene pool so as to increase the probability of finding fitter genes. Therefore, in accordance with one embodiment of the present invention, the gene pool is distributed over a multitude of clients for evaluation. Each client continues to evaluate its gene pool using historical data that the client periodically receives on a sustained and continuing basis. In other words, a gene's performance (also referred to herein as the genes' fitness) continues to be evaluated over additional historical data that are received periodically and on a continuing basis by the clients. Genes that satisfy one or more predefined conditions are transmitted to the server.
In accordance with another embodiment of the present invention, gene distribution is also used to increase the speed of evaluation of the same gene. To achieve this, genes that are received by the server but have not yet reached a certain maturity age or have not yet met one or more predefined conditions, may be sent back from the server to a multitude of clients for further evaluation. The evaluation result achieved by the clients (alternatively called herein as partial evaluation) for a gene is transferred back to the server. The server merges the partial evaluation results of a gene with that gene's fitness value at the time it was sent to the clients to arrive at a fitness measure for that gene. For example, assume that a gene is 500 evaluation days old and is sent from the server to, for example, two clients each instructed to evaluate the gene for 100 additional days. Accordingly, each client further evaluates the gene for the additional 100 stock-days and reports its evaluation results to the server. These two results are combined with the gene's fitness measure at the time it was sent to the two clients. The combined results represent the gene's fitness evaluated over 700 days. In other words, the distributed system, in accordance with this example, increases the maturity age of a gene from 500 days to 700 days using only 100 different evaluation days for each client. A distributed system, in accordance with the present invention, is thus highly scalable in evaluating its genes.
Advantageously, in accordance with the present invention, clients are enabled to use the genes stored in the server in their local reproductions, thereby improving the quality of their genes. Each client is a self-contained evolution device, not only evaluating the genes in its pool, but also creating a new generation of genes and moving the evolutionary process forward locally. Since the clients continue to advance with their own local evolutionary process, their processing power is not wasted even if they are not in constant communication with the server. Once communication is reestablished with the server, clients can send in their fittest genes to the server and receive genes from the server for further evaluation.
Each client computer has a communication port to access one or more data feed servers, generally shown using reference numeral 30, to obtain information required to solve the problem at hand. When recommending trading strategies for assets such as stocks, commodities, currencies, and the like, the information supplied by the data feed servers includes the asset values covering a specified time period. Alternatively, although not shown, the information required to solve the problem at hand may be supplied from a data feed server 30 to the clients 20 via server 10. Although server 10 is shown as a single central server in FIG. 1, it is understood that server 10 may be a distributed server.
FIG. 2 shows a number of logic blocks of each client 20 and server 10. As is seen, each client 20 is shown as including a pool 24 of genes that are generated by a self-contained application software running on the client. In the following, each gene is assumed to be a trader of financial asset (e.g., stock), although it is understood that a gene may generally be suited to finding solutions to any other computational problem. The performance characteristics of each gene of a client is evaluated over a first predefined time period, spanning P trading days, e.g. 600 days, using evaluation block 22. The evaluation for each gene is performed by comparing the trading recommendations of that gene and determining its corresponding rate of return over the predefined time period. The performance characteristic of a gene is alternatively referred to herein as the gene's fitness. Client 20 receives historical trading data to determine the fitness of its genes.
Upon completion of the performance evaluation of all its genes, each client computer selects and places its best performing genes (surviving genes) in elitist pool 26. In one embodiment, the surviving genes may be, e.g., the top 5% performers of the gene pool as determined by the rate of return of their recommendations. In other embodiments, the surviving genes are genes whose fitness exceeds a predefined threshold value. The remaining genes that fail to meet the required conditions for fitness do not survive and are discarded. Each client continues to evaluate its elitist (surviving) genes using the historical trading data that the client continues to receive on a periodic basis.
In some embodiments, following the initial evaluation of the genes over the first P trading days, the surviving genes are further evaluated for a multitude S of additional time periods each spanning Q other trading days. For example, following the initial evaluation of the genes during the first 600 trading days, each surviving gene is further evaluated over two additional time periods, each spanning 600 more trading days. Therefore, in such examples, each gene is evaluated for 1800 trading days. Such multitude of time periods may be non-overlapping consecutive time periods. Furthermore, the number of trading days, i.e. Q, of each additional time period may or may not be equal to the number of trading days, i.e. P, of the initial evaluation period. Evaluation in each such additional time period may result in discarding of genes that have survived previous evaluations. For example, a gene that may have survived the initial evaluation period of, e.g. 600 days, may not survive the evaluation carried out during the second time period of, e.g. 600 days, if its fitness during the trading days spanning the, e.g. 1200 days, is below a predefined threshold level. Genes stored in the elitist pool 26 that fail to survive such additional evaluation periods are discarded. The fitness threshold level that is required to pass the initial evaluation period may or may not be the same as the fitness threshold levels required to pass successive evaluations.
Genes that survive the fitness conditions of the initial and successive evaluation periods remain stored in elitist pool 26 and are made available to gene selection block 28 for possible selection and transmission to server 10, as shown in FIG. 2. Genes received by server 10 from client computers are stored in server gene pool 14 of server 10. Gene selection block 28 compares the fitness of the genes in its associated elitist pool 26 with those of the worst performing genes stored in pool 14. In one embodiment, server 10 only accepts genes whose fitness, as determined by a client computer, is at least equal to or better than the fitness of the genes stored in gene pool 14. Server 10 thus informs the client computer about the fitness of its worst performing genes to enable the gene selection module 28 make this comparison and identify genes that server 10 will accept. For example, server 10 may send an inquiry to gene selection module 28 stating “the fitness of my worst gene is X, do you have better performing genes?” Gene selection module 28 may respond by saying “I have these 10 genes that are better” and attempt to send those genes to the server. In one embodiment, gene pool 14 has a fixed size. Therefore in order to accepting a new gene, server 10 discards one of the genes stored in its pool 14. In one embodiment, the initial population of pool 14 is formed from the fittest of all the genes initially stored in the clients' collective elitist pools. This process continues until pool 14 reaches its full capacity that may dynamically vary. In another embodiment, to form its initial gene population, pool 14 continues to accept genes stored in the elitist pools until pool 14 reaches its full capacity.
Gene acceptance block 12 is configured to ensure that a gene arriving from a client has a better fitness than the genes already stored in server pool 14 before that gene is added to server pool 358. Gene acceptance block 12 stamps each accepted gene with an ID, and performs a number of house cleaning operations prior to adding the accepted gene to server pool 14.
Genes in elitist pool 26 are allowed to reproduce. To achieve this, gene reproduction block 30 randomly selects and combines two or more genes, i.e., by mixing the rules used to create the parent genes. Pool 24 is subsequently repopulated with the newly created genes (children genes) as well as the genes that were in the elitist pool. The old gene pool is discarded. The new population of genes in pool 24 continue to be evaluated as described above.
In some embodiments, server 10 sends each genes stored in pool 14 whose maturity age (i.e., the sum of the trading days over which a gene's fitness has been evaluated) is less than a predefined value back to a group of selected client computers for more fitness evaluation over additional time periods spanning W trading days. Genes whose fitness as evaluated over the additional W trading days fail to satisfy one or more predefined conditions, e.g., their fitness is less than a required a threshold value, are discarded by the client computers. Genes whose fitness as evaluated over the additional W trading days satisfy the one or more predefined conditions are sent back to the server 10 for storage in pool 14. The discarded genes are reported to the server by the client computers.
In some embodiments, to increase the age if a gene(s) stored in pool 14, server 10 sends the gene to a number of client computers each instructed to perform further evaluation of the gene over a different set of trading days. For example, assume four client computers are selected to further evaluate the fitness of a gene stored in pool 14. Accordingly, the first selected client computer is instructed to evaluate the gene over a first time period; the second selected client computer is instructed to evaluate the gene over a second time period; the third selected client computer is instructed to evaluate the gene over a third time period; and the fourth selected client computer is instructed to evaluate the gene over a fourth time period. It is understood that the first, second, third and fourth time periods are different time periods that may or may not overlap with one another. Thereafter, the server receives the fitness values from the selected client computers and combines these fitness results with the previous fitness value of the gene—as was maintained by the server prior to sending the gene back to the client—to arrive at an updated value for the gene's fitness value. Therefore, in accordance with the present invention, the speed at which the genes are aged is enhanced by distributing the evaluation task among a number of client computers operating in parallel. In one embodiment, the average of previous and new fitness values is used to compute a new fitness value for a gene that is sent to clients by the server for further evaluation. Since the genes in the server are sent to several clients for evaluation, only the results of partial evaluations of the genes are lost if one or more clients fail.
A backup/restore process for the server pool gene may be performed to ensure continuity in the event of the server failure. Moreover, because the clients are configured to have copies of the server genes they were instructed to evaluate and because the clients are self sufficient in their evolutionary process, the clients can continue evaluating their genes and advance the evolutionary process even when the server fails or is otherwise off line. When the server is back on-line, the server pool can even be recreated from genes stored in the clients. Therefore, a network computing system, in accordance with embodiments of the present invention does not lose the history of the prior processing of the genes.
Data feed server 50 provides historical financial data for a broad range of traded assets, such as stocks, bonds, commodities, currencies, and their derivatives such as options, futures etc. Data feed server 50 may be interfaced directly with server 20 or clients. Data feed servers may also provide access to a range of technical analysis tools, such as financial indicators MACD, Bollinger Bands, ADX, RSI, and the like.
The genes in the server pool may over time begin to behave similarly and use the same set of indicators in a correlated manner to arrive at their recommendations. This indicates that the search for fitter genes is converging on a set of identifiable conditions and indicators initially used to define the genes. As convergence occurs, the rate at which fitter genes in any give pool can be identified starts to diminish. In other words, as the genes age, their fitness increases, thereby leading to a higher convergence factor for the genes. Convergence may reach a point at which the surviving gene pool remains relatively unchanged despite further evaluations of the genes. Thus, convergence while required to identify fitter genes, can adversely affect the diversity of the gene pool. In the continuing search for fitter genes, convergence may therefore represent a local optima and not an optimum point.
FIG. 3 shows an exemplary convergence factor as a function of evaluation time for a given pool. It is seen that as the evaluation time increases, the rate of convergence asymptotically approaches a constant value of Q. A number of different techniques may be used to measure the degree of convergence and homogeneity of a gene pool. Expression (1) below provides one measure of the convergence factor of a gene pool:
Convergence Factor = weighted sum of average fitness of the genes sum of average fitness of the genes
where:
weighted sum of average fitness=weighted sum of average fitness+average fitness×age
In accordance with some embodiments of the present invention, the server divides the gene pool into a number Z of different classes. Accordingly, the server divides the client computers into Z groups each being associated with a different gene class. For example, clients in group 1 are associated with class 1 genes; clients in group 2 are associated with class 2 genes; and clients in group Z are associated with class Z genes. Different groups may or may not have the same number of client. The server maintains a record of the class to which each gene and client belong. The genes in each class are characterized, in part, by a different subset of indicators that collectively and together with a multitude of conditions define the gene pool. Each class is thus enabled to contribute to a partial solution or make recommendations in a search space defined by the indicators associated with that class.
In some embodiments the server redistributes the genes for further evaluation only among clients that are members of the same class. Consequently, multiple classes of clients are run at the same time with a common server pool. For example, assume, that a server has divided the client computers into three groups (classes) each being assigned to (i.e., being associated with or a member of) a different one of the three class of genes. The genes in the first class are enabled to use, for example, Tick-price, the trade volume and the volatility of the stocks as indicators. The genes in the second class are enabled to use, for example, Tick-price, MACD and ADX information as indicators. The genes in the third class are enabled to use, for example, Tick-price, the trade volume, and the rate of change of the stock price as indicators. In accordance with such embodiments, each class operates independently and transfers its elitist pool to the server, as described above. To evaluate the genes further, the server sends the genes of each class only to client members of that class. For example, the elitist genes of class 1 identified by client members of class 1, can only be sent to the client members of class 1 for further evaluation by the server. Therefore, in such embodiments, genes belonging to different classes are not merged.
FIG. 4 shows a network computer system 300 having a server 310 and a multitude of clients 320 ij forming Z different classes, in accordance with one exemplary embodiment of the present inventions. Index i identifies the client number within each class and is shown to vary from 1 to N; index j identifies the class number and is shown to vary from 1 to Z. For example, client 320 11 identifies the first client computer in gene class number 1; client 320 21 identifies the second client computer in gene class number 1, and client 320 1N identifies the Nth client computer in gene class number 1. Similarly, client 320 Z1 identifies the first client in gene class number Z, client 320 Z2 identifies the second client computer in gene class number Z, and client 320 ZN identifies the Nth client in class number Z. It is understood that N and Z are integers, and that each class may have a different number N of clients.
In one embodiment, as described above, genes received by server 310 from any of class j clients, can only be sent back to class j clients for further evaluation. For example, genes received by the server from class 1 clients 320 i1 (i.e., class 1 genes) can only be sent to class 1 client 320 i1 for further evaluation. The classification of the genes, as described above, and their association with client computers may, as described above, result in gene homogeneity, faster convergence and absence of correlation between different gene classes.
In accordance with another embodiments of the present invention, the server merges the classes that have converged sufficiently to generate a new class of genes. To achieve this, the server is enabled to transfer the genes it receives from one member of a client class to member clients of a different class. Alternatively, the server may form a new class of genes by merging two or more existing classes. The new class is thus defined by combining the indicators used by the merged classes. For example, a new class generated by merging two different classes may be characterized by the union of the set of indicators used by the two merged classes.
Referring to FIG. 4, assume that server 310 enables mixing of the genes. Accordingly, server 310 may send, for example, class 1 genes it receives from clients 320 i1 only to other class 1 clients for further evaluation; or send, for example, class 4 genes it receives from clients 320 i4 only to class 4 clients for further evaluation. Assume, for example, that the genes in the first class are enabled to use indicators Tick-price, trade volume and the volatility of the stocks, and the genes in the second class are enabled to use indicators Tick-price, MACD and ADX information. Assume further that the server merges the first and second class of genes to from a new class of genes. Accordingly, the indicators used by the newly generated class include Tick-price, trade volume, volatility, MACD, and ADX information. The merging of the genes helps to minimizes any convergence that may result from finding a local optima that is not the optimum point. The merged classes may or may not be discarded.
FIG. 5A shows an exemplary flowchart 500 for evaluating performance characteristics of a number of genes by a multitude of client computers, in accordance with one embodiment of the present invention. During an initialization stage, the client computers contact the server to be assigned 502 by the server to one of N different classes, each class being associated with and corresponding to one of N classes of genes. Accordingly, there are N classes of genes each associated with one of the N classes of client computers. Following the generation 504 of genes and receipt 506 of data associated with the genes, the genes are evaluated 508 using the received data to determine their performance characteristics or fitness. Following the evaluations 508, genes whose fitness are determined 510 as being less than a threshold value, are discarded 512. Genes whose fitness are determined 510 as being greater than or equal to the threshold value are stored and provided 514 for selection and acceptance by a server computer.
FIG. 5B shows an exemplary flowchart 550 for evaluating performance characteristics of a number of genes by one or more server computers, in accordance with one embodiment of the present invention. In the example shown in FIG. 5B, prior to accepting a new gene, the server computer determines 562 whether the new gene was previously accepted and stored by the server. If the server computer determines that the new gene was previously accepted and stored by the server computer, the server computer combines 564 the fitness value of the new gene with its old fitness value and accepts 554 the gene for storage. If the server computer determines that the new gene was not previously accepted and stored by the server computer, the server computer compares 552 the fitness value of each such gene to the fitness values of the genes previously stored by the server computer. If this comparison 552 shows that the fitness value of a gene provided for acceptance is greater than or equal to the fitness values of the genes previously stored by the server computer, the server computer accepts 554 the gene. If this comparison 552 shows that the fitness value of the gene provided for acceptance is less than the fitness values of the genes previously stored by the server computer, the server computer may not accepts 560 the gene.
For every gene accepted by the server computer, the server computer determines whether the convergence factor of the gene class to which the accepted gene belongs meets 556 a specified threshold or condition. If the convergence factor of the gene class to which the accepted gene belongs meets 556 the specified threshold or condition, the gene class is merged 574 with another gene class that has been qualified for merging, thereby generating a new class. When the merger occurs, the server changes 568 the class of the genes that are merged to the new class. The class of the client computers of the merged classes is similarly changed. Once the class of the merged classes changes 568, a determination is made 558 about the time period used to evaluate the newly accepted gene. If it is determined 558 that a newly accepted gene meets the required duration condition, the server computer stores 570 the newly accepted gene together with its fitness value. If it is determined 558 that a newly accepted gene does not meet the required duration condition, the server sends 566 the gene back to one or more client computers for further evaluation covering more time periods. In such embodiments, the gene is only sent back to clients that had previously evaluated the gene and provided the gene for acceptance to the server computer. In other words, server genes that were evaluated by class j computers are only sent 560 to class j computers for further evaluation, where j is a variable varying from 1 to N. If the convergence factor of the gene class to which the accepted gene belongs does not meet 556 the specified threshold or condition, the process moves to act 558 to determine whether the time period used to evaluate the newly accepted gene meets the required duration condition, as described above. It is understood that the order in which the various acts and decisions are shown in FIG. 5B are only exemplary and may be varied without departing from the functions described above.
FIG. 6 shows a number of components of the client and server computers of FIG. 1. Each server or client device is shown as including at least one processor 402, which communicates with a number of peripheral devices via a bus subsystem 404. These peripheral devices may include a storage subsystem 406, including, in part, a memory subsystem 408 and a file storage subsystem 410, user interface input devices 412, user interface output devices 414, and a network interface subsystem 416. The input and output devices allow user interaction with data processing system 402.
Network interface subsystem 416 provides an interface to other computer systems, networks, and storage resources 404. The networks may include the Internet, a local area network (LAN), a wide area network (WAN), a wireless network, an intranet, a private network, a public network, a switched network, or any other suitable communication network. Network interface subsystem 416 serves as an interface for receiving data from other sources and for transmitting data to other sources. Embodiments of network interface subsystem 416 include an Ethernet card, a modem (telephone, satellite, cable, ISDN, etc.), (asynchronous) digital subscriber line (DSL) units, and the like.
User interface input devices 412 may include a keyboard, pointing devices such as a mouse, trackball, touchpad, or graphics tablet, a scanner, a barcode scanner, a touchscreen incorporated into the display, audio input devices such as voice recognition systems, microphones, and other types of input devices. In general, use of the term input device is intended to include all possible types of devices and ways to input information to.
User interface output devices 414 may include a display subsystem, a printer, a fax machine, or non-visual displays such as audio output devices. The display subsystem may be a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), or a projection device. In general, use of the term output device is intended to include all possible types of devices and ways to output information.
Storage subsystem 406 may be configured to store the basic programming and data constructs that provide the functionality in accordance with embodiments of the present invention. For example, according to one embodiment of the present invention, software modules implementing the functionality of the present invention may be stored in storage subsystem 406. These software modules may be executed by processor(s) 402. Storage subsystem 406 may also provide a repository for storing data used in accordance with the present invention. Storage subsystem 406 may include, for example, memory subsystem 408 and file/disk storage subsystem 410.
Memory subsystem 408 may include a number of memories including a main random access memory (RAM) 418 for storage of instructions and data during program execution and a read only memory (ROM) 420 in which fixed instructions are stored. File storage subsystem 410 provides persistent (non-volatile) storage for program and data files, and may include a hard disk drive, a floppy disk drive along with associated removable media, a Compact Disk Read Only Memory (CD-ROM) drive, an optical drive, removable media cartridges, and other like storage media.
Bus subsystem 404 provides a mechanism for enabling the various components and subsystems of the client/server to communicate with each other. Although bus subsystem 404 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses.
The client/server may be of varying types including a personal computer, a portable computer, a workstation, a network computer, a mainframe, a kiosk, or any other data processing system. It is understood that the description of the client/server depicted in FIG. 3 is intended only as one example. Many other configurations having more or fewer components than the system shown in FIG. 3 are possible.
The above embodiments of the present invention are illustrative and not limiting. Various alternatives and equivalents are possible. Other additions, subtractions or modifications are obvious in view of the present disclosure and are intended to fall within the scope of the appended claims.

Claims (26)

What is claimed is:
1. A server computer system comprising:
a memory accessible to the server computer system and storing a server gene pool having some of the individuals in a plurality of individuals, each individual in the plurality of individuals identifying a corresponding subset of indicators in a plurality of indicators and further identifying at least one action in dependence upon the subset of indicators, not all of the subsets of indicators being the same;
a communications port through which the server computer system receives individuals from client computers in a plurality of client computers, each client computer in the plurality of client computers being assigned to a class, each of the classes being associated with a respective subset of indicators in a plurality of indicators, and at least one of the classes including more than one of the client computers, each received individual being one of the plurality of individuals and being received in conjunction with an associated received fitness value; and
a processor configured to:
accept at least some of the received individuals, and
transmit for further evaluation, each given individual in a first subset of the accepted individuals, to a given client computer which is a member of the class from which the server computer received the given individual.
2. A server computer system according to claim 1, wherein each of the individuals that the server computer system receives from the client computers have previously been evaluated on a first quantity of historical trading data and found to have had a fitness which exceeds a predetermined threshold fitness.
3. A server computer system according to claim 2, wherein the processor, in accepting at least some of the received individuals:
determines whether each of the received individuals is already stored in the server gene pool; and
discards all of the received individuals having an updated fitness value which is below a predetermined server minimum fitness,
wherein the updated fitness value for each received individual is the received fitness value of the individual for individuals which are not already stored in the server gene pool,
and wherein for individuals which are already stored in the server gene pool, the updated fitness value for each received individual is a combination of the received fitness value of the individual and a fitness value previously stored for the individual in the server gene pool.
4. A server computer system according to claim 3, wherein the predetermined server minimum fitness is dependent upon a fitness of the least fit individual in the server gene pool.
5. A server computer system according to claim 3, wherein the processor is further configured to store in the server gene pool at least some of the accepted individuals.
6. A server computer system according to claim 1, wherein the processor is further configured to determine whether a first one of the classes satisfies a predetermined convergence condition, and if so:
merge the first class with a second one of the classes to form a merged class, at least some of the client computers that were assigned to the first class being re-assigned to the merged class; and
transmit for further evaluation, to a client computer which is a member of the merged class, individuals which have been accepted and which were received from a client computer that was a member of the first class.
7. A server computer system according to claim 6, wherein the second class is also determined by the server computer system to satisfy a predetermined convergence condition,
wherein the merging of the first class with the second class further includes re-assigning to the merged class at least some of the client computers that were assigned to the second class being re-assigned,
and wherein the processor is further configured to transmit for further evaluation, to a client computer which is a member of the merged class, individuals which have been accepted and which were received from a client computer that was a member of the second class.
8. A server computer according to claim 6, wherein the merged class is associated with a union of the subset of indicators previously associated with the first class and the subset of indicators previously associated with the second class.
9. A server computer system comprising:
a memory accessible to the server computer system and storing a server gene pool having some of the individuals in a plurality of individuals, each individual in the plurality of individuals identifying a corresponding subset of indicators in a plurality of indicators and further identifying at least one action in dependence upon the subset of indicators, not all of the subsets of indicators being the same;
a communications port through which the server computer system receives individuals from client computers in a plurality of client computers, each client computer in the plurality of client computers being assigned to a class, each of the classes being associated with a respective subset of indicators in a plurality of indicators, and at least one of the classes including more than one of the client computers; and
a processor configured to:
accept at least some of the received individuals, and
transmit to the client computers for further evaluation, each individual in a first subset of the accepted individuals,
wherein each given individual transmitted for further evaluation is transmitted for further evaluation to a member of the group consisting of:
a client computer which is a member of the same class from which the given individual was received by the server computer system; and
a client computer which is a member of a class which was derived at least in part from the class from which the given individual was received by the server computer system.
10. A server computer system according to claim 9, wherein the processor, in accepting at least some of the received individuals:
determines whether each of the received individuals is already stored in the server gene pool; and
discards all of the received individuals having an updated fitness value which is below a predetermined server minimum fitness, wherein the updated fitness value for each received individual is,
for individuals which are not already present in the server gene pool, a fitness value received by the server computer system in conjunction with the received individual; and
for individuals which are already present in the server gene pool, a combination of a fitness value received by the server computer system in conjunction with the received individual and a fitness value previously associated with the individual in the server gene pool.
11. A server computer system according to claim 10, wherein the predetermined server minimum fitness is dependent upon a fitness of the least fit individual in the server gene pool.
12. A server computer system according to claim 10, wherein the processor is further configured to store in the server gene pool at least some of the accepted individuals.
13. A server computer system according to claim 9, wherein the processor is further configured to determine whether a first one of the classes satisfies a predetermined convergence condition, and if so then to merge the first class with a second one of the classes to derive a merged class, at least some of the client computers that were assigned to the first class being re-assigned to the merged class,
wherein a first one of the individuals transmitted for further evaluation was received by the server computer system from the first class,
and wherein the first individual is transmitted for further evaluation to a first client computer in the merged class.
14. A server computer according to claim 13, wherein the first client computer was, prior to the merger, a member of the first class.
15. A server computer according to claim 13, wherein the first client computer was, prior to the merger, a member of the second class.
16. A server computer system according to claim 13, wherein the second class is also determined by the server computer system to satisfy a predetermined convergence condition,
wherein the merging of the first class with the second class further includes re-assigning to the merged class at least some of the client computers that were assigned to the second class,
wherein a second one of the individuals transmitted for further evaluation was received by the server computer system from the second class,
and wherein the second individual is transmitted for further evaluation to a second client computer in the merged class.
17. A server computer according to claim 13, wherein the merged class is associated with a union of the subset of indicators previously associated with the first class and the subset of indicators previously associated with the second class.
18. A server computer system according to claim 9, wherein one of the individuals transmitted for further evaluation is transmitted for further evaluation also to an additional member of the group.
19. A server computer system according to claim 9, wherein each of the individuals that the server computer system receives from the client computers has previously been evaluated on a first quantity of historical trading data and found to have had a fitness which exceeds a predetermined threshold fitness.
20. A server computer system according to claim 19, wherein a particular client computer, to which a particular one of the individuals is transmitted for further evaluation:
further evaluates the particular individual on a second quantity of historical trading data;
determines after the further evaluation whether the particular individual has a fitness which exceeds a predetermined threshold fitness; and only if so, then
transmits the particular individual back to the server computer system.
21. A server computer system according to claim 1, wherein through the communications port, in receiving individuals, the server computer system receives more than one of the individuals from a particular one of the client computers.
22. A server computer system according to claim 1, wherein the processor, in transmitting for further evaluation, transmits more than one individual to particular one of the client computers.
23. A server computer system according to claim 1, wherein the given client computer to which the processor transmits the given individual for further evaluation, is different than the client computer from which the server computer received the given individual.
24. A server computer system according to claim 9, wherein through the communications port, in receiving individuals, the server computer system receives more than one of the individuals from a particular one of the client computers.
25. A server computer system according to claim 9, wherein the processor, in transmitting for further evaluation, transmits more than one individual to particular one of the client computers.
26. A server computer system according to claim 9, wherein the given client computer to which the processor transmits the given individual for further evaluation, is different than the client computer from which the server computer received the given individual.
US12/769,605 2007-11-08 2010-04-28 Class-based distributed evolutionary algorithm for asset management and trading Active 2030-06-24 US8768811B2 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US12/769,605 US8768811B2 (en) 2009-04-28 2010-04-28 Class-based distributed evolutionary algorithm for asset management and trading
US13/184,307 US8909570B1 (en) 2008-11-07 2011-07-15 Data mining technique with experience-layered gene pool
US14/011,062 US9466023B1 (en) 2007-11-08 2013-08-27 Data mining technique with federated evolutionary coordination
US14/259,005 US20140229362A1 (en) 2009-04-28 2014-04-22 Class-based distributed evolutionary algorithm for asset management and trading
US14/539,908 US9684875B1 (en) 2008-11-07 2014-11-12 Data mining technique with experience-layered gene pool
US15/179,801 US9734215B2 (en) 2008-11-07 2016-06-10 Data mining technique with experience-layered gene pool

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17358109P 2009-04-28 2009-04-28
US17358209P 2009-04-28 2009-04-28
US12/769,605 US8768811B2 (en) 2009-04-28 2010-04-28 Class-based distributed evolutionary algorithm for asset management and trading

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/259,005 Division US20140229362A1 (en) 2009-04-28 2014-04-22 Class-based distributed evolutionary algorithm for asset management and trading

Publications (2)

Publication Number Publication Date
US20100274736A1 US20100274736A1 (en) 2010-10-28
US8768811B2 true US8768811B2 (en) 2014-07-01

Family

ID=42993002

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/769,605 Active 2030-06-24 US8768811B2 (en) 2007-11-08 2010-04-28 Class-based distributed evolutionary algorithm for asset management and trading
US14/259,005 Abandoned US20140229362A1 (en) 2009-04-28 2014-04-22 Class-based distributed evolutionary algorithm for asset management and trading

Family Applications After (1)

Application Number Title Priority Date Filing Date
US14/259,005 Abandoned US20140229362A1 (en) 2009-04-28 2014-04-22 Class-based distributed evolutionary algorithm for asset management and trading

Country Status (13)

Country Link
US (2) US8768811B2 (en)
EP (1) EP2422276A4 (en)
JP (1) JP5686795B2 (en)
KR (1) KR101689909B1 (en)
CN (2) CN102422279B (en)
AU (1) AU2010241597B2 (en)
BR (1) BRPI1015195A2 (en)
CA (1) CA2759293A1 (en)
HK (2) HK1165035A1 (en)
IL (1) IL215730A (en)
RU (2) RU2556374C2 (en)
SG (2) SG175361A1 (en)
WO (1) WO2010127042A1 (en)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710764B1 (en) 2011-07-15 2017-07-18 Sentient Technologies (Barbados) Limited Data mining technique with position labeling
US20180250554A1 (en) * 2017-03-03 2018-09-06 Sentient Technologies (Barbados) Limited Behavior Dominated Search in Evolutionary Search Systems
US10430429B2 (en) 2015-09-01 2019-10-01 Cognizant Technology Solutions U.S. Corporation Data mining management server
US10839938B2 (en) 2016-10-26 2020-11-17 Cognizant Technology Solutions U.S. Corporation Filtering of genetic material in incremental fitness evolutionary algorithms based on thresholds
US10956823B2 (en) 2016-04-08 2021-03-23 Cognizant Technology Solutions U.S. Corporation Distributed rule-based probabilistic time-series classifier
US11003994B2 (en) 2017-12-13 2021-05-11 Cognizant Technology Solutions U.S. Corporation Evolutionary architectures for evolution of deep neural networks
US11182677B2 (en) 2017-12-13 2021-11-23 Cognizant Technology Solutions U.S. Corporation Evolving recurrent networks using genetic programming
US11250327B2 (en) 2016-10-26 2022-02-15 Cognizant Technology Solutions U.S. Corporation Evolution of deep neural network structures
US11250314B2 (en) 2017-10-27 2022-02-15 Cognizant Technology Solutions U.S. Corporation Beyond shared hierarchies: deep multitask learning through soft layer ordering
US11481639B2 (en) 2019-02-26 2022-10-25 Cognizant Technology Solutions U.S. Corporation Enhanced optimization with composite objectives and novelty pulsation
US11507844B2 (en) 2017-03-07 2022-11-22 Cognizant Technology Solutions U.S. Corporation Asynchronous evaluation strategy for evolution of deep neural networks
US11527308B2 (en) 2018-02-06 2022-12-13 Cognizant Technology Solutions U.S. Corporation Enhanced optimization with composite objectives and novelty-diversity selection
US11669716B2 (en) 2019-03-13 2023-06-06 Cognizant Technology Solutions U.S. Corp. System and method for implementing modular universal reparameterization for deep multi-task learning across diverse domains
US11775841B2 (en) 2020-06-15 2023-10-03 Cognizant Technology Solutions U.S. Corporation Process and system including explainable prescriptions through surrogate-assisted evolution
US11783195B2 (en) 2019-03-27 2023-10-10 Cognizant Technology Solutions U.S. Corporation Process and system including an optimization engine with evolutionary surrogate-assisted prescriptions

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527433B2 (en) * 2009-04-28 2013-09-03 Genetic Finance (Barbados) Limited Distributed evolutionary algorithm for asset management and trading
US8909570B1 (en) 2008-11-07 2014-12-09 Genetic Finance (Barbados) Limited Data mining technique with experience-layered gene pool
CN102422279B (en) 2009-04-28 2016-09-21 思腾科技(巴巴多斯)有限公司 For asset management and the class-based Distributed evolutionary of transaction
US9304895B1 (en) 2011-07-15 2016-04-05 Sentient Technologies (Barbados) Limited Evolutionary technique with n-pool evolution
US9367816B1 (en) 2011-07-15 2016-06-14 Sentient Technologies (Barbados) Limited Data mining technique with induced environmental alteration
US9002759B2 (en) * 2011-07-15 2015-04-07 Sentient Technologies (Barbados) Limited Data mining technique with maintenance of fitness history
US10025700B1 (en) 2012-07-18 2018-07-17 Sentient Technologies (Barbados) Limited Data mining technique with n-Pool evolution
TWI489407B (en) * 2012-11-12 2015-06-21 Univ Nat Taiwan Science Tech System and method for generating decentralized options trading strategy
JP6230315B2 (en) * 2013-07-23 2017-11-15 株式会社日立製作所 Market impact attenuation coefficient calculation device, market impact attenuation coefficient calculation method, contract simulation system, and contract simulation method
US11288579B2 (en) 2014-01-28 2022-03-29 Cognizant Technology Solutions U.S. Corporation Training and control system for evolving solutions to data-intensive problems using nested experience-layered individual pool
US10268953B1 (en) * 2014-01-28 2019-04-23 Cognizant Technology Solutions U.S. Corporation Data mining technique with maintenance of ancestry counts
US10430709B2 (en) 2016-05-04 2019-10-01 Cognizant Technology Solutions U.S. Corporation Data mining technique with distributed novelty search
US10185993B2 (en) * 2014-08-22 2019-01-22 Iex Group, Inc. Dynamic peg orders in an electronic trading system
US11676205B2 (en) * 2014-08-22 2023-06-13 Iex Group, Inc. Dynamic peg orders in an electronic trading system
WO2016207731A2 (en) 2015-06-25 2016-12-29 Sentient Technologies (Barbados) Limited Alife machine learning system and method
US11403532B2 (en) 2017-03-02 2022-08-02 Cognizant Technology Solutions U.S. Corporation Method and system for finding a solution to a provided problem by selecting a winner in evolutionary optimization of a genetic algorithm
CN108805380A (en) * 2017-05-04 2018-11-13 上海诺亚投资管理有限公司 A kind of financial product income evaluation method and system based on block chain
CN107330214B (en) * 2017-07-11 2021-06-01 哈尔滨工业大学(威海) Spatial layout optimization method based on discretization and heuristic evolutionary algorithm
US11281977B2 (en) 2017-07-31 2022-03-22 Cognizant Technology Solutions U.S. Corporation Training and control system for evolving solutions to data-intensive problems using epigenetic enabled individuals
US11574201B2 (en) 2018-02-06 2023-02-07 Cognizant Technology Solutions U.S. Corporation Enhancing evolutionary optimization in uncertain environments by allocating evaluations via multi-armed bandit algorithms
US11755979B2 (en) 2018-08-17 2023-09-12 Evolv Technology Solutions, Inc. Method and system for finding a solution to a provided problem using family tree based priors in Bayesian calculations in evolution based optimization
EP3876181B1 (en) * 2020-01-20 2023-09-06 Rakuten Group, Inc. Information processing device, information processing method, and program

Citations (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08110804A (en) 1994-10-11 1996-04-30 Omron Corp Data processor
EP0762294A2 (en) * 1995-08-31 1997-03-12 International Computers Limited Computer system using genetic optimization techniques
US5845266A (en) * 1995-12-12 1998-12-01 Optimark Technologies, Inc. Crossing network utilizing satisfaction density profile with price discovery features
US5920848A (en) * 1997-02-12 1999-07-06 Citibank, N.A. Method and system for using intelligent agents for financial transactions, services, accounting, and advice
US6240399B1 (en) 1998-12-24 2001-05-29 Glenn Frank System and method for optimizing investment location
US6249783B1 (en) * 1998-12-17 2001-06-19 International Business Machines Corporation Method and apparatus for efficiently executing built-in functions
JP2001325041A (en) 2000-05-12 2001-11-22 Toyo Eng Corp Method for utilizing computer resource and system for the same
US20020019844A1 (en) 2000-07-06 2002-02-14 Kurowski Scott J. Method and system for network-distributed computing
JP2003044665A (en) 2001-07-31 2003-02-14 Cmd Research:Kk Simulation program for price fluctuation in financial market
JP2004240671A (en) 2003-02-05 2004-08-26 Hitachi Ltd Processing method and system for distributed computer
US20040210545A1 (en) 2001-10-31 2004-10-21 Juergen Branke Method and system for implementing evolutionary algorithms
JP2004302741A (en) 2003-03-31 2004-10-28 Fujitsu Ltd Method for providing resource of system using grid computing, surveillance device for system, program therefor, and program for resource providing terminal of system
US20040254901A1 (en) 2003-04-04 2004-12-16 Eric Bonabeau Methods and systems for interactive evolutionary computing (IEC)
US20050033672A1 (en) 2003-07-22 2005-02-10 Credit-Agricole Indosuez System, method, and computer program product for managing financial risk when issuing tender options
WO2005073854A2 (en) 2004-01-27 2005-08-11 Koninklijke Philips Electronics, N.V. System and method for providing an extended computing capacity
US20050187848A1 (en) 2004-02-20 2005-08-25 Bonissone Piero P. Systems and methods for efficient frontier supplementation in multi-objective portfolio analysis
US20050198103A1 (en) 2004-01-07 2005-09-08 Wei Ching System and method of commitment management
US7013344B2 (en) 2002-01-09 2006-03-14 International Business Machines Corporation Massively computational parallizable optimization management system and method
US20070143198A1 (en) 2005-06-29 2007-06-21 Itg Software Solutions, Inc. System and method for generating real-time indicators in a trading list or portfolio
US20070143759A1 (en) 2005-12-15 2007-06-21 Aysel Ozgur Scheduling and partitioning tasks via architecture-aware feedback information
US7246075B1 (en) * 2000-06-23 2007-07-17 North Carolina A&T State University System for scheduling multiple time dependent events
US20070185990A1 (en) 2006-02-06 2007-08-09 Fujitsu Limited Computer-readable recording medium with recorded performance analyzing program, performance analyzing method, and performance analyzing apparatus
US20080071588A1 (en) 1997-12-10 2008-03-20 Eder Jeff S Method of and system for analyzing, modeling and valuing elements of a business enterprise
US7370013B1 (en) 1999-08-23 2008-05-06 Sun Microsystems, Inc. Approach for determining an amount to bill a customer for the use of resources
US20080228644A1 (en) 2003-07-10 2008-09-18 International Business Machines Corporation Providing metered capacity of computer resources
US20090125370A1 (en) 2007-11-08 2009-05-14 Genetic Finance Holdings Limited Distributed network for performing complex algorithms
US20090327178A1 (en) 2005-04-07 2009-12-31 Jacobson David L Concurrent two-phase completion genetic algorithm system and methods
US20100030720A1 (en) * 2000-02-16 2010-02-04 Adaptive Technologies, Inc. Methods and apparatus for self-adaptive, learning data analysis
US20100182935A1 (en) 2005-02-14 2010-07-22 David Scott L Computer-Implemented Method For Facilitating Ancillary Use Of A Wireless Service Device For Excess Transmission Bandwidth
US20100257228A1 (en) 2009-04-01 2010-10-07 Honeywell International Inc. Cloud computing for an industrial automation and manufacturing system
US20100256795A1 (en) 2009-04-01 2010-10-07 Honeywell International Inc. Cloud computing as a basis for equipment health monitoring service
US20100257605A1 (en) 2009-04-01 2010-10-07 Honeywell International Inc. Cloud computing as a security layer
US20100274742A1 (en) 2009-04-28 2010-10-28 Genetic Finance Holdings Limited AMS Trustees Limited Distributed evolutionary algorithm for asset management and trading
EP2422276A1 (en) 2009-04-28 2012-02-29 Genetic Finance (Barbados) Limited Class-based distributed evolutionary algorithm for asset management and trading
US20120239592A1 (en) 2011-03-17 2012-09-20 Hartford Fire Insurance Company Code generation based on spreadsheet data models
US8639545B2 (en) * 2008-04-16 2014-01-28 International Business Machines Corporation Generating an optimized analytical business transformation

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09114797A (en) * 1995-10-18 1997-05-02 Fuji Xerox Co Ltd Method and device for searching optimum solution
GB9805260D0 (en) * 1998-03-13 1998-05-06 Ncr Int Inc Method and apparatus to model the variables of a data set
US6207460B1 (en) 1999-01-14 2001-03-27 Extraction Systems, Inc. Detection of base contaminants in gas samples
US6816846B1 (en) * 1999-11-12 2004-11-09 Xerox Corporation Method for generating rich sound environments using genetic or shaped algorithms
CA2346231A1 (en) * 2000-05-08 2001-11-08 Internet Number Corporation Method and system for accessing information on a network using message aliasing functions having shadow callback functions
US20020002502A1 (en) * 2000-05-19 2002-01-03 Patricia Maes Product brokering method and system
US7395235B2 (en) * 2002-06-13 2008-07-01 Centre For Development Of Advanced Computing Strategy independent optimization of multi objective functions
JP4458412B2 (en) * 2003-12-26 2010-04-28 株式会社進化システム総合研究所 Parameter adjustment device
RU2294561C2 (en) * 2005-03-28 2007-02-27 Государственное образовательное учреждение высшего профессионального образования "Таганрогский государственный радиотехнический университет" (ТРТУ) Device for hardware realization of probability genetic algorithms
CN1808483A (en) * 2006-01-16 2006-07-26 彭京 Biologic heuristic calculation based floating population information analysis and alert and alarm method
JP2008129984A (en) * 2006-11-24 2008-06-05 Osaka Prefecture Univ Transaction support system, transaction support program and recording medium thereof

Patent Citations (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08110804A (en) 1994-10-11 1996-04-30 Omron Corp Data processor
EP0762294A2 (en) * 1995-08-31 1997-03-12 International Computers Limited Computer system using genetic optimization techniques
US5761381A (en) * 1995-08-31 1998-06-02 International Computers Limited Computer system using genetic optimization techniques
US5845266A (en) * 1995-12-12 1998-12-01 Optimark Technologies, Inc. Crossing network utilizing satisfaction density profile with price discovery features
US5920848A (en) * 1997-02-12 1999-07-06 Citibank, N.A. Method and system for using intelligent agents for financial transactions, services, accounting, and advice
US20080071588A1 (en) 1997-12-10 2008-03-20 Eder Jeff S Method of and system for analyzing, modeling and valuing elements of a business enterprise
US6249783B1 (en) * 1998-12-17 2001-06-19 International Business Machines Corporation Method and apparatus for efficiently executing built-in functions
US6240399B1 (en) 1998-12-24 2001-05-29 Glenn Frank System and method for optimizing investment location
US7370013B1 (en) 1999-08-23 2008-05-06 Sun Microsystems, Inc. Approach for determining an amount to bill a customer for the use of resources
US20100030720A1 (en) * 2000-02-16 2010-02-04 Adaptive Technologies, Inc. Methods and apparatus for self-adaptive, learning data analysis
JP2001325041A (en) 2000-05-12 2001-11-22 Toyo Eng Corp Method for utilizing computer resource and system for the same
US7246075B1 (en) * 2000-06-23 2007-07-17 North Carolina A&T State University System for scheduling multiple time dependent events
US20020019844A1 (en) 2000-07-06 2002-02-14 Kurowski Scott J. Method and system for network-distributed computing
JP2003044665A (en) 2001-07-31 2003-02-14 Cmd Research:Kk Simulation program for price fluctuation in financial market
US20040210545A1 (en) 2001-10-31 2004-10-21 Juergen Branke Method and system for implementing evolutionary algorithms
US7444309B2 (en) 2001-10-31 2008-10-28 Icosystem Corporation Method and system for implementing evolutionary algorithms
US7013344B2 (en) 2002-01-09 2006-03-14 International Business Machines Corporation Massively computational parallizable optimization management system and method
JP2004240671A (en) 2003-02-05 2004-08-26 Hitachi Ltd Processing method and system for distributed computer
JP2004302741A (en) 2003-03-31 2004-10-28 Fujitsu Ltd Method for providing resource of system using grid computing, surveillance device for system, program therefor, and program for resource providing terminal of system
US20040254901A1 (en) 2003-04-04 2004-12-16 Eric Bonabeau Methods and systems for interactive evolutionary computing (IEC)
US20080228644A1 (en) 2003-07-10 2008-09-18 International Business Machines Corporation Providing metered capacity of computer resources
US20050033672A1 (en) 2003-07-22 2005-02-10 Credit-Agricole Indosuez System, method, and computer program product for managing financial risk when issuing tender options
US20050198103A1 (en) 2004-01-07 2005-09-08 Wei Ching System and method of commitment management
WO2005073854A2 (en) 2004-01-27 2005-08-11 Koninklijke Philips Electronics, N.V. System and method for providing an extended computing capacity
JP2007522547A (en) 2004-01-27 2007-08-09 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ System and method for providing extended computing power
US20050187848A1 (en) 2004-02-20 2005-08-25 Bonissone Piero P. Systems and methods for efficient frontier supplementation in multi-objective portfolio analysis
US20100182935A1 (en) 2005-02-14 2010-07-22 David Scott L Computer-Implemented Method For Facilitating Ancillary Use Of A Wireless Service Device For Excess Transmission Bandwidth
US20090327178A1 (en) 2005-04-07 2009-12-31 Jacobson David L Concurrent two-phase completion genetic algorithm system and methods
US20070143198A1 (en) 2005-06-29 2007-06-21 Itg Software Solutions, Inc. System and method for generating real-time indicators in a trading list or portfolio
US20070143759A1 (en) 2005-12-15 2007-06-21 Aysel Ozgur Scheduling and partitioning tasks via architecture-aware feedback information
JP2007207173A (en) 2006-02-06 2007-08-16 Fujitsu Ltd Performance analysis program, performance analysis method, and performance analysis device
US20070185990A1 (en) 2006-02-06 2007-08-09 Fujitsu Limited Computer-readable recording medium with recorded performance analyzing program, performance analyzing method, and performance analyzing apparatus
US20090125370A1 (en) 2007-11-08 2009-05-14 Genetic Finance Holdings Limited Distributed network for performing complex algorithms
US8639545B2 (en) * 2008-04-16 2014-01-28 International Business Machines Corporation Generating an optimized analytical business transformation
US20100256795A1 (en) 2009-04-01 2010-10-07 Honeywell International Inc. Cloud computing as a basis for equipment health monitoring service
US20100257605A1 (en) 2009-04-01 2010-10-07 Honeywell International Inc. Cloud computing as a security layer
WO2010120440A2 (en) 2009-04-01 2010-10-21 Honeywell International Inc. Cloud computing for an industrial automation and manufacturing system
US20100257228A1 (en) 2009-04-01 2010-10-07 Honeywell International Inc. Cloud computing for an industrial automation and manufacturing system
US20100274742A1 (en) 2009-04-28 2010-10-28 Genetic Finance Holdings Limited AMS Trustees Limited Distributed evolutionary algorithm for asset management and trading
EP2422278A1 (en) 2009-04-28 2012-02-29 Genetic Finance (Barbados) Limited Distributed evolutionary algorithm for asset management and trading
EP2422276A1 (en) 2009-04-28 2012-02-29 Genetic Finance (Barbados) Limited Class-based distributed evolutionary algorithm for asset management and trading
US20120239592A1 (en) 2011-03-17 2012-09-20 Hartford Fire Insurance Company Code generation based on spreadsheet data models

Non-Patent Citations (47)

* Cited by examiner, † Cited by third party
Title
A Gaspar-Cunha et al., "A Multi-Objective Evolutionary Algorithm Using Neural Networks to Approximate Fitness Evaluations," Int'l J. Computers, Systems and Signals, 6(1) 2005, pp. 18-36.
A Kosorukoff, "Using incremental evaluation and adaptive choice of operators in a genetic algorithm," Proc. Genetic and Evolutionary Computation Conference, GECCO-2002, 7pp.
A Nelson, "Fitness functions in evolutionary robotics: A survey and analysis," Robotics and Autonomous Systems 57 (2009) 345-370.
Apr. 20, 2012 Exam Report for related application AU 2008323758, 2 pp.
AS Wu et al., "An incremental fitness function for partitioning parallel taks," Proc. Genetic and Evolutionary Computation Conf. (2001) 8pp.
AU 2010241594-Examination Report dated Oct. 8, 2013, 3 pages.
AU 2010241597-Examination Report dated Nov. 4, 2013, 4 pages.
Aug. 1, 2012 Office Action in U.S. Appl. No. 13/443,546, 12 pp.
BA Whitehead, "Genetic Evolution of Radial Basis Function Coverage Using Orthogonal Niches," IEEE Transactions on Neural Networks, 7:6, (1996) 1525-28.
Bui et al. "Local Models: An Approach to Distributed Multi-objective Optimization, Computational Optimization and Applications," Computational Optimization and Application Journal, 2009, 42(1), 105-139.
Castillo Tapia et al. Applications of multi-objective evolutionary algorithms in economics and finance: A survey. IEEE Congress on Evolutionary Computation 2007: 532-539.
Dec. 23, 2008 International Search Report and Written Opinion for PCT/US2008/82876, 10 pp.
E Ducheyne et al., "Is Fitness Inheritance Useful for Real-World Applications?" Evolutionary Multi-Criterion Optimization, ser. LNCS 2631, 2003, pp. 31-42.
Enee et al. "Classifier Systems: Evolving multi-agent system with distributed elitism," Proceedings of the 1999 Congress on Evolutionary Computation, pp. 1740-1746, (1999) IEEE Press, Washington D.C.
G Gopalakrishnan et al., "Optimal Sampling in a Noisy Genetic Algorithm for Risk-Based Remediation Design," Bridging the gap: meeting the world's water and environmental resources challenges, Proc. World Water Congress 2001, 8 pp.
H Juille, "Evolution of Non-Deterministic Incremental Algorithms as a New Approach for Search in State Spaces," Proc. 6th Int'l Conf. on Genetic Algorithms, 1995, 8pp.
International Search Report mailed Jul. 2, 2010 in PCT/US10/32847.
International Search Report mailed Jun. 29, 2010 in PCT/US10/32841.
J Sacks, et al. "Design and Analysis of Computer Experiments," Statistical Science 4:4, 1989, 409-435.
J Torresen, "A Dynamic Fitness Function Applied to Improve the Generalisation when Evolving a Signal Processing Hardware Architecture," Proc. EvoWorkshops 2002, 267-299 (12 pp).
JC Bongard, et al., "Guarding Against Premature Convergence while Accelerating Evolutionary Search," Proc. 12th annual conf. of Genetic and evolutionary computation, 20201, 8pp.
JE Bartlett II, et al., "Organizational Research: Determining Appropriate Sample Size in Survey Research," IT, Learning, and Performance Journal 19(1) 2001, 8pp.
JM Fitzpatrick et al., "Genetic Algorithms in Noisy Environments," Machine Learning 3: 101-120, 1988.
Jul. 27, 2012 Final Office Action in U.S. Appl. No. 12/267,287, 14 pp.
Jun. 16, 2011 Written Opinion from Singapore Patent Office in related application SG 201003127-6, 8 pp.
Jun. 22, 2011 Office Action in U.S. Appl. No. 12/267,287, 16 pp.
Koza, J.R., "Genetic Programming: On the Programming of Computers by Means of Natural Selection", Dec. 1992, MIT Press, pp. 1-609.
Leon et al. Parallel Hypervolume-Guided Hyperheuristic for Adapting the Multi-objective Evolutionary Island Model. NICSO 2008: 261-272.
Lopez Haimes et al., "MRMOGA: parallel evolutionary multi-objective optimization using multiple resolutions," In: Proceedings of IEEE Congress on Evolutionary Computation, 2294-2301, 2005.
M Davarynejad et al., "A Novel General Framework for Evolutionary Optimization: Adaptive Fuzzy Fitness Granulation," CEC 2007, 6pp.
M Davarynejad, "Fuzzy Fitness Granulation in Evolutionary Algorithms for complex optimization," Master of Science Thesis, Ferdowsi Univ. of Mashhad, 2007, 30pp.
M Salami, et al., "A fast evaluation strategy for evolutionary algorithms," Applied Soft Computing 2/3F (2003) 156-173.
M.-R Akbarzadeh-T. et al., "Friendship Modeling for Cooperative Co-Evolutionary Fuzzy Systems: A Hybrid GA-GP Algorithm," Proc. 22nd Int'l Conf. of N. American FIPS, 2003, pp. 61-66.
Myers, R.N. and Montgomery, D.C., "Response Surface Methodology: Process and Product Optimization Using Designed Experiments," New York: John Wiley and Sons, Inc., 1995, pp. 1-700.
Nov. 26, 2012 Extended EP SR for EP 08847214, 9 pp.
Oct. 9, 2012 Supplementary European Search Report for EP 10 77 0287, 11 pp.
Poli et al. "Genetic programming: An introductory tutorial and a survey of techniques and applications," University of Essex, UK, Tech. Rep. CES-475, 2007.
PS Georgilakis, "Genetic Algorithm Model for Profit Maximization of Generating Companies in Deregulated Electricity Markets," Applied Artificial Intelligence, 2009, 23:6,538-552.
S Remde, et al. "Evolution of Fitness Functions to Improve Heuristic Performance," LION 2007 II, LNCS 5313 pp. 206-219.
Sakauchi et al., UNIFINE: A Next Generation Financial Solution System of Nihon Unisys Ltd., Technology Review 'UNISYS,' Japan, Nihon Unisys Ltd., Feb. 28, 2006, vol. 25, No. 4, pp. 14-15.
Schoreels C., "Agent based Genetic Algorithm Employing Financial Technical Analysis for Making Trading Decisions Using Historical Equity Market Data," IEEE/WIC/ACM International Conference on Intelligent Agent Technology (IAT2004), Beijing, China, 2004, pp. 421-424.
Streichert , "Introduction to Evolutionary Algorithms," Frankfurt MathFinance Workshop, Apr. 2-4, 2002.
Streichert F., "Introduction to Evolutionary Algorithms," paper to be presented Apr. 4, 2002 at the Frankfurt MathFinance Workshop Mar. 30, 2002, Frankfurt, Germany, XP55038571, 22 pp. (retrieved from the Internet: URL: http://www.ra.cs.uni-tuebingen.de/mita rb/streiche/publications/Introduction to E volutionary Algorithms.pdf).
Supplementary European Search Report mailed Oct. 12, 2012 in EP 10770288.
Supplementary European Search Report mailed Oct. 9, 2012 in EP 10770287.
Tanev et al. "Scalable architecture for parallel distributed implementation of genetic programming on network of workstations," Journal of Systems Architecture, 47(7):557-572, 2001.
U.S. Appl. No. 13/895,238-Office Action dated Jan. 2, 2014, 17 pages.

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710764B1 (en) 2011-07-15 2017-07-18 Sentient Technologies (Barbados) Limited Data mining technique with position labeling
US10430429B2 (en) 2015-09-01 2019-10-01 Cognizant Technology Solutions U.S. Corporation Data mining management server
US11151147B1 (en) 2015-09-01 2021-10-19 Cognizant Technology Solutions U.S. Corporation Data mining management server
US10956823B2 (en) 2016-04-08 2021-03-23 Cognizant Technology Solutions U.S. Corporation Distributed rule-based probabilistic time-series classifier
US11281978B2 (en) 2016-04-08 2022-03-22 Cognizant Technology Solutions U.S. Corporation Distributed rule-based probabilistic time-series classifier
US11250327B2 (en) 2016-10-26 2022-02-15 Cognizant Technology Solutions U.S. Corporation Evolution of deep neural network structures
US10839938B2 (en) 2016-10-26 2020-11-17 Cognizant Technology Solutions U.S. Corporation Filtering of genetic material in incremental fitness evolutionary algorithms based on thresholds
US11250328B2 (en) 2016-10-26 2022-02-15 Cognizant Technology Solutions U.S. Corporation Cooperative evolution of deep neural network structures
US11247100B2 (en) * 2017-03-03 2022-02-15 Cognizant Technology Solutions U.S. Corporation Behavior dominated search in evolutionary search systems
US20180250554A1 (en) * 2017-03-03 2018-09-06 Sentient Technologies (Barbados) Limited Behavior Dominated Search in Evolutionary Search Systems
US10744372B2 (en) * 2017-03-03 2020-08-18 Cognizant Technology Solutions U.S. Corporation Behavior dominated search in evolutionary search systems
US11507844B2 (en) 2017-03-07 2022-11-22 Cognizant Technology Solutions U.S. Corporation Asynchronous evaluation strategy for evolution of deep neural networks
US11250314B2 (en) 2017-10-27 2022-02-15 Cognizant Technology Solutions U.S. Corporation Beyond shared hierarchies: deep multitask learning through soft layer ordering
US11182677B2 (en) 2017-12-13 2021-11-23 Cognizant Technology Solutions U.S. Corporation Evolving recurrent networks using genetic programming
US11003994B2 (en) 2017-12-13 2021-05-11 Cognizant Technology Solutions U.S. Corporation Evolutionary architectures for evolution of deep neural networks
US11030529B2 (en) 2017-12-13 2021-06-08 Cognizant Technology Solutions U.S. Corporation Evolution of architectures for multitask neural networks
US11527308B2 (en) 2018-02-06 2022-12-13 Cognizant Technology Solutions U.S. Corporation Enhanced optimization with composite objectives and novelty-diversity selection
US11481639B2 (en) 2019-02-26 2022-10-25 Cognizant Technology Solutions U.S. Corporation Enhanced optimization with composite objectives and novelty pulsation
US11669716B2 (en) 2019-03-13 2023-06-06 Cognizant Technology Solutions U.S. Corp. System and method for implementing modular universal reparameterization for deep multi-task learning across diverse domains
US11783195B2 (en) 2019-03-27 2023-10-10 Cognizant Technology Solutions U.S. Corporation Process and system including an optimization engine with evolutionary surrogate-assisted prescriptions
US11775841B2 (en) 2020-06-15 2023-10-03 Cognizant Technology Solutions U.S. Corporation Process and system including explainable prescriptions through surrogate-assisted evolution

Also Published As

Publication number Publication date
IL215730A0 (en) 2012-01-31
EP2422276A4 (en) 2012-11-14
EP2422276A1 (en) 2012-02-29
CN104317771A (en) 2015-01-28
SG10201401854TA (en) 2014-09-26
SG175361A1 (en) 2011-11-28
US20140229362A1 (en) 2014-08-14
RU2011148277A (en) 2013-06-10
HK1206827A1 (en) 2016-01-15
HK1165035A1 (en) 2012-09-28
RU2015106321A (en) 2015-06-20
US20100274736A1 (en) 2010-10-28
JP2012525650A (en) 2012-10-22
JP5686795B2 (en) 2015-03-18
CN102422279A (en) 2012-04-18
CA2759293A1 (en) 2010-11-04
BRPI1015195A2 (en) 2020-08-11
KR101689909B1 (en) 2016-12-26
CN102422279B (en) 2016-09-21
AU2010241597B2 (en) 2015-01-22
RU2556374C2 (en) 2015-07-10
WO2010127042A1 (en) 2010-11-04
CN104317771B (en) 2017-12-01
KR20120024660A (en) 2012-03-14
AU2010241597A1 (en) 2011-12-08
IL215730A (en) 2016-06-30
RU2604673C2 (en) 2016-12-10

Similar Documents

Publication Publication Date Title
US8768811B2 (en) Class-based distributed evolutionary algorithm for asset management and trading
US8918349B2 (en) Distributed network for performing complex algorithms
AU2008323758B2 (en) Distributed network for performing complex algorithms
AU2012244171B2 (en) Distributed network for performing complex algorithms
TWI549083B (en) Class-based distributed evolutionary algorithm for asset management and trading
TWI503777B (en) Distributed evolutionary algorithm for asset management and trading

Legal Events

Date Code Title Description
AS Assignment

Owner name: GENETIC FINANCE HOLDINGS LIMITED, VIRGIN ISLANDS,

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HODJAT, BABAK;SHAHRZAD, HORMOZ;REEL/FRAME:024341/0530

Effective date: 20100505

AS Assignment

Owner name: GENETIC FINANCE (BARBADOS) LIMITED, BARBADOS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GENETIC FINANCE HOLDINGS LIMITED;REEL/FRAME:026880/0257

Effective date: 20110909

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: SENTIENT TECHNOLOGIES (BARBADOS) LIMITED, BARBADOS

Free format text: CHANGE OF NAME;ASSIGNOR:GENETIC FINANCE (BARBADOS) LIMITED;REEL/FRAME:034781/0900

Effective date: 20141202

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551)

Year of fee payment: 4

AS Assignment

Owner name: COGNIZANT TECHNOLOGY SOLUTIONS U.S. CORPORATION, T

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SENTIENT TECHNOLOGIES (BARBADOS) LIMITED;SENTIENT TECHNOLOGIES HOLDINGS LIMITED;SENTIENT TECHNOLOGIES (USA) LLC;REEL/FRAME:049022/0139

Effective date: 20181204

Owner name: COGNIZANT TECHNOLOGY SOLUTIONS U.S. CORPORATION, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SENTIENT TECHNOLOGIES (BARBADOS) LIMITED;SENTIENT TECHNOLOGIES HOLDINGS LIMITED;SENTIENT TECHNOLOGIES (USA) LLC;REEL/FRAME:049022/0139

Effective date: 20181204

FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FEPP Fee payment procedure

Free format text: 7.5 YR SURCHARGE - LATE PMT W/IN 6 MO, LARGE ENTITY (ORIGINAL EVENT CODE: M1555); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8