Frequently Asked Questions

Evolve Solutions

Charles Darwin was right!

A solution is a set of rules that govern how to trade a particular stock symbol.

Given the number of rules that we have defined there are approximately 10 82 unique combinations of rules that are possible. That's a 1 followed by 82 zeroes which is approximately the number of atoms in the known universe!

We don't have a computer large enough on Earth to examine all possible solutions. So how can we find good solutions? By using a genetic algorithm!

Expand the Solutions menu in the left sidebar and click on the Evolve link. There is a text area where you can enter one or more stock symbols separated by spaces, commas or new lines. We have also provided a search capability in case you don't have every stock symbol memorized. The various sliders are set to reasonable defaults which you can adjust if you wish.

The balance of your Compute Account will be shown as well as the cost to evolve the solution(s) for the symbol(s) you have entered. If you need to add more funds to your Compute Account click on the Add Funds button.

To begin evolving the solution(s) click the Evolve button. This will take you to a page where you will see a summary of progress for evolving the solution(s). When data appears on a line for a stock symbols that means that one of our compute servers has picked up the job and is working on it. You can click on the line to drill into it to see more details about the progress of the evolution.

What are the sliders on the Evolve page all about?

The sliders govern the various aspects of evolving a solution. Using the sliders pertaining to win rate and max drawdown you can tell the genetic algorithm what is important to you and how much to penalize low win rates or high max drawdowns.

The genetic algorithm evolves a population of candidate solutions. The size of the population determines how much computing power it takes to process each generation as the solution evolves. The cost of evolving the solution is directly related to the population size.

The genetic algorithm has to make a decision on when to call it a day. As the evolution of a solution progresses better solutions become harder and harder to find. If a certain number of generations go by without finding a better solution then the evolution terminates. The slider labeled No Improvement Generations is what governs that decision to terminate the evolution and report the best result found so far.

Genetic Algorithms

Darwinian survival of the fittest in the digital age

A genetic algorithm is a type of search algorithm. It is useful in situations where there are an astronomically large number of possible solutions to a problem and it isn't possible to examine every possible solution. Instead of guaranteeing that the very best solution has been found a genetic algorithm tries to find a good solution to the problem.

A genetic algorithm represents candidate solutions as DNA strings. Starting with an initial population of candidate solutions it measures the quality of each solution in the population and then it ranks the solutions by their quality scores. Then the next generation is constructed by imitating natural selection and survival of the fittest. Pairs of solutions are selected and act as parents that produce offspring. Each pair of parents produces 2 offspring solutions so that the population size of the next generation remains the same as the current generation. Each offspring of 2 parents has portions of it's DNA that came from "Mom" and portions that came from "Dad" just like in nature.

The process of scoring the candidate solutions in the next generation is repeated. The quality of the solutions tends to improve as the evolution progresses from one generation to the next. As the genetic algorithm progresses from one generation to the next it keeps track of the best solution it has found so far. Eventually better solutions become harder to find. If a certain number of generations are processed without finding a better solution then the algorithm terminates and the best solution found so far is the result.