Jak obliczany jest Fisher Transform?

Poznaj kroki obliczania Fisher Transform, dane wejściowe i ograniczenia.

Jak obliczany jest Fisher Transform?

Czym jest Fisher Transform (i dlaczego wzór wygląda inaczej)

Fisher Transform to transformacja matematyczna zaprojektowana w celu przekształcenia szeregu czasowego (często szeregu cenowego) w formę, która zachowuje się bardziej jak nieograniczony oscylator. Nazywany jest „transformacją”, ponieważ odwzorowuje wartości za pomocą funkcji nieliniowych, a nie dlatego, że dokonuje statystycznego przewidywania.

W praktyce kluczowa idea jest następująca:

  1. zredukuj szereg wejściowy do wartości ograniczonej za pomocą bieżącego zakresu maksimum/minimum,
  2. zastosuj nieliniowe odwzorowanie w stylu Fishera (związane z logarytmicznym ilorazem),
  3. zaktualizuj odwzorowaną wartość rekurencyjnie, aby wskaźnik reagował płynnie, a nie czysto „punkt po punkcie”.

Ponieważ odwzorowanie jest nieliniowe, a zakres jest obliczany w oknie, dokładna skala wyniku i czułość silnie zależą od wybranych ustawień oraz od danych, które wprowadzasz do obliczeń.

Podstawowe obliczenie: wzór, parametry i dane wejściowe

Powszechnie stosowane obliczenie Fisher Transform ma następującą ogólną strukturę. Dokładne szczegóły implementacji różnią się w zależności od źródła, ale poniższa mechanika obejmuje zasadnicze elementy.

Parametry i dane wejściowe

Potrzebujesz:

  • Szereg wejściowy: zwykle pochodna wartość ceny (na przykład cena medianowa), podawana dla każdego kroku czasowego.
  • Długość okna wstecznego (N): liczba świec używanych do obliczenia bieżącego minimum i maksimum.
  • Rekurencja/iteracja: odwzorowanie Fishera używa rekurencyjnej aktualizacji, która odwołuje się do wcześniej obliczonych wartości.

Krok 1: oblicz bieżącą wartość znormalizowaną

Dla każdego kroku czasowego t (zaczynając dopiero po zgromadzeniu wystarczającej ilości danych dla okna wstecznego), oblicz bieżące minimum i maksimum szeregu wejściowego w ciągu ostatnich N kroków:

  • Najniższy(t) = minimum wejścia w oknie
  • Najwyższy(t) = maksimum wejścia w oknie

Następnie oblicz znormalizowaną pozycję w zakresie, często w postaci:

  • x(t) = 2 × ((\frac{Input(t) - Najniższy(t)}{Najwyższy(t) - Najniższy(t)})) − 1

To odwzorowuje bieżące wejście na wartość ograniczoną (koncepcyjnie między −1 a +1) na podstawie jego położenia w bieżącym zakresie min/max.

Założenie dla przykładów obliczeniowych: musisz zdefiniować, czym jest „Input(t)”, i konsekwentnie używać tego samego N oraz tej samej definicji okna (z uwzględnieniem/wyłączeniem bieżącej świecy) podczas odtwarzania wartości.

Krok 2: zastosuj nieliniowe odwzorowanie w stylu Fishera

Oblicz wartość pośrednią, która odwzorowuje ograniczoną wartość znormalizowaną w domenę podobną do Fishera za pomocą transformacji logarytmicznego ilorazu. Typowy wzór to:

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

Aby uniknąć osobliwości (dzielenia przez zero lub logarytmu zera), gdy x(t) zbliża się do ±1, implementacje zwykle zawierają zabezpieczenie, takie jak ograniczenie x(t) do nieco mniejszego przedziału (na przykład zapobieganie dokładnym wartościom −1 i +1).

Krok 3: aktualizacja rekurencyjna (wygładzanie przez wartości wcześniejsze)

Wiele wzorów Fisher Transform aktualizuje odwzorowaną wartość za pomocą poprzedniego wyniku. Typowa struktura rekurencyjna to:

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

a czasami wprowadzana jest dodatkowa zmienna wygładzająca lub pośrednia „poprzednia” zmienna. Dokładna forma rekurencyjna określa reaktywność wskaźnika.

Krok 4: opcjonalne zaokrąglanie lub skalowanie

Niektóre implementacje skalują lub zaokrąglają końcowy szereg dla czytelności. Są to wybory dotyczące wyświetlania, a nie podstawowa koncepcja matematyczna.

Zarys przykładu obliczeniowego, który możesz zweryfikować niezależnie

Ponieważ nie zakłada się tutaj żadnych danych rynkowych w czasie rzeczywistym, najbardziej niezawodnym sposobem nauki obliczeń jest odtworzenie ich na małym, hipotetycznym zbiorze danych.

Konfiguracja przykładu (najpierw zdefiniuj założenia)

  • Wybierz N = 5.
  • Wybierz Input(t) dla każdego kroku czasowego (na przykład szereg cen medianowych), który podasz jako wartości liczbowe.
  • Zdecyduj, jak obsłużysz „pierwsze N” punktów (zwykle zaczynasz generować wyniki dopiero po ukończeniu okna).
  • Zdecyduj, jak ograniczysz x(t), gdy zakres jest zbyt mały.

Oblicz wartości pośrednie krok po kroku

Dla każdego kroku czasowego, w którym istnieje okno:

  1. Znajdź Najniższy(t) i Najwyższy(t) z ostatnich N wartości wejściowych.
  2. Oblicz x(t) za pomocą (2 × ((Input−Najniższy)/(Najwyższy−Najniższy)) − 1).
  3. Zabezpiecz x(t), aby nie osiągał dokładnie ±1.
  4. Oblicz f(t) = 0,5 × ln((1 + x)/(1 − x)).
  5. Zaktualizuj fish(t) za pomocą wybranej rekurencji, takiej jak fish(t) = fish(t−1) + f(t) (z fish(t−1) zainicjalizowanym zgodnie z wybraną konwencją).

Jak sprawdzić, czy zaimplementowałeś to poprawnie

Gdy zaimplementujesz te same kroki z tymi samymi założeniami, powinieneś dopasować:

  • bieżące wartości min/max,
  • pośrednią sekwencję x(t),
  • odwzorowanie Fishera f(t),
  • oraz rekurencyjną sekwencję fish(t).

Jeśli którakolwiek sekwencja pośrednia się różni, końcowy wynik również będzie się różnić. Dlatego weryfikacja powinna skupiać się na odtwarzaniu obliczeń pośrednich, a nie tylko końcowej linii.

Ograniczenia i tryby awarii (co może zepsuć obliczenie)

Chociaż Fisher Transform jest zdefiniowanym wzorem, jego obliczony wynik może się znacznie różnić w zależności od tego, jak zaimplementujesz szczegóły i jak zachowują się Twoje dane.

1) Małe lub płaskie zakresy w oknie wstecznym

Jeśli Najwyższy(t) − Najniższy(t) staje się bardzo małe, normalizacja ((Input−Najniższy)/(Najwyższy−Najniższy)) staje się niestabilna. Może to spowodować, że x(t) gwałtownie skoczy w kierunku ±1, co następnie wypycha odwzorowanie logarytmiczne w kierunku wartości ekstremalnych.

Istotna implikacja: musisz zdefiniować zabezpieczenie dla zakresów bliskich zeru (na przykład pominięcie aktualizacji lub ograniczenie obliczonego ilorazu).

2) Osobliwości w transformacji logarytmicznego ilorazu

Odwzorowanie (ln((1+x)/(1−x))) jest niezdefiniowane dokładnie przy x = 1 lub x = −1. Rzeczywiste dane i zaokrąglenia mogą nadal dawać wartości bardzo bliskie tym granicom.

Istotna implikacja: implementacje zwykle ograniczają x(t) nieco wewnątrz przedziału (−1, +1), aby uniknąć nieskończonych wartości.

3) Inicjalizacja rekurencyjna i niespójne konwencje

Ponieważ obliczenie często wykorzystuje wcześniejsze wyniki, wybór początkowego fish(0) (lub pierwszej obliczonej wartości fish) wpływa na kolejne wartości.

Istotna implikacja: dwie implementacje używające tego samego wzoru, ale różnych konwencji inicjalizacji, mogą się różnić.

4) Definicja wejścia zmienia wszystko

Jeśli „Input(t)” jest inną miarą ceny (zamknięcie vs. mediana vs. cena ważona), bieżące wartości min/max się zmieniają, więc x(t), a tym samym wynik Fisher, ulegają zmianie.

Istotna implikacja: musisz traktować definicję szeregu wejściowego jako część obliczenia, a nie jako zewnętrzny szczegół.

5) Problemy z jakością danych

Brakujące świece, nieregularne znaczniki czasu i ponownie próbkowane dane mogą zmienić bieżące okna min/max. Nawet bez żadnego „przewidywania rynku”, ta mechanika obliczeniowa może zniekształcić linię wskaźnika.

Handel walutami i kontraktami CFD wiąże się ze znacznym ryzykiem. Informacje FoxiForex mają charakter edukacyjny i nie są osobistą poradą finansową. Materiały sponsorowane są wyraźnie oznaczone.