Rozdział 7.doc

(9248 KB) Pobierz

Opis MESA

Rozdział 7

 

Opis MESA

 

              Rozdział ten dokładnie opisuje algorytm MESA. Rozdział rozpoczyna się od ogólnych rozważań na temat dwóch metod obróbki sygnałów cyfrowych, tj. antyaliasing i oddzielanie trendu. Omówione współczynniki techniczne są następnie stosowane do danych liczbowych, wykorzystywanych przez MESA oraz do najlepszego ustawienia filtra MESA. Algorytm MESA jest obszernie omówiony przy pomocy równań i schematów, co jest pomocne w programowaniu komputera. Jeżeli nie jesteś zainteresowany matematyczną otoczką MESA lub samodzielnym jego zaprogramowaniem, możesz tylko pobieżnie przejrzeć ten rozdział.

 

Antyaliasing

 

              Patrząc z perspektywy przetwarzania sygnału, dana liczbowa ceny rynkowej jest próbą danej. Każdy słupek ceny jest daną liczbową próby. Najbardziej powszechnym rodzajem próby jest jedna próba na dzień, aczkolwiek rodzaj próby może zmieniać się od pojedynczych tików cenowych do miesięcznych lub dłuższych. Wskaźnik Nyquista dla tej próby danej – najkrótszy cykl, który może być rozważany bez antyaliasingu – wynosi 2 słupki na cykl. Jest to teoretyczna górna granica. W praktyce, przed rozpoczęciem przetwarzania sygnału, krótsze cykle muszą być wytłumione przez filtrowanie, aby zapobiec wpływowi ich schodkowych składników na obliczenia.

              Inną praktyczną uwagą jest to, że krótsze cykle zmieniają się tak szybko, że obliczenia nie są stanie uchwycić początkowego lub końcowego punktu cyklicznego ruchu, przed jego wystąpieniem, w wystarczającym czasie do zawarcia transakcji. Moje doświadczenie mówi, że najkrótszym cyklem przydatnym do zawierania transakcji, jest cykl 8-słupkowy. Rozpiętość czasowa od dołka do szczytu, tego 8-słupkowego cyklu, wynosi 4 słupki. Nawet jeśli spóźnisz się z wejściem tylko o 1 słupek, stracisz około 25 procent ruchu i odpowiednio, stracisz także około 25 procent ruchu, jeśli spóźnisz się z wyjściem tylko o jeden słupek. W rezultacie, zyskowność transakcji jest minimalna. Jeśli jesteś spóźniony o 2 słupki, to najlepiej będzie nie zawierać transakcji.

              W rezultacie tych uwag praktycznych, możemy odfiltrować z surowych danych liczbowych ceny, krótsze cykle i pozostawić zasadniczo niezmienione amplitudy okresów cykli dłuższych, niż 8 słupków. Najbardziej skutecznym filtrem do wykonania tego jest filtr eliptyczny. Na Rysunku 7.1 pokazana jest częstotliwość odpowiadająca trzy-słupkowemu filtrowi eliptycznemu, którego pasmo przepustowe szumu wynosi 0.1 dB oraz pasmo zaporowe usuwania jest większe niż 30 dB i którego pasmo przepustowe częstotliwości wynosi 0.22 (w porównaniu do częstotliwości Nyquista). Jak pokazano na rysunku, okresy cykli dłuższych niż 8 słupków (częstotliwości mniejsze niż 0.25) są przepuszczane bez tłumienia, podczas gdy 2- i 4-słupkowe cykle są całkowicie wycinane.

 

 

 

 

 



Rysunek 7.1 Częstotliwość odpowiadająca eliptycznemu filtrowi antyaliasingowemu.

 

              W języku EasyLanguage, zapis Funkcja[N] oznacza wartość tej Funkcji „N” słupków temu. Używając tego zapisu, równanie eliptycznego filtru przedstawia się następująco:

 

Filt=0.0774*Cena + 0.0778*Cena[1] + 0.0778*Cena[2] + 0.0774*Cena[3] + 1.4847*Filt[1]

        -1.0668*Filt[2] + 0.2698*Filt[3]

 

