# Guppy GMMA



## andrew_c2o (9 July 2005)

What do people think of the Guppy Multiple Moving average indicator? I think it looks quite effective so far and looks more reliable than using only 2 moving averages. Not that anything is 'reliable' but i recommend it!


----------



## Milk Man (10 July 2005)

Looks quite good to me as-well. 
Leon Wilson offers a bit more insight into it in "Share trading success" if you've read all of Guppy's stuff.
I'm doing a bit of paper trading with it at present and it looks quite promising. I'm using compression of both bands, then crossover, then divergence as a buy. Bubble trading looks good too- buy high and sell higher looks less risky. Would like to see it backtested- anyone out there with Amibroker or Tradesim willing? 

Pleeeeeze?


----------



## tech/a (10 July 2005)

Loakglen

Unfortunately when tested on a portfolio it is dismal.The signals are to late so your both in and out late.
Work really well for long term winners like UTB,TOL QBE but then everyting works well on these.
Trick is to find them and discard quickly those which dont go on with it.


----------



## andrew_c2o (10 July 2005)

Actually Guppy claims that it helps with the early signals, he's say it's better than using just the 2 moving averages.


----------



## tech/a (10 July 2005)

Andrew if you can make a $$ using it then dont take my analysis-----its simply my findings.
But if it was that good youd have all these traders jumping in on forums showing how well it works.

One simple way of testing it is to take stocks with any signal you wish from the MMA and then see if that same stock is trading higher than the signal in 1 week,1 mth,6 mths or a year.You have M/S have a go.

Thought you maybe interested in this Binary signal code.For Guppy MMA

Buy

A:=((Mov(CLOSE,3,E)+Mov(CLOSE,5,E)+
Mov(CLOSE,8,E)+Mov(CLOSE,10,E)+
Mov(CLOSE,12,E)+Mov(CLOSE,15,E))-
(Mov(CLOSE,30,E)+Mov(CLOSE,35,E)+
Mov(CLOSE,40,E)+Mov(CLOSE,45,E)+
Mov(CLOSE,50,E)+Mov(CLOSE,60,E)))*10;
B:=(Mov((Mov(CLOSE,3,E)+Mov(CLOSE,5,E)+
Mov(CLOSE,8,E)+Mov(CLOSE,10,E)+
Mov(CLOSE,12,E)+Mov(CLOSE,15,E))-
(Mov(CLOSE,30,E)+Mov(CLOSE,35,E)+
Mov(CLOSE,40,E)+Mov(CLOSE,45,E)+
Mov(CLOSE,50,E)+Mov(CLOSE,60,E)),13,E))*10;
Buy:=Cross(A,B);
Sell:=Cross(B,A);
i:=Cum(buy>-1 AND sell>-1)=1;
x:=BarsSince(i OR buy)<=BarsSince(i OR sell)=0;
X=0

Sell

A:=((Mov(CLOSE,3,E)+Mov(CLOSE,5,E)+
Mov(CLOSE,8,E)+Mov(CLOSE,10,E)+
Mov(CLOSE,12,E)+Mov(CLOSE,15,E))-
(Mov(CLOSE,30,E)+Mov(CLOSE,35,E)+
Mov(CLOSE,40,E)+Mov(CLOSE,45,E)+
Mov(CLOSE,50,E)+Mov(CLOSE,60,E)))*10;
B:=(Mov((Mov(CLOSE,3,E)+Mov(CLOSE,5,E)+
Mov(CLOSE,8,E)+Mov(CLOSE,10,E)+
Mov(CLOSE,12,E)+Mov(CLOSE,15,E))-
(Mov(CLOSE,30,E)+Mov(CLOSE,35,E)+
Mov(CLOSE,40,E)+Mov(CLOSE,45,E)+
Mov(CLOSE,50,E)+Mov(CLOSE,60,E)),13,E))*10;
Buy:=Cross(A,B);
Sell:=Cross(B,A);
i:=Cum(buy>-1 AND sell>-1)=1;
x:=BarsSince(i OR buy)>=BarsSince(i OR sell)=0;
X=0

Place in a seperate window.On singular stocks its pretty nice.
Perhaps on the right Universe of stocks it maybe profitable---I only tested the full ASX and that was a shocker!!


----------



## andrew_c2o (10 July 2005)

Hmm maybe it's not so good then.

I guess I wasn't saying it's the best thing that has happened to trading but I was suggesting it might be useful, but according to your testing it's not! oh well off to find other indicators.


----------



## tech/a (10 July 2005)

I think this is a great opportunity to point out a few things.

*Chart (1)*
This shows how the Guppy MMA went on the FULL ASX entry and exit.
As you can see we ran out of money before the end of the trial period.

*Chart (2)*
Same as chart (1) but I used the BT Margin list (Pretty well the ASX 300).
Here we actually had money in the account---but no profits.

*Chart (3)*
Same as (1) and (2) but I changed the EXIT to a 180day EMA of the LOW.Just because its the one I use in some systems.
*PROFIT*---But the equity curve shows that profit came from a few flyers---many losers and a few BIG winners.

So dont be disheartened just look for better ways of using the MMA.


----------



## andrew_c2o (10 July 2005)

