Soy un novato tratando de calcular la Volatilidad IntraDay y Overnight.
Para Volatilidad intradía podemos obtener el factor de anualización con lo siguiente:
Duración (horas, de apertura a cierre): 6,5
Plazos por día: 24 / 6,5 = 3,6923
Plazos por año: 252 * 3.6923 = 930.4596
Factor de anualización: SQRT(930.4596) = 30.5034
Para Durante la noche volatilidad, el factor de anualización es:
Duración (horas, de cierre a apertura): 17,5
Cuadros de tiempo por día: 24 / 17,5 = 1,3714
Plazos por año: 252 * 1.3714 = 345.5928
Factor de anualización: SQRT(345.5928) = 18.5901
Con estos parámetros, puedo calcular volatilidad intradía como la desviación estándar de los 20 últimos abrir-cerrar las variaciones de los precios, multiplicadas por el factor de anualización, 30.5034
Y la volatilidad a un día puede calcularse mediante la desviación estándar de los 20 últimos cerca-abierto las variaciones de los precios, multiplicadas por el factor de anualización, 18.5901
Parece que esto debería ser bastante sencillo ya que tengo todas las entradas pero no estoy seguro de si lo estoy haciendo bien, especialmente en thinkorswim.
Por ejemplo, probé a editar el estudio de volatilidad histórica por defecto de ThinkorSwim a lo siguiente (sólo cambié las dos últimas líneas desde el fondo):
#
# TD Ameritrade IP Company, Inc. (c) 2007-2017
#
declare lower;
input length = 20;
input basis = {default Annual, Monthly, Weekly, Daily};
def ap = getAggregationPeriod();
assert(ap >= AggregationPeriod.MIN, "Study can only be calculated for time-aggregated charts: " + ap);
def barsPerDay = (regularTradingEnd(getYyyyMmDd()) - regularTradingStart(getYyyyMmDd())) / ap;
def barsPerYear =
if ap > AggregationPeriod.WEEK then 12
else if ap == AggregationPeriod.WEEK then 52
else if ap >= AggregationPeriod.DAY then 252 * AggregationPeriod.DAY / ap
else 252 * barsPerDay;
def basisCoeff;
switch (basis) {
case Annual:
basisCoeff = 1;
case Monthly:
basisCoeff = 12;
case Weekly:
basisCoeff = 52;
case Daily:
basisCoeff = 252;
}
def clLog = log(open / close[1]);
plot HV = stdev(clLog, length) * 30.5;
HV.SetDefaultColor(GetColor(0));
¿Es esto correcto? ¿Existe un thinkscript/fórmula más sencillo? Muchas gracias. Se lo agradezco.