Rozdział 12.doc

(1373 KB) Pobierz

Zyskowne rynkowe systemy transakcyjne do gry na rynku akcji

Rozdział 12

 

Zyskowne systemy transakcyjne do gry na rynku akcji

 

              Tradycyjny pomiar skuteczności mechanicznych systemów transakcyjnych polega na porównaniu osiągniętego zysku netto do zysku osiągniętego z prostej strategii kup i trzymaj. Strategia kup i trzymaj była bardzo trudna do pobicia 1999 r. Obsunięcia kapitału były minimalne. Nie było praktycznie żadnych kosztów transakcyjnych – rynek szedł prosto do góry. Jednakże, w 2000 r. Pobicie strategii kup i trzymaj nie stanowiło żadnego problemu. W rzeczywistości spadek na rynku uwypuklił jedną z największych zalet mechanicznych systemów transakcyjnych. Tą zaletą jest to, że system transakcyjny dyscyplinuje gracza, zmuszając go do zamknięcia pozycji przed wystąpieniem spadków.

              Zawieranie transakcji na rynku akcji różni się z kilku powodów od zawierania transakcji na rynku towarowym. Po pierwsze, aby kupić akcje, inwestor musi podjąć decyzję, jakie akcje kupować, wykonując proces filtrowania lub bliżej analizując dany papier wartościowy. Analiza papieru wartościowego polega na sprawdzaniu fundamentów spółki, takich jak proporcja P/E, zadłużenie, siła sektorowa i tak dalej. Taki ranking można znaleźć w Investors Business Daily. Gracze mogą wykonać swoje własne przeszukiwania online, stosując TIP za pomocą Telescan. Niektóre serwisy, takie jak www.sabrient.com, do dokonywania selekcji papierów wartościowych stosują profesjonalną analizę. Z drugiej zaś strony, gracz na rynkach towarowych łatwo może zdecydować o grze na rynku futures S&P, Treasury Bonds i tak dalej. Po drugie, gracze zajmujący się akcjami, generalnie zajmują tylko długą pozycję. Po trzecie, gracze na rynku akcji mają tendencję do mniejszej aktywności i operują w znacznie dłuższym horyzoncie czasowym. Systemy podążające za trendem najbardziej odpowiadają ich stylowi zawierania transakcji.

              Jednym z najlepszych systemów podążających za trendem jest system wybicia z kanału cenowego. W tego rodzaju systemie, górne ograniczenie kanału powstaje przez połączenie cen maksymalnych każdego słupka, a dolne ograniczenie powstaje przez połączenie cen minimalnych każdego słupka. Kanały te można przesuwać pionowo lub poziomo w celu maksymalizowania osiągnięć systemu. Przesuwanie poziome można łatwo wykonać, stosując opóźnienie o N słupków lub też za pomocą gładzenia, stosując średnią ruchomą i wprowadzając opóźnienie średniej ruchomej do wykreślania tego przesunięcia. Przesuwanie pionowe zazwyczaj rozszerza kanał i realizowane jest przez dodawanie stałej do górnego ograniczenia kanału oraz odejmowanie stałej od dolnego ograniczenia kanału. Powszechnie stosowane jest powiązanie stałej przesunięcia pionowego ze szczytem słupka ceny. W danym kanale cenowym sygnał kupna występuje wtedy, gdy cena przetnie w górę górny kanał cenowy, natomiast sygnałem sprzedaży jest przecięcie w dół dolnego kanału cenowego. Reguły wejścia i wyjścia powinny być odwrócone, gdy stosujemy krótką sprzedaż. Działanie typowego systemu wybicia z kanału cenowego pokazane jest na Rysunku 12.1.

 

 

 

 

 



