Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Visualizações:
24
Avaliação:
(2)
Publicado:
\MQL5\Include\EVT\
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Visão geral

Quase todas as ferramentas de risco do conjunto padrão do MetaTrader 5 compartilham uma suposição oculta: que a pior perda para a qual vale a pena se preparar é, aproximadamente, a pior perda que você já enfrentou. O Average True Range dimensiona as posições com base na volatilidade recente. Um reamostrador de Monte Carlo reorganiza as negociações que você realmente realizou. O Valor em Risco Histórico (Value at Risk) extrai um percentil diretamente do seu histórico de retornos. Todas elas analisam o corpo da distribuição e secretamente esperam que o futuro não produza nada mais extremo do que o passado.

Os retornos financeiros apresentam caudas grossas, de modo que essa esperança é equivocada. Movimentos de grande magnitude ocorrem com mais frequência e atingem níveis mais extremos do que uma distribuição normal permite, e o pior dia isolado em uma amostra quase nunca é o pior dia que o mercado é capaz de apresentar. Qualquer método que apenas considere perdas tão graves quanto as que já estão em sua janela de análise subestimará sistematicamente uma queda rara.

Distribuição normal sobreposta a um histograma de retornos com caudas largas, com a lacuna nas caudas sombreada

O modelo normal (curva) versus retornos reais com cauda grossa (histograma). A cauda esquerda sombreada representa a perda que ele não detecta.

Este indicador traz para o MQL5, de forma nativa, o ramo da estatística desenvolvido para preencher essa lacuna. A Teoria dos Valores Extremos não modela toda a distribuição; ela modela apenas a cauda, e o faz com uma forma justificada por um teorema do limite, em vez de ser simplesmente assumida. O modelo ajustado pode, então, extrapolar para além de qualquer valor presente na amostra: uma perda de 99,9%, um movimento observado aproximadamente uma vez a cada três anos, um número que seu histórico nunca realmente produziu.

O método. O indicador implementa o método Peaks-Over-Threshold. Ele converte os fechamentos do gráfico em uma série unilateral de perdas em baixa, mantendo a magnitude de cada movimento de baixa e atribuindo valor zero a cada movimento de alta. Ele seleciona um limiar alto u em um quantil dessa série, descarta tudo abaixo dele e estuda apenas as excedências, ou seja, os valores pelos quais as perdas ultrapassam o limiar. O teorema de Pickands-Balkema-de Haan afirma que, para uma ampla classe de distribuições subjacentes, esses excessos convergem, à medida que o limiar aumenta, para uma única família: a Distribuição de Pareto Generalizada. Portanto, a forma da cauda não precisa ser estimada, apenas ajustada.

Limite em uma série de perdas, com os valores que excederam o limite removidos e ajustados com um GPD

Picos acima do limiar: define-se um limiar na série de perdas, os excessos acima dele são separados e uma Distribuição de Pareto Generalizada é ajustada apenas a esses excessos.

O ajuste é uma otimização genuína de máxima verossimilhança da forma e da escala da Distribuição de Pareto Generalizada (GPD), executada por meio do otimizador restrito ALGLIB fornecido com o terminal. Não há ponte para Python, nem DLL, nem qualquer tipo de dependência externa.

Uma observação sobre o escopo. O EVT é uma ferramentade avaliação da magnitude do risco, não uma ferramentade timing de mercado. Ele indica o quão grave uma perda rara poderia ser e se a cauda está atualmente pesada ou leve. Ele não indica quando ocorrerá uma queda brusca nem em que direção negociar. Interpretar uma cauda ascendente como um sinal para “operar vendido” é um uso indevido da ferramenta. A resposta correta a uma cauda que está engordando é controlar a exposição, nunca prever a direção.


O que ela informa

Três números são calculados em uma janela móvel e exibidos em um painel no gráfico, sendo que o primeiro deles também é representado por uma linha em uma subjanela, para que se possa observar o estreitamento e o alargamento da cauda ao longo do tempo.

