VOLUME INDICATORS 243—
Advance-Decline Oscillator = Advances — DeclinesAdvance-Decline Index,oday = Advance-Decline IndeXprevious + advance ~ decline
In some of the techniques that follow, only the oscillator, or single-period calculation,may be shown. An index can be created by accumulating these values.
Sibbett’s Demand Index
One method that smooths out volume because it uses the total activity of the past 10 daysis James Sibbett’s Demand Index. The technique bears a resemblance to the approachused in Wilder's RSI. It can be used as an oscillator with individual daily values or accu-mulated into an index. The individual days are calculated as:
@sum(upside volume, 10)
De d Index = ——————5—— —oman @sum (downside volume, 10)
where @sum is a function that sums the past 10 days of upside and downside volume,found in the Wall Street Journal under the heading “Trading Activity.” Arthur Merrill,another well-known stock analyst, has suggested applying 5 days to this same technique.
Aspray’s Demand Oscillator
Using direction to separate volume into two series of Buying Pressure and Selling Pressure,Aspray then nets them into his own Demand Oscillator.> Note that during a rising marketthe selling pressure has been divided by a percentage of the volume, which has beenscaled to be greater than 1. The following calculations show the separate steps needed tocreate Aspray’s Demand Oscillator:
For rising prices:
Buying Pressure = volumeSelling Pressure = volume
Kx ClOS€oday — CLOSE previousClOse previous
For declining prices:
Buying Pressure = volume
KX ClOs€roday — CLOSE previousClOSe previous
and where
K= 3 x close~ @avg(@highest(high, 2) — @lowest(low, 2), 10)and
Demand Oscillator = BP — SPK is a volatility scaling factor, which is 3 times the closing price divided by the 10-day mov-ing average of the 2-day high-low range, and has a value likely to be well over 100. Forexample, if the S&P is trading at 600 and the average volatility is 10 full basis points (whichis very high for a 10-day average), then K = 1,800/10 = 180.
3 Thomas Aspray, “Fine-tuning the Demand Index.” Technical Analysis of Stocks & Commodities (June 1986), and“Demand Oscillator Momentum,” Technical Analysis of Stocks & Commodities (September 1989).244 VOLUME, OPEN INTEREST, AND BREADTH
 
Bolton-Tremblay .
Introducing the net advancing stocks compared with the number of stocks that wereunchanged, the Bolton-Tremblay approach also includes a form of geometric weighting ofthe results:
advancing — declining
Bolton-Tremblavioday = ‘unchanged
if Bolton-Tremblay,oqay > 0 then ACCUM BT yoday = ACCUM BT previous + V Bolton-Tremblaytoayif Bolton-Tremblayy.azy < 0 then Accum BT aay = ACCUM BT previous ~ V Bolton-Tremblaytoay
SchultzSchultz chose to look at the advancing stocks only as a percentage of the total stocks:Schultz A/T yay = Schultz A/Tyresous + —-—————2oancins___° advancing + declining + unchangedMcClellan OscillatorSimilar to the Advance-Decline Index, the McClellan Oscillator does not accumulate thenet change in breadth, but looks at the individual changes as an oscillator:
McClellan Oscillator = advances — declines
Upside/Downside RatioAsimple upside/downside ratio (UDR) has also been used; however, the ratio value has nosymmetry. When the declining volume is very low, for example, only 20% of the total vol-ume, the UDR will have a value of 4.0. In contrast, if the advancing volume is low, the ratiois limited to the range between 0 and 1.UDR= Advancing volumeDeclining volume -Tick Volume Indicatorin a manner similar to Wilder’s RSI, Blau double smooths the tick volume as a way of con-firming price direction, The Tick Volume Indicator (seen in Figure 10-1) is:TVG 5) = 100 x DEMA(upticks, 7, s) - DEMA(downticks, 7, s)*”’ DEMA(upticks, 7, s) + DEMA(downticks, 7, s)which ranges from —100 to +100 and where DEMA is the double (EMA) smoothing of thedownticks or upticks over the past s bars, with the initial smoothing over r bars.
 
