Cálculo del retraso de las medias móviles

Todo sobre el trading en los mercados financieros: funcionamiento, dudas, noticias, etc.
Avatar de Usuario
Rafa7
Mensajes: 4923
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Cálculo del retraso de las medias móviles

Mensaje por Rafa7 »

agmageton,



El lag temporal de una MM sobre el cierre es otra manera de medir la volatilidad, que se parece más al tipo de volatilidad que se mide con el ancho de la banda de Bollinger que al tipo de volatilidad que se mide con el ATR. Es más, el lag temporal de una MM sobre el cierre es otra manera de medir la volatilidad direccional (o sea, sin el ruido). ¿No lo vés igual?



Saludos.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Avatar de Usuario
Rafa7
Mensajes: 4923
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Cálculo del retraso de las medias móviles

Mensaje por Rafa7 »

Ehlers escribió: Gain = Value1 / 10;
EC = alpha*(EMA + Gain*(Close - EC[1])) + (1 - alpha)*EC[1];
Rango Starr,



En cuanto al PDF de Ehlers hay una cosa que me intriga. Resulta que a la EMA sobre el cierre le aplica un 10% del error acumulado (Gain = Value1 / 10). ¿Por qué el 10%? ¿Por qué no el 100%? ¿Por que no el 50%?
Yo supongo que lo del 10% es una decisión arbitraria de Ehlers basada en su experiencia. Tal vez si correjimos siempre la EMA con el 100% del error acumulado, la media móvil resultante será demasiado rugosa, y Ehlers busca un equilibrio para conseguir una EMA con lag cero pero sin pagar el precio de una media excesivamente rizada.



Saludos.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Avatar de Usuario
agmageton
Mensajes: 3584
Registrado: 30 Ene 2008 11:32

Re: Cálculo del retraso de las medias móviles

Mensaje por agmageton »

Rafa7 escribió:agmageton,



El lag temporal de una MM sobre el cierre es otra manera de medir la volatilidad, que se parece más al tipo de volatilidad que se mide con el ancho de la banda de Bollinger que al tipo de volatilidad que se mide con el ATR. Es más, el lag temporal de una MM sobre el cierre es otra manera de medir la volatilidad direccional (o sea, sin el ruido). ¿No lo vés igual?



Saludos.

Sobre el cierre no, tendrás muchísimo ruido de señal, si lo haces rápidamente sobre un gráfico verás el ruido que genera ese tipo de volatilidad de desvío, porque representará el movimiento del precio y este es ruidoso, si piensas bien encontrarás otra forma mejor de medir la volatilidad para esa utilidad.

saludos.
La entrada te da la probabilidad y la salida la rentabilidad...
Avatar de Usuario
Rafa7
Mensajes: 4923
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Cálculo del retraso de las medias móviles

Mensaje por Rafa7 »

Rafa7 escribió:
Ehlers escribió: Gain = Value1 / 10;
EC = alpha*(EMA + Gain*(Close - EC[1])) + (1 - alpha)*EC[1];
Rango Starr,



En cuanto al PDF de Ehlers hay una cosa que me intriga. Resulta que a la EMA sobre el cierre le aplica un 10% del error acumulado (Gain = Value1 / 10). ¿Por qué el 10%? ¿Por qué no el 100%? ¿Por que no el 50%?
Yo supongo que lo del 10% es una decisión arbitraria de Ehlers basada en su experiencia. Tal vez si correjimos siempre la EMA con el 100% del error acumulado, la media móvil resultante será demasiado rugosa, y Ehlers busca un equilibrio para conseguir una EMA con lag cero pero sin pagar el precio de una media excesivamente rizada.



