Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Visualizaciones:
22
Ranking:
(2)
Publicado:
\MQL5\Include\EVT\
GPDModel.mqh (12.21 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Resumen

Casi todas las herramientas de gestión de riesgos del conjunto estándar de MetaTrader 5 comparten una suposición oculta: que la peor pérdida para la que vale la pena prepararse es, más o menos, la peor pérdida que ya has sufrido. El rango verdadero medio (ATR) dimensiona las posiciones en función de la volatilidad reciente. Un re-muestreador de Monte Carlo reorganiza las operaciones que realmente has realizado. El «valor en riesgo» histórico extrae un percentil directamente de tu historial de rentabilidad. Todas estas herramientas se fijan en el cuerpo de la distribución y esperan en silencio que el futuro no depare nada más extremo que el pasado.

Los rendimientos financieros tienen colas gruesas, por lo que esa esperanza es infundada. Los grandes movimientos ocurren con más frecuencia y alcanzan niveles más altos de lo que permite una distribución normal, y el peor día concreto de una muestra casi nunca es el peor día del que es capaz el mercado. Cualquier método que solo pueda prever pérdidas tan graves como las que ya se encuentran en su ventana subestimará sistemáticamente una caída excepcional.

Distribución normal superpuesta a un histograma de rentabilidad con colas gruesas, con la zona entre las colas sombreada

El modelo normal (curva) frente a los rendimientos reales con colas gruesas (histograma). La cola izquierda sombreada representa la pérdida que no detecta.

Este indicador incorpora de forma nativa en MQL5 la rama de la estadística desarrollada para cubrir esa laguna. La teoría de valores extremos no modela toda la distribución; solo modela la cola, y lo hace con una forma justificada por un teorema del límite, en lugar de una suposición. El modelo ajustado puede entonces extrapolar más allá de cualquier dato de la muestra: una pérdida del 99,9 %, un movimiento que se observa aproximadamente una vez cada tres años, una cifra que tu historial nunca ha registrado realmente.

El método. El indicador implementa la técnica «Peaks-Over-Threshold». Convierte los cierres del gráfico en una serie unilateral de pérdidas a la baja, conservando la magnitud de cada movimiento a la baja y asignando el valor cero a cada movimiento al alza. Elige un umbral alto u en un cuantíl de esa serie, descarta todo lo que se encuentra por debajo de él y estudia únicamente los excesos, es decir, las cantidades en las que las pérdidas superan el umbral. El teorema de Pickands-Balkema-de Haan establece que, para una amplia clase de distribuciones subyacentes, esos excesos convergen, a medida que aumenta el umbral, hacia una única familia: la distribución de Pareto generalizada. Por lo tanto, no es necesario adivinar la forma de la cola, sino solo ajustarla.

Umbral en una serie de pérdidas, con los valores que superan el umbral eliminados y ajustados mediante un modelo GPD

Picos por encima del umbral: se establece un umbral en la serie de pérdidas, se separan los excesos por encima de él y se ajusta una distribución de Pareto generalizada únicamente a esos excesos.

El ajuste consiste en una auténtica optimización de máxima verosimilitud de la forma y la escala de la distribución de Pareto generalizada (GPD), realizada mediante el optimizador con restricciones de ALGLIB incluido en el terminal. No hay puente de Python, ni DLL, ni dependencia externa de ningún tipo.

Una nota sobre el alcance. EVT es una herramientapara evaluar la magnitud del riesgo, no una herramientapara predecir el momento adecuado para entrar en el mercado. Te indica cuán grave podría ser una pérdida poco frecuente y si la cola es actualmente pesada o ligera. No te indica cuándo se producirá una caída ni en qué dirección operar. Interpretar una cola ascendente como una señal para «operar en corto» supone un uso indebido de la herramienta. La respuesta correcta ante una cola que se engrosa es controlar la exposición, nunca predecir la dirección.


Qué información proporciona

Se calculan tres cifras en una ventana móvil y se muestran en un panel del gráfico; la primera de ellas también se representa como una línea en una subventana, de modo que se puede observar cómo la cola se estrecha y se ensancha con el tiempo.

Interpretación
Qué es
Cómo utilizarlo
EVT VaR
Valor en riesgo (VaR) al nivel de confianza elegido, extrapolado a partir de la cola ajustada en lugar de leerse directamente del historial.
La pérdida que debes tener en cuenta. Se muestra como porcentaje en el panel y se representa gráficamente como la línea de la subventana. Una línea ascendente indica que la cola se está ensanchando.
EVT ES
Déficit esperado: la pérdida media en caso de que se supere el VaR.
La gravedad de la situación una vez que se produce el peor de los casos. Siempre es peor que el VaR y es la cifra más realista a la hora de fijar los límites de stop.
xi (forma)
El índice de cola ajustado. Cuanto mayor sea, más pesada será: las pérdidas se acumulan a medida que se aleja en el tiempo.
La lectura del régimen, codificada por colores en el panel. Este es el parámetro que determina hasta dónde llega la extrapolación.

Los dos estimadores son las formas estándar de GPD-POT, por lo que lo que muestra el panel es exactamente:

VaR_p = u + (sigma / xi) * [ ( (Nu / n) / (1 - p) )^xi - 1 ]
ES_p  = VaR_p / (1 - xi) + (sigma - xi * u) / (1 - xi)

Aquí u es el umbral, sigma y xi son la escala y la forma ajustadas, y Nu / n es la tasa de excedencia. Ambos tienen un límite exponencial que se utiliza automáticamente cuando la forma ajustada se sitúa cerca de cero, lo que mantiene estable la aritmética precisamente en el régimen en el que dividir por la forma no lo estaría.

El «semáforo» de la cola. El panel colorea la forma para que se pueda interpretar el régimen sin necesidad de interpretar un número:

xi
Color
Lectura
por debajo de 0,10
Verde
Cercano al caso de la distribución exponencial de cola delgada. Tranquilo.
De 0,10 a 0,30
Dorado
Moderadamente intensa, donde se sitúan la mayoría de los instrumentos líquidos.
Por encima de 0,30
Rojo
Cola pesada. Las pérdidas se acumulan y las caídas se agrupan.

Esos umbrales son más una ayuda para la interpretación que unos umbrales estadísticos, y pueden ajustarse a gusto. Lo importante es que la misma forma que determina el color es la que determina las fórmulas, por lo que el panel no puede mostrar verde mientras las cálculos están calculando en segundo plano un VaR de cola gruesa.

Indicador «EVT Crash Gauge» en un gráfico que muestra el panel y la línea VaR

El indicador en un gráfico: el panel muestra el VaR, el shortfall esperado y la forma de la cola codificada por colores, mientras que la subventana representa gráficamente el VaR EVT a lo largo del tiempo.


Se niega a hacer conjeturas

Esta es una decisión de diseño que conviene conocer antes de incorporarlo, ya que cambia el significado de una lectura en blanco. Un ajuste de cola de dos parámetros necesita un número real de excedencias para ser fiable, y la bibliografía sobre EVT considera que entre treinta y cincuenta puntos de cola constituyen el mínimo práctico. El motor exige treinta. Por debajo de ese umbral, muestra su estado en lugar de una cifra, y el panel lo indica claramente con palabras sencillas:

Estado
Significado
OK
El ajuste ha convergido con suficientes datos de la cola. VaR, ES y xi están activos.
Datos de la cola insuficientes (N/30 superaciones)
La ventana ha generado menos de treinta superaciones. Aumenta el periodo de retrospectiva o reduce el cuantíl umbral.
El ajuste no ha convergido
El optimizador no ha alcanzado una forma y una escala válidas. No se ha generado ningún informe.
No se ha realizado el ajuste / entrada errónea
Aún no se ha ejecutado ningún ajuste, o la ventana estaba vacía o era degenerada.

Un ejemplo concreto de esto en la práctica: con el umbral predeterminado de 0,95, un intervalo retrospectivo de 500 barras solo arroja unas veinticinco superaciones, y el indicador informa de datos insuficientes en la cola (25/30 superaciones) en lugar de una cifra. A 800 bares supera el umbral mínimo y se ajusta correctamente. No se trata de un error que haya que sortear, sino de que el modelo se niega a hacer conjeturas, que es precisamente el comportamiento que se espera de una herramienta cuyo único propósito es la honestidad respecto a los eventos poco frecuentes.

El mismo principio se aplica en el otro extremo. Cuando la forma ajustada alcanza la unidad, la media de la cola diverge y el «Expected Shortfall» deja de existir, por lo que el motor devuelve cero en ese punto en lugar de una cifra inventada. Siempre que un ajuste no obtenga el estado «OK», la línea trazada se deja en blanco para esa barra en lugar de mantener un valor obsoleto, de modo que la línea queda vacía exactamente donde el modelo se ha negado a dar una respuesta.


Configuración recomendada

Parámetro
Valor recomendado
Notas
Símbolo
Cualquier instrumento líquido
No hay nada específico para cada símbolo: el ajuste se realiza sobre rendimientos logarítmicos, por lo que las lecturas son porcentajes y comparables entre instrumentos. Un símbolo con escaso volumen de negociación es el único caso en el que es probable que no se cumpla el límite mínimo de superación.
Plazo
H4 o D1
El VaR es una magnitud de pérdida por barra, por lo que el horizonte temporal determina el significado de la cifra. En D1 se trata de una pérdida diaria. El intradía funciona, pero la cola de una rentabilidad de un minuto es un concepto distinto.
Período retrospectivo
800 barras
Se ha elegido este valor para que el umbral de 0,95 supere con holgura el límite mínimo de treinta superaciones. Las ventanas más cortas reaccionan más rápido, pero alcanzan el límite mínimo.
Historial requerido
Período retrospectivo + 2 barras
No se dibuja nada antes de la primera barra apta para el ajuste. Asegúrate de que el gráfico haya descargado realmente ese historial, o el indicador permanecerá en blanco.
Cuantil del umbral
0,95
El valor predeterminado estándar. Reducirlo aumenta el número de superaciones a costa de la validez asintótica, ya que el teorema se cumple a medida que aumenta el umbral.


Parámetros de entrada

Parámetro
Valor por defecto
Descripción
Retrospectiva
800
Ventana móvil, en barras, sobre la que se calcula cada ajuste. Se rechaza como demasiado escasa cualquier ventana cuyos rendimientos utilizables sean inferiores a la mitad de este recuento.
Umbral cuantitativo
0,95
Cuantil de la serie de pérdidas utilizado para establecer el umbral u de POT. Se aceptan valores entre 0,5 y 0,999.
Confianza
0,99
Nivel de confianza para el VaR y el ES. La cola ajustada se extrapola, por lo que 0,999 es un valor válido aunque la muestra no contenga pérdidas de ese tipo.
Reajustar cada
1
Frecuencia de reajuste para las barras históricas. Con el valor 1, cada barra se reajusta y la línea representada se resuelve por completo; al aumentar este valor, se sacrifica la resolución histórica a cambio de velocidad en gráficos muy largos. La barra actual siempre se reajusta, independientemente de lo anterior.
Mostrar panel
true
Dibuja el panel de texto en el gráfico. Los objetos del panel se eliminan cuando se desactiva el indicador.
Acerca del rendimiento: un ajuste GPD es una optimización, no una consulta. La regla de cadencia existe porque reajustar cada barra de un gráfico muy largo supone un trabajo considerable. Si la primera carga resulta lenta, aumenta el valor de RefitEvery; la lectura en tiempo real se mantiene exacta en cualquier caso, ya que la barra más reciente siempre se reajusta.


Uso del motor en tu propio código

El modelo de cola es una clase independiente que solo consta de encabezado, CGPDModel, sin dependencia de gráficos ni búferes de indicadores. Ajusta una matriz de pérdidas en la que un valor mayor simplemente significa peor, por lo que la convención de signos es la del llamante, y cualquier estrategia que pueda generar una serie de pérdidas puede utilizarlo directamente:

#include <EVT\GPDModel.mqh>

CGPDModel model;
model.SetThresholdQuantile(0.95);

if(model.Fit(losses,count) && model.IsReliable())
  {
   double var = model.VaR(0.99);
   double es  = model.ExpectedShortfall(0.99);
   double xi  = model.Xi();
  }
else
   Print("tail not usable: ",model.StatusText());

Además, la clase expone la escala ajustada, el umbral seleccionado, el recuento de superaciones y la enumeración de estados, de modo que el usuario pueda registrar o mostrar exactamente por qué se ha ocultado una lectura. Para leer el indicador en lugar de la clase, obtén un identificador con iCustom en EVT\EVTCrashGauge y copia el búfer 0, que contiene el VaR de EVT y muestra cero en cualquier barra en la que el ajuste no fuera fiable.


Limitaciones

EVT se ha ganado un lugar en el conjunto de herramientas de riesgo, pero es un instrumento especializado y utilizarlo bien implica saber en qué casos no es aplicable:

  • Requiere muchos datos de cola. Un ajuste de cola de dos parámetros necesita un número significativo de superaciones. En un valor con escaso volumen de negociación o en un intervalo de tiempo corto, la respuesta correcta es «datos insuficientes», y el diseño respeta eso en lugar de inventar una cifra.
  • Es sensible al umbral. El valor predeterminado de 0,95 es estándar, pero la forma y la escala ajustadas varían en función de él. Una aplicación seria estudiaría esa sensibilidad en lugar de confiar en un único ajuste, razón por la cual el cuantíl se presenta como un parámetro de entrada.
  • Mide la magnitud, no el momento. Vale la pena repetirlo porque es el error más común. Un índice de cola ascendente no es una señal direccional.
  • La cola puede dejar de estar bien definida. A medida que la forma ajustada se aproxima a uno, el «shortfall esperado» deja de existir, y un cero en ese régimen es en sí mismo información, más que un fallo.


Estructura de archivos

Un indicador y un encabezado. El encabezado se incluye como <EVT\GPDModel.mqh>, por lo que debe ubicarse en su subcarpeta EVT dentro de «Include».

Archivo
Función
Descripción
Indicators\EVT\EVTCrashGauge.mq5
El indicador
Crea la serie de pérdidas a la baja a partir de la ventana móvil de los precios de cierre, ajusta el modelo al ritmo de las barras, traza el VaR de EVT y mantiene el panel en el gráfico con la lectura de la cola codificada por colores.
Include\EVT\GPDModel.mqh
Motor de colas
La clase CGPDModel: selección de umbrales, extracción de excedencias, ajuste de máxima verosimilitud de la GPD mediante optimización restringida con ALGLIB, VaR y déficit esperado, y la enumeración de estados que controla cada lectura.

El motor alimenta al optimizador con una estimación por el método de los momentos antes de ejecutar la máxima verosimilitud, y restringe la forma a un rango razonable, de modo que una ventana patológica lo empuje hacia un ajuste rechazado en lugar de hacia uno erróneo que parezca plausible.


Base de investigación

La implementación sigue el tratamiento estándar de «picos por encima del umbral» (Peaks-Over-Threshold) de la teoría de los valores extremos: el teorema de Pickands-Balkema-de Haan sobre la convergencia de los excesos respecto al umbral hacia la distribución de Pareto generalizada, la estimación de máxima verosimilitud de su forma y escala, y las expresiones habituales de la GPD-POT para el valor en riesgo (VaR) y el déficit esperado.

Este programa está destinado exclusivamente a fines educativos. El trading conlleva un alto nivel de riesgo, y una estimación de la cola es solo eso, una estimación, no una garantía sobre la magnitud de la próxima pérdida. Prueba siempre a fondo en una cuenta demo antes de arriesgar capital real.

En un artículo complementario se deriva el método, se explica el motor y el indicador línea por línea, y se integra la estimación de la cola en un Asesor Experto para el cálculo del tamaño de la posición con el fin de evaluar su comportamiento en el Probador de Estrategias: «Teoría de los valores extremos en MQL5: Creación de un indicador de riesgo de cola más allá del VaR de Monte Carlo».

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/75557

RSI Histogram RSI Histogram

Este es un indicador personalizado de MQL5 para MetaTrader 5 llamado «RSI Histogram». Traza la línea estándar del RSI en una ventana independiente, además de una versión en forma de histograma codificada por colores de los mismos valores del RSI, cuyo color varía en función del impulso:

Relative Moving Average EA Relative Moving Average EA

Una implementación en MQL5 de las cuatro estrategias cruzadas del marco de «medias móviles relativas» de Bloch, con sus reglas de salida «Adaptive Crossover Exit» que varían según el régimen de volatilidad. Las entradas y salidas se realizan en el espacio de fractiles, por lo que los umbrales tienen el mismo significado en todos los símbolos.

GoldLondonBreakout GoldLondonBreakout

Se mantienen las posiciones dentro del rango de la sesión asiática en XAUUSD y, a continuación, se coloca un par OCO de ruptura (BuyStop/SellStop) para la apertura de Londres, con stops basados en el ATR y un tamaño de posición en función del porcentaje de riesgo. Sin indicadores, sin discrecionalidad: el rango se mide, no se adivina.

Sessionvolatilityheatmap Sessionvolatilityheatmap

Muestra el rango de precios medio por hora de la jornada bursátil en forma de mapa de calor en el gráfico, además de un sombreado correspondiente a las sesiones de Asia, Londres y Nueva York detrás de las velas, para que puedas ver cuándo se mueve realmente un valor, en lugar de limitarte a hacer conjeturas.