HV

Modified on 2008/04/17 13:21 by Administrator — Categorized as: Standard Indicators

Syntax

public HV(DataSeries source, int period, int span, string description)
public static HV Series(DataSeries source, int period, int span)

Parameter Description

source Price series
period How many bars HV shall use. The real number of periods that HV will use is Period - 1, because if for example you use 20 price bars, there are 19 periods in between and 19 returns.
span Used to convert the HV to a different time scale. If the Chart has weekly bars and annualized historical volatility is required, use 52 for Span because there are 52 weeks in a year.

Description

Returns the Historical Volatility of the selected Price Series. Historical Volatility is the standard deviation of the logarithm of the price ratio, i.e.

HV = Standard Deviation (ln(Price[bar] / Price[bar-1]))

Interpretation

A sharp increase in HV will alert you to unusual volatility in the markets. This is often an ideal time to monitor the market for entry in the opposite direction of the panic.

Calculation

HV = Sqrt( SSD / ( Period - 1 ) ) * Sqrt( Span )

where,
SSD = Sum( LOGSi - ALOGS ) over Period bars
LOGSi = Logarithm of Price - Previous Price
ALOGS = Sum( Logarithms of Price Change over Span ) / Span

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() { DataSeries Average = (High+Low)/2; DataSeries HV1 = HV.Series( Average, 20, 262 ); HV1.Description = "HV of Average Price"; double stop = 0; double profit = 0;

for(int bar = 262; bar < Bars.Count; bar++) { if (!IsLastPositionActive) { if( HV1[bar] > 100 ) if( ROC.Series( Close, 30 )[bar] > 0 ) ShortAtMarket( bar+1 ); else BuyAtMarket( bar+1 ); } else { Position p = LastPosition; stop = (p.PositionType == PositionType.Long) ? p.EntryPrice * 0.6 : profit = p.EntryPrice * 1.4; profit = (p.PositionType == PositionType.Long) ? p.EntryPrice * 1.15 : profit = p.EntryPrice * 0.85; if( !ExitAtStop( bar, p, stop ) ) ExitAtLimit( bar, p, profit ); } } ChartPane HVPane = CreatePane( 35, true, true ); PlotSeries( HVPane, HV1, Color.Teal, WealthLab.LineStyle.Solid, 2); } } }