HistVolatility.efs EFSLibrary - Discussion Board
File Name: HistVolatility.efs
Description:
Historical Volatility
Formula Parameters:
LookBack : 20
Annual : 252
Notes:
Markets oscillate from periods of low volatility to high volatility
and back. The author`s research indicates that after periods of
extremely low volatility, volatility tends to increase and price
may move sharply. This increase in volatility tends to correlate
with the beginning of short- to intermediate-term moves in price.
They have found that we can identify which markets are about to make
such a move by measuring the historical volatility and the application
of pattern recognition.
The indicator is calculating as the standard deviation of day-to-day
logarithmic closing price changes expressed as an annualized percentage.
Download File:
HistVolatility.efs
EFS Code:
//*********************************Provided By: eSignal (Copyright c eSignal), a division of Interactive Data Corporation. 2008. All rights reserved. This sample eSignal Formula Script (EFS) is for educational purposes only and may be modified and saved under a new file name. eSignal is not responsible for the functionality once modified. eSignal reserves the right to modify and overwrite this EFS file with each new release.Description: Hist Volatility Version: 1.0 01/19/2009 Formula Parameters: Default: LookBack 20 Annual 252 Notes: Markets oscillate from periods of low volatility to high volatility and back. The author`s research indicates that after periods of extremely low volatility, volatility tends to increase and price may move sharply. This increase in volatility tends to correlate with the beginning of short- to intermediate-term moves in price. They have found that we can identify which markets are about to make such a move by measuring the historical volatility and the application of pattern recognition. The indicator is calculating as the standard deviation of day-to-day logarithmic closing price changes expressed as an annualized percentage. **********************************// var fpArray = new Array(); var bInit = false; function preMain() { setPriceStudy(false); setStudyTitle("Hist Volatility"); setCursorLabelName("HisVol"); var x = 0; fpArray[x] = new FunctionParameter("LookBack", FunctionParameter.NUMBER); with (fpArray[x++]) { setLowerLimit(1); setDefault(20); } fpArray[x] = new FunctionParameter("Annual", FunctionParameter.NUMBER); with (fpArray[x++]) { setLowerLimit(1); setDefault(252); } } var xPrice1 = null; var xPrice1Avg = null; var xStdDev = null; function main(LookBack, Annual) { var nState = getBarState(); if (nState == BARSTATE_ALLBARS) { if (LookBack == null) LookBack = 20; if (Annual == null) Annual = 252; } if (bInit == false) { xPrice1 = efsInternal("Calc_Price1"); xPrice1Avg = sma(LookBack, xPrice1); xStdDev = efsInternal("Calc_StdDev", LookBack, xPrice1Avg, xPrice1); bInit = true; } if (getCurrentBarCount() < LookBack + 1) return; var nAvg = xPrice1Avg.getValue(0); var HVol = xStdDev.getValue(0) * Math.sqrt(Annual); return HVol; } function Calc_Price1() { var nRes = 0; if (close(-1) == null) return; nRes = Math.log(close(0) / close(-1)); if (nRes == null) nRes = 1; return nRes; } function Calc_StdDev(LookBack, xPrice1Avg, xPrice1) { var nRes = 0; if (xPrice1Avg.getValue(0) == null) return; for (var i = 0; i < LookBack; i++) { nRes += (xPrice1.getValue(-i) - xPrice1Avg.getValue(0)) * (xPrice1.getValue(-i) - xPrice1Avg.getValue(0)); } nRes = Math.sqrt(nRes / LookBack); if (nRes == null) nRes = 1; return nRes; }