|
BOND SIX PACK SYSTEM -
By Bill Brower
Published in the Jan/Feb 98 issue of TS Express - Copyright 1998 - All rights reserved
Readers of this periodical know that I have been critical of seasonal systems.
Seasonality,
in the most classical sense, involves buying or selling at predetermined
times identified by
the trading day of year. Unfortunately, seasonality has been shown to
lack consistency.
Sheldon Knight demonstrated this in an exhaustive piece of research
which has been
presented to the attendees of several Futures Conferences.
However, from time to time I revisit the concept. Recently, I wrote a seasonal indicator,
for Murray Ruggiero which will be marketed by him in his soon to be released home study
course. It generates, in histogram format, a profile showing, for each trading day of the
year,
the percent above or below the yearly average. The nice thing about this tool is
that it shows
the relationship of each bar with all of the other bars in the year and
compares to the yearly
average. It is easy to see if there is a time of year where prices
tend to be above or below the
yearly averages. Since the scale is measured in percentage
points, it is possible to grasp the
magnitude of the potential moves.
I developed and tested this tool on a ten year continuous, back-adjusted contract of the
US bonds.
To my astonishment, the indicator generated a very clear pattern of seasonality.
You can see the
histogram in Figure 2 below. From the end of December, to mid-January the
market turns down.
Then there is a small upward bias until early February. Next, there is
a downward bias until late
April. This is followed by a strong upward bias until early
August where a short downward bias
takes over until late in August. Then begins the
powerful August to December
upward bias.
I estimated the possible entry dates and the corresponding trading day of year. After a
little
optimising, I arrived at a seasonal system that takes 6 trades every year on the
same trading
day of year. The system is always in the market and uses no stops. It has had
a rather
remarkable run over the last 10 years. The results are posted in Figure 3 on page
6. These
results were output to the Printlog window by SystemStatsScanner which is an
inexpensive
system
reporting utility that I developed and market.
The system is highly profitable with a relatively low drawdown. It has an very high
average profit
per trade and a remarkable profit factor. The net profit to drawdown ratio
is over twenty which
puts this system in the extraordinary category. The mark-to-market
drawdown is still quite
reasonable, coming in under $8,000. These results were generated
assuming $150 for slippage
and commission which is quite generous for the bonds. OK,
So where is the out-of-sample
test?, you ask. Good question. The results for
1997 are all-out-of sample since the indicator
is always
one year behind. In 1997, this system had 6 winning trades worth over $25,000.
The system
has not lost a trade since August 1995. To be fair, I tested the system on data prior
to
1988. The system did not fare as well. In fact, the seasonal pattern did not begin to
become
evident until 1984. Also the system would have had you long from August 1987
through the
crash in October 1987. This would have been intolerable, because bonds
declined dramatically
before the crash and experienced a bungee like rebound after the
crash.
Despite the poor showing prior to 1988, the system has a remarkable ten-year batting
average.
This is not easy for a system always in the market. If the patterns are not just
coincidental, then
the system may just be tradeable. Even if you discount seasonal
patterns heavily, the seasonal
patterns might be useful in tempering some of your trades.
Would you really want to buy bonds
in mid-February or sell them in late August? The code
for this system is in the sidebar below.
 |
Sidebar: Bond Six Pack
By William Brower
Vars:
OK2Sell(False),
OK2Buy(False),
TradeDayNum(0),
ACntr(0);
If year(d)>(year(d))[1] then TradeDayNum = 0;
TradeDayNum = TradeDayNum+1;
OK2Sell =TradeDayNum =24 or TradeDayNum = 149 or
TradeDayNum = 248;
OK2Buy = TradeDayNum = 7 or TradeDayNum = 79 or
TradeDayNum = 164;
If OK2Sell then Sell market;
If OK2Buy then Buy market;
|

And so ends the sample
TS Express article, supplied, published and copyright Inside Edge Systems. If you liked
the article, think about subscribing! |