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

Re: Sibbet's Demand Index



PureBytes Links

Trading Reference Links

Sibbits (ed: Should be Sibbet's - James Sibbet, of Pasadena, CA) Demand Index

--------------------------------------------------------------------------------

To: omega-list@xxxxxxxxxx, code-list@xxxxxxxxxxxxx
Subject: Sibbits Demand Index
From: David Fenstemaker <dfens@xxxxxxxxxxxxx>
Date: Thu, 29 Apr 1999 20:08:58 -0700
Resent-Date: Thu, 29 Apr 1999 20:09:40 -0700
Resent-From: omega-list@xxxxxxxxxx
Resent-Message-ID: <"LyqOn1.0.RI3.qxHAt"@mx1>
Resent-Sender: omega-list-request@xxxxxxxxxx

--------------------------------------------------------------------------------

Did I post this twice? If so, sorry.

As promised, Sibbet's Demand Index. For some reason, you don't see
this around, but it is a really good indicator. I trade the peaks.
It uses volume, so its not as good if used on mutual funds or
indexes.

The ELA has both the indicator and the function.

The indicator:


{       James Sibbet's Demand Index Indicator   }
{       Programmed by David Fenstemaker         }
{       The Demand Index combines price and volume in   }
{       such a way that it is often a leading indicator of      }
{        price change.  }

Inputs: Length(5);

Vars: DMIndx(0);

DMIndx = DeMand.Index (Length) ;

Plot1(DMIndx, "DMI") ;
Plot2(0, "Zero") ;

{       James Sibbet's Demand Index Function     }
{       Programmed by David Fenstemaker }
{       The Demand Index combines price and volume in   }
{       such a way that it is often a leading indicator of      }
{       price change.   }


The function:

Inputs: Length (NumericSeries);

Vars :  WtCRatio(1), VolRatio(1), VolAvg(Volume),
        BuyP(1), SellP(1), Sign(+1), Return(0),
        WghtClose(Close), AvgTR(High - Low),
        Constant(1),  BuyPres(1),  SellPres(1),
        TempDI(1),  DMI(1);

If CurrentBar = 1 then
    Begin
        VolAvg = Average(Volume, Length);
    End;

Return = 0 ;

WghtClose = (High + Low + Close + Close) * 0.25;
AvgTR = Average (Highest (High, 2) -  Lowest ( Low, 2), Length);
VolAvg = ((VolAvg [1] * (Length - 1)) + Volume) / Length;

If WghtClose  <>  0 and WghtClose[1] <> 0 and
        AvgTR  <>  0 and VolAvg <> 0 then
Begin
        WtCRatio = (WghtClose - WghtClose[1]) / MinList(WghtClose,
WghtClose[1]) ;
        VolRatio = Volume / VolAvg;
        Constant   = ((WghtClose * 3) /AvgTR) * AbsValue (WtCRatio);
        If Constant > 88 then Constant = 88;
        Constant   = VolRatio / ExpValue (Constant);
        If WtCRatio > 0 then
        Begin
            BuyP = VolRatio;
            SellP = Constant;
        End
        Else
        Begin
            BuyP = Constant;
            SellP = VolRatio;
        End;

        BuyPres = ((BuyPres [1] * (Length - 1)) + BuyP) / Length;
        SellPres = ((SellPres [1] * (Length - 1)) + SellP) / Length;

        TempDI   =  +1;

        If SellPres  > BuyPres then
        Begin
            Sign  =  -1;
            If SellPres <> 0 then TempDI = BuyPres / SellPres;
        End
        Else
        Begin
            Sign  =  +1;
            If BuyPres <> 0 then TempDI = SellPres / BuyPres;
        End;

        TempDI = TempDI * Sign;
        If TempDI < 0
        then
                DMI = -1 - TempDI
        else
                DMI = +1 - TempDI ;

        Return = DMI {* 100.0} ;

End;






Lance Fisher wrote:

> Romi,
>
> >From pg. 243 of Trading Systems and Methods by P. Kaufman.
>
> "...The technique bears a resemblance to the approach used in Wilder's RSI.
> It can be used as an oscillator with individual daily values or accumulated
> into an index. The individual days are calculated as:
>
>                @sum(upside volume, 10)
> Demand Index = -------------------------
>                @sum(downside volume, 10)
>
> where @sum is a function that sums the past 10 days of upside and downside
> volume..."
>
> Basically, the formula stated in english is - "The sum of upside volume for
> the past ten days, divided by, the sum of downside volume for the past ten
> days"
>
> The EL code would go something like...
>
> Vars: DI(0),
>       UpSum(0),
>       DnSum(0);
>
> UpSum = Summation(High of Data2, 10); {Or wherever it is that contains the
> upside volume data}
> DnSum = Summation(Low of Data2, 10) {Or wherever it is that contains the
> downside volume data}
>
> DI = IFF(DnSum <> 0, UpSum / DnSum, DI[1]);
>
> Plot1(DI, "DemandIndex");
>
> Cheers,
>
> -Lance
>
> -----Original Message-----
> From: Romi Ghose [mailto:r.ghose@xxxxxxxxx]
> Sent: Friday, April 26, 2002 11:42 AM
> To: omega-list@xxxxxxxxxx
> Subject: Sibbet's Demand Index
>
> Does anybody have the formula for Demand Index that was originally developed
> by James Sibbet?
> Thanks
> Romi