S&P500 hit resistance in recent weeks at the SMA 200 and the weekly +1 ATR, a level that has not been breached by the index since the beginning of the bear market. S&P500 is down more than 9 percent from the top of its summer rally.
![](https://www.spiketrade.com/images/comments/2022/9/image(10).png)
FGIC has left its neutral zone and closed the week at -4, halfway to its extreme fear level. The weekly S&P500 closed just above -1 ATR, while the daily is deeply oversold; a reaction next week is possible.
![](https://www.spiketrade.com/images/comments/2022/9/image(11).png)
A few months ago, I showed a chart of the quarterly S&P500 and the Composite Momentum, an indicator devised by Italian trader Francesco Caruso and available in some platforms, such as Bloomberg.
The S&P 500 is shown here on a semilog scale: as you can see, all the oscillator corrections that have occurred since the 1960s, with the exception of the end of 2012, have never stopped before the zero value.
Details on this indicator can be found here (in Italian but your browser can easily translate)
https://www.cicliemercati.it/insights/composite-momentum-oscillator-come-funziona
Have a safe trading week,
Gianluca L.
4 Comments
Claudio D.
Hi Gianluca, this is lovely work, especially seeing this long-term composite oscillator paired with the S&P.
Gianluca L.
Thanks, Claudio.
If anyone is interested here is the code in Easylanguage (Tradestation, Multicharts) of the Composite Momentum
{Composite Momentum – Caruso}
Inputs: k(4);
Vars: key(0),
mom(0),
momDiff(0),
temp1(0),
temp2(0),
sumtemp1(0),
sumtemp2(0),
abssumdiff(0),
aa(0),
bb(0),
cc(0),
stoco(0),
xtl(0),
composite(0),
oFastK(0),
oFastD(0),
oSlowK(0),
oSlowD(0);
{KEY}
mom = (waverage(C, k) – waverage(C, 3*k)) / waverage(C, k) * 100;
momDiff = mom – mom[1];
if(mom > mom[1]) then temp1 = momDiff
else temp1 = 0;
if(mom < mom[1]) then temp2 = momDiff else temp2 = 0; sumtemp1 = temp1[0] + temp1[1] + temp1[2] + temp1[3] + temp1[4]; sumtemp2 = temp2[0] + temp2[1] + temp2[2] + temp2[3] + temp2[4]; abssumdiff = absvalue(momDiff[0]) + absvalue(momDiff[1]) + absvalue(momDiff[2]) + absvalue(momDiff[3]) + absvalue(momDiff[4]); aa = ((sumtemp1[1] - (sumtemp1[1] / 5) + temp1) / (abssumdiff[1] - (abssumdiff[1] / 5) + absValue(momDiff)) * 100); bb = ((sumtemp2[1] - (sumtemp2[1] / 5) + temp2) / (abssumdiff[1] - (abssumdiff[1] / 5) + absValue(momDiff)) * 100); cc = aa - absValue(bb); key = xaverage(cc, 3); {XTL} //stoco = SlowKCustom(H, L, C, 14); stoco = SlowDCustomOrig(H, L, C, 14, 5, 3); xtl = (waverage(stoco, 3) * 2) - 100; composite = waverage((2 * key + xtl) / 3 , 2); if(composite >= composite[1]) then Plot1(composite, “CompositeMomentum”, Green)
Else Plot1(composite, “CompositeMomentum”, Red);
if(composite <= composite[1]) then Plot1(composite, "CompositeMomentum", Red) Else Plot1(composite, "CompositeMomentum", Green); Plot2(0,"Zero", White); Plot3(-80,"-80", Yellow); Plot4(-50,"-50", Yellow); Plot5(50,"50", Yellow); Plot6(80,"80", Yellow);
Alessio R.
Ciao Gianluca, thanks for the post. Do you know how to get the Composite Momentum Oscillator for TradingView?
Best wishes,
Alessio
Gianluca L.
Ciao Alessio, unfortunately not