Interpretação
O que é
Como usá-lo
EVT VaR
Valor em Risco (VaR) no nível de confiança escolhido, extrapolado a partir da cauda ajustada, em vez de ser lido diretamente do histórico.
A perda que você deve prever. Exibida como porcentagem no painel e representada graficamente como a linha na subjanela. Uma linha ascendente significa que a cauda está se tornando mais espessa.
EVT ES
Shortfall Esperado, a perda média caso o VaR seja ultrapassado.
Qual será a gravidade da situação caso o cenário adverso se concretize. Sempre pior que o VaR e o valor mais preciso para a definição de stop.
xi (forma)
O índice de cauda ajustado. Quanto maior, mais pesada: as perdas se acumulam mais adiante.
A leitura do regime, codificada por cores no painel. Esse é o parâmetro que determina até onde a extrapolação alcança.

Os dois estimadores são as formas padrão do GPD-POT; portanto, o que o painel apresenta é exatamente:

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

Aqui, u é o limiar, sigma e xi são a escala e a forma ajustadas, e Nu / n é a taxa de excedência. Ambos possuem um limite exponencial que é usado automaticamente quando a forma ajustada fica próxima de zero, o que mantém a aritmética estável exatamente no regime em que a divisão pela forma não seria.

O semáforo de cauda. O painel coloriza a forma para que o regime possa ser interpretado sem a necessidade de analisar um número:

xi
Cor
Interpretação
abaixo de 0,10
Verde
Próximo do caso da distribuição exponencial de cauda estreita. Calmo.
0,10 a 0,30
Dourado
Moderadamente intenso, onde se concentram a maioria dos instrumentos de mercado.
acima de 0,30
Vermelho
Cauda pesada. As perdas se acumulam e as quedas se aglomeram.

Esses limites servem mais como auxílio à interpretação do que como limites estatísticos e podem ser ajustados conforme preferência. O que importa é que a mesma forma que determina a cor é a mesma que determina as fórmulas; portanto, o painel não pode exibir verde enquanto a matemática calcula discretamente um VaR de cauda grossa.

Indicador EVT Crash Gauge em um gráfico que mostra o painel e a linha do VaR

O indicador no gráfico: o painel exibe o VaR, o Shortfall Esperado e a forma da cauda codificada por cores, enquanto a subjanela traça o VaR EVT ao longo do tempo.


Ele se recusa a adivinhar

Essa é uma decisão de design que vale a pena conhecer antes de você instalá-lo, pois ela altera o que uma leitura em branco significa. Um ajuste de cauda com dois parâmetros precisa de um número real de excedências para ser confiável, e a literatura sobre EVT considera cerca de trinta a cinquenta pontos de cauda como o limite mínimo prático. O mecanismo impõe trinta. Abaixo disso, ele informa seu status em vez de um valor, e o painel diz isso em palavras claras:

Status
Significado
OK
O ajuste convergiu com dados de cauda suficientes. VaR, ES e xi estão ativos.
Dados da cauda insuficientes (N/30 excedências)
A janela produziu menos de trinta excedências. Aumente o período de análise ou reduza o quantil de limite.
O ajuste não convergiu
O otimizador não alcançou uma forma e escala válidas. Nenhum resultado foi gerado.
Não ajustado / entrada incorreta
Ainda não foi executado nenhum ajuste, ou a janela estava vazia ou degenerada.

Um exemplo concreto disso em ação: no limiar padrão de 0,95, um período de análise de 500 barras resulta em apenas cerca de vinte e cinco excedências, e o indicador relata dados insuficientes na cauda da distribuição (25/30 excedências) em vez de um número. A 800 bars, ele atinge o limite mínimo e se ajusta perfeitamente. Isso não é um bug a ser contornado, é o modelo se recusando a fazer uma estimativa, o que é exatamente o comportamento que se espera de uma ferramenta cujo único propósito é a honestidade em relação a eventos raros.

O mesmo princípio se aplica na outra extremidade. Quando a forma ajustada atinge um, a média da cauda diverge e o Expected Shortfall deixa de existir; assim, o mecanismo retorna zero nesse ponto, em vez de um valor inventado. Sempre que um ajuste não atinge o status “OK”, a linha plotada fica em branco para aquela barra, em vez de transportar um valor desatualizado; assim, a linha fica vazia exatamente onde o modelo se recusou a se comprometer.


