May 2007
Trading Tip: Pyramiding a Position
by Howard Arrington
The April 2007 issue of the Trading Tips
newsletter showed how a trading system could be designed using the Design Your Own
(DYOs) features and Study Alerts in Ensign Windows to implement the logic and
execute the trades. A training class was given on the design of the trading
system and the class
transcript can be read to better understand the trading system design.
This month's article will build upon last month's Ensign
Stochastic System to show how it can be improved by:
-
Controlling the entry price for the trades.
-
Managing the position size by adding rules for pyramiding.
The purpose for writing this article is to teach you how to do more
complex things. I am not trying to pass out 'fish'..... I am trying to
pass out 'fishing poles' and show you how the fish can be caught.
Controlling the Entry Price
In the Ensign
Stochastic trading system, there are various rules for entering a trade Long
or Short, and then various rules for exiting the trade with a profit, exiting
based on the Stochastic pattern, or exiting based on time. All entries and
exits used the Last price of the bar that created the signal.
Possibly the system could be improved by trying to get a better entry price
by one or more ticks. The issues to be researched are whether
too many trades would be missed, or whether the more favorable entry would
result in a bigger profit. So lets modify the system to test these
possibilities.
The signals to Buy and Sell will come from Stochastic %K being below 30 and crossing above 50, or being above 70 and crossing
below 50. But instead of executing the trade on the Last price of the
signal bar, lets pick a more favorable price and then have the system check
subsequent bars to see if the range of a bar covers the better price,
and then execute the trade. Some trades will naturally be missed by
holding out for a better price. Back testing will reveal whether the
system is better or worse for the attempt.

This chart shows an example of a Buy signal where the Stochastic curve was
below 30 and then crossed above 50. This signal is marked by the pale
green stripe on the chart, and the horizontal pink line is the more favorable
price I want to Buy at.
This price to enter Long is 1 tick below the Last of the signal bar. This
pink line will show on the chart sideways until it is fulfilled, which in the
example was about 7 bars later. The actual trade to be Long was performed
on the dark Green stripe at the pink line price.
Parameters
Now let me show the DYOs that implement this kind of delayed
execution at a price under our control.

This is the first DYO in the modified trading system. It is
generalizing the design by using parameters which can be adjusted for
testing. In last month's design, one of the parameters was a profit
exit being 0.0015 points on the EUR/USD forex chart. This was 15 ticks,
and it was also 15 ticks in the e-mini ES system design.
Line A is a way to generalize this parameter by first reading the Tick Size
property and multiplying it by the 15 and saving this point objective in a
Global Variable (GV). Later on when a profit objective is tested,
the contents of GV[17] can be used instead of having a hard coded profit
objective in points that is unique for a symbol. This Line A profit
objective is 15 ticks regardless of the symbol. For example, 15 ticks for
e-mini ES is 15 * 0.25 = 3.75 points.
Line B will be a general parameter of how many ticks the system is trying to
hold out for as an improved price over the Last of the signal bar. In the
example the system is holding out for 1 additional tick on the entry. For
a Long the entry price will be the signal bar's Last minus 1 tick, and for a
Short the entry price will be the Last plus 1 tick. The entry price
objective is 1 tick more favorable than just trading the Last price from the
signal bar. Edit the Line B number field to be a 2 if you want to try to
hold out for an entry price that is 2 ticks more favorable, etc.
Line C is the Top and Bottom wave count objective to control an exit of the
position. The parameter 3 was discussed in the training
class, but is put on this DYO and saved in GV [19] so we don't have to find
the wave count in a later DYO and edit it there to do testing of a different
parameter for the wave count
Lines D, E and F set the window of time when trading is permitted and were discussed in the training class and in the April
newsletter.
Lines G, H, I and J control private Global Variables. The price to Buy
at will be in GV[242]. The price to Sell at will be in GV[243]. The
number of contracts to trade is initialized to 2 and stored in
GV[201]. These GVs will be erased or initialized during the night
session when the chart is outside of the hours when signals can be taken.
The hours when trading is permitted are those on Lines D and E on this form.
Buy Signal
This is the DYO for the Buy Signal, which is very much like last
month's DYO and discussed in the training class.