I have no idea what that all is.

Funny I was just looking at the thread that has links to useful sites and I clicked on one and mr Guppy's formula came up:

http://www.wilsontechstats.com/aboutus/aboutus.htm

I can't get away from it


----------



## mit (10 July 2005)

I used it as a confirmation signal rather than a buy/sell signal. I know that Darryl thinks it is an early signal but I think that it is an optical illusion. If you put a ruler you can see that the signal does come quite late.

What I find it is quite good on is to confirm that the long term trend is still okay if you are buying in the middle of a trend and could be part of a system in that way. You know get a buy signal and check if all of the LT MMAs are in the correct order and sloping the right way before you buy.

MIT


----------



## GreatPig (11 July 2005)

Tech/a,

I'm not 100% sure what the last part of your code is doing (the lines after the buy and sell definitions), but I don't think the way it uses crossovers of the group difference with an EMA is a great way to generate buy and sell signals. All it needs is a moderate price drop to compress the short term group to generate a sell, even if there's still a fair gap between the groups.

I tried a slight variation generating a sell from a crossover of just the EMA(8) and the EMA(40) (meaning the two sets are reasonably intermeshed in a group crossover), and also removed negative differences by setting the difference to zero when it became negative (meaning there'll never be a crossover while the short term sum is less than the long term sum). This gave reasonable results during periods with good uptrends, but not very good during flat times (as you'd expect, since it's really for trend following).

The actual formula I used (in AmiBroker) is:

PositionSize = -10;      //  10% of capital per trade
st = EMA(C,3)+EMA(C,5)+EMA(C,8)+EMA(C,12)+EMA(C,15);
si = EMA(C,30)+EMA(C,35)+EMA(C,40)+EMA(C,45)+EMA(C,50);
a = (st - si) * 10;
a = IIf(a > 0, a, 0);    //  Remove negative differences
b = EMA(a, 13);
Buy = Cross(A,B);
Sell = Cross(EMA(C,40), EMA(C,8));

Using my current stock universe (about 60% or so of all current stocks), a few sample annualised returns over different periods (including open positions at the end):

1/1/2002 - Now = 22.65%
1/1/2003 - Now = 32.14%
1/1/2004 - Now = 8.70%
1/1/2005 - Now = 1.53%
1/3/2002 - 28/2/2003 = -17.41%  (a mostly down-trend period)
1/3/2003 - 31/12/2004 = 45.92%  (a mostly up-trend period)

This was also with AmiBroker set to buy and sell on the day following the signal at the day's average price. I also only used 5 MAs in each group, as that's the forumula I've seen.

As can be seen, it gives very poor results unless the market is in a strong up-trend period, but during such periods it can give pretty good results (significantly better than the index I think).

Personally I don't use it much, but it does look pretty 

Cheers,
GP


----------



## tech/a (11 July 2005)

GP.

As you know application can have a great deal of influence.
Anyway---use with caution.

Are you able to give us a hand with the systems developement thread??

Your input would be a great help.


----------



## RichKid (12 July 2005)

GreatPig said:
			
		

> This was also with AmiBroker set to buy and sell on the day following the signal at the day's average price.
> Cheers,
> GP




GP,
Sorry to be picky but wouldn't it be better to use the opening or closing price to create a closer match to real prices since you can't know the average price till the eod, so in live trading you can't buy/sell the average price as the market is closed? Not sure if it'll make much of a difference to your results or if you were aware of it and just used the average for convenience. There's some name for that- ie when you backtest and use methods/steps which can't be used in live trading (in this case once an average price for the day is calculated you can only buy/sell the next day, if that price is available again).

Apologies if I've made a silly remark and it isn't that important, you can see that I'm not much of a tester.


----------



## tech/a (12 July 2005)

Rich.

While not perfect it all comes out in the wash.
M/As and in particular the wider Guppy timeframes are slow to signal crosses so a few ticks either way wont have a great deal of influence.

This is one of the reasons for developing Binary codes
Here the formula will produce a clear 1 for a true condition
and a clear 0 for a false condition.

By refering back to the previous day and asking for a 0--False condition
and IF today is a 1----a true condition--then clearly its a buy on NEXT OPEN.

Vic versa for exits.--dont forget we can also use OR conditions.


----------



## GreatPig (12 July 2005)

RichKid said:
			
		

> wouldn't it be better to use the opening or closing price to create a closer match to real prices



I think that depends on when you trade during the day.

In my limited experience, getting the price at opening in a moving stock is almost impossible, unless perhaps the order is placed pre-open. Typically I wait until about 10:30am or later before I start looking to do buys or sells, and by then the price has often moved well away from the opening price.

Likewise with the close. In moving stocks I often find the closing election moves the price sufficiently that I don't get the closing price either. Sometimes I do wait until just before closing to buy, but even then I find the price sometimes moves further again during the close.

So to me, average seemed like a more reasonable scenario. If I do my trades around the same time each day, then I would expect closer to the average price in the long term.

And backtesting shows that they all give similar results with my setup (I've tried it). I also like to do backtests using worst-case scenario: buy on high and sell on low. As you might expect, that typically makes a big difference for the short-term trades, but at least shows me how much affect it has.

Cheers,
GP


----------

