Como o Fisher Transform é calculado?

Aprenda as etapas de cálculo, entradas e limitações do Fisher Transform.

Como o Fisher Transform é calculado?

O que é o Fisher Transform (e por que a fórmula parece diferente)

O Fisher Transform é uma transformação matemática projetada para converter uma série temporal (frequentemente uma série de preços) em uma forma que se comporta mais como um oscilador sem limites. É chamado de “transform” porque remapeia valores usando funções não lineares, não porque realiza previsão estatística.

Na prática, a ideia principal é:

  1. reduzir a série de entrada a um valor limitado usando um intervalo móvel de alta/baixa,
  2. aplicar um mapeamento não linear estilo Fisher (relacionado a um log-ratio),
  3. atualizar o valor mapeado recursivamente para que o indicador responda suavemente, em vez de puramente “ponto a ponto”.

Como o mapeamento é não linear e o intervalo é calculado em uma janela, a escala exata da saída e a sensibilidade dependem fortemente das configurações escolhidas e dos dados que você alimenta no cálculo.

O cálculo principal: fórmula, parâmetros e entradas

Um cálculo de Fisher Transform amplamente utilizado segue esta estrutura geral. Os detalhes exatos de implementação variam conforme a fonte, mas a mecânica abaixo captura os componentes essenciais.

Parâmetros e entradas

Você precisa de:

  • Série de entrada: geralmente um valor de preço derivado (por exemplo, o preço mediano), fornecido para cada etapa de tempo.
  • Comprimento da janela de lookback (N): o número de barras usado para calcular o mínimo e o máximo móveis.
  • Recursão/iteração: o mapeamento Fisher usa uma atualização recursiva que referencia valores calculados anteriormente.

Etapa 1: calcular um valor normalizado móvel

Para cada etapa de tempo t (começando somente após haver dados suficientes para o lookback), calcule o mínimo e o máximo móveis da série de entrada nas últimas N etapas:

  • Lowest(t) = mínimo da entrada na janela
  • Highest(t) = máximo da entrada na janela

Em seguida, calcule uma posição normalizada no intervalo, geralmente da forma:

  • x(t) = 2 × ((\frac{Input(t) - Lowest(t)}{Highest(t) - Lowest(t)})) − 1

Isso mapeia a entrada atual para um valor limitado (conceitualmente entre −1 e +1) com base em onde ela se encontra dentro de seu intervalo recente de mín/máx.

Premissa para exemplos de cálculo: você deve definir o que é “Input(t)” e deve usar o mesmo N e a mesma definição de janela (inclusiva/exclusiva da barra atual) de forma consistente ao reproduzir valores.

Etapa 2: aplicar um mapeamento não linear estilo Fisher

Calcule um valor intermediário que mapeia o valor normalizado limitado para um domínio semelhante ao de Fisher usando uma transformação log-ratio. Um padrão comum é:

  • f(t) = 0,5 × ln((\frac{1 + x(t)}{1 - x(t)}))

Para evitar singularidades (divisão por zero ou log de zero) quando x(t) se aproxima de ±1, as implementações normalmente incluem uma salvaguarda, como limitar x(t) a um intervalo ligeiramente menor (por exemplo, evitando exatamente −1 e +1).

Etapa 3: atualização recursiva (suavização via valores anteriores)

Muitas fórmulas de Fisher Transform atualizam o valor mapeado usando a saída anterior. Uma estrutura recursiva típica é:

  • fish(t) = fish(t−1) + f(t)

e às vezes um fator de suavização adicional ou uma variável “anterior” intermediária é introduzido. A forma recursiva exata determina a capacidade de resposta do indicador.

Etapa 4: arredondamento ou escala opcional

Algumas implementações redimensionam ou arredondam a série final para legibilidade. Essas são escolhas de exibição, não o conceito matemático central.

Um esboço de exemplo prático que você pode verificar de forma independente