Line A tests when the Stochastic is Below 50, and when this condition is
True, Line B will reset the pending Buy price in GV[242] back to
zero. This test aborts a pending buy when Stochastic is Below 50.
This DYO keeps track of the condition for the Stochastic being below
30. Line C will be a Boolean True when the Stochastic %K is below 30. This
condition is then remembered in GV[250] by Line D putting the number 1 (a
Boolean True flag) in GV[250].
The signal bar is when the Stochastic then crosses above 60 (in my
example.) For the EUR/USD chart a crossing above 60 produces better
results than a crossing above 50. The results are similar. The idea
is the same. Line E will be a Boolean True when the Stochastic %K crosses above 60.
This condition is stored in GV[6]. Line F moves the flag in GV[250]
to GV[7] for testing.
Line G is the AND operation of GV[5] AND GV[6] AND
GV[7]. GV[5] has the flag for the Time test from the previous DYO.
When all three conditions are a Boolean True, we have a Buy Signal. This
signal bar is marked by a vertical pale green stripe on Line G. And
Line H resets the Below 30 condition flag remembered in GV[250] to a Boolean
False.
Buy Price

This DYO implements keeping track of the price to Buy at, and when that price
is fulfilled, executing a Long trade. The Buy Signal from the prior
DYO was stored in GV[1] so it can be tested in this DYO on Line A.
When the bar is not a signal bar, execution jumps down to Line E and checks to
see if this bar's Low fulfills a pending Buy Price.
Lets assume we have a signal bar (pale green stripe) and thus execution
continues on Line B. Line B will read this signal bar's Last and subtract
the extra hold out point objective stored in GV[18], which was set by Line B in
the Parameter DYO. This new better price to buy at is then saved in
GB[242] and marked on the chart with a pink line.
At first glance it looks like Line C and D could be combined because their
end result is to abort this DYO. Line C first clears the signal flag
in GV[1] by doing a Not operation on the flag. This is done because GV[1]
will be used by the next DYO. Line C is clearing this flag so we do not buy on the signal bar. The signal bar just sets up a pending buy and that
still requires a subsequent bar's Low to cover for a Buy fulfillment. Line
D then aborts execution in this DYO because this is the signal bar.
Line E tests a non-signal bar to see if its Low is at or below the Buy Price
in [242]. This Buy price is moved by Line F to GV[200] for use in the next
Study Alert as a special GV that can hold the price for a Study Alert to buy at.
Line G tests the Buy flag in GV[1] which was the Low being at or below the
entry price. This is the signal to execute the Buy at our price in [242]
and in [200].
Line H tests whether we have a Buy price in place. It will be zero if
we do not have a pending Buy, as is the case from the initialization done before
the market opens. You can check the Show box on Line H to add more light green
stripes if you want a continued reminder a Buy is pending. I found that it
was sufficient just to have the Buy price continue to be shown as a horizontal
pink line and that is what Lines I and J accomplish. If the Buy Price is
non-zero, then the Buy order is pending and the Buy price shows as a pink line
on the chart, as in the example chart shown earlier.
Buy Execution

This is the Study Alert that performs the Buy action. It looks at the
flag in GV[1] which was the test for Low <= Buy Price. Note the Price
selection box in the Trading System. This selection says to use as the
trade Price the value in Global Variable [200]. This is why the prior DYO moved
the Trade price from the private GV[242] into GV[200]. The Trade
Size or Quantity will be the value in GV[201], which overrides the setting in
the Quantity spinner box.

Look at the example again now that we have run through the logic for the
Buys. Each Buy is the dark green stripe and it is preceded by a pale
green stripe which is the pending Buy signal. On the first 2 Buys the
trade bar immediately followed the signal bar.
With the pale green stripe, the intent is to buy when the market covers the Buy
price which is one tick lower than the signal bar's close. And in the
first two Buys, the following bar gave the better fill price. In the
case of the 3rd dark green stripe, we had to wait 7 bars to get the pending Buy order filled.
Do you see where I am headed with this example? Do you like the
possibilities that are being demonstrated? In my opinion, this system has
a greater resemblance to reality. You see a signal, place a Limited Buy
order, and wait for the order to be fulfilled.
Sell Signals
Now, I do the same thing for the Sell signal being pending with the pale red
stripe and the actual Sell being accomplished with the dark red stripe.
The Sell price is 1 tick above the signal bar's Last price. Fulfillment
does not happen on the signal bar, but rather may happen on a subsequent bar.
The 3 dark red stripes in the example all fulfilled on the bar following the
signal bar for going Short.
Between 10:00 and 10:30 we have a red stripe that is medium dark, and this is a
marker for one of the exit signals at a profit objective. The dark red
stripe at 10:00 sold 2 short, and the medium red stripe 3 bars later lifted one
contract at a profit objective. The profit objective exit still uses the
Last of the bar it exits on. This exit on the profit objective is based on
the bar's close, which can be greater than the 15 points set as the minimum for
a profit objective. The exit on the medium red stripe was the close of
that big down bar. The exit on a profit objective is the same as discussed
in
the April newsletter.
The example also shows an orange stripe at 11:20 which is the exit of the 2nd
contract from the Short at 10:00. This exit is based on the Stochastic
climbing above 70 while the position is short.
The bar ahead of the orange stripe is a signal for a pending Buy. In
the April newsletter design, that signal would have exited the Short and put on
2 Long contracts. With the change to hold out for a better entry price,
the exit was triggered by one of the conditions to abort a trade which seems to
be going the wrong way. So the 2nd contract of the Short was exited
at the orange stripe. The abort for a wrong way Stochastic still use the signal
bar's Last price. I did not want to monkey around with the safety
net. If you get a signal to abort, just do it. Trying to hold out
for a better price when exiting might be hazardous. I am only holding
out for a better price on Entries. If I miss the entry price all that
happens is I am left on the sidelines waiting for the next train to leave the
station. I can live with missing a trade because I still have my
capital in hand to trade with. For an exit signal based on Stochastic
being the wrong way, and for a Time of day exit, etc, just exit on the signal
bar and use the Last as the exit price.
Trade Detail
Click menu Charts | Trade Detail. This shows a summary of the trades
made by the Ensign Stochastic System. Let me show you a summary from the
April newsletter's system so I can compare it with the modification that attempts
to get a better price.