Oddzielanie trendu

 

              Teoretyczne cykle wahają się plus minus dookoła średniej zero. Finansowe dane liczbowe cen nie wynoszą średnio zero i do obliczeń cykli należy je przedtem oddzielić od trendu. Jeśli nie oddzieliliśmy trendu od danych liczbowych, to powinniśmy umieścić ciężar usuwania składników o niskiej częstotliwości wyłącznie na algorytmie MESA. Chociaż jest to możliwe, to jednak nie jest wskazane, ponieważ powoduje błąd obliczeniowy z powodu wykorzystywania w obliczeniach małych różnic dużych liczb. Oddzielanie trendu zasadniczo oznacza usuwanie z danych liczbowych składników o bardzo niskiej częstotliwości. Można to wykonać na kilka sposobów, ale ponieważ interesujemy się zakresem częstotliwości, to rozsądniejszym jest usunąć składnik o zerowej częstotliwości, używając filtr. Taki filtr nazywany jest filtrem górnoprzepustowym.



              Rozsądny filtr górnoprzepustowy wykorzystywany dla naszych celów oddzielania trendu z danych liczbowych przed wykonaniem obliczeń MESA, pokazany jest na Rysunku 7.2.

 

Rysunek 7.2 Częstotliwość odpowiadająca filtrowi górnoprzepustowemu.

 

              Pamiętaj, że częstotliwości większe niż 0.05 (40-słupkowe okresy cykli) przepuszczane są w zasadzie bez tłumienia. Równanie górnoprzepustowego filtra pokazanego na Rysunku 7.2, przedstawia się następująco:

 

Detrend=0.95*Cena-0.95*Cena[1]+0.9*Detrend[1]

 

              Możemy połączyć to z filtrem antyaliasingowym, otrzymując równanie:

 

Detrend=0.95*Filt-0.95*Filt[1]+0.9*Detrend[1]

 

              A zatem, połączone filtrowanie tłumi te składniki, które znajdują się poza wyznaczonym przedziałem rozpiętości (wyznaczony przedział to cykle od 8-słupków do 40 słupków), podczas gdy składniki w obrębie tego przedziału w zasadzie przepuszczane są bez tłumienia. Tak przefiltrowane dane liczbowe wykorzystywane są przez algorytm MESA.

 

Szerokość danych liczbowych

 

              Przewagą stosowania MESA jest możliwość otrzymania spektrum o wysokiej rozdzielczości przy wykorzystaniu minimalnej ilości danych liczbowych. Prawdą jest także, że rozdzielczość wzrasta proporcjonalnie do kwadratu liczby wykorzystywanych danych liczbowych. Rozwiązanie, które przedstawi MESA dla 16-słupkowego cyklu dziennych danych liczbowych jest w przybliżeniu takie same jak rozwiązanie, które może być otrzymane wykorzystując FFT i dzienne dane liczbowe z całego roku. Chociaż dla większej ilości danych liczbowych uzyskiwana jest większa rozdzielczość to prawdopodobieństwo, że te dane liczbowe w obserwowanym okresie będą pozostawać niezmienne, maleje. Żaden pomiar nie jest prawidłowy, jeśli dane liczbowe nie są dostatecznie niezmienne. Tak więc, dylemat polega na wybraniu prawidłowej szerokości danych liczbowych.

              Moje doświadczenie jest takie, że sensowna rozdzielczość może być otrzymana przy wykorzystaniu tylko jednej szerokości cyklu danych liczbowych. Ponieważ okres cyklu zmienia się relatywnie wolno, od jednej próby danych liczbowych do następnej próby, to prostym powtarzalnym rozwiązaniem jest stosowanie poprzednio zmierzonej szerokości cyklu jako szerokości danych liczbowych stosowanych do aktualnych obliczeń. Minimalizuje to ukrywanie krótszych cykli i zwiększa dokładność pomiaru dłuższych cykli tak długo, jak założenie, że okres cyklu zmienia się powoli jest prawdziwe.

 

