[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

OddBall as a market timing tool



PureBytes Links

Trading Reference Links

Thank you Mark,

I was curious if Mark’s OddBall system could be used as a 
stock market timing tool.  IOW, could it be used as a 
filter for a stock trading system that had its own entry 
and exit code but would only take that system’s long 
entries when OddBall was long and vice versa for shorts.

I did not have intraday data for advancing issues.  I only 
had advance/decline EOD data.  This was TC2000 data and the 
A/D data they provide is the ratio only.  They do not have 
advancing issues by itself.  

I realize that what I did is a considerable departure from 
the actual Oddball system; however, I wanted to give Mark 
credit for providing me with some inspiration to test some 
ideas that I had.  In addition, I wanted to share my 
results with the list.  Within 30 minutes I had a market 
timing system that appears to have good historical 
results.   I am sure if I had spent more time (which I plan 
to do) I could find some faults and then improve upon 
them.  My reason for posting this is to provide some 
inspiration for others to produce a market-timing tool to 
trade individual stocks.

There has been a lot of discussion regarding optimization 
with OddBall.  I always try to develop systems that require 
no or minimal optimization and are self adjusting to the 
changes in the market.  With that in mind I first created a 
chart with:

1.	Data1 = S&P 500 index daily data
2.	Data2 = A/D daily data
3.	Data3 = A/D weekly data

I first wanted to create a system that only used daily ROC 
A/D data as a comparison with weekly ROC A/D data.  I 
started with this very simple system.  I did not optimize 
for the length of ROC but merely picked 5 because there are 
5 days in the week and I am using daily and weekly data.  
No real logic here just a convenient number.  Here is the 
code:

{System with ROC of A/D}

If RateOfChange(Close Data2, 5) crosses above RateOfChange
(Close Data3, 5)  then buy;

If RateOfChange(Close Data2, 5) crosses below RateOfChange
(Close Data3, 5) then sell;

Here are the results of this first system without any other 
filters. My improvements to the system are below these 
results.  Since this is an index and I just bought one unit 
and the fact that TradeStation statistics based upon $ are 
unusable for historical testing (see Stridsman’s book), 
please just look at the %wins and the profit factor.  BTW, 
I use my own portfolio testing software.

							
							
							
TradeStation  Strategy Performance Report - Oddball Russ SP-
500-Daily		
							
Performance Summary:  All Trades			
							
Total Net Profit	$1,113.50		Open 
position P/L	($38.69)	
Gross Profit		$2,932.64		Gross Loss
		($1,819.14)	
							
Total # of trades	236 		Percent profitable
	57.20%	
Number winning trades	135 		Number losing trades
	101 	
							
Largest winning trade	$138.81		Largest losing trade
	($118.07)	
Average winning trade	$21.72		Average losing trade
	($18.01)	
Ratio avg win/avg loss	1.21		Avg trade (win & 
loss)	$4.72	
							
Max consec. Winners	8 		Max consec. losers
	5 	
Avg # bars in winners	14 		Avg # bars in losers
	18 	
							
Max intraday drawdown	($284.45)			
		
Profit Factor		1.61		Max # contracts held
	1 	
Account size required	$284.45		Return on account
	391.46%	
							
Performance Summary:  Long Trades			
							
Total Net Profit	$959.50		Open position P/L
	($38.69)	
Gross Profit		$1,890.81		Gross Loss
		($931.31)	
							
Total # of trades	118 		Percent profitable
	65.25%	
Number winning trades	77 		Number losing trades
	41 	
							
Largest winning trade	$138.81		Largest losing trade
	($118.07)	
Average winning trade	$24.56		Average losing trade
	($22.71)	
Ratio avg win/avg loss	1.08		Avg trade (win & 
loss)	$8.13	
							
Max consec. Winners	10 		Max consec. losers
	3 	
Avg # bars in winners	16 		Avg # bars in losers
	17 	
							
Max intraday drawdown	($307.05)			
		
Profit Factor		2.03		Max # contracts held
	1 	
Account size required	$307.05		Return on account
	312.49%	
							
Performance Summary:  Short Trades			
							
Total Net Profit	$154.00		Open position P/L
	$0.00	
Gross Profit		$1,041.83		Gross Loss
		($887.83)	
							
Total # of trades	118 		Percent profitable
	49.15%	
Number winning trades	58 		Number losing trades
	60 	
							
Largest winning trade	$104.99		Largest losing trade
	($101.23)	
Average winning trade	$17.96		Average losing trade
	($14.80)	
Ratio avg win/avg loss	1.21		Avg trade (win & 
loss)	$1.31	
							
Max consec. Winners	5 		Max consec. losers
	5 	
Avg # bars in winners	10 		Avg # bars in losers
	19 	
							
Max intraday drawdown	($472.61)			
		
Profit Factor		1.17		Max # contracts held
	1 	
Account size required	$472.61		Return on account
	32.59%	


The above results are not bad but they don’t get me 
excited.  After all, the system only took me 5 minutes to 
put together, thanks to Mark.  Therefore, I messed around 
for the next 15-30 minutes adding additional filters.  I 
finally came up with the system below.  Please notice the 
additional filters require no optimization.

{ System with ROC of A/D and additional filters}

If RateOfChange(Close Data2, 5) crosses above RateOfChange
(Close Data3, 5) 
	and C of data4 > C of data5 and C of data6 > C of 
data7 and C > C of data8 then buy;

If RateOfChange(Close Data2, 5) crosses below RateOfChange
(Close Data3, 5) 
	and C of data4 < C of data5  and C of data6 < C of 
data7  and 
	Month(date) <> 10 and Month(date) <> 11 and Month
(date) <> 12 and C < C of data8 then sell;

I inserted the datas a little weird but here is how they go

1.	Data1 = S&P 500 index daily data
2.	Data2 = A/D daily data
3.	Data3 = A/D weekly data
4.	Data4 = Cumulative Volume daily data
5.	Data5 = Cumulative Volume weekly data
6.	Data6 = New Hi/New Lo daily data
7.	Data7 = New Hi/New Lo weekly data
8.	Data8 = S&P 500 index weekly data

By adding cumulative volume, new hi/new low, weekly S&P 
data and seasonality (I don’t want to be short at the 
normal year end rally) I got the following results:

			
							
							
TradeStation  Strategy Performance Report - Oddball Russ SP-
500-Daily (9/17/1986-2/6/2002)
							
Performance Summary:  All Trades			
							
Total Net Profit	$1,692.36		Open 
position P/L	$71.16	
Gross Profit		$2,208.90		Gross Loss
		($516.54)	
							
Total # of trades	67 		Percent profitable
	61.19%	
Number winning trades	41 		Number losing trades
	26 	
							
Largest winning trade	$266.17		Largest losing trade
	($155.43)	
Average winning trade	$53.88		Average losing trade
	($19.87)	
Ratio avg win/avg loss	2.71		Avg trade (win & 
loss)	$25.26	
							
Max consec. Winners	7 		Max consec. losers
	5 	
Avg # bars in winners	62 		Avg # bars in losers
	39 	
							
Max intraday drawdown	($255.53)			
		
Profit Factor		4.28		Max # contracts held
	1 	
Account size required	$255.53		Return on account
	662.29%	
							
Performance Summary:  Long Trades			
							
Total Net Profit	$1,306.06		Open 
position P/L	$0.00	
Gross Profit		$1,521.44		Gross Loss
		($215.38)	
							
Total # of trades	34 		Percent profitable
	79.41%	
Number winning trades	27 		Number losing trades
	7 	
							
Largest winning trade	$266.17		Largest losing trade
	($155.43)	
Average winning trade	$56.35		Average losing trade
	($30.77)	
Ratio avg win/avg loss	1.83		Avg trade (win & 
loss)	$38.41	
							
Max consec. Winners	11 		Max consec. losers
	2 	
Avg # bars in winners	77 		Avg # bars in losers
	44 	
							
Max intraday drawdown	($245.05)			
		
Profit Factor		7.06		Max # contracts held
	1 	
Account size required	$245.05		Return on account
	532.98%	
							
Performance Summary:  Short Trades			
							
Total Net Profit	$386.30		Open position P/L
	$71.16	
Gross Profit		$687.46		Gross Loss	
	($301.16)	
							
Total # of trades	33 		Percent profitable
	42.42%	
Number winning trades	14 		Number losing trades
	19 	
							
Largest winning trade	$245.13		Largest losing trade
	($89.13)	
Average winning trade	$49.10		Average losing trade
	($15.85)	
Ratio avg win/avg loss	3.10		Avg trade (win & 
loss)	$11.71	
							
Max consec. Winners	4 		Max consec. losers
	5 	
Avg # bars in winners	33 		Avg # bars in losers
	37 	
							
Max intraday drawdown	($227.26)			
		
Profit Factor		2.28		Max # contracts held
	1 	
Account size required	$227.26		Return on account
	169.98%	
							


Wow!  61% wins with a profit factor of  4.28 for both long 
and short.  Not bad for a system that was not optimized and 
self adjusts for changing markets.

This system has more variables than I would like but it 
sure makes you wonder if the entire collective efforts of 
those on this list that would like to develop a market 
timing system could create a dependable system that 
requires “no” optimization.  Before I get 100 e-mails 
telling me the merits of optimization and the best way to 
do it, I want to say that I understand that properly 
optimized systems can have great results.  I just have a 
hang-up in that I don’t like messing with them.  I feel 
more comfortable with the above types of systems.  

I invite others to come up with better alternatives for a 
market timing system.  I look forward to seeing your code 
on this list.  I apologize to Mark for my bastardization of 
his original concept of OddBall.  However, if I remember 
his comments correctly, he said for us to use our brains to 
come up with something we could use.  I don’t trade 
futures; therefore, I did just that. I hope our collective 
brains will produce a great market-timing tool. 

Russ Furse