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

Re: trendiness measures



PureBytes Links

Trading Reference Links

Gary, extending your thoughts, have you found similar correlations in other
markets? Naz vs. ND M1? CIEN daily vs. 10 min. intraday? ND M1 daily vs. 10
min.?

TIA

Gene





----- Original Message -----
From: "Gary Fritz" <fritz@xxxxxxxx>
To: "Omegalist" <omega-list@xxxxxxxxxx>
Sent: Saturday, May 19, 2001 10:55 AM
Subject: Re: trendiness measures


> > Could someone please briefly explain some measures of trendiness
> > that I could use to decide which markets tend to trend more than
> > others?   ... Yes, I'm familiar with the ADX, the CMO, etc., but
> > how are indicators like these used to give a summary of a market's
> > trendiness over, say, a year?
>
> Here's an indicator you can apply to a market to get a statistical
> measure for  its trendiness.  It measures the movement of the market
> over several sample lengths, and compares the result to what would be
> expected of a "random walk."  If the market has moved more than a
> random walk, that indicates it tends to trend in that timeframe.  If
> it moves less, it's *anti*-trending -- that is, it reverses more than
> would be expected of even a random walk.
>
> Also note that you must apply it to a chart with AT LEAST 100 bars.
> Longer charts will give you a more accurate result.
>
> Here's an example of the indicator's output:
>
>  Trend data for SP M1:
>    10-minute bars
>   1926 samples
>  Bars     StdDev  Expected  Actual
>     1     0.00260     1     1.00000
>     4     0.00492     2     1.89514
>     9     0.00761     3     2.93162
>    16     0.01032     4     3.97341
>    25     0.01313     5     5.05649
>    36     0.01590     6     6.12256
>    49     0.01835     7     7.06543
>    64     0.02091     8     8.05145
>    81     0.02333     9     8.98652
>   100     0.02536    10     9.76810
>
> Since the "Actual" value for the sample lengths 25, 36, 49, and 64 is
> slightly longer than the "Expected," that indicates the 10min SP
> tends to trend (slightly) in this period when you look at 25-64 bar
> moves.  Longer and shorter moves tend NOT to trend, since their
> "Actual" value is slightly LESS than the "Expected."
>
> Here's an interesting result:  this is a year of DAILY S&P:
>
>  Bars     StdDev  Expected  Actual
>     1     0.01399     1     1.00000
>     4     0.02595     2     1.85540
>     9     0.03649     3     2.60854
>    16     0.04641     4     3.31798
>    25     0.05049     5     3.60985
>    36     0.05489     6     3.92427
>    49     0.05456     7     3.90075
>    64     0.05884     8     4.20646
>    81     0.06229     9     4.45316
>   100     0.06400    10     4.57589
>
> Note that the S&P shows anti-trending (reversing) behavior at ALL
> sample lengths, especially at longer lengths.  This should come as no
> surprise.  The S&P is known as a reversing market -- that's why "buy
> the dips" works.  "Trending" means "if it's going up, it will tend to
> keep going up, and vice versa."  But in the S&P it usually works to
> say "if it's going down, buy, because soon it will go back up."
> That's ANTI-trending behavior.
>
> By default the indicator DOES NOT PLOT ANYTHING.  It prints its
> results in the Print Log.  Several people had trouble with that the
> last time I posted an indicator like this.  Remember to scroll down
> to the bottom of the Print Log.  :-)  If you set the PlotSD input to
> True, it will plot the SD's of several sample lengths, but I don't
> think this is very useful.
>
> Gary
>
>
>
{***************************************************************************
>  *
>  *  Indicator:  Trend StdDev
>  *  Gary Fritz  1/7/99
>  *    7/20/99:  Minor fixes and improvements
>  *
>  *  Computes the standard deviation of Nlengs different lengths of
>  *  price action:  C-C[1], C-C[4], C-C[9], C-C[16], etc.
>  *  In a pure Random Walk, the N^2-length sample will have a StdDev
>  *  of N times the StdDev of the 1-length sample.  If a particular
>  *  price example shows larger-than-expected StdDevs it indicates
>  *  a trending market; if the StdDevs are smaller than the expected
>  *  values it indicates an anti-trending (reversing) market.
>  *
>  *  Doesn't start recording data until 100 bars are available.
>  *  Needs a lot of bars to compute valid data anyway, so just apply it
>  *  to a long chart.
>  *
>  *  StdDev values are printed to the Print Log.
>  *
>  *  References:
>  *    TASC Aug 95, Alex Saitta, Trending on a Historical Basis
>  *    TASC Jan 92, E. Michael Poulos, Futures According to Trend Tendency
>  *  (Thanks to Dave Chamness for the pointer & explanation!)
>  *
>  *  Inputs:  Price     Price point used in SD calculations
>  *           PlotStD   If true, plots StdDev for 4 sample lengths
>  *                     (Probably not very useful)
>  *
>
***************************************************************************}
>
> Inputs: Price(Close),
>         PlotStD(False);       { Plot Std Devs of 9, 25, 49, 81-long
samples }
>
> Vars:  Nlengs(10);            { Compute stddev for lengths 1:Nlengs^2 }
> Vars:  Nbars(0), Index(0), Barsback(0), Diff(0), Mean(0), Sigma(0),
SD1(0);
> Arrays:  BarSum[20](0), BarSum2[20](0);
>
> if (currentBar = 1) then begin
>   for Index = 1 to Nlengs begin
>     Nbars = 0;
>     BarSum[Index] = 0;
>     BarSum2[Index] = 0;
>     end;
>   end;
>
> { On each bar, add up sums & sum-of-squares,
>   for lookback lengths of Index^2 }
>
> if (currentBar > Nlengs*Nlengs) then begin
>   Nbars = Nbars+1;
>   for Index = 1 to Nlengs begin
>     if Price[Index*Index] = 0
>       then Diff = 0
>       else Diff = (Price - Price[Index*Index]) / Price[Index*Index];
>     BarSum[Index] = BarSum[Index] + Diff;
>     BarSum2[Index] = BarSum2[Index] + Diff*Diff;
>     end;
>   end;
>
> if LastBarOnChart and (Nbars > 1) then begin
>   print("Trend data for ",GetSymbolName,":");
>   if (DataCompression = 4) then print("  Monthly bars")
>   else if (DataCompression = 3) then print("  Weekly bars")
>   else if (DataCompression = 2) then print("  Daily bars")
>   else if (DataCompression = 1) then print(" ",BarInterval:3:0,"-minute
bars");
>   print(Nbars:5:0," samples");
>
>   { An N^2 day test, with a perfect random walk, is expected to have
>     a standard deviation N times larger than a 1-day test.
>     So the "Expected" column is N, and the "Actual" column is
>     N^2-day_StdDev / 1-day_StdDev. }
>
>   print("Bars     StdDev  Expected  Actual");
>   for Index = 1 to Nlengs begin
>     Mean = BarSum[Index] / Nbars;
>     Sigma = SquareRoot((BarSum2[Index]-Nbars*Mean*Mean)/(Nbars-1));
>     if (Index = 1) then SD1 = Sigma;
>     print(Index*Index:4:0,"    ",Sigma:2:5,"    ",Index:2:0,"
",Sigma/SD1:2:5);
>     end;
>   end;
>
> { If desired, plot 4 of the SD's.  I'm not sure this is useful but
>   I thought somebody might like to see it.  The repeated code is not
>   very pretty, but EL's limits made it a pain to do it via looping. }
>
> if PlotStD and (Nbars > 10) then begin
>   Mean = BarSum[3] / Nbars;
>   Sigma = SquareRoot((BarSum2[3]-Nbars*Mean*Mean)/(Nbars-1));
>   plot1(Sigma, "StD3");
>   Mean = BarSum[5] / Nbars;
>   Sigma = SquareRoot((BarSum2[5]-Nbars*Mean*Mean)/(Nbars-1));
>   plot2(Sigma, "StD5");
>   Mean = BarSum[7] / Nbars;
>   Sigma = SquareRoot((BarSum2[7]-Nbars*Mean*Mean)/(Nbars-1));
>   plot3(Sigma, "StD7");
>   Mean = BarSum[9] / Nbars;
>   Sigma = SquareRoot((BarSum2[9]-Nbars*Mean*Mean)/(Nbars-1));
>   plot4(Sigma, "StD9");
>   end;
>
>