Configuração recomendada

Configuração
Valor recomendado
Notas
Símbolo
Qualquer instrumento de mercado
Nada é específico ao símbolo: o ajuste é feito com base nos retornos logarítmicos, portanto, os valores são expressos em porcentagem e são comparáveis entre os instrumentos. Um símbolo com baixa liquidez é o único caso em que é provável que o limite mínimo de excedência não seja atingido.
Período
H4 ou D1
O VaR é uma magnitude de perda por barra; portanto, o período define o que o número significa. No D1, trata-se de uma perda diária. O intradiário funciona, mas a cauda de um retorno de um minuto é um objeto diferente.
Período de análise
800 barras
Escolhido para que o limiar de 0,95 ultrapasse o piso de trinta excedências com margem. Janelas mais curtas reagem mais rapidamente, mas atingem o piso.
Histórico necessário
Lookback + 2 barras
Nada é exibido antes da primeira barra passível de ajuste. Certifique-se de que o gráfico tenha realmente baixado esse volume de histórico; caso contrário, o indicador permanecerá em branco.
Quantil do limiar
0,95
O padrão padrão. Reduzi-lo resulta em mais excedências, mas à custa da validade assintótica, já que o teorema se mantém válido à medida que o limiar aumenta.


Parâmetros de entrada

Parâmetro
Padrão
Descrição
Lookback
800
Janela móvel, em barras, sobre a qual cada ajuste é calculado. Uma janela cujos retornos utilizáveis fiquem abaixo da metade desse número é rejeitada por ser muito esparsa.
LimiteQuant
0,95
Quantil da série de perdas usada para definir o limiar u do POT. Aceito entre 0,5 e 0,999.
Confiança
0,99
Nível de confiança para VaR e ES. A cauda ajustada é extrapolada; portanto, 0,999 é uma configuração válida, mesmo que a amostra não contenha tal perda.
Reajustar a cada
1
Frequência de reajuste para barras históricas. No valor 1, cada barra é reajustada e a linha plotada é totalmente resolvida; aumentar esse valor troca a resolução histórica por velocidade em gráficos muito longos. A barra atual é sempre reajustada, independentemente disso.
ShowPanel
true
Desenha o painel de texto no gráfico. Os objetos do painel são removidos quando o indicador é desativado.
Sobre desempenho: um ajuste GPD é uma otimização, não uma consulta. A regra de cadência existe porque reajustar a cada barra de um gráfico muito longo é um trabalho pesado. Se o carregamento inicial parecer lento, aumente o valor de RefitEvery; a leitura em tempo real permanece exata de qualquer maneira, já que a barra mais recente é sempre reajustada.


Usando o mecanismo em seu próprio código

O modelo de cauda é uma classe autônoma, apenas de cabeçalho, chamada CGPDModel, sem dependência de gráficos ou buffers de indicadores. Ele ajusta uma matriz de perdas em que valores maiores significam simplesmente piores resultados; assim, a convenção de sinal permanece a do chamador, e qualquer estratégia capaz de produzir uma série de perdas pode utilizá-la diretamente:

#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());

Além disso, a classe expõe a escala ajustada, o limiar selecionado, a contagem de excedências e a enumeração de status, de modo que um usuário possa registrar ou exibir exatamente por que uma leitura foi retida. Para ler o indicador em vez da classe, obtenha um identificador com iCustom no EVT\EVTCrashGauge e copie o buffer 0, que contém o EVT VaR e mantém o valor zero em qualquer barra em que o ajuste não tenha sido confiável.


Limitações

O EVT merece seu lugar em um conjunto de ferramentas de risco, mas é um instrumento especializado e usá-lo bem significa saber onde ele não se aplica:

  • Ele depende fortemente de dados de cauda. Um ajuste de cauda com dois parâmetros requer um número significativo de excedências. Em um símbolo com poucos negócios ou em uma janela curta, a resposta correta é “dados insuficientes”, e o projeto respeita isso em vez de inventar um número.
  • É sensível ao limiar. O valor padrão de 0,95 é comum, mas a forma e a escala ajustadas mudam com ele. Uma aplicação séria estudaria essa sensibilidade em vez de confiar em uma única configuração, e é por isso que o quantil é exposto como uma entrada.
  • Ele mede magnitude, não tempo. Vale a pena repetir, pois esse é o erro mais comum. Um índice de cauda ascendente não é um sinal direcional.
  • A cauda pode deixar de ser bem definida. À medida que a forma ajustada se aproxima de um, o Shortfall Esperado deixa de existir, e um zero nesse regime é, por si só, uma informação, e não uma falha.


