StdDev

Modified on 2008/05/03 10:22 by Administrator — Categorized as: Standard Indicators

Syntax

public static StdDev Series(DataSeries ds, int period, WealthLab.Indicators.StdDevCalculation calcType)
public StdDev(DataSeries ds, int period, StdDevCalculation calcType, string description)
public static double Value(int bar, DataSeries ds, int period, StdDevCalculation calcType)

Parameter Description

ds The source DataSeries
period Indicator calculation period
calcType WealthLab.Indicators.StdDevCalculation
public const WealthLab.Indicators.StdDevCalculation Population = 0
public const WealthLab.Indicators.StdDevCalculation Sample = 1

Description

Standard Deviation is the statistical measure of market volatility. If prices trade in a tight narrow trading range then StdDev will return a low value indicating volatility is low. Conversely if prices swing wildly up and down then StdDev returns a high value indicating volatility is high. What it does is measure how widely prices are dispersed from the average or mean price.

Interpretation


Remarks


Avoid

if( StdDev.Value( bar, Close, 20 ) < 1.5 ...

Correct

/* Normalized */
double C = Close[bar];
if( ( StdDev.Series( Close, 20 )[bar] / C ) < ( 1.5 / C ) )...

Calculation

You can choose between standard deviation of a sample (compatible with Excel STDEV) or of a population (compatible with Excel STDEVP) by passing the appropriate value from the 'WealthLab.Indicators.StdDevCalculation' enum.

Steps to calculate Standard Deviation for n periods

  1. Calculate the mean price by summating the price for n periods and divide by n.
  2. From each period's price subtract the mean, this gives you the deviation for each period.
  3. Find the sum of the squares of all deviations.
  4. Divide the sum of the squared deviations found in step 3 by ( n - 1 ).
  5. Calculate the square root of the result of the previous step.

Example

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;

namespace WealthLab.Strategies { public class MyStrategy : WealthScript { protected override void Execute() { // Divide Standard Deviation by Average Price to arrive at a normalized Volatility indicator DataSeries MyVolatility = StdDev.Series( Close, 30, StdDevCalculation.Population ) / SMA.Series( Close, 30 ); MyVolatility.Description = "Normalized Volatility"; ChartPane VolPane = CreatePane( 50, true, true ); PlotSeries( VolPane, MyVolatility, Color.Purple, LineStyle.Histogram, 3 ); // Plot Std Dev Bands aka Bollinger Bands HideVolume(); DataSeries StdDevBand = StdDev.Series( Close, 20, StdDevCalculation.Population ) * 2; DataSeries StdH = SMA.Series( Close, 20 ) + StdDevBand; DataSeries StdL = SMA.Series( Close, 20 ) - StdDevBand; PlotSeriesDualFillBand( PricePane, StdH, StdL, Color.FromArgb(10,10,0,0), Color.Empty, Color.Empty, LineStyle.Solid, 1 ); } } }