Saludos.
Traduciendo con bing, aqui tengo la explicación que da Elhers:
Ehlers escribió: Eliminar todo el retraso no es necesariamente una buena cosa porque sin retraso el indicador sólo rastrear el precio que estaba filtrando. Esto es, la cantidad de Lag eliminado es una compensación con la cantidad de suavizado que está dispuesto a renunciar.
Elhers confirma lo que he pensado. Lo que no dice es por qué el 10%, si es una cifra arbitraria basada en su experiencia o la resultante de alguna optimización. Probablemente es lo primero, ya que 10 es una cifra redonda.



Saludos.
Última edición por Rafa7 el 26 Ene 2018 19:06, editado 1 vez en total.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Rango Starr
Mensajes: 3842
Registrado: 22 Dic 2014 10:49

Re: Cálculo del retraso de las medias móviles

Mensaje por Rango Starr »

.-
Última edición por Rango Starr el 08 Mar 2018 21:23, editado 1 vez en total.
un ciclo y otro ciclo, son un biciclo...
si añadimos otro ciclo, entonces tendremos "un triciclo"... famoso trio catalan de humor de los 90....

..y nada mas...

Avatar de Usuario
Rafa7
Mensajes: 4923
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Cálculo del retraso de las medias móviles

Mensaje por Rafa7 »

Sres. foristas.



Os paso el código de 2 indicadores que he diseñado y que estoy utilizando para calcular el lag de una media móvil.
El 1r indicador lo he llamado MAV, que es el acrónimo de "Mobile Average Volatility", "Volatilidad de la media móvil".
Este indicador lo he creado para simplificar el algoritmo del 2º indicador, que lo he llamado Lag.

Código: Seleccionar todo

//MAV Mobile Average Volatility (Volatilidad de la media móvil)
//Programado por Rafa7, forista de x-trader.net
//parámetros:
//   tipo = 0, 1, 2 (SMA, EMA, WMA)
//   n = periodos, número entero
//   lag = número de velas de retraso del precio
//MAV retorna la volatilidad histórica de la media móvil respecto al precio retrasado lag velas
if tipo = 0 then
	mm = average[n](customclose)
elsif tipo = 1 then
	mm = exponentialAverage[n](customclose)
else
	mm = weightedAverage[n](customclose)
endif
i = i + 1
if i > n then
	suma = suma + abs(log(mm / customclose[lag]))
	media = 100 * (suma / i)
endif
RETURN media as "Mobile Average Volatility"

Código: Seleccionar todo

//Lag Candles - Velas de retraso
//Programado por Rafa7, forista de x-trader.net
//parámetros:
//   tipo = 0, 1, 2 (SMA, EMA, WMA)
//   n = periodos, número entero
y1 = CALL MAV[tipo, n, 0](customclose)
y2 = CALL MAV[tipo, n, 1](customclose)
y3 = CALL MAV[tipo, n, 2](customclose)
x3 = 2
while y1 > y2 and y2 > y3 do
	x3 = x3 + 1
	y1 = y2
	y2 = y3
	y3 = CALL MAV[tipo, n, x3](customclose)
wend
x2 = x3 - 1
x1 = x2 - 1
if y3 <> 2 * y2 - y1 then
	lag = - (square(x3) * (y1 - y2) + square(x2) * (y3 - y1) + square(x1) * (y2 - y3)) / (2 * ((x3 * (y2 - y1) + x2 * (y1 - y3) + x1 * (y3 - y2))))
else
	lag = x1
endif
return lag as "Lag Candles"
Y os paso algunos resultados de la medición, en timeframe diario, de los lags en número de velas:

Código: Seleccionar todo

activo	lag(SMA(10)) lag(EMA(10)) lag(WMA(10))
Ibex35	4,56			2,98			2,57
SP500	 4,53			2,87			2,52
EURUSD	4,5			 3,05			2,57
XAUUSD	4,48			2,89			2,48
Como podéis ver, el lag empírico de la SMA(10) es, aproximadamente, de 4,5 velas, o sea, que coincide con su lag teórico.
En cambio el lag empírico de la EMA(10) es, aproximadamente, de 3 velas, o sea, que no coincide con su lag teórico (4,5 velas).
No sé cual es el lag teórico de la WMA(10) (aún no lo he calculado), pero al menos veo que los resultados de las mediciones empíricas son muy parecidas: 2,5 velas.