Programming Volume Indicators ao
Volume indicators are easy programming on both a spreadsheet and Omega’s Easy Lan-guage, The following examples include only some of the indicators discussed in this chap-ter; the others are very similar and can be added using the same form.
Spreadsheet Code -
Using Corel’s Quattro, the following spreadsheet shows the Eurodollars beginning in April1993. The calculations for On-Balance Volume, Volume Accumulator, and Price-VolumeVOLUME INDICATORS 245a
FIGURE 10-1 Biau’s Tick Volume Indicator.
 
etn yan H : :, : DEUTSCHE MARK OM £91-20 min’
 
haathpee: by,
    
 
 
 
wi? 12:00 ang 12:00 ag 12:00 422 12:00 M23 12:00
 
 
Source: William Blau, Momentum, Direction, and Divergence (John Wiley & Sons, 1995, p. 45).© 1995 WilliamBiau. Reprinted by permission of John Wiley & Sons, Inc.
Trend are shown in the rightmost three columns. The spreadsheet code for these calcula-tions are shown after the sample output.
Col Name Start RowDate 5
High 5
Low 5Close 5Volume 5
OBV 7VACC 7
7
@IF(D7-D6>0,F6+F7,@IF(D7-D6<0,F6-E7,F6))4G6+{((D7-C7)/(B7-C7))-0.5)°2E7__+H6+E7*(D7-D6)/D6MAP 45  @AVG(D26.D45)PX 48 — (148-146)"100/145MA 45 @AVG(D6.D45) -MADIFF 48 = +K48-K45MAV 45  @AVG(F26,F45) [for OBV]VX 48 — (M48-M45)*100/M45DVG 48 @IF(J48°N48<0,J48-N48,0)OBV VX Signal from row 49@IF(L49>0#AND#L48<=0#AND#N49>=$D$3, "buy",@IF(L49>0#AND#L48<=0,"exitS",@IF(L49<=0#AND#L48>0#AND#N49>=$D83,"sell”,@IF(L49<=0#AND#L48>0,"exitL’,@IF(L49<$D$3,"exitALL",” "))))Q  OBV VX DVG Signal from row 49
VOZErAC-TOMMIOD>YI§246 VOLUME, OPEN INTEREST, AND BREADTH
 
@IF(L49>0#AND#L48<=0#AND#N49>=SD$3#AND#@ABS(049)<=SES3, "buy",@IF(L49>0#AND#L48<=0,"exitS”,@IF(L49<=0#AND#L48>0,#AND#N49>=SDS3#AND# @ ABS(049)<=SES3,"sell”,@IF(L49<=0#AND#L48>0,"exitL’,@IF(L49<$D$3#AND# @ABS(049)>$ES3,*exitALL'," ")))))
 
 
R  MomOsc 25 (@AVG(E22.E25) - @AVG(E25.E6))*100/@ AVG(E22-E25)
Ss Avg Mom 45 @AVG(R26.R45)
T StDevMom 45 @STD(R26.R45)
U Mom Signal 45 @IF(L45>0#AND#L44<=0#AND#R45>=S45-SFS$3°T45, “buy”,@IF(L45>0#AND#L44<=0,"exitS’,@IF(L45<=0#AND#L44>0#AND#R45>=-S45-$FS3'T45,"sell’,@IF(L45<=0#AND#L44>0,”exitL”,” ”))))
Vv ROC 25 (E25-E6)"100/E6
W AvgROC 45 @AVG(V26-V45)
x S$tDev ROC 45 @STD(V26.V45)
Y  ROCSignal 45 @IF(L45>0#AND#L44<=0#AND#V45>=W45-SF$3'T45,"buy”,
 
@IF(L45>0# AND#L44<=0,"exitS",@IF(L45<=0#AND#L44>0#ANDEV45>=W45-SF$3°T45, "sell", @IF(L45<=0#AND#L44>0,"exitL",""))))
 
Omega’s Easy Language Code
The following program code gives an example of a system that uses one of eight volumemeasurements to filter the entry or exit of a trade. When the input ttype is negative theinput values are treated as an entry filter, when ttype is positive the values are used for anexit filter.
{PJK Volume: Create a volume filterCopyright 1995-1998, PJKaufman. Ail rights reserved.}
inputs: period(20), ttype(1), maxdn(0), maxdvg(G), npsd(.5), ddays(3);vars: px(0),»¥x(0), Kvol1(0), map(0), mav(O),sdiff(0), madays(O),ma(0), dvg(0)nd(0), madiff(0), avgv(0), sdv(0), tentry(0), avg2(0), type(0), sc(Q),avghi(O), signhitG); _{Exit type =1, On-Balance Volume=2, Chiaken Volume Accumulator=3, Negative Volume Index=4, Positive Volume Index=5, Price and Volume Trend=6, Volume oscillator (npsd used for exit level)=7, Volume rate of change=8, Low volume exitFor entry filter use negative type -{test exit}
type = ttype;if type < 0 then begin
tentry = 1;type = @absvalue(ttype); <end;
{price index}
map = @average(close, period);
if ddays < 1 then nd = 1 else nd = ddays; -
if map([nd} = 0 then px = 0 else px = (map - map{nd])*100/map{nd];{On-Balance Volume}
if type = 1 then beginVOLUME INDICATORS - 247—_— ee ee eeSeeSeSFSFSFSSSSSSSS
if close > closef{1] then KMAvol = KMAvol + volumeelse if close < closef1] then Kvol = Kvol - volume;end;
{Chaikin Volume Accumulator }if type = 2 then Kvol = Kvol +(((close - jow) / (high - low)) - .5)*2*volume
{Negative Volume Index}if type = 3 then beginif volume < volume[1] then Kvol = Kyol{1] + (ciose - closel1])*Kvol/close[1]else if Kvol = 0 then Kvol = volumeelse Kyol = Kvolf1];end;
{Positive Volume Index}if type = 4 then beginif volume > volume[1] then Kvol = Kvol{1] + (close - close{1])*Kvol[li/closef1]else if Kvol = 0 then Kvol = volumeelse Kvol = Kvol{1];end;
{Price and Volume Trend}if type = 5 then Kvol = Kvol +volume*{close - close[l]) / close[l]
{Volume oscillator}
if type = 6 thenKvol = (@average(volume ,ddays) -@average(volume, period) )*100/@average(volume,ddays);
(Yolume rate-of-change}if type = 7 then beginif Kvol = 0 then Kyol = volume;if volumefperiod] = 0 then Kvol = Kvoi[1l] elseKvol = (volume - volume[period])*100/volume[period];end;
(Moving average of price}Mmadays = 2*period;
ma = @average(close,madays);madiff = ma - ma[nd];
if type < 6 or type = 9 then beginmay = @average(Kvol, period);if mav[nd] = 0 then vx = 0 else vx = (mav - mav{nd])*100/may(nd];sdiff = px - vx;{record divergence only}if vx*px < 0 then dvg = sdiff else dvg = 0;if madiff > 0 and madiff{1] <= 0 then beginexitshort at market;if tentry =© and (vx >= maxdn and @absvalue(dyvg) <= maxdvg) thenbuy at market;end;if madiff < 0 and madiff{1] >= 0 then begin 7exitlong at market; 7if tentry = 0 and (vx->= maxdn and @absvaiue(dvg) <= maxdvg) thenSell at market; ~end;if vx < maxdn and @absvalue(dvg) > maxdvg then beginexitlong at market;exitshort at market;end;end;248 VOLUME, OPtw INTEREST, AND BREADTHOe
if type = 6 or type = 7 <hen begin
avgy = @average(Kvol period);
sdv = @stddev(kvol period);
if tentry = 0 then beginif {madiff > 0 and madiff{l] <= 0) or Kvol <= avgy-npsd*sdyv thenexitshort at market;if (madiff < 0 and madifff£1j] >= 0) or Kvol <= avgv-npsd*sdv thenexitlong at market;if madiff > 0 and madiff[1] <= 0 then buy at market;if madiff < 0 and madiff[1] >= 0 tnen sell at market;end
else beginif madiff > 0 and madiff(1] <= 0 then exitshort at market;
if madiff < 0 and madiff{1] >= 0 then exitlong at market;if madiff > 0 and madiff[1] <= 0 and Kvol <= avgv-npsd*sdv then
buy at market;if madiff < 0 and madiff{1] >= 0 and Kvol <= avgv-npsd*sdv then
sell at market;end;end;
(Low volume exit, comparing siow and fast average}if type = 8 then begin“ avgy = @average(volume, period);avg2 = @average(volume,ddays);
if tentry = 0 then beginif (madiff > 0 and neditf{1] <= 0) or avg2 <= aygv*npsdthen exitshort at market;if (madiff < 0 and madiff{1] >= 0) or avg2 <= avgv*npsd
then exitiong at market;if madiff.> 0 and madiff{1] <= 0 then buy at market;if madiff < 0 and madiff[1] >= 0 then seli at market;endelse beginif madiff > 0 and madiff(1] <= 0 then exitshort at market;if madiff < 0 and madiff[1] >= 0 then exitiong at market;if madiff > 0 and madiff[1] <= 6 and avg2 <= avgv*npsd then buy at market;if madiff < 0 and madiff{1] >= 0 and avg2 <= avgv*npsd then sell at marketend;end;
Js One Volume/Breadth Indicator Better Than Another?
The final test of a successful indicator is whether it adds value to your trading decisions.This can be determined by programming the indicator into the total strategy and testingthe rules over a reasonable historic time period. Before doing that, we should decide whatthe increase or decrease in volume or breadth is telling us. If performance testing does notconfirm our expectations, than we must rethink the approach because the chance of anerror has increased. What appears to be a profitable discovery may only be an unlikelycoincidence.
Looking at the selection of indicators, we see that small net changes in price can resultin all volume being designated to one market direction. This is the case with Granville’sOn-Balance Volume and Bolton-Tremblay. Is it reasonable to add all volume to the accu-mulated index if the S&P gained only a fraction of one point? On a single day this may seemto be arbitrary, but just as so many of the simple systems, over a long period of time the neteffect of this approach is sound, In addition, we should not forget that these indicators failto account for a range of noise that is similar to the erratic movement of prices; that is,INTERPRETINGVOLL 4 SYSTEMATICALLY 249a Dthere is a normal variation in volume that does not mean anything special. On the otherside, these indicators fail to isolate outliers, the significant events or price shocks that areassociated with high volatility.
The changes made by Mark Chaiken, which take a percentage of volume based on therelative close of prices within the daily range, have a very sensible basis and avoid the all-or-nothing technique used in On-Balance Volume. Sibbett’s Demand Index, by using thesum of 10 days’ volume, avoids this problem completely and smooths out results, a situa-tion often needed when using the highly variable values of volume and breadth,
On the more confusing side, it has been suggested that the Demand Index, which sim-ply accumulates the net of advances minus declines, be used with the absolute value of thedaily calculation, Advances ~ Declines. That would give the same value when advances out-numbered declines by the same amount as declines outnumbering advances, whichappears to lose information and fails to distinguish between market direction. Unless youclearly understand why taking the absolute value of any advance-decline formula makessense, they should be avoided, even if historical testing shows a better result than othermethods.
By seeing these indicators close together, they appear to be a collection of minormanipulations of data. The resulting series still requires interpretation using trendlines,divergence, or new highs and lows, Instead of having to interpret only the difficult move-ments of prices, we have added an equally difficult series of volume. While it is not clearthat volume is always useful in analyzing price movement, it can impart valuable informa-tion in certain situations,
INTERPRETING VOLUME SYSTEMATICALLY
Most systematic approaches to volume apply a long-term smoothing method to the data,then identify trend changes to. confirm price direction. This can be implemented with anyof the accumulation indices, but not with single-day momentum or oscillator values. Forthe oscillators, most analysts have taken the approach that high volume confirms a newprice direction; therefore, they look for a reversal signal at the same time as peak or near-peak volume. If they do not occur at the same time, a volume peak should precede a trendchange. A decline in volume has also been used to confirm direction, but it is more likelyto indicate that prices have reached equilibrium, and that a further advance or declinerequires additional confirmation.
Moving Average Approaches
A straightforward way of using volume is to calculate a 10-day moving average of the vol-ume to be used as a confirmation of a 20-day trend position.‘ By simply requiring the cur-rent volume to be greater than the average volume over that past 10 days, you introducethe idea of greater participation associated with the new trend. An additional importantbenefit is that this volume condition acts as a filter, eliminating a substantial number oftrades. If the net returns are the same, the volume-filtered approach is far better becauseyou are gut of the market mofe, and are not reversing your position every time there is anew signal.
A similar method was proposed by Waxenberg.* A 10-day moving average of the vol-ume is calculated as the normal level, and a change in wend must be confirmed by a 20%
* Alex Saitta, “A Price and Volume-Based System,” Technical Analysis of Stocks & Commodities (March 1996).
5 Howard K. Waxenberg, “Technical Analysis of Volume,” Technical Analysis of Stocks & Commodities (March1986).250 VOLUME, OPEN INTEREST, AND BREADTH
 
increase in volume above this norm. (The 20% band acts as an additional smoothing filter,but may be replaced by a longer trend and smaller band.) Extremes in a trending move canbe found at points that exceed approximately a 40% volume increase. Applied to the stockmarket, Waxenberg used the extreme volumes to indicate the end of a sell-off. To add moreflexibility for longer test periods, and to adjust for volatility, Bollinger bands (based onabout 2 standard deviations, or 95% probability) can be substituted for the fixed percent-age bands.
Alternately, using 13 days of volume, subtract the total down volume from the total upvolume. A plot of the results will serve as a momentum indicator from which overboughtand oversold levels can be identified. If these values are unstable due to lack of liquidity,they may be smoothed using a short-term moving average.
Advance-Decline System
Advance and decline values, as with most volume figures, can be more useful if they aresmoothed. By combining peak values of the net of smoothed advancing and declin-ing shares with a directional move in price, Conners and Hayward have created a basic sys-tem structure that they named CHADTP® (Conners-Hayward Advance-Decline TradingPatterns™). This system tries to identify reversal patterns by applying the following steps:
1. Add the past 5 days of advancing issues (New York Stock Exchange)
2. Add the past 5 days of declining issues (New York Stock Exchange)
3. Subtract the 5-day sum of declining issues (1) from the advancing issues (2)4. Divide by 5 to get the average daily value .
CHADTP = (@sum(advNYSE,5) - @sum(decINYSE,5)) /5
To trade using this oscillator, Conners and Hayward have determined that +400 are theextreme levels where the values have been overbought and oversold. Based on this, we canapply the following rules to the S&P futures:
1. Sell when CHADTP > +400 and the SP trades .10 below the low of the previous day;buy when CHADTP < —400 and the SP trades .10 above the high of the previous day.
2. Note that the oscillator does not have to exceed its recent extremes on the day ofthe buy or sell signal. - .
3. Timing is best if the signal corresponds to a newspaper commentary indicating “de-pressed volume” (which is seen as an excess of cash waiting to enter).
This system targets returns over a 5- to 7-day period. A drop in the oscillator, which resultsin values in the midrange, is an opportunity to exit, or a standard oscillator of price can beconstructed to generate overbought and oversold signals within this time frame. An oppo-site entry signal would reverse the position. .-
AN INTEGRATED PROBABILITY MODEL
If there is a noticeable relationship between price, volume, and open interest (or marketbreadth), then a probability model can be constructed to test itsimportance.’ To do this itis necessary to construct a one-day-ahead forecast using a simple linear regression model,then back-test weighting factors for each element. Because of the powerful scftware prod-ucts, this has become a very manageable process. Using Omega’s Easy Language, each one-day-ahead forecast is determined using 7 past days:
§ Laurence A. Conners and Blake E. Hayward, /nvestment Secrets of a Hedge Fund Manager (Probus, 1995).7 Based on the May 1995 “CSI Technical Journal” (Commodity Systems, Inc., Boca Raton, FL).INTRADAY VOLUME Py... /ERNS. 251
 
1. Price forecast: Pf = Price + LinearRegSlope(close,n)
2. Volume forecast: Vf = Volume + LinearRegSlope(volume,n)
3. Open interest forecast: Of = Opint + LinearRegSlope(opint,n)
4. On-Balance Volume forecast: 08Vf = OBV + LinearRegSlope(OBV,n)
The function LinearRegSlope gives the one-period increase or decrease in the value basedon a Straight-line fit of the past n days, and can be added to the current value to get theone-day-ahead forecast. The period n can be selected by subtracting the actual next-dayvalue from the forecast and creating an error series that can be measured using a standarddeviation. The number of days, n, that generates the smallest standard deviation is the bestforecast period. It is likely that the optimal forecast period will differ for each of the fouritems above, and this becomes a matter of concern. Is there a reason why the forecastperiod be the same for all of the predictions? If we are independently trying to forecast vol-ume, then fixing the periods at the same length does not seem necessary. If we are tryingto discover whether a change in volume is related to a change in price, as we are here, thenthe same regression interval seems important. (These and other testing procedures arethoroughly discussed in Chapter 21 (“Testing”).
“Having found the four one-day-ahead forecasts, an index can be created that gives oneweight w, to the price forecast and the balance, 1 - w,, to a combination of the other threefactors. This assumes that price is the most important predictor of price.
Forecast Index = w, x Pf + (1 ~ wy) x (w2Vf + w,Of + wsOBVA)
This formula can be backtested for values of w,, w2, w3, and w, between 0 and 1. The finalindex can be used instead of price for determining the trend. It will still require a movingaverage, or some trendline, to signal new uptrends and downtrends; however, the results,if successful, should be more reliable than only using price.
One advantage of testing the weighting factors is that, if one of the four elements is nothelpful in predicting a trend, the weighting factor should be zero. Another approach, thatdoes not cluster the nonprice data together, would be to treat each item separately:
Forecast Index = w,Pf + w2,Vf + w,Of + wsOBVE
4and where > w,=1
im ~
The sum of the weighting factors should always be 1, equal to 100%.
INTRADAY VOLUME PATTERNS
Identifying increases and decreases in volume during the trading day must consider over-riding patterns caused by the way traders enter orders. The pattern of intraday volume canbe seen using tick volume as a practical substitute for actual volume, which is usually notavailable until the next day. To create a meanful chart of 30-minute volume patterhs, eachinterval was compared with the first 30 minutes of the day and recorded as a percentage ofthat initial tick volume. Figure 10-2 shows the results of three futures markets, Eurodollars,S&P 500, and Deutschemarks taken over a 1-year period using the nearest delivery.
The patterns of the three markets shown in Figure 10-2 are similar in that the greatestvolume is at the beginning and end of the trading day, yet very different in their internalpatterns. Eurodollars, which have the highest volume of all futures markets, show muchlarger volume on the opening and closing 30-minute periods.
It should not be surprising to see the extreme clustering at both ends of the tradingday. Orders enter the market early in reaction to news and events that occurred since theclose of the previous day’s trading. There are also orders resulting from trading decisionsbased on the previous day’s data but calculated after the close. The end of day is active252 VOLUME, OP iNTEREST, AND BREADTHa Oe eeESS SEEEEEEEEnEeFIGURE 10-2 Patterns of 30-minute tick volume, 1993, (a) Eurodollars. (b) S&P 500,
(c) Deutschemarks. \
30-min. tick volume as % 1st IntervalEurodollars, Jan—Dec 1993
 
> a 23 3 6 8
Ticks/30 min as % of 1st interval
3S
(a)
30-min. tick volume as % 1st IntervalDeutsche Marks, Jan—Dec 1993
120850 11501250 1350 1450100 :8060 -N40 :20°850 950 1060 1150-s«1250.=Ss«*1350=S«1450,
onterva ending time (NY)~ _ Interval ending tirne (NY){)
 
Ticks/30 min as % of 1st interval
 
 
Uc
 FILTERING LOWVOL.  :
Ttee
FIGURE 10-2 (Continued)ee30-min, tick volume as % ist IntervalS&P 500, Jan—Dec 1993
 
80
60
Ticks/30 min as % of 1st interval
20
1030 1130 1230 1330 1430 1530 1615Interval ending time (NY)
() -
 
because of juggling for position based on today’s price movements. For most traders, theclosing price is the most dependable value of the day.
There is a typical rounded bottom formation on most charts, with lowest volume in thelate morning when traders take their breaks. Deutsche marks (Figure 10-2c) differ from theothers by showing more sustained high volume through late morning. This is because theEuropean markets are open during that period. London interbank markets are likely to beopen at 5 eM. (12 noon in New York), to overlap U.S. trading as much as possible. Volumeon the IMM Deutschemark contract tapers off after