PINE LIBRARY

Volatility

Updated
Library "Volatility"
Functions for determining if volatility (true range) is within or exceeds normal.
The "True Range" (ta.tr) is used for measuring volatility.
Values are normalized by the volume adjusted weighted moving average (VAWMA) to be more like percent moves than price.

current(len) Returns the current price adjusted volatitlity ratio.
  Parameters:
    len: Number of bars to get a volume adjusted weighted average price.

normal(len, maxDeviation, level, gapDays, spec, res) Returns the normal upper range of volatility. Compensates for overnight gaps within a regular session.
  Parameters:
    len: Number of bars to measure volatility.
    maxDeviation: The limit of volatility before considered an outlier.
    level: The amount of standard deviation after cleaning outliers to be considered within normal.
    gapDays: The number of days in the past to measure overnight gap volaility.
    spec: session.regular (default), session.extended or other time spec.
    res: The resolution (default = '1440').

isNormal(len, maxDeviation, level, gapDays, spec, res) Returns true if the volatility (true range) is within normal levels. Compensates for overnight gaps within a regular session.
  Parameters:
    len: Number of bars to measure volatility.
    maxDeviation: The limit of volatility before considered an outlier.
    level: The amount of standard deviation after cleaning outliers to be considered within normal.
    gapDays: The number of days in the past to measure overnight gap volaility.
    spec: session.regular (default), session.extended or other time spec.
    res: The resolution (default = '1440').

severity(len, maxDeviation, level, gapDays, spec, res) Returns ratio of the current value to the normal value. Compensates for overnight gaps within a regular session.
  Parameters:
    len: Number of bars to measure volatility.
    maxDeviation: The limit of volatility before considered an outlier.
    level: The amount of standard deviation after cleaning outliers to be considered within normal.
    gapDays: The number of days in the past to measure overnight gap volaility.
    spec: session.regular (default), session.extended or other time spec.
    res: The resolution (default = '1440').
Release Notes
v2 Attempt to improve performance and reduce dependencies.
Release Notes
v3 Improved performance by exposing gap level to caller if needed. Opened up ability to use a different volatility value.

Added:
normalWithGap(len, maxDeviation, level, gapDays, spec, res, volatility) Returns the normal upper range of volatility and the normal gap value.
  Parameters:
    len: Number of bars to measure volatility.
    maxDeviation: The limit of volatility before considered an outlier.
    level: The amount of standard deviation after cleaning outliers to be considered within normal.
    gapDays: The number of days in the past to measure overnight gap volaility.
    spec: session.regular (default), session.extended or other time spec.
    res: The resolution (default = '1440').
    volatility: The value to use as a volatility measure. Default is (ta.tr) the "True Range".
  Returns: [atr + stdev * level, Gap.normal(gapDays, spec, res)]

Updated:
normal(len, maxDeviation, level, gapDays, spec, res, volatility) Returns the normal upper range of volatility. Compensates for overnight gaps within a regular session.
  Parameters:
    len: Number of bars to measure volatility.
    maxDeviation: The limit of volatility before considered an outlier.
    level: The amount of standard deviation after cleaning outliers to be considered within normal.
    gapDays: The number of days in the past to measure overnight gap volaility.
    spec: session.regular (default), session.extended or other time spec.
    res: The resolution (default = '1440').
    volatility: The value to use as a volatility measure. Default is (ta.tr) the "True Range".

isNormal(len, maxDeviation, level, gapDays, spec, res, volatility) Returns true if the volatility (true range) is within normal levels. Compensates for overnight gaps within a regular session.
  Parameters:
    len: Number of bars to measure volatility.
    maxDeviation: The limit of volatility before considered an outlier.
    level: The amount of standard deviation after cleaning outliers to be considered within normal.
    gapDays: The number of days in the past to measure overnight gap volaility.
    spec: session.regular (default), session.extended or other time spec.
    res: The resolution (default = '1440').
    volatility: The value to use as a volatility measure. Default is (ta.tr) the "True Range".

severity(len, maxDeviation, level, gapDays, spec, res, volatility) Returns ratio of the current value to the normal value. Compensates for overnight gaps within a regular session.
  Parameters:
    len: Number of bars to measure volatility.
    maxDeviation: The limit of volatility before considered an outlier.
    level: The amount of standard deviation after cleaning outliers to be considered within normal.
    gapDays: The number of days in the past to measure overnight gap volaility.
    spec: session.regular (default), session.extended or other time spec.
    res: The resolution (default = '1440').
    volatility: The value to use as a volatility measure. Default is (ta.tr) the "True Range".

Removed:
current(len) Returns the current price adjusted volatitlity ratio.
Release Notes
v4 Improved use of data cleaning and gap detection.
Release Notes
v5 Improved defaults.
Release Notes
v6
  • Added specialized "calcTrueRange" for more than one bar.
  • Added "fromTrueRange" to provide a more useful UDT (Volatility) for understanding the current volatility.
Release Notes
v7 Upgraded true range calc.

Updated:
fromTrueRange(len, maxDev, span, quantized, useWma, smoothing)
  Calculates the volatility based upon the true range.
  Parameters:
    len: maxDev deviation before considered an outlier.
    maxDev
    span: Number of bars measure the true range.
    quantized: When true, the true range is calculated once for every span. When false (default), the true range is calulated for the span on every bar.
    useWma: When true, the calulcation is done using an improved weighted moving average to avoid giving significance to older values.
    smoothing: The number of extra bars to help in smoothing out the result so that large spikes dont' occur from recent data.
gapstatisticstechindicatortruerange

Pine library

In true TradingView spirit, the author has published this Pine code as an open-source library so that other Pine programmers from our community can reuse it. Cheers to the author! You may use this library privately or in other open-source publications, but reuse of this code in a publication is governed by House rules.

Disclaimer