Lo que no sé es como interpretar porque la EMA(10) tiene un lag empírico diferente a su teórico. Suponiendo que mi demostración de que la EMA(n) (estándar) tiene el mismo lag que la SMA(n), sea correcta, y que mis mediciones de lag lo haga de forma correcta, solo se me ocurre que la causa de la diferencia es que en los períodos de tendencia, el lag de la EMA se acorta respecto a su lag teórico.



Saludos.
Última edición por Rafa7 el 29 Ene 2018 09:49, editado 16 veces en total.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Avatar de Usuario
tartarugap
Mensajes: 1408
Registrado: 15 Ago 2016 22:33

Re: Cálculo del retraso de las medias móviles

Mensaje por tartarugap »

rafa,

mova' jaj wa', wa' po roD HaD je.
vaj... pagh Hon … ben 'avwI'

:)

tu'lu' vIt
Avatar de Usuario
tartarugap
Mensajes: 1408
Registrado: 15 Ago 2016 22:33

Re: Cálculo del retraso de las medias móviles

Mensaje por tartarugap »

Bien...el site/dicionario de klingon no fucniona muy bien...

en la pratica estoy a decir que es domingo una de la manana y en vez de estares de copas estas a estudiar! :)

Eres de la vieja guardia, sin duda hahahaha :)
Avatar de Usuario
Rafa7
Mensajes: 4923
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Cálculo del retraso de las medias móviles

Mensaje por Rafa7 »

tartarugap escribió:rafa,

mova' jaj wa', wa' po roD HaD je.
vaj... pagh Hon … ben 'avwI'

:)

tu'lu' vIt
Qapla', tartarugap.



SoH jang jIH moj je batlh https://www.bing.com/translator/?cc=es.
nuq reading vaj paS Data'?
shouldn't Qong SoH?



ghaH 'ej Duvan.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Avatar de Usuario
Rafa7
Mensajes: 4923
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Cálculo del retraso de las medias móviles

Mensaje por Rafa7 »

Señores foristas,



Dije que medía el error del lag de una media móvil de período respecto al precio retrasado m velas, con el error cuadrático medio del histórico. Pero he comprobado que es más preciso medirlo como el promedio histórico de Abs(Ln(media_móvil / precio_retrasado_m_velas)). Además he tenido en cuenta que los mercados financieros tienen, aproximadamente, una distribución log normal. Así que por un motivo y por el otro, he elegido que el indicador MAV mida el error del lag como el promedio histórico de Abs(Ln(media_móvil / precio_retrasado_m_velas)).

