Modulus Evo2 ™ is our advanced
genetic algorithm library developed in C# that incorporates the latest
in genetic algorithm design, such as biologically identical processes,
epigenetic switches, simulated annealing, Westermarck inbreeding
prevention, age-limited recombination and more.
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 let's developers build multivariate
trading system optimizations with ease.
A light C# version of
provided with Evo2 along with C# example projects that
show developers how to develop genetic programming models that can
back-test and optimize strategies.
A copy of the Modulus C#
Backtester is also provided with Evo2.
Bio-Identical Genome and Algorithm
Evo2 is not only bio-inspired, it is
bio-identical in many aspects. Evo2 simulates
everything 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, which helps
to avoid 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 created only 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 leave
these steps out completely. Evo2 simulates both phases
completely and accurately.
Most standard genetic algorithms are technically "inbred soup". 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. Nature has at least three mechanisms to prevent
inbreeding and yet most genetic algorithms fail to address this topic.
The first method is to prevent offspring from
reproducing. Inbreeding results in increased homozygosity, which can
increase the chances of offspring being affected by recessive or
The second mechanism is from the instinct that many
species have to drive their young males away in order to prevent incest
mating between siblings.
The third mechanism is known as the
Westermarck Effect, which 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. An example is the cheetah, which is one of the
most inbred species on earth and is facing extinction. Twenty thousand
years ago, cheetahs roamed throughout Africa, Asia, Europe, and North
America. About 10,000 years ago - because of climate changes - all but
one species of the cheetah 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
Although nature forbids inbreeding, almost all
computer simulated genetic algorithms overlook this problem.
Evo2 prevents inbreeding via the
Westermarck Effect and other simulated effects.
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 genealogy information
for each genome so that users can review the progression of the genetic
algorithm and see how certain genes have evolved their solutions over
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.
Genetic Programming C# Example Project based on
Genetic Programming Based Autonomous Trading System
Designer for M4
Evo2 can be used 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.
For a low-level (machine code) genetic programming system, check out
our friends at
The TSL high-speed machine automatic design engine has produced the #1
and #2 S&P (eMini S&P and S&P Futures) trading systems that have been
unmatched since their release!
Evo2 with C#
example source - includes a light version of
TradeScript .NET and the Modulus
C# Backtester, plus six months developer technical support and
one year of source code updates. Only $499