abstract = "Genetic programming (GP) is an optimisation technique
useful in forecasting. GP software is available freely
on the Internet or can be purchased commercially. Free
software demands advanced programming skills, while
commercial software may be expensive. This paper
introduces TSGP software developed to forecast time
series. It is free to download with instructions, works
in windows environment, is user-friendly, does not
require programming skills, delivers comprehensible
output, and reports statistics a time series analyst,
statistician, or econometrician finds desirable. This
introduction benefits forecasting researchers and
practitioners. Genetic programming (GP) emerged in the
late 1980s and early 1990s. Koza was first to introduce
a formal description of the technique. GP applies to
many optimisation areas including modelling time
series. Unlike other modelling techniques, GP is a
computerised search for specifications that replicate
patterns of observed series. Users of GP software
provide input files containing mathematical operators
and values of variables. The program is designed to
randomly assemble specifications of equations until it
finds the best one. That equation, its fitted values,
residuals, and evaluation statistics are written to
output files. Such automated search for specifications
makes GP an attractive algorithm. TSGP stands for time
series genetic programming. The software is available
at HYPERLINK (broken June 2020
http://www.compumetrica.com ).
It is an expansion of a code in Koza's 1990 GP book
written in LISP that was converted to C by Andy
Singleton in 1994. TSGP gets its instructions from a
configuration file containing self-reproduction,
crossover, and mutation rates, names of input
variables, population size, number of generations,
minimum threshold error (set at 0.0001), and operators
(including standard ones: +, -, *, %, and sqrt, where %
is protected division as well as two other sets the
user selects from: set 1: sin and cos; set 2: ln and
exp). In addition to protected division, the program
also contains these protections:
If in (x(y), y = 0, then (x/y) = 1.
If in y1/2, y < 0, then y1/2 = -| y|1/2.",