Rysunek 12.1 Działanie typowego systemu wybicia z kanału cenowego.

                           (Wykres powstał przy pomocy programu TradeStation2000i®)

 

              Gdy gracz czeka na sygnał wejścia, pokazywany jest tylko górny kanał cenowy, natomiast gdy gracz czeka na sygnał zamknięcia długiej pozycji, pokazywany jest tylko dolny kanał cenowy.

              Rozpoczynając projektowanie naszego systemu, podobnie jak w poprzednich rozdziałach, stosujemy jako szablon program obliczający Maximum Entropy Spectral Analysis (MESA) Cyklu Dominującego. Program ten przedstawiony jest na Rysunku 12.2.

 

 

              inputs:              Price(Close),

                                          CycPart(1),

                                          Window(1),

                                          RegCode(„LPJDPDTBHB”);

 

              vars:              dc(0),

                                          alpha(0),

                                          EntChannel(0),

                                          ExitChannel(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;

 

              if currentbar = 1 then begin

                                          init(1);

 

 

Rysunek 12.2 Program w języku EasyLanguage stosujący MESA w systemie wybicia z kanału cenowego.

 

                                          Matrix(regcode);

              end;

 

              DomCycle(Window,Price,H,L,&dc);

 

              Alpha = 2*CycPart/(dc + 1);

              EntChannel = alpha*High +

                            (1 – alpha)*EntChannel[1];

              ExitChannel = alpha*(3*Low – 2*High) +

                            (1 – alpha)*ExitChannel[1];

     If MarketPosition < 1 then Buy at EntChannel Stop;

              If MarketPosition = 1 and ExitChannel >

                            ExitChannel[1] then ExitLong at

                            ExitChannel Stop;

 

             

Rysunek 12.2 Program w języku EasyLanguage stosujący MESA w systemie wybicia z kanału cenowego.

 

              MESA Dynamic Linked Library (DLL) przywołuje obliczany za pomocą MESA Cykl Dominujący, jako zmienną dc. Zmienna alfa, będąca wykładniczą średnią ruchomą, obliczana jest przy zastosowaniu dc jako szerokości tej średniej ruchomej. Stosujemy dc ponieważ wiemy, że ta szerokość usuwa składniki cyklu z ceny. Dodatkowy sygnał, zwany CycPart, dołączany jest w celu umożliwienia optymalizacji osiągnięć systemu, skalując alfa. Górny kanał cenowy obliczany jest jako wykładnicza średnia ruchoma cen maksymalnych każdego słupka ceny. Dolny kanał cenowy obliczany jest jako wykładnicza średnia ruchoma minimalnych cen każdego słupka minus podwójna rozpiętość pomiędzy ceną maksymalną a minimalną każdego słupka. Tak zaprojektowany kanał cenowy jest asymetryczny. Kanał asymetryczny zaprojektowano w celu umożliwienia wejścia na rynek tak szybko jak to możliwe, gdy cena odwraca się do góry, oraz w celu umożliwienia trzymania pozycji aż do momentu, gdy ceny pójdą zdecydowanie w dół. System ulepszy się, gdy zastosujemy regułę, że nachylenie dolnego ograniczenia kanału musi być dodatnie, gdy cena przecina to ograniczenie. Reguła ta redukuje prawdopodobieństwo wyrzucenia z rynku z powodu nieprzewidzianych ruchów ceny.

              Mając zaprojektowany system, następnym pytaniem jest jak najlepiej testować wydajność takiego systemu. Przeprowadzenie testowania wymaga danych liczbowych. Im więcej danych liczbowych tym lepiej. Duża ilość transakcji wymagana jest do upewnienia się, że system nie jest źle dopasowany do danego rynku lub do danego okresu. Jest powszechną praktyką tworzenie wstecznie regulowanych wykresów kontynuacyjnych kontraktów dla towarów. Towary na ogół mają cztery kontrakty rocznie i przechodzimy od jednego kontraktu do drugiego, gdy poprzedni kontrakt wygasa. Kontynuacyjny kontrakt tworzymy łącząc te poszczególne kontrakty razem i kompensując wszystkie różnice cen poprzednich kontraktów na podstawie ceny ostatnio dodanego kontraktu. Czynność ta powtarzana jest za każdym razem, gdy dodajemy nowy kontrakt. Dane liczbowe akcji podawane są w sposób ciągły i nie są one regulowane przez tworzenie wykresu kontynuacyjnego uwzględniającego wszystkie akcje, więc otrzymanie dużej ilości danych liczbowych rynku akcji do testowania jest trudne. 

 

 

              W celu utworzenia danych liczbowych tak, aby można było przeprowadzić testowanie rynku akcji stosując tylko pojedynczy zbiór, utworzyliśmy¹ papier wartościowy równoważny kontraktowi kontynuacyjnemu.

              Aby to uczynić, dokonaliśmy selekcji 50 akcji od 2 stycznia 1998 r. do 15 lutego 2001 r. Okres taki wybraliśmy dlatego, by uchwycić rynek byka w 1999 r. i rynek niedźwiedzia w 2001 r. Następnie połączyliśmy razem dane liczbowe cen tych 50 akcji, otrzymując „rzeczywiste” dane liczbowe w polu liczba otwartych pozycji. Cena każdej akcji była normalizowana do 100$ na początku danego okresu, w celu uniknięcia zniekształceń z powodu różnic cenowych. Wykonując to, otrzymaliśmy 150 letni rynek cen akcji, w którym możemy testować i optymalizować parametry systemu transakcyjnego. Wszystkie otwarte pozycje zostały zamknięte w dniu 15 lutego 2001 r.

              Gdy testowaliśmy nasz system wybicia z kanału cenowego, którego program przedstawia Rysunek 12.2, stosując 150 letnie dane liczbowe oraz zawierając transakcje tylko na jednym papierze wartościowym, otrzymaliśmy wynik, przedstawiony w Tabeli 12.1.

 

Tabela 12.1 Wynik testu systemu wybicia z kanału cenowego dostosowanego za pomocą MESA

__________________________________________________________________________________________

 

Całkowity zysk netto                                                                      3,868.60$

Liczba transakcji                                                                                    157

Liczba transakcji na rok                                                                      1.05

% zyskownych transakcji                                                                      55.4%

Średni zysk na transakcji                                                                      24.64$

Współczynnik zysku                                                                      3.19

Maksymalne osunięcie kapitału                                                        (542.38$)

 

              Wyniki wyglądają ładnie z każdej strony. Stosunek całkowitego zysku do maksymalnego osunięcia kapitału jest większy niż 7:1. Współczynnik zysku (stosunek sumy wszystkich zysków do sumy wszystkich strat) jest większy niż 3:1. Więcej niż połowa transakcji była zyskowna. System zawierał transakcje tylko średnio raz na rok. Biorąc pod uwagę koszt prowizji wynoszący 0.16$ (na podstawie kosztów 8$ na 100 papierów wartościowych po każdej stronie transakcji) i poślizgu 1/16 po każdej stronie transakcji, koszty transakcyjne są mniejsze niż 0.30$ na papier wartościowy. Średni zysk z każdej transakcji na papierze wartościowym, wynoszący 24,64$, znacznie przekracza koszty transakcyjne.

              Gdy optymalizowałem współczynnik CycPart, to otrzymałem wartość 0.65. Wyniki stosowania systemu są spektakularne. Przedstawia je Tabela 12.2.

 

Tabela 12.2 Wynik testu systemu wybicia z kanału cenowego dostosowanego za pomocą MESA przy zastosowaniu 0.65 jako optymalizowanego współczynnika CycPart

__________________________________________________________________________________________

 

Całkowity zysk netto                                                                      4,153.35$

Liczba transakcji                                                                                    116

Liczba transakcji na rok                                                                      0.77

% zyskownych transakcji                                                                      62.9%

Średni zysk na transakcji                                                                      35.80$

Współczynnik zysku                                                                      5.88

Maksymalne osunięcie kapitału                                                        (212.98$)

 

 

 

______________

¹Zbiór danych liczbowych, który utworzył Mike Barna, tsda@attglobal.net.

 

              Wszystko zmierza w dobrym kierunku. Zysk netto wzrasta, liczba transakcji maleje, zysk na jednej transakcji wzrasta o 45%.

              Gdy testowałem system transakcyjny podążający za trendem stwierdziłem, że składnik cyklu ma ograniczone znaczenie. Dlatego też, stosowanie mierzonej długości cyklu przynosi marginalny zysk w porównaniu z tym samym systemem stosującym stałą szerokość okresów. Stała szerokość okresów zawierała się w przedziale od 1 do 2 średnio mierzonego okresu cyklu. W takim przypadku nie ma rzeczywiście potrzeby stosowania złożonego pomiaru cyklu. Odkryłem, że najlepsze są trzy rodzaje mechanicznych systemów transakcyjnych podążających za trendem. Są to:

·         system wybicia z kanału cenowego,

·         system podwójnej średniej ruchomej,

·         system konwergencji-dywergencji średniej ruchomej (MACD).

 

Te trzy systemy zaprojektowałem, przetestowałem i optymalizowałem, stosując te same dane liczbowe 150 lat, w których testowałem system wybicia z kanału cenowego dostosowanego za pomocą MESA. Program, dotyczący systemu wybicia z kanału cenowego, przedstawia Rysunek 12.3.

 

 

              Inputs:              Price((H+L)/2),

                                          EntryLookBack(28),

                                          ExitLookBack(26),

              Vars:              count(0),

                                          EntryChannel(0),

                                          ExitChannel(0);

 

              EntryChannel = 0;

              for count = 1 to EntryLookBack begin

                                          if EntryChannel < High[count] then

                                                        EntryChannel = High[count];

              end;

              ExitChannel = 100000;

              for count = 1 to ExitLookBack begin

                                          if ExitChannel > Low[count] then

                                                        ExitChannel = Low[count];

              end;

 

              If MarketPosition = 0 and High >

                            EntryChannel then buy;

              If MarketPosition = 1 and Low < ExitChannel

                            then ExitLong;

 

 

Rysunek 12.3 Program w języku EasyLanguage dla systemu wybicia z kanału cenowego dla rynku akcji.

 

              Po optymalizacji stwierdziłem, że najlepszy okres do obliczania wejściowego kanału wynosi 28 słupków. Najlepszy okres dla obliczania wyjściowego kanału wynosił troszeczkę mniej, 26 słupków. Kanał wejściowy obliczany jest przez znalezienie największego maksimum w rozważanym okresie. Kanał wyjściowy obliczany jest przez odnalezienie najmniejszego minimum w rozważanym okresie. Sygnały transakcyjne są proste. Jeśli aktualna pozycja jest krótka, sygnał kupna jest wtedy, gdy cena penetruje kanał wejściowy. Gdy aktualna pozycja jest długa, to sygnał sprzedaży występuje wtedy, gdy cena penetruje kanał wyjściowy.

              W Tabeli 12.3 przedstawiono rezultaty testu systemu transakcyjnego wybicia z kanału cenowego, przeprowadzonego przy zastosowaniu tych samych danych liczbowych dla 150 lat, co poprzednio.

 

Tabela 12.3 Wynik testu systemu wybicia z kanału cenowego

__________________________________________________________________________________________

 

Całkowity zysk netto                                                                      2,855.00$

Liczba transakcji                                                                                    447

Liczba transakcji na rok                                                                      2.98

% zyskownych transakcji...

Zgłoś jeśli naruszono regulamin