Estrutura do arquivo

Um indicador e um cabeçalho. O cabeçalho está incluído como <EVT\GPDModel.mqh>, portanto, deve ficar na subpasta EVT, dentro da pasta Include.

Arquivo
Função
Descrição
Indicators\EVT\EVTCrashGauge.mq5
O medidor
Cria a série de perdas de baixa a partir da janela móvel dos preços de fechamento, ajusta o modelo com base na cadência das barras, traça o EVT VaR e mantém o painel no gráfico com a leitura da cauda codificada por cores.
Include\EVT\GPDModel.mqh
Mecanismo de cauda
A classe CGPDModel: seleção de limiares, extração de excedências, ajuste de máxima verossimilhança do GPD por otimização restrita com ALGLIB, VaR e Shortfall Esperado, e a enumeração de status que controla cada leitura.

O mecanismo inicia o otimizador com uma estimativa pelo método dos momentos antes de executar a máxima verossimilhança e restringe a forma a um intervalo razoável, de modo que uma janela patológica a empurre em direção a um ajuste rejeitado, em vez de um ajuste aparentemente plausível, mas incorreto.


Base de pesquisa

A implementação segue o tratamento padrão de “Picos Acima do Limiar” (Peaks-Over-Threshold) da Teoria dos Valores Extremos: o teorema de Pickands-Balkema-de Haan para a convergência dos excessos de limiar para a Distribuição de Pareto Generalizada, a estimativa de máxima verossimilhança de sua forma e escala, e as expressões usuais GPD-POT para Valor em Risco e Shortfall Esperado.

Este programa destina-se exclusivamente a fins educacionais. A negociação envolve um alto nível de risco, e uma estimativa de cauda é apenas uma estimativa, não uma garantia quanto ao tamanho da próxima perda. Sempre teste exaustivamente em uma conta demo antes de arriscar capital real.

Um artigo complementar deriva o método, explica o mecanismo e o indicador linha por linha e integra a estimativa da cauda em um Expert Advisor para dimensionamento de posição, a fim de avaliar seu desempenho no Testador de Estratégias: Teoria dos Valores Extremos em MQL5: Construindo um Medidor de Risco de Cauda Além do VaR de Monte Carlo.

Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/75557

RSI Histogram RSI Histogram

Este é um indicador personalizado MQL5 para o MetaTrader 5 chamado “RSI Histogram”. Ele traça a linha padrão do RSI em uma janela separada, além de uma versão em histograma codificada por cores dos mesmos valores do RSI, cuja cor muda de acordo com o momentum:

Relative Moving Average EA Relative Moving Average EA

Uma implementação em MQL5 das quatro estratégias cruzadas da estrutura de Média Móvel Relativa de Bloch, com suas regras adaptativas de saída por cruzamento (Adaptive Crossover Exit) de acordo com o regime de volatilidade. As entradas e saídas são realizadas no espaço de fractis, de modo que os limites têm o mesmo significado para todos os símbolos.

GoldLondonBreakout GoldLondonBreakout

Na sessão asiática, mantém a posição dentro da faixa de variação do XAUUSD e, em seguida, define um par de ordens OCO de rompimento (BuyStop/SellStop) para a abertura do mercado de Londres, com stops baseados no ATR e dimensionamento da posição com base na porcentagem de risco. Sem indicadores, sem discricionariedade — a faixa é medida, não estimada.

Sessionvolatilityheatmap Sessionvolatilityheatmap

Mostra a faixa média de preços por hora do dia de negociação como um mapa de calor no gráfico, além de um sombreado correspondente aos horários das sessões da Ásia, Londres e Nova York atrás das velas — para que você possa ver quando um símbolo realmente se move, em vez de apenas adivinhar.