Products Services About Friendly Links Contact Maze Solved Order Form View Cart
Sample TS Express

TS Express Sample Article - Seasonal Bond System

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, that 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 optimizing, 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 SysStatsScanner2000 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 tradable. 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?

 Here is the code.


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;
 
     
Inside Edge Systems, 66 Heritage Hill Rd. Apt C, New Canaan, CT 06840
Tel:(203)454-2754 Fax:(203)286-1321
E-Mail: 1000mileman@mindspring.com
Copyright © 2002 Inside Edge Systems (Last modified: Oct 25, 2007)