The form above shows the results of using the system designed in the April
Trading Tips newsletter, which executes all trades at the signal bar's Last
price. The key numbers of interest are the Account Balance of $11,000 and Total
Trades of 264.

This 2nd summary is for the new system that tries for a 1 tick better fill
price for Entry on trades. Note the improvement in the profit is
$1800. Profit is $12,800 versus $11,000. The Total trades is
243 instead of 264, so it must have missed taking some trades. That was to
be expected. Looks like it missed 20 out of 264 trade, or about 8% of the
time. However, since the profit improved, I consider this a good
thing. It missed mostly losing trades by dropping Losers from 115 to 97.
The Average Trade in the prior form was $41, and now it is $52. That
is about the size of 1 tick of added profit on each trade. So the
average profit increased, as would be expected since the system holds out for a
better fill price.
Since the system has a Parameter DYO where the number of ticks to hold out
for can easily be change, my next test waits for a fill price that is 2 ticks
better than the signal bar's Last price.

The Line B Number field has been changed to be a 2, instead of a 1. Now
the system will try for a two tick better price (lower price) on a Buy and
(higher Price) on a Sell.

The number of trades dropped to 217 from 243, so many more trades were
missed. These missed trades affected the profit more than was made
up by the added tick in the profit of profitable trades. It is wonderful
for the system to find these answers. Possibly more trades were exited at our
abort conditions as was illustrated in the chart earlier at the orange
line. That one example showed the exit of the short trade was at a worse
price, and offset the benefit of trying to get a Buy at a better price. I
will return the parameter back to a 1.
This research tool is giving you the fishing pole so you can do more research in
this area of adjusting the entry price.
Pyramiding a Position
Now lets move on to the 2nd improvement in the trading system design by managing
the size of a position through pyramiding. I will leverage on the
system design shown so far, and keep the improvement of holding out for a 1 tick
better price to Enter positions.
Twenty five years ago when I was first searching for the Holy Grail, I
observed that a good winning trade often was preceded by a losing trade.
And this is a big CLUE that I have not seen in publications anywhere, so let me
emphasize it by discussing it.
We often look for good markers, clues or signals for when to make a trade.
Yet, we emotionally do exactly the opposite of what we should be doing.
When we experience a losing trade, the natural reaction is to be hurt,
recoil, and say I am not going to do that again. Then when we have a
winning trade, we get too confident and trade a bigger position and then get
really hurt, and start all over again.
As a kid I would play a game called 'double or nothing'. If I was trying to
take my brother's money, and I had lost to him, I would say double or nothing,
and we would flip the coin again. Eventually I won and would erase my
debt. Now think about that simple example of double or nothing. If
you have been a winner, you will eventually lose and return to zero. If
you have been a loser, eventually you will win and return to zero. 'Double
or nothing' is a form of Pyramiding, but as a child I did not know that big word
existed.
Pyramiding Theory
Let's apply the principle, however, to the trading system design. I can
show you it works in a moment. First I need to set out a ground rule and
discuss the theory of why it works. Lets go back to a classic wave
model where a trend unfolds in waves that we can generalize as Trend - Reaction -
Trend - Reaction - Trend. This is the Elliott 5-wave pattern, which I will
shorten to the notation T-R-T-R-T.
The Ensign Stochastic system, and most systems, are able to extract a
profitable trade during a trend or the T wave. But, what follows a T wave most of the
time??? It is a reaction wave or a correction wave which I show as
an R wave. Most of the losing trades happen in the R wave. And then
being bruised we emotionally are on the sidelines just when the next T wave is
starting. Instead, we should recognize that T follows an R, and
statistically, the best time to pocket a winning trade is following an R wave.
DO YOU SEE THAT? If I can share any key concept in this article, it is
this concept about T_R_T_R_T patterns. The probability of a winning
trade is greater following an R wave, or following a losing trade. So,
lets put that characteristic into our system
If we have a winning trade, assume it was in a T wave, and we should reduce our exposure for the anticipated R wave due next. Now it might be T-T pattern at
a nice V top or V bottom turn. The market might be starting a whole new
trend and that would be the case after a 5th wave starting a new 1st wave, for a
T-T pair. So we do not want to be out of the market. We just want to
manage the risk better by having a reduced exposure since an R wave follows a
T wave more often than T follows T.
The first rule will be: If the last trade was a winner then reset our
trade size to the default of 2 contracts. This is the size used in
the system shown above. A new trade was initiated with 2 contracts, and
then had options to lift one contract at a profit objective and let the 2nd
contract run its course to be exited by Time or by a Stochastic pattern.
In the pyramid model, I will begin with 2 contracts, and return to trading 2
contracts after a winning trade. But after a losing trade, my hypothesis
is that I will have a higher likelihood of having a winning trade because T
follows R more often than R follows R. After a losing Trade,
assume it was because of an R wave, and a trend wave will follow.
Therefore, we should trade a bigger position. The 2nd rule will be:
After
a losing trade, increase the position size by 1 and trade 3 contracts. If
we lose again, increase position size by 1 again and trade 4 contracts.
Some of the abort signals such as the wrong way Stochastic are good
indicators too, like a strength of signal or quality of signal indicator.
After these abort signals, lets increase the size by 2 instead of by 1.
Buy Size
Let me show the DYO that implements the pyramiding rules.