Como nenhum dado de mercado em tempo real é assumido aqui, a maneira mais confiável de aprender o cálculo é reproduzi-lo em um pequeno conjunto de dados hipotético.

Configuração do exemplo (defina as premissas primeiro)

  • Escolha N = 5.
  • Escolha Input(t) para cada etapa de tempo (por exemplo, uma série de preço mediano) que você fornece como valores numéricos.
  • Decida como lidar com os primeiros “N” pontos (comumente você começa a produzir saídas somente após a janela estar completa).
  • Decida como limitar x(t) quando o intervalo for muito pequeno.

Calcule os valores intermediários passo a passo

Para cada etapa de tempo em que a janela existe:

  1. Encontre Lowest(t) e Highest(t) dos últimos N valores de entrada.
  2. Calcule x(t) usando (2 × ((Input−Lowest)/(Highest−Lowest)) − 1).
  3. Proteja x(t) para que não atinja ±1 exatamente.
  4. Calcule f(t) = 0,5 × ln((1 + x)/(1 − x)).
  5. Atualize fish(t) usando a recursão escolhida, como fish(t) = fish(t−1) + f(t) (com fish(t−1) inicializado de acordo com sua convenção escolhida).

Como verificar se você implementou corretamente

Quando você implementa as mesmas etapas com as mesmas premissas, deve corresponder:

  • aos valores de mín/máx móveis,
  • à sequência intermediária x(t),
  • ao mapeamento Fisher f(t),
  • e à sequência recursiva fish(t).

Se qualquer sequência intermediária diferir, a saída final também diferirá. É por isso que o foco da verificação deve estar em reproduzir os cálculos intermediários, não apenas a linha final.

Limitações e modos de falha (o que pode quebrar o cálculo)

Mesmo que o Fisher Transform seja uma fórmula definida, sua saída calculada pode variar amplamente dependendo de como você implementa os detalhes e de como seus dados se comportam.

1) Intervalos pequenos ou planos na janela de lookback

Se Highest(t) − Lowest(t) se tornar muito pequeno, a normalização ((Input−Lowest)/(Highest−Lowest)) se torna instável. Isso pode fazer com que x(t) salte abruptamente em direção a ±1, o que então empurra o mapeamento log para valores extremos.

Implicação material: você deve definir uma salvaguarda para intervalos próximos de zero (por exemplo, pular a atualização ou limitar a razão calculada).

2) Singularidades na transformação log-ratio

O mapeamento (ln((1+x)/(1−x))) é indefinido exatamente em x = 1 ou x = −1. Dados reais e arredondamentos ainda podem produzir valores extremamente próximos desses limites.

Implicação material: as implementações normalmente limitam x(t) ligeiramente dentro de (−1, +1) para evitar valores infinitos.

3) Inicialização recursiva e convenções inconsistentes

Como o cálculo frequentemente usa saídas anteriores, a escolha do fish(0) inicial (ou do primeiro valor de fish calculado) afeta os valores subsequentes.

Implicação material: duas implementações que usam a mesma fórmula, mas convenções iniciais diferentes, podem divergir.

4) A definição da entrada muda tudo

Se “Input(t)” for uma medida de preço diferente (fechamento vs. mediana vs. preço ponderado), os valores de mín/máx móveis mudam, então x(t) e, portanto, a saída do Fisher mudam.

Implicação material: você deve tratar a definição da série de entrada como parte do cálculo, não como um detalhe externo.

5) Problemas de qualidade de dados

Barras ausentes, timestamps irregulares e dados reamostrados podem alterar as janelas de mín/máx móveis. Mesmo sem qualquer “previsão de mercado”, esses mecanismos de cálculo podem distorcer a linha do indicador.

Negociar moedas e CFDs envolve risco substancial. As informações da FoxiForex são educativas e não constituem aconselhamento financeiro pessoal. Conteúdo patrocinado é identificado claramente.