Rozmiar filtra

 

              Jedną z szeroko znanych słabości algorytmu MESA jest to, że naraża on na fałszywe odpowiedzi. Ta fałszywa identyfikacja cykli pochodzi z filtra mającego przesadne ustawienie, próbujące maksymalizować rozdzielczość. Jeśli istnieje tylko jeden cykl w danych liczbowych, filtr MESA powinien posiadać tylko dwa słupki w swoim kształcie spektralnym. Przesadnie ustawiony filtr próbuje dopasować najlepsze rozwiązanie, odpowiadające parametrom filtra. W takim przypadku, niektóre słupki mogą być błędnie położone, dając fałszywy sygnał.

              Z mojego doświadczenia wynika, że błędne sygnały mogą być zredukowane do akceptowalnego poziomu, jeśli filtr ustawiony jest na 40 procent szerokości danych liczbowych. Jest to reguła, którą stosuję w moich pracach.

 

 

Algorytm MESA

 

              Widmo mocy MESA jest równoważne modelowi najmniejszych kwadratów wszystkich słupków analizowanych danych liczbowych. Model wszystkich słupków znany jest jako model autoregresywny. Model wszystkich słupków oznacza, że rozwiązanie zawiera wielomian tylko w mianowniku  rozwiązania, a współczynniki zerowe tego wielomianu są słupkami rozwiązania. Istnieje podobne rozwiązanie zwane AutoRegressive Moving Average (ARMA), która dodatkowo uwzględnia zera w liczniku rozwiązania. Z mojego doświadczenia wynika, że ARMA bardziej naraża na fałszywe sygnały niż MESA, ponieważ zera w liczniku mogą być prawie takie same jak zera w mianowniku w rezultacie czego, te małe różnice powodują powstawanie dodatkowych błędnych sygnałów.

              Istnieje wiele doskonałych opisów współczesnych analiz spektralnych.1)2)3) Chociaż matematyka i programowanie nie interesuje większości graczy, wielu czytelników zainteresowanych jest szczegółami dotyczącymi MESA. Pozostała część tego rozdziału zawiera szczegółowy opis obliczeń spektralnych MESA. Poniższe rozwiązanie opisuje sposób postępowania Andersena. 4)



Siła spektrum MESA P(f) obliczana jest na podstawie wzoru:

 

              Częstotliwość f jest limitowana przez rozpiętości Nyquista f<(1/2∆t). W danych rynkowych mamy do czynienia z jedną próbą na słupek. Na przykład, dane liczbowe ceny mogą być danymi dziennymi. Oznacza to, że najwyższa częstotliwość, jaką możemy rozważyć, wynosi 0.5 cyklu na słupek lub 2 słupki na cykl. Rozważając niedostatki filtra antyaliasingowego, najkrótszymi okresami cykli jakie możemy wziąć pod uwagę w rzeczywistości rynkowej, są cykle o rozpiętości 6 do 8 słupków. Tak więc, jeśli stosujemy dzienne dane liczbowe, to jest mało prawdopodobne, że możemy realnie zidentyfikować cykle tygodniowe. Chcąc zidentyfikować takie krótkie cykle, powinniśmy zwiększyć rozpiętość próby, stosując dane godzinowe.

              Pm i współczynniki amn określane są przez poniższe równanie macierzy:



___________________

1)       Modern Spektrum Analysis, wydana przez Donald G. Childers, John Wiley & Sons, New York, 1978.

2)       Modern Spektrum Analysis II, wydana przez Stanislaw B. Kesler, John Wiley & Sons, New York, 1986.

3)       Digital Spectral Analysis with Applications, S. Lawrence Marple, Jr., Prentice Hall, Engewood Cliffs, NJ, 1987.

