Início Indicador técnico Postagem

PCA Synthetics: Otimize Seu Portfólio com o Indicador para MetaTrader 5

Anexo
16997.zip (11.72 KB, Baixar 0 vezes)

O PCA Synthetics é um indicador que facilita a seleção automática dos coeficientes para cada ativo em um portfólio pseudo-estacionário, que tende a se equilibrar em zero.

Para utilizar este indicador, é necessário que a biblioteca AlgLib esteja presente na pasta Include\Math do seu terminal.


Um Pouco de Teoria

Cada ativo financeiro se movimenta em sua própria direção, e cada uma dessas direções representa uma dimensão em um array multidimensional. Ao multiplicar cada elemento da matriz por um número específico, buscamos encontrar um eixo com a menor distância em relação a todos os instrumentos, ou seja, a menor variância total. O número utilizado para multiplicar cada elemento da matriz torna-se o valor do ângulo, que indica como o ativo deve ser ajustado para operar na mesma direção que os demais. Esse valor de ângulo se torna o coeficiente de cada moeda no portfólio.

Se o valor do coeficiente for maior que 0, a moeda é comprada; se for menor que 0, é vendida. Dessa forma, conseguimos manter a estacionaridade do sintético criado ao recalcular os coeficientes periodicamente. Além disso, o PCA não apenas encontra o eixo com a menor variância do portfólio, mas sim vários eixos. O número de ativos no portfólio determina a quantidade de componentes (vetores). Cada um deles é chamado de componente principal, que define o quanto ele afeta a variação total do movimento do portfólio.


Possíveis Problemas

  1. Se o gráfico não for exibido, verifique o que está impresso na aba Experts. Pode haver erros ou sincronizações com outros gráficos em andamento. Caso não haja mensagens, experimente alternar entre diferentes períodos de tempo.

  2. Os valores vetoriais obtidos foram verificados com os já calculados no pacote R, portanto, os valores em si estão corretos. No entanto, o sinal de um coeficiente específico pode estar errado, pois o PCA não considera os sinais. O sinal negativo ou positivo deve ser determinado empiricamente, ou seja, por tentativa e erro.

O problema #2 foi descrito com as imagens aqui: http://stats.stackexchange.com/questions/34396/im-getting-jumpy-loadings-in-rollapply-pca-in-r-can-i-fix-it

Parâmetros

InpVector = 0; // Se existem N moedas no portfólio, o número do eixo de movimento 0 = máxima variância, N - 1 = mínima
InpFrame = 300; // Janela flutuante para o cálculo dos coeficientes, para cada um dos InpDepth barras, realiza-se InpFrame cálculos
InpDepth = 1000; // O total de barras na história, para o qual o gráfico é desenhado
InpForward = 500; // A barra para parar de recalcular os coeficientes e usar os anteriores, isso é OOS
InpPeriod = 1; // Suavização para a MA, para fazer o gráfico parecer menos tremido
InpTimePeriod = PERIOD_CURRENT; // Timeframe para os cálculos
InpNormalize = true; // Normaliza os preços antes de exibi-los, para suavizar as lacunas de volatilidade de USDJPY e EURGBP
InpSynthetics = true; // Desenha o sintético resumido multiplicado pelos coeficientes encontrados ou cada par individualmente
InpPrices = Logs; // Algoritmo de normalização dos pares
InpSymbols = "AUDUSD,USDCHF,USDCAD"; // Pares para o portfólio
InpMagic = "ID" // Nome personalizado do indicador, para facilitar a colocação de múltiplas instâncias em um gráfico sem conflitos

A ideia foi adotada daqui: https://www.mql5.com/en/code/9908

Publicações relacionadas

Comentário (0)