Announcement

Collapse
No announcement yet.

HistoricalVolatility.efs

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • HistoricalVolatility.efs

    File Name: HistoricalVolatility.efs

    Description:
    Calculates the historical volatility for the Daily, Weekly or Monthly intervals.

    Formula Parameters:
    Number of Periods: 20

    Notes:
    Study requires a Daily, Weekly or Monthly interval.


    Download File:
    HistoricalVolatility.efs



    EFS Code:
    PHP Code:
    /*********************************
    Provided By:  
        eSignal (Copyright © eSignal), a division of Interactive Data 
        Corporation. 2007. 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:  Historical Volatility

    Version:  1.0   7/2/2007

    Notes:
        * Study requires a Daily, Weekly or Monthly interval.

    Parameters:                             Default:
    Number of Periods                       20
    **********************************/


    function preMain() {
        
    setStudyTitle("Historical Volatility");
        
    setCursorLabelName("HV "0);
        
        var 
    fp1 = new FunctionParameter("nPeriods"FunctionParameter.NUMBER);
            
    fp1.setName("Number of Periods");
            
    fp1.setLowerLimit(1);
            
    fp1.setDefault(20);
    }


    var 
    bInit false;
    var 
    nTP null;     // Trading Periods per year
    var xHV null;     // Historical Volatility Series object

    function main(nPeriods) {
        
    // interval check
        
    if (isDWM() == false) {
            
    drawTextRelative(2020"This study requires a D, W or M interval."
                
    Color.redColor.blackText.RELATIVETOLEFT|Text.RELATIVETOBOTTOM|Text.BOLD,
                
    null14"inv_error");
            return;
        }
        
        if (
    bInit == false) {
            var 
    nInv getInterval();
            if (
    nInv == "D"nTP 262;
            if (
    nInv == "W"nTP 52;
            if (
    nInv == "M"nTP 12;
            
    xHV efsInternal("calcHV"nPeriodsnTP);
            
    bInit true;
        }
        
        var 
    nHV xHV.getValue(0);
        if (
    nHV == null) return;
        
        return 
    nHV;
    }


    function 
    calcHV(_nPeriods_nTP) {
        if (
    close(-(_nPeriods+1)) == null) return;
        
        var 
    HV null;
        var 
    nSSD 0;
        var 
    nSum 0;
        var 
    nAvg 0;
        
        for (var 
    0_nPeriodsi++) {
            
    nSum += Math.log(close(-i) / close(-(i+1)));
        }
        
    nAvg nSum _nPeriods;
        
        for (var 
    0_nPeriodsj++) {
            
    nSSD += Math.pow( (Math.log(close(-j) / close(-(j+1))) - nAvg) , 2);
        }
        
        
    HV Math.sqrt( (nSSD / (_nPeriods-1) ) ) * Math.sqrt(_nTP);
        
        return (
    HV*100);

    Jason K.
    Project Manager
    eSignal - an Interactive Data company

    EFS KnowledgeBase
    JavaScript for EFS Video Series
    EFS Beginner Tutorial Series
    EFS Glossary
    Custom EFS Development Policy

    New User Orientation
Working...
X