Skip to content
Open RaamTrade

GuppyMMA — Guppy Multiple Moving Average

Daryl Guppy’s ribbon: six short EMAs (3, 5, 8, 10, 12, 15 — “traders”) and six long ones (30, 35, 40, 45, 50, 60 — “investors”). The information is in the groups: when the short group compresses and then fans out past a rising long group, traders and investors agree.

The chart draws all twelve averages (short_ema1…short_ema6 in greens and blues, long_ema1…long_ema6 in reds and oranges). For a strategy it also ships the envelope of each group and its width — short_top, short_bottom, long_top, long_bottom, short_width, long_width — values the legend shows but the chart does not draw.

Signature

GuppyMMA(scale, on=<source>)
Argument Type Required Notes
scale int Param or literal Yes Multiplies every period, so 2 gives 6/10/16… and 60/70/80…. Default 1, bounds 1–20.
on= symbol, OHLCV field, or indicator No Source. Defaults to the trade symbol’s close.

Formula

Twelve EMAs of the standard Guppy lengths (scaled), each its own output, plus the top and bottom of each group and the group’s width.

Warmup

The EMAs seed from the first close; the 60-period line needs roughly 180 bars to converge.

Reading the value

g.short_top
g.short_bottom
g.long_top
g.long_bottom
g.short_width
g.long_width
g.short_ema1 # … short_ema6, long_ema1 … long_ema6 — the twelve lines

Multi-value: cannot be chained onto or crossed.

Example

class GuppyAgreement(Strategy):
"""Enter when the trader group sits entirely above the investor group."""
trade = Symbol()
sizing = FixedCapital()
def execute(self):
g = GuppyMMA(1, on=self.trade)
if g.short_bottom > g.long_top and self.trade.is_flat:
self.buy(self.trade, reason="Traders above investors")
if g.short_top < g.long_bottom and self.trade.is_long:
self.sell(self.trade, self.trade.position, reason="Ribbon inverted")

Notes

  • Daryl Guppy’s Multiple Moving Average.
  • Proven by an assert-via-trade run on SPY daily (the short group’s top, bottom and width matched an independent six-EMA replication within 0.05 once warm; zero alarm trades).