Line A will see what the current trade's profit is in points. All I
really care about is whether it is a winner or a loser, so the points are
compared to zero by Line B. This profit or loss flag is saved in GV[2] by
Line B.
Remember, GV[1] has our flag to execute a trade, such as the pending Buy
signal was Low <= Buy Price. When the current trade is showing a
loss, and we are ready to do a Buy Signal, Line D will increment the trade size
amount stored in a private GV [201].
This trade size was initialized to be a 2 before the trading day began, and it
is also reset to a value 2 after any winning trade.
Lines E, F, and G perform the reset when the current trade is profitable, and
there is a signal to Buy in GV[1]. Line G, when the
flag is True will read the number 2 from the number field, and write it to
GV[201], otherwise leave GV[201] alone.
So in summary, Lines A, B and C will increment the size to trade when the
current trade is a loser, and Lines E, F and G will reset it back to a value of 2
when it is a winner.
Lines H and I do a little visual of showing this trade size or quantity on the
chart on the stripe for the trade execution.

This chart is an example of the Pyramid system in operation. The first
trade was a Buy and the buy size was 2 at 7:40. Then at 8:20 there is a
Sell signal and execution. The Long trade was
unprofitable so the Short used a position size of 3 instead of 2.
There is a Buy signal at 9:30, and underneath that pale green stripe is an
orange stripe for the bail out of a short with Stochastic above 70. The
bail out found the position was a loser, and incremented the size by 2, so a
Long trade of 5 was put on.
The 10:00 signal was to go short, and the last trade was again a loser, so
it traded 6 short. Wow, what discomfort in having 3 losing trades in a
row, though they were all small losses. However, there is joy in being
loaded up for the only good trend in the day.
At each of the medium red stripes, a profit objective is met, so that signal
removes one trade at the bar's close. The system removed one trade at 5
different bars at 5 different bar closes. These happen to be some pretty
nice exits into the bottom of the plunge.
After 10:35 the system still has 1 Short on, and this was exited at the
orange stripe, (the Stochastic above 70 abort rule), but still at a very nice
profit. Then the green Long trade is following a profit and the trade size
is set back to 2. The red Short at 12:00 is after the green profit (small
one) so trade size stayed at 2., and then was closed out at the abort rule for a
small loss.
Now that you understand the theory behind the idea, and see its
implementation, I need to show you the Study Alert for the Buy.

Note the Signal to buy is still the GV[1] as discussed in the first part of
this article. The Price selection shows the Price is to be found in
GV[200] and the Quantity is to be found in GV[201]. This selection will be
an override of the Quantity spinner box. I use this selection so I can
have the DYO manage the trade quantity, and disregard the Quantity spinner
setting on the Study Alert form. Now it makes more sense why in the last
DYO shown I did the increment or reset for the trade size in GV[201].
Pyramid Trade Details
Now lets look at the trade detail summary for the Pyramiding system.