En el indicador Lag, lo que hago es buscar el m, al cual llamo "lag", tal que minimice la diferencia porcentual histórica entre la media móvil y el precio retrasado m velas. Y lo hago aplicando la interpolación parabólica de los puntos (x3 - 2; MAV(x3 - 2)), (x3 - 1; MAV(x3 - 1) y (x3; MAV(x3)). De estos 3 puntos se puede deducir la ecuación de la única parábola que pasa por ellos, a * X^2 + b * X + c = 0, de la cual su derivada es 2 * a * X + b, y si la igualamos a cero conseguimos la X donde está el mínimo de la parábola, o sea -b / (2 * a). Así que lag = -b / (2 * a) = - (square(x3) * (y1 - y2) + square(x2) * (y3 - y1) + square(x1) * (y2 - y3)) / (2 * ((x3 * (y2 - y1) + x2 * (y1 - y3) + x1 * (y3 - y2)))). Donde square es la función elevar al cuadrado, x3 - 2 = x1 y x3 - 2 = x2.

La condición y3 <> 2 * y2 - y1 es para asegurarme que los puntos (x3 - 2; MAV(x3 - 2)), (x3 - 1; MAV(x3 - 1) y (x3; MAV(x3)) no estén alineados, y, por lo tanto, pase una (única) parábola por ellos. Si estos 3 puntos están alineados, no puedo aplicar interpolación parabólica y, entonces, aproximo el lag como x3 - 2 = x1.

Supongo que con esta explicación que doy en este hilo, y releyendo el código por encima, comprenderéis, a ojo de pájaro, como calculo el lag en velas de una media móvil. Pero si queréis que lo explique más detalladamente, os lo explico para que comprendais el código cabalmente.



Saludos.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Avatar de Usuario
Rafa7
Mensajes: 4923
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Cálculo del retraso de las medias móviles

Mensaje por Rafa7 »

Señores foristas,



Ahora voy a calcular el lag teórico de la WMA(n):

WMA(n) =
sum((n - i) * C; 0 <= i <= n - 1) / sum(n - i; 0 <= i <= n - 1)

sum(n - i; 0 <= i <= n - 1) =
sum(n; 0 <= i <= n - 1) - sum(i; 0 <= i <= n - 1) =
n^2 - n * (n - 1) / 2 =
n * (n - (n - 1) / 2) =
n * (2 * n - n + 1) / 2 =
n * (n + 1) / 2


Lag(WMA(n); C) =
2 * sum((n - i) * Lag(C; C); 0 <= i <= n - 1) / (n * (n + 1))
2 * sum((n - i) * i; 0 <= i <= n - 1) / (n * (n + 1))

sum((n - i) * i); 0 <= 1 <= n - 1) =
n * sum(i; 0 <= 1 <= n - 1) - sum(i^2; 0 <= 1 <= n - 1) =
n^2 * (n - 1) / 2 - n * (n - 1) * (2 * n - 1) / 6 =
n * (n - 1) * (3 * n - 2 * n - 1) / 6 =
n * (n - 1)^2 / 6

Lag(WMA(n); C) =
2 * n * (n - 1)^2 / 6 / (n * (n + 1)) =
(n - 1)^2 / (3 * (n + 1))

Lag(WMA(n); C) = (n - 1)^2 / (3 * (n + 1))

Según esto, cuando el n es muy grande Lag(WMA(n); C) es, aproximadamente, de n / 3 velas.

Ahora substituyendo n por 10 tenemos:
Lag(WMA(10); C) =
9^2 / (3 * 11) = 81 / 33 = 2,4545454545454545454545454545455

Lag(WMA(10); C) = 2,45 velas

El cual coincide, aproximadamente, con su lag empírico, 2,5 velas.



Saludos.
Última edición por Rafa7 el 29 Ene 2018 22:51, editado 9 veces en total.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Avatar de Usuario
Rafa7
Mensajes: 4923
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Cálculo del retraso de las medias móviles

Mensaje por Rafa7 »

Sres. foristas.



Los resultados de los calculos teóricos i empíricos de las velas de retraso de SMA(10), EMA(10) y WMA(10) son:
activolag(SMA(10))lag(EMA(10))lag(WMA((10))
Teórico4,504,502,45
Ibex354,562,982,57
SP5004,532,872,52
EURUSD4,503,052,57
XAUUSD4,482,892,48
En la 1ª fila he puesto los lags teóricos, los cuales no dependen de los activos.

Veo que los lags teórico y empírico de la SMA(10) es de 4,5 velas y que los lags teórico y empírico de la WMA(10) es de 2,5 velas.
En cambio el lag empírico de la EMA(10), 3 velas, no coincide con su lag teórico, 4,5 velas.

¿Por qué el lag empírico de la EMA(10) no coincide con su lag teórico? ¿Alguien lo sabe?
De momento me quedo con la explicación de que la EMA(10) acorta su lag empírico, respecto a su lag teórico, en las fases en las que hay tendencia. ¿Puede ser esta la explicación?



Gracias.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Trading en General”