A real

time adaptive trading system
using Genetic Programming
QF5205 : Topics in Quantitative Finance
Donny Lee
Nadim Mouchonnet
Summary
1.
Introduction
2.
Genetic Algorithm and Genetic Programming
3.
Trading System
4.
Genetic Program
5.
Results
Introduction
•
Many traders use indicator based trading rules
•
… but they may be loss making (see chart)
•
Double Objective
Create a system than trades and make profit
Emulate the behavior of a technical trader
Motivation:
“Can a technical trader consistently make a profit?”
and “should a technical trader or trading system
adapt to market conditions or is it better to use a
static system?”
Introduction(2)
•
Results using only a single strategy,
backtested
on
historical data.
•
Stochastic strategy: Buy when indicator crosses the
20% mark from below and sell when it crosses the
70% mark from above.
•
Simple moving average strategy: Buy when the slow
lag (50 day look back) crosses the fast lag (20 day
look back) from below and sell when vice versa.
Introduction(3)
•
Using the stochastic strategy on SIA stock from 02/11/10 to 08/26/10.
•
Loss is $0.30
.
Introduction(4)
•
Using the SMA strategy on KEP stock from 02/11/10 to 08/26/10.
•
Loss is $0.27.
Introduction(5)
•
Using the GBPUSD for a period of 3 months
•
Bloomberg can summarize a whole bunch of strategies
Introduction(6)
•
Using the GBPUSD for a period of 3 months
•
Parabolic SAR
Genetic Algorithm and Genetic Programming (1)
•
GA is an iterative system
•
… aiming to find near

optimal solutions
•
… to multi

extremal
problems
•
… by imitating the process of evolution
•
Rule is : SURVIVAL OF THE FITTEST
Genetic Algorithm and Genetic Programming (2)
•
GA representation consists of binary strings of
fixed length.
•
Search space is finite
•
GA needs to be initialized …
•
… by random sampling
•
Difference between GA and GP is that GP
allows string length to vary within the solution
space.
Trading System : Data
•
Analysis carried out on spot FX ticks for
GBP/USD from CQG Data Factory and Future
Source from 1994 to 1997
•
CQG : gathered from various FX brokers
•
Future Source : live feed from the Omega
TradeStation
utility (major banks FX quotes)
•
Got bid and ask and transforms them into mid
•
Data aggregated into OHLC
Trading System : Software
•
Imitating the technical trader i.e. chooses technical
strategies from a range of popular trading rules
•
GP based rule selection engine choosing combinations
of such strategies
•
Cash management filter exits strategies when losses >
user

defined threshold
•
Each
backtested
strategy returns : Profit, max
drawdown, Modified
Stirling
ratio, number of trades
•
Transaction costs are taken into account with various
slippage depending on trading time
Trading System : Software
Trading System : Strategies
•
6 Rules used : simple moving averages crossover,
adaptive moving averages, price channel
breakout, stochastic, relative strength index,
commodity channel index
•
3 Connectors : AND / OR / XOR (00/01/10)
•
System rules allowed to use different
frequencies/lags
•
Strategies ranked by
stirling
ratio (when return is
positive) or by absolute return when negative.
Genetic Program
•
Representation of a strategy.
•
A strategy of ours can be represented graphically.
Genetic Program(2)
•
From a graphical understanding of a strategy, we can translate
to a strategy structure. or a binary string representation.
Genetic Program(3)
•
Or
a
binary
string
representation
.
Genetic Program(4)
•
This
is
essential
as
we
ultimately
need
to
convert
our
strategy
into
a
binary
string
for
our
GP
to
work
.
Each
strategy
can
be
written
in
the
form
RULE

CONDITION

CONNECTOR

RULE

CONDITION

CONNECTOR

………

ACTION
Genetic Program(5)
•
From
there,
we
can
form
our
binary
string
representation
for
our
GP
.
I
.
e
.
,
consider
the
rule
“BUY
if
AMA
TRUE
AND
CCI
FALSE
OR
RSI
TRUE”
It
would
be
represented
in
binary
as,
1000011111
Genetic Program(6)
•
Now
with
each
strategy
represented
as
a
binary
string,
we
perform
the
following
in
each
iteration
.
1.
Initialize
population
2.
Calculate
Fitness
3.
Crossover
4.
Mutate
Genetic Program(7)
•
We
initial
the
population
with
a
certain
number
of
strings
which
will
represents
the
strategies
we
will
use
.
1.
Assume
there
are
a
maximum
of
k
included
indicators
and
a
minimum
of
j
.
We
may
construct
rules
from
a
total
of
I
indicators
.
2.
Generate
U
uniform
pseudo

random
integer
variables
V
where
1
<=
V
<=
I
.
For
indicators
to
be
used,
we
write
a
‘
1
’
in
the
structure
part,
otherwise
a
‘
0
’
.
3.
Generate
U
uniform
pseudo

random
binary
variables
corresponding
to
the
indictor
bit
for
each
indicator
.
4.
Assume
there
are
C
connectors
allowed
.
For
each
indicator,
we
generate
a
fixed
width
binary
of
D
(
1
,
C
)
and
write
it
next
to
the
corresponding
indicator
bit
.
Genetic Program(8)
•
At
each
trial
over
a
user

defined
period,
each
of
these
strategies
is
tested
by
simulating
their
trading
performance
over
historical
data
.
•
There
are
many
ways
to
assess
performance
.
The
Stirling
ratio
–
profit
divided
by
maximum
drawdown
–
is
often
used
by
traders
to
assess
performance
.
•
For
Crossover
and
Mutation,
we
would
pick
a
strategies
with
a
certain
top
%
in
their
Stirling
ratio
.
Genetic Program(9)
•
Crossover
is
the
process
of
cutting
strategy
string
pairs
at
points
and
exchanging
tails
and
heads
to
make
a
new
a
pair
.
•
Only
the
best
s
%
are
considered
for
crossover
.
For
those
strings
rank
i
,
the
probability
of
selecting
this
string
is
•
A
cut
point
is
selected
uniformly
pseudo

randomly
and
‘head’
and
‘tail’
parts
are
exchange
.
Genetic Program(10)
An
example
of
a
Crossover,
suppose
the
following
two
pairs
of
strings
are
selected
along
with
a
uniformly
distributed
random
number
:
1010001010
and
1100111100
and
3
0100100111
and
0001101110
and
8
Crossover
:
1010001010
and
1100111100
becomes
1100001010
and
1010111100
0100100111
and
0001101110
becomes
0100100110
and
0001101111
Genetic Program(11)
•
Mutation
is
the
process
of
randomly
changing
appropriate
bits
in
a
strategy
string
and
is
executed
in
a
bitwise
manner
.
•
Elitist
model
:
top

ranked
5
%
of
strings
are
not
mutated
.
•
Number
of
strings
mutated
=
Mutation
Rate
x
No
.
of
Strings
.
•
M
uniform
pseudo

random
integer
are
generated
between
1
and
B
,
length
of
each
string,
without
replacement
.
•
Each
corresponding
numbered
bit
is
then
mutated
(‘
0
’
becomes
‘
1
’
and
‘
1
’
becomes
‘
0
’)
Genetic Program(12)
•
Example
of
a
mutation
.
•
Strings
are
of
length
10
and
four
pseudo

random
integers
are
generated
and
arranged
in
ascending
order
–
3
,
5
,
7
,
8
.
•
The
following
strings
are
mutated
as
follows
:
1010001010
becomes
1000100110
1100111100
becomes
1110010000
0100100110
becomes
0110001010
0001101110
becomes
0011000010
Genetic Program : Summary
Step 1
•
Initialize : Generate 100 strategies randomly
Step 2
•
Crossover strategies using 50% of the best strategies
Step 3
•
Mutate the strategies outside the best 5%
Step 4
•
Repeat Steps 2 & 3 until convergence of the solutions
Results : Test
•
Step 1 : In Sample
backtesting
using 15

minute data used to determine the 20 best
strategies during Q1 1994
•
Step 2 : Out Sample trading using the best 20
strategies over the next quarters and assess
the performance in live trading conditions
Results : Improvement of solutions (1)
Results : Improvement of solutions
(2)
Results :
Profit
Results :
Further work
•
Periodic
reoptimization
as performance
decreases as time out of sample increases
•
Parallel optimization
Our experience
•
Unsuccessful Programming in the Java
framework
•
1 solution : using the Technical Analysis tool of
Bloomberg’s Excel Add

in
Comments 0
Log in to post a comment