The Profit has jumped from $12800 in the system from the first part of the
article to $23,062. This is an excellent improvement. The system did not
really increase the trades from 243 to 265. All it did was change the sizes in
the trades. The count increase is due to more trades being lifted one at a
time, like the example just discussed, and each lifted trade occupies a
separate line in the ledger.
For example, ledger Line 7 was a loss of $75. Lines 8, 9, and 10
are the 3 contracts traded in the next trade started at 14:15 but lifted at
different times. One was lifted at 14:20 on a profit exit. One was
lifted one bar later at 14:25 on a profit exit. The 3rd contract was
removed at 16:00 on an end of day time exit rule. See the Entry and Exit
times for the trade in the Notes field.
The Pyramiding model that can trade a bigger position, such as 3 contracts,
may use more lines in the trade details ledger to show how these contracts were
resolved.
Today's Change
The value on the Today's Change shows the change in the Account balance for
the trades made just today. The account was at $23,686 yesterday.
The system was doing fine today (May 9th, 2007), until it got caught on a whip lash into the
plunge. Let me show the trades for Today's Change of -$625.

The system was short 3 contracts at 13:30, and the Stochastic poked its head
up over 50 on that nasty little poke bar at 14:20. That primed the system for a
pending Buy, which was filled by the plunge bar at 14:25.....ouch..... bad stuff
happens...... and no trading system is immune to it.
The prior example showed being loaded up and on the right side of the plunge,
and how the system lifted trades on profit exits. This example shows being on
the wrong side of the plunge. But it came so close to being on the right
side.... if only that Stochastic value had stayed below 50 it would have been
short. Or if the Stochastic had not gone below 30 ahead of that it would
not have had the Buy setup signal.
However, if I try to tweak the system in hindsight to make a better trade for
today's plunge, I do so at the risk of worsening the system for other
days. The beauty of back testing is you can adjust parameters and
see the effect on everything, and not just the effect on the one case you are
staring at. I have to show the system as designed, and today was a punch in the
eye. Still the system shows a handsome profit for 6 weeks of back testing. I am not worried..... just bruised a bit from today.
I have confidence the system will recover today's losses.
Wrong Way Exit
You may want to add rules to manage a protective stop for a runaway
market. The abort rule for being the wrong way was watching Stochastic
being above 70 when Short or being below 30 when Long. In the example,
this
rule aborted the Long position on the orange stripe 4 bars after the plunge.
You would add a DYO that implements more rules for an exit
on a loss, similar to the logic for an exit on a profit objective. However, it
would not have helped this particular example much because the bar to Buy just
happened to be the plunge bar and the system might not have tested your
protective stop until the next bar since it is a Close Only option on all the
DYOs.
Back Testing
Back testing is across all data in the chart file, and my chart file example
had data from March 21st. That was sufficient for me to get some
results. If the file were twice that size, I could expect to have twice as
many entries in the Trade Detail ledger. Also a bigger file takes longer to
calculate, and these
DYOs and Alerts can be CPU intensive. Therefore, when designing I
make frequent changes to the property forms and do not want to wait a long time
for each change to recalculate. I clipped the file by deleting bars ahead of March 21st. I
try to be practical about the file size as I
research ideas and implement them.
The reason for having the Close Only option checked is that in hindsight I
cannot execute signals intra-bar. In hindsight I can only see where Stochastic
ended on the bar, for example. So to match the same model for real-time
you should have Close Only checked so the signals like Stochastic are checked
only on the close of the bar. Stochastic might have gone above 70 intra-bar and then been below 70 at the
end of the bar. You would not want that momentary move above 70 to affect your
trade results.
Also, I would not use (H+L)/2 as an entry or exit price because
the results will typically be biased and you cannot get the fill price. For example, in a down move, the signal might be to go short when Stochastic
is lower. Stochastic will be lower when a close is on the bottom of the bar, and
the average of the range would statistically to be a more favorable price to sell
Short at than the bar's Last price. So use the price nearest the
calculation, which is Last for a Close Only evaluation, or use the ideas shown
in this article where you pick your price and then watch to see if you are
fulfilled on a subsequent bar.
The Pyramid trading system can be downloaded as a template from the Ensign
web site using the Internet Services form. The template has been saved
as EnsignPyramid.
No warranty is made that future results will match the results shown in this
article. The trades shown in the article are hypothetical, and no
deduction has been made for commissions or slippage.
|