Natural Intelligence: The Genetic Algorithm
Evo2 is our advanced genetic algorithm library which incorporates the latest in genetic algorithm design, such as biologically identical processes, epigenetic switches, simulated annealing, Westermarck inbreeding prevention, age-limited recombination, and more.
The Evo2 algorithm is not based on the standard "single chromosome" GA design.
Evo2 solves multivariate optimization problems quickly and scales well with complexity. The Evo2 algorithm was designed for genetic programming (autonomous creation of trading systems), trading system optimization and portfolio optimization. Evo2 lets developers build multivariate trading system optimizations with ease.
Bio-Identical Genome and Algorithm
Evo2 is not only bio-inspired, but it is bio-identical in many aspects. Evo2 simulates every natural process from mate selection to DNA packaging and complete meiosis. Most standard genetic algorithms neglect to perform the multiple steps of meiosis that are vitally important to genetic variation, a crucially important variable in avoiding local optima.
During prophase, chromosomes synapse and a small amount of DNA is exchanged between homologous chromosomes through a process known as "crossing over." The critical part of prophase is the lining-up of tetrads into homologous pairs. The Evo2 algorithm ensures that homologs are only created from unrelated, opposite sex chromosomes.
Metaphase and Anaphase
Metaphase and anaphase are the phases where much variation is incorporated into the genome; however, most genetic algorithms completely leave these steps out. Evo2 simulates both phases completely and accurately.
No Inbreeding Allowed
Most standard genetic algorithms are "inbred soup", technically speaking. Inbreeding reduces genetic variation, which suffice it to say, prevents systems from evolving and adapting to their environment. In standard GAs, this means that a system might be more likely to become stuck in local optima. While nature has at least three mechanisms to prevent inbreeding, most genetic algorithms fail to address this problem.
The first method: Prevent offspring from reproducing. Inbreeding results in increased homozygosity, which can increase the chances of offspring being affected by recessive or deleterious traits.
The second mechanism: Drive away young males in order to prevent incest mating between siblings.
The third mechanism: The Westermarck effect. This is a psychological effect through which individuals who are raised in close proximity during childhood become desensitized to later sexual attraction.
The final consequence of inbreeding is species extinction due to lack of genetic diversity. The cheetah, one of the most inbred species on earth, is a prime example. And, it also happens to be facing extinction. Twenty thousand years ago, cheetahs roamed throughout Africa, Asia, Europe, and North America. About 10,000 years ago, due to climate change, all but one species became extinct. With the drastic reduction in their numbers, close relatives were forced to breed, and the cheetah became genetically inbred, meaning all cheetahs are very closely related.
Although nature forbids inbreeding, almost all computer-simulated genetic algorithms overlook this problem.
Evo2 prevents inbreeding via the Westermarck Effect and other simulated effects.
Epigenetic theory describes how changes in gene expression may be caused by mechanisms other than changes in the underlying dna sequence, temporarily or through multiple generations, by influencing a network of chemical switches within cells collectively known as the epigenome. Evo2 can simulate epigenetic switches to allow the system to be temporarily penalized for actions such as being too greedy or risk averse.
Simulated annealing is a probabilistic metaheuristic for the global optimization problem of locating a good approximation to the global optimum of a given function in a large search space. It is often used when the search space is discrete. For certain problems, simulated annealing may be more efficient than exhaustive enumeration.
Evo2 can save genealogical information for each genome so users may review the progression of the genetic algorithm to see how certain genes have evolved over time.
Evo2 features a built-in karyogram, which allows visualization of genomes while genetic algorithms are evolving. The karyogram could be customized to display genealogy information for specific genomes via a context menu.
Evo2 can be used on the client or server side for genetic programming (autonomous creation of trading systems), trading system optimization, portfolio optimization, asset allocation and non-finance related applications, including but not limited to artificial creativity, automated design, bioinformatics, chemical kinetics, code-breaking, control engineering, Feynman-Kac models, filtering and signal processing, scheduling applications, mechanical engineering, stochastic optimization and timetabling problems.
An example: to calculate a simple moving average based on the median price of a security over 30 days, in a traditional programming language such as BASIC, you would be required to write a program similar to the code shown in this block of code.
Several lines of code would be required to create the "MedianAverages" vector. But with TradeScript, you can accomplish the same thing using only one line of code as show below.
Genetic Programming Examples
TradeScript programming examples show developers how to create genetic programming models able to back test and optimize strategies. Programming documentation can be downloaded here.
Get Started with Evo2 >
Why Choose Modulus?
Modulus is a financial technology company. While that may not sound like a real differentiator, it is. It means that our solutions come from our years of experience in the financial technology industry. Our products and services are provided by developers and engineers who have first-hand trading experience. Everyone here at Modulus speaks your language.
Read more about us.