July 2003Research:
Dances of the Planets by Howard Arrington
The planets in the heavens move in exquisite orbital patterns,
dancing to the Music of the Cosmos. There is more mathematical
and geometric harmony than we realize. The idea for this
article is from a book Larry Pesavento shared with me. The
book, 'A Little Book of Coincidence' by John Martineau,
illustrates the orbital patterns and several of their geometrical
relationships. .
Take the orbits of any two planets and draw a line between the
two planet positions every few days. Because the inner planet
orbits faster than the outer planet, interesting patterns
evolve. Each planetary pairing has its own unique dance
rhythm. For example, the Earth-Venus dance returns to the
original starting position after eight Earth years. Eight
Earth years equals thirteen Venus years. Note that 8 and 13
are members of the Fibonacci number series.
- Earth: 8 years * 365.256
days/year = 2,922.05
days
- Venus: 13 years * 224.701 days/year =
2,921.11 days (ie. 99.9%)
Watching the Earth-Venus dance for eight years creates this
beautiful five-petal flower with the Sun at the center. (5 is
another Fibonacci number.)
Another intriguing fact is the ratio between the Earth's outer
orbit and Venus's inner orbit is given by a square.
In the following dance patterns, the planet pairing is given and
the number of orbits of the outer planet. Enjoy these
beautiful patterns.
Let me share with you other facts about cosmic harmony. The
radius of the Moon compared to the Earth is three to eleven, ie.
3:11.
-
Radius of Moon = 1,080 miles = 3 x 360
-
Radius of Earth = 3,960 miles = 11 x 360
= 33 x 1 x 2 x 3 x 4 x 5
-
Radius of Earth plus Radius of Moon = 5,040
miles = 1 x 2 x 3 x 4 x 5 x 6 x 7 = 7 x 8 x 9 x 10
The ratio 3:11 is 27.3 percent, and the orbit of the
Moon takes 27.3 days. 27.3 days is also the average rotation
period of a sunspot. The closest : farthest distance ratio
that Venus and Mars each experiences in the Mars-Venus dance is
incredibly 3:11. The Earth orbits between them.
The sizes of the Moon and the Earth 'Square the
Circle' as shown in this illustration, which is drawn to
scale. The perimeters of the dotted square and the dotted
circle are the same length.
The perimeter of the dotted red square is 4 x Earth's
diameter = 4 x 7,920 miles = 31,680 miles. The
circumference of the dotted blue circle is 2 pi x radius = 2 x 3.142
x 5040 miles = 31,667 miles. (ie. 99.9%)
ESPL:
Dances Program by Howard Arrington
The dance patterns were drawn by the following ESPL program using
a chart window for the canvas. The chart bars and grid were
hidden so the canvas was blank. Edit the Planet1 and Planet2
variable values to select the planet pairing, with the planets
numbered beginning with Mercury = 1.
var {global variables} i,c,Planet1,Planet2:
integer; Planet1Year,Planet2Year: real;
Planet1Radius,Planet2Radius: real; Interval,Orbits:
real; yBottom,yCenter,xCenter: real;
a1,a2,a1Interval,a2Interval: real; r,r1,r2,rStop:
real; x1,y1,x2,y2: real;
function Year(i: integer):
real; {orbital period in days} begin
if i=1 then Result:=87.969 else if i=2 then
Result:=224.701 else if i=3 then Result:=365.256
else if i=4 then Result:=686.980 else if i=5 then
Result:=4332.6 else if i=6 then Result:=10759.2
else if i=7 then Result:=30685 else if i=8 then
Result:=60190 else if i=9 then
Result:=90465; end;
function Orbit(i: integer):
real; {mean orbit distance in 10^6
km} begin if i=1 then
Result:=57.91 else if i=2 then Result:=108.21
else if i=3 then Result:=149.60 else if i=4 then
Result:=227.92 else if i=5 then Result:=778.57
else if i=6 then Result:=1433.5 else if i=7 then
Result:=2872.46 else if i=8 then Result:=4495.1
else if i=9 then Result:=5869.7; end;
function Name(i:
integer): string; begin if i=1 then
Result:='Mercury' else if i=2 then
Result:='Venus' else if i=3 then Result:='Earth'
else if i=4 then Result:='Mars' else if i=5 then
Result:='Jupiter' else if i=6 then
Result:='Saturn' else if i=7 then
Result:='Uranus' else if i=8 then
Result:='Neptune' else if i=9 then
Result:='Pluto'; end;
begin {main program}
Planet1:= 3; {select outer planet} Planet2:= 2; {select
inner planet} Orbits := 8; {number of outer
rotations}
Planet1Year := Year(Planet1);
Planet2Year := Year(Planet2); Planet1Radius :=
Orbit(Planet1); Planet2Radius := Orbit(Planet2);
Interval := Planet1Year/75; {days}
FindWindow(eChart);
yBottom:=PriceToY(GetVariable(eScaleLow));
yCenter:=2+yBottom/2; xCenter:=100+yCenter;
r1:=yCenter; {outer radius}
r2:=r1*Planet2Radius/Planet1Radius; {inner radius}
r:=0; rStop:=Planet1Year * Orbits; a1:=0;
a1Interval:=2*pi*Interval/Planet1Year; a2:=0;
a2Interval:=2*pi*Interval/Planet2Year;
SetPen(clBlue); {print labels}
TextOut(120,10,Name(Planet1));
TextOut(120,30,Name(Planet2));
TextOut(120,yBottom-30,inttostr(Orbits)+' orbits');
while r<rStop do begin
i:=trunc(r/interval/75); {use different color each
orbit} if i=0 then
c:=clBlack else if i=1 then
c:=clBlue else if i=2 then
c:=clRed else if i=3 then
c:=clGreen else if i=4 then
c:=clPurple else if i=5 then
c:=clMaroon else if i=6 then
c:=clNavy else if i=7 then
c:=clDkRed else
c:=clOrange;
SetPen(c,1,eSolid,pmCopy); a1:=a1-a1Interval;
{angle1} a2:=a2-a2Interval;
{angle2} x1:=r1*Cos(a1); y1:=r1*Sin(a1);
{convert polar to rectangular coordinates}
x2:=r2*Cos(a2); y2:=r2*Sin(a2);
MoveToLineTo(x1+xCenter,y1+yCenter,x2+xCenter,y2+yCenter);
{draw line} r:=r+Interval; {move around
outer circumference} end; end;
Research:
The Art of Optimizing by
Howard Arrington
I recently designed a trading system in Ensign Windows using a
few Study Alerts to implement the Buy, Sell, and Exit rules.
The system was simple wherein it used a Parabolic Stop study to
determine market direction, and would buy retracements in an uptrend
and sell retracements in a downtrend. The system would exit
any position when a scalp objective had been achieved, or when a
protective stop was touched.
This trading system had 4 adjustable parameters:
Parabolic Acceleration Rate, Stop Size, Scalp Size, and Retracement
Size. After several quick guesses for each parameter's
setting, the test results implied that the system was most sensitive
to the parameters in the order as listed. It seemed
logical that the parameters should be optimized in the order of
their sensitivity from most sensitive to least
sensitive. Therefore, the first step of optimization was
to pick 'in-the-ballpark' parameter values for the other parameters
while the Parabolic Acceleration Rate parameter was adjusted in
small increments.
The training data set consisted of 10 consecutive days of day
session 2-minute bars for the Emini futures contract.
These 10 days included a variety of market conditions such as
trending days, sideways choppy days, several large opening gaps up
and down, and occasional periods of wild volatility. The
10-day period seemed sufficient for the purpose of finding
appropriate parameter values. All results are for trading 1
Emini contract with no deduction for commissions or slippage.
To optimize the Parabolic Acceleration Rate, values were adjusted
from 0.35 through 0.65 in increments of 0.05 while the other
parameters were fixed at these values:
Stop Size = 6 points Scalp
Size = 7 points
Retracement Size = 2 points. The worst
results were $812 profit on 44 trades using the 0.35
setting. The best results were $3887 profit on 49 trades
at the 0.50 setting.
The protective Stop Size was optimized by testing values from 1
point through 10 points in 1 point increments. Scalp
Size and Retracement Size remain unchanged. The Parabolic
parameter used the 0.50 setting. The worst results were $3337
profit on 54 trades using the 3 point Stop. The best results
were $3900 on 49 trades using a 7 point Stop.
The Scalp Size was optimized by testing values from 1 point
through 10 points in 1 point increments. The other parameters
used were these values: Retracement Size = 2
points Stop Size = 7
points Parabolic =
0.50. The worst results were $2312 profit on
100 trades using a 1 point scalp objective. The best results
were $4500 on 58 trades using a 5 point scalp objective.
This result would lend support to Larry Pesavento's claim that a
natural harmonic swing size of 5.40 points exists in the S&P and
ES markets.
Finally, the Retracement Size parameter was optimized by testing
values from 1 point through 5 points in half point increments.
The worst results were $62 profit on 5 trades using a 5 point
retracement requirement. The best results were $4775
profit on 64 trades using a 1.50 point retracement size.
The following example shows the trading system in operation using
the optimized parameter values.
Just prior to 9:00 a downward move in the market
reversed the Parabolic Stop study to a down trend as indicated by
the falling Red curve. The retrace that followed
exceeded the Retracement Size requirement of 1.50 points, so the
system sold Short and used as its fill price the Close of the bar
marked by the 1st Red dot. The Scalp objective of 5
points was achieved 50 minutes later so the system exited this Short
trade and used as its fill price the Close of the bar marked by the
Blue X. During this Short trade, the protective Stop was
7 points away from the entry price and marked on the chart with a
horizontal blue line.
After this successful scalp trade, the retracement
requirement was satisfied again while the Parabolic was still in a
down trend. The system sold Short a 2nd time at the 2nd Red
dot near 10:00. The market did not continue lower as
expected, but rose to trigger a reversal of the Parabolic Stop to an
uptrend indicated by the rising Green curve. A retracement in
the uptrend initiated a Buy signal. Therefore, the Short trade
was closed out at a loss and a Long trade was initiated using as its
fill price the Close of the bar marked by the 1st Green
dot. This long trade was successful and existed at the 5
point scalp objective marked by the 2nd Blue X near the swing
top. A 2nd long trade was initiated on the retracement
marked by the 2nd Green dot.
Once optimized values were determined for each of the parameters,
a quick recheck was done of each of the parameters to see if they
had shifted in either direction now that better parameters were
known for the others. The values determined above
remained the optimal settings. Perhaps it was just
coincidence, and perhaps it was because the initial
'in-the-ballpark' values were close to the optimized
values. The system has been tuned to optimal performance
(at least for the past 10 days) using these values:
Parabolic = 0.50 Stop Size = 7
points Scalp Size = 5
points Retracement Size = 1.50 points.
The system was run the next day with 3 successful scalps and 2
losses. The net for the 5 trades added another $385 to the
total profit.
The next step in the evolution of the system was to examine each
of the 64 trades that generated the $4775 profit in the 10-day
trading data set. The general statistics showed that there
were 37 winners (58%) and 27 losers (42%). While some of
the parameter combinations generated win/loss percentages as
favorable as 80/20, the profitability was always lower because fewer
trades were taken. For some traders, that would be a desirable
characteristic. For this optimized system the Average Winner
was $180 and the Average Loser was $70. Both of these
numbers are very good. The Average Trade Profit was $75, which
is sufficient to pay for a round trip commission and tolerate a tick
slippage.
The examination of the trades showed that 7 times the system was
in a position at market close and carried the position
overnight. The effect of holding the position overnight was
surprisingly favorable with 6 winners and 1 loser with these point
totals: +10, +7, +2, +7, +3, +2, and -7 points for the only
loser. Thus the overnight effect added 24 points or $1200 to
the overall system profitability. This was an unexpected
result, but the 10-day data set included several gap openings, and
the system happened to be on the right side of those gaps 6 out of 7
times.
The system was modified to exit any position at market close so
no position was held overnight. This would be a characteristic
preferred by day traders, and the overall system performance was
less profitable as expected.
The overnight effect was intriguing and generated the need to
test that idea as a separate trading system. So, in a matter
of minutes, Study Alerts were configured to Buy the Close of the day
session if the Parabolic Stop was Long, and Sell the Close of the
day session if the Parabolic Stop was Short. This simple
system would exit on the Close of the first 2 minute bar of the
following day's day session open. That's it.
One trade per day, either buying or selling the last bar of the day
session and exiting the following day on the first bar of the next
day session. The system had a $2300 profit on 9 trades for the
10-days in the test data set.
Now, do any of my ideas and numbers represent the 'Holy Grail' of
trading systems. Absolutely not. The purpose of
this article was to walk system designers through the thought
process of how parameters that define a trading system might be
adjusted a maximize a system's performance across a test data
set. Some may wish to maximize the win/loss ratio, while
others (myself included) prefer to maximize the total dollar profit
as long as the trading frequency is not excessive. For my
simple system, 64 trades in 10 days is a trade frequency of 5 to 8
trades per day session, which is realistic for a scalping system.
Here is a example Trade Ledger that logs the details of each of
the trades taken by the system. The form shows some of the
statistics used to evaluate whether one set of parameters is better
or worse than another set of parameters. The Notes field shows
the Time of day the trade was executed.
Note: If you have Ensign Windows and wish to experiment
with this trading system, it can be downloaded from the Ensign web
site using the Internet Services form in Ensign Windows. Open
the Internet Services form and click the Upgrade tab. Click
the Connect button. Then select the Template bullet and the
July24th name in the template list. Click the Download
button to put the system on your computer. Enjoy.
Disclaimer: Past performance is no guarantee of
equivalent future performance. All results in this article are
hypothetical and do not include commissions and slippage
penalties. This system was optimized for a particular 10-day
period of time and designed with the benefit of
hindsight. Results from the system with any other data
set, past or future, will in all likelihood be less
impressive. No representation is being made that any account
will or is likely to achieve the profits or losses similar to those
shown. This trading system is being shared solely for its
educational value and should not be a basis for placing actual
trades. |