4)       N. Andersen. „On the calculation of filter coefficients for maximum entropy spectral analysis.” Geophysics, vol. 39. No. 1, February 1974, pp. 69-72.

 

              Φi jest w autokorelacji z opóźnieniem i, tak więc Pm jest sygnałem wyjściowym mocy m+1 dalekiej prognozy błędu filtra (1, -am1,...,-amm). Dla m=0 (zerowe opóźnienie), Po jest obliczane ze wzoru:



              Równanie macierzy rozwiązywane jest za pomocą stopniowego wzrostu rozmiaru macierzy o jeden oraz za pomocą określenia (m+2) niewiadomych jako znane funkcje autokorelacji. Niewiadome uwzględniają m współczynników filtra, następną wartość funkcji autokorelacji i błąd mocy. Istnieje tylko (m+1) równań w równaniu macierzy, więc niezbędna jest dodatkowa zależność. Burg sugeruje, że tą dodatkową zależnością jest minimalizowany całkowity błąd mocy (suma przyszłych i przeszłych błędów mocy). Na przykład, przyszłe i przeszłe błędy mocy dla dwupunktowej prognozy filtra (1, a11) wynoszą:



 

              Minimalizując f+e²b w stosunku do a11, otrzymamy:



              Średni sygnał wyjściowy mocy m+1 dalekiej prognozy błędu filtra jest minimalizowany w stosunku do amm, jako:



              Aby uaktualnić filtr dodając nowy współczynnik, wymagane jest obliczenie starych współczynników, za pomocą poniższego wzoru:

 

amk=a(m-1)k-a(m-1)(m-k)

 

              Równanie to jest rezultatem rekursji Levinsona w odniesieniu do równania macierzy. Uaktualniony błąd mocy wynosi:

 

Pm=P(m-1)*(1-amm²)

 

              Jeśli ustawimy amo=-1 i amk=0 dla k>m, możemy ponownie napisać przeszłe i przyszłe równanie mocy, jako:



              Podstawiając rekursję Levinsona do tych równań, otrzymamy:



 

gdzie zdefiniowane serie wynoszą:



 

              Inne postacie bmt i b’mt otrzymywane są przez zmianę wskaźnika k na m-k i odwrócenie kolejności sumowania. Minimalizując sumę przyszłego błędu mocy i przeszłego błędu mocy w stosunku do amm, otrzymamy:



 

              Użytecznymi wzorami rekursywnymi dla danych bmt i b’mt są:



              Tak więc, serie bmt i b’mt mogą być tworzone z ich poprzednich wartości jako m zwiększone o 1. Początkowymi wartościami są:



              Następnie bmt i b’mt mogą być obliczone jako m zwiększone od 1 do planowanej szerokości filtra M.

              Rozwiązaniem równania macierzy jest proces samouzgadniania, na podstawie rekursji od m=1 do M. Rysunek 7.3 pokazuje schemat blokowy dla procedury rekursywnej, tak więc jeśli zechcesz, możesz obliczyć współczynniki filtra posługując się językiem komputerowym. Używając języka komputerowego, zmieniono bmt na b1 oraz b’mt na b2. Tablica danych aa(t) czasowo przechowuje współczynniki filtra przed ich uaktualnieniem do tablicy danych a(t).



 

Rysunek 7.3 Proces rekursywny obliczania współczynników filtra MESA.

 

              Możesz zastosować schemat blokowy Rysunku 7.3 do pomiaru, za pomocą MESA, Cyklu Dominującego. Alternatywnie, możesz zastosować język programowania EasyLanguage, stosując Dynamic Linked Library (DLL). Ponieważ obliczenia są bardzo intensywne, zastosowałem DLL do obliczeń MESA, dzięki czemu obliczenia biegną znacznie szybciej. Kod EasyLanguage na Rysunku 7.4 jest szablonem zwanym DLL i kreśli Cykl Dominujący. Kod ten jest wykorzystywany jako szablon w innych obliczeniach, w pozostałej części tej książki. Okienko 1 wprowadzania wartości pozwala dynamicznie ustawiać szerokość danych. Szerokość okienka może być ustawiona ręcznie do wartości pomiędzy 8 i 50, jeśli nie chcesz uaktywnić elementu, który ustawia szerokość danych liczbowych.

 

 

 

 

 

 

 

 

 

 

             

inputs: Price(Close),

                               Window(1),

                               RegCode(„LPJDPDTBHB”);

 

              vars:  dc(0);

 

              DefineDllFunc:

                            „c:\mesadll\mesa2kd.dll”,int,”INIT”,int;

              DefineDllFunc:

                            „c:\mesadll\mesa2kd.dll”,int,DomCycle”,

                            int,float,float,float,lpfloat;

              DefineDllFunc:

                            „c:\mesadll\mesa2kd.dll”,int,”MATRIX”,lpstr;

...

Zgłoś jeśli naruszono regulamin