MetaStock - Budowanie i testowanie systemu transakcyjnego.doc

(598 KB) Pobierz
Zidentyfikuj Charakter Rynku

Zidentyfikuj Charakter Rynku

Jednym z pierwszych kroków w tworzeniu strategii inwestycyjnej jest identyfikacja warunków panujących na rynku, na którym chcesz grać, lub też już grasz (ale bez systemu). Istnieją trzy główne typy zachowań rynku: podlegający trendom, boczny i zmienny. Zwykle, rynek pokazuje jeden typ zachowania. Czasami zdarza się, że rynek podlegający trendom znajdzie się w trendzie bocznym, jednak wcześniej czy później powraca on do trendu. Podobnie, rynek zmienny może czasami zamienić się w rynek podążający w trendzie lub poruszający się w bok. Oczywiście może się zdarzyć, że rynek trwale zmieni charakter - rynek charakteryzujący się wyraźnymi trendami może stać się rynkiem zmiennym lub znaleźć w długotrwałym trendzie bocznym.

 

Każdy typ rynku charakteryzuje się odmiennymi schematami zachowań, jakie odpowiadają poszczególnym reakcjom rynku na różne zdarzenia. Różne też są kryteria użyteczne przy łapaniu zysków na różnych rynkach - to, co pracuje dobrze na rynku podlegającym trendom, może nie pracować dobrze na rynku zmiennym (i najczęściej nie pracuje). Kluczem jest napisanie strategii, która uchwyci zyski w warunkach rynku, dla których ją napisałeś i zmniejszy straty w innych warunkach rynku.

 

Dlatego, zanim zaczniesz rozwijać swój system transakcyjny, spójrz na rynek, na którym chcesz dokonywać transakcji, lub na którym już grasz (ale bez systemu) i określ, jaki typ rynków on reprezentuje. Możesz tez zdecydować, jaki typ rynku najbardziej ci odpowiada do gry i dopiero po znalezieniu takiego rynku określ kryteria systemu.

 

 

Uruchom System Na Wykresie

Uruchom system na wykresie zawierającym dane historyczne. Proces testowania strategii zaczyna się w chwili, gdy tylko nałożysz system na wykres. Ogólnie, powinieneś wypróbować twoją strategię na tak dużej ilości danych jak to tylko możliwe. Na przykład, jeżeli chcesz dokonywać transakcji w oparciu o dane czasu rzeczywistego lub dane opóźnione, to powinieneś testować swój system na danych z różnych okresów, np. różnych serii kontraktów. Albo, gdy system opiera się na danych dziennych, ty powinieneś wypróbować go na danych z różnych lat. Ogólna reguła na to by ocenić czy system generuje prawidłowe sygnały jest taka, że potrzebujesz wygenerowania minimum 30 transakcji. Dopiero wtedy próba danych jest statystycznie wiarygodna.

 

Innym typem testu skuteczności systemu polecanym przez traderów jest wypróbowanie twojego systemu na innych instrumentach w ramach tego samego sektora (czyli prawdopodobnie prezentujących ten sam typ rynku), a następnie na różnych okresach danych. System powinien dawać przyzwoite wyniki na innych podobnych instrumentach, chociaż nie jest to regułą. Powinien tez sprawować się dobrze w różnych okresach, ponieważ to jest cały czas ten sam instrument. Jakkolwiek, gdy testujesz inny okres dla tego samego instrumentu, to powinieneś przywiązywać większą wagę dla ostatnich danych. Tutaj najważniejszym elementem jest to, byś czuł się komfortowo z osiągnięć i zachowania systemu.

 

 

Przegląd Osiągnięć Systemu

Są różne sposoby na to, by zrewidować osiągnięcia systemu: możesz dokonywać oceny wizualnej krzywej "equity", możesz analizować raport systemu wygenerowany po jego teście.

 

Ocena Wizualna

Uruchamiając system dla określonych danych, program automatycznie analizuje każdy słupek danych na twoim wykresie szukając występowania kryteriów, jakie zdefiniowałeś w ramach systemu i pokazuje ci graficznie wszystkie momenty kupna i sprzedaży, jakie wykonałbyś gdybyś dokonywał transakcji opierając się na testowanej idei.

 

Przewijając wykres tam i z powrotem, wiesz natychmiast, że np. system nie wyłapywał większych ruchów cen albo dokonywał zbyt wielu niepotrzebnych transakcji w trendzie bocznym. Te oględziny dają ci dobre pierwsze odczucie, co do pracy systemu i poprawnej jego konstrukcji.

 

Używanie Raportu Systemu

W uzupełnieniu oceny wizualnej Raport Systemu dostarczy ci szczegółowe informacje na temat osiągnięć testowanej strategii, włączając w to między innymi: ile pieniędzy mógłbyś zarobić, gdybyś dokonywał transakcji w oparciu o testowany system, (po obu stronach rynku).

 

Raport Systemu pokazuje zyski (lub straty), które byłyby generowane przez system jak również inne czynniki, takie jak: obsunięcia kapitału, zwrot z rachunku, najbardziej zyskowna (stratna) transakcja i inne.

 

Raport Systemu pomaga ci zdecydować się czy faktycznie możesz stosować testowany system. Na przykład, czy potencjalny zysk twojego systemu jest wystarczający do tego by stosować ten system w praktyce? Czy zachowanie się systemu odpowiada twojej osobowości jako spekulanta? A może system generuje zbyt dużo transakcji (a może za mało)? Czy zysk procentowy jest dla ciebie atrakcyjny? A może długie serie stratnych transakcji są dla ciebie nie do przyjęcia? Czy możesz posługiwać się systemem charakteryzującym się dużymi obsunięciami nawet jeżeli końcowe zyski systemu są wysokie? A może wolałbyś system oferujący niskie zyski, ale bez dużych obsunięć kapitału? Tylko ty możesz sobie odpowiedzieć na te pytania.

 

Jeżeli lubisz stworzony system, ale masz wątpliwości, co do niektórych wyników raportu możesz wrócić do modułu, w którym tworzysz system by dodać lub usunąć niektóre elementy systemu lub przerobić odpowiednie kryteria. Po dalszej analizie, możesz zdecydować, które z sygnałów są dobre, i czy w ogóle idea systemu jest dobra. Możesz też wrócić do tworzonego systemu i przerobić niektóre kryteria.

 

Zauważ, jeżeli znalazłeś system, który nie daje zysku w stosunku do pieniędzy, jakimi ryzykujesz, to nic nie straciłeś. Próbowałeś systemu na prawdziwych danych i prawdziwych warunkach rynku bez ryzykowania grosza. Najbardziej skuteczne systemy są odkrywane podczas analizy wyników systemu przynoszącego straty. Dlatego, gdy masz system, którego wyniki rozczarowują, powinieneś przeanalizować - dlaczego system "nie pracuje". Niektóre z twoich najlepszych idei mogą pochodzić z procesu analizy błędów.

 

Używanie linii "Equity"

Innym ważnym narzędziem analizy jest krzywa zysków (equity). Jest to ważne, ponieważ widać po jednym spojrzeniu na krzywą, czy twój system dostarcza konsekwentne, godne zaufania wyniki na rynku, dla którego został stworzony. Krzywa zysków daje ci perspektywę zysków i strat generowanych przez system podczas okresu próbnego.

 

Na przykład, krzywa zysków pozwala ci osądzić jak konsekwentnie twój system dawał zyski podczas okresu próbnego. Gdyby w czasie testów okazało się, że system robi 100000 zł zysku w 10 lat, ale z tego 70000zł powstało w ostatnich 12 miesiącach, to krzywa pokazałaby ci, że system "produkował" słabe wyniki przez 9 lat.

 

Co Jeszcze Powinieneś Uwzględnić

Skoro stwierdziłeś już, że istnieją trzy główne typy rynków, to powinieneś zacząć myśleć o tym jak zaprojektować strategię, by osiągnąć najlepsze rezultaty w każdych warunkach rynku. Powinieneś również zdecydować, jaki typ rynku najlepiej pasuje do twojej osobowości jako spekulanta i do twojego położenia finansowego.

 

W rynku charakteryzującym się wyraąnymi trendami będziesz usiłował uchwycić duży ruch cenowy i zminimalizować chwilowe straty pomniejszające stan twojego konta podczas okresów konsolidacji; na rynkach poruszających się bokiem będziesz używać poziomów wsparcia i oporu by starać się uchwycić zyski z małych ruchów cen; na rynkach zmiennych spróbujesz złapać krótkotrwałe, znaczące korekty, robiąc krótkie transakcje i wychodząc z rynku.

 

W tym miejscu, rozpocznij poszukiwanie sygnałów i używaj ich, aby stworzyć system, który będzie najkorzystniejszy dla ciebie, wybranego typu rynku i przedziału czasowego. Nie musisz budować całej strategii natychmiast. Na przykład, możesz zacząć od jednego sygnału wejścia na rynek. Wtedy, jeżeli trafiłeś na dobry sygnał wejścia, to możesz zacząć łączyć go z różnymi sygnałami wyjścia z rynku.

 

Zapamiętaj, że możesz robić to następująco:

Testuj i stosuj strategie symetryczne - kupuj "długo" i sprzedawaj "krótko". Istnieją strategie zawierające sygnały wejścia tylko na "długo", lub tylko na "krótko". Ty możesz łączyć je obie. Raport Wyników Terstra Systemu zawiera między innymi rezultaty stosowania danej strategii i rozbija twoje transakcje na krótkie i długie. Być może dowiesz się, że "długa" strona twojego systemu transakcyjnego jest dobra, ale strona "krótka" potrzebuje dalszej pracy, lub odwrotnie. Albo że pomysł okazał się nietrafiony.

Testuj i stosuj strategie wejścia i wyjścia z rynku w każdym punkcie wykresu. Możesz testować system transakcyjny, w którym sygnały wejścia i wyjścia z rynku występują przy dowolnej cenie (O,H,L,C) w granicach jakiegokolwiek słupka wykresu, a nie tylko przy cenie zamknięcia (Close).

Testuj strategie zawierające różnorodne kryteria sygnałów wejścia lub wyjścia z rynku. Programy giełdowe umożliwiają ci stworzenie systemu transakcyjnego zawierającego wiele sygnałów wejścia lub wyjścia. Pojedynczy system transakcyjny może zawierać różne sygnały dla wchodzenia "długo", wchodzenia "krótko", zamykania pozycji "długiej" i zamykania pozycji "krótkiej".

 

Jeżeli możesz to testuj strategie pozwalające na różną ilość kupowanych lub sprzedawanych kontraktów czy akcji. Twój system transakcyjny nie powinien być ograniczany do jednokrotnego kupowania "długo" lub sprzedawania "krótko" i zamykania pozycji. Wielokrotne kupowanie lub sprzedawanie w tym samym kierunku, powodujące, że do twojej aktualnej pozycji rynkowej dodawane są nowe kontrakty lub akcje to tak zwany "pyramiding", jest to jednak strategia dość agresywna.

 

Jeżeli możesz to testuj strategie ze zmienną liczbą kontraktów lub akcji na wejściu lub wyjściu. Dla przykładu, dla danego sygnału wejścia, mógłbyś określić zakup 1 kontraktu lub 100 akcji. Dla innego sygnału wejścia, który zdarza się niezbyt często, ale ma wyższe prawdopodobieństwo zakończenia transakcji pomyślnie mógłbyś określić zakup 2 kontraktów lub 200 akcji.

Praktycznie wszystko, o czym możesz pomyśleć, możesz umieścić w sygnale budowanej strategii. Pamiętaj jednak, że czasami prostszy pomysł jest lepszy. Po prostu staraj się "nie przekombinować". Kluczowe na tym etapie jest to, że możesz, i powinieneś testować wszystkie swoje pomysły, jakiekolwiek by one nie były.

 

Tworzenie Nowego Systemu
Przejdź do modułu "Enhanced System Tester".
Otwórz opcję "New System".
Pola Edytora Systemów zawierają pola do wpisania nazwy systemu, notatek i jego reguł. Cztery reguły opisują kryteria otwarcia zamknięcia pozycji długich / krótkich.


 

 

W zakładce General mamy do wyboru trzy opcje:
Order Bias - czasami system wytwarza dwa sygnały - długi i krótki jednocześnie, w tej opcji możemy zaznaczyć, którą pozycję system ma w takiej sytuacji wybrać.
 

Portfolio Bias - tą opcją można poinstruować system, aby zamykał wszystkie odwrotne, istniejące pozycje do nowego, przeciwnego sygnału, w momencie, w którym się pojawi. Np. jeśli chcemy aby system zamknął wszystkie krótkie pozycje gdy pojawi się nowy sygnał do otwarcia pozycji długiej - wybieramy opcję Single. Jeśli jednak chcemy posiadać w portfelu zarówno pozycje długie jak i krótkie wybieramy opcję Multiple.
 

Position Limit - ta opcja zamyka wszystkie pozycje przed otwarciem nowych. Możemy sami zaznaczyć ile pozycji może pozostać otwartych, lub odznaczając tę opcję zezwolić na otwarcie do 65536 równoczesnych pozycji.



 

Przejdźmy do budowy systemu:

·         Wpisz nazwę systemu, np. System Nr 1.

·         Kliknij "Buy Order" i wpisz następujące kryterium dla otwarcia nowej długiej pozycji:

cross(close,mov(close,25,simple))

Formuła ta, podobnie jak i inne formuły reguł może być przedstawiona opisowo.
W tym przypadku "Otwórz długą pozycję jeżeli cena zamknięcia przetnie od dołu średnią z 25 ostatnich kursów zamknięcia" (podobnie jak w module "Indicator Builder" możesz stosować skróty - zamiast "close" pisać "c" czy zamiast "simple" - "s").

Reguły transakcji są bardzo podobne do reguł wskaźników.

Wpisz poniższe reguły dla pozostałych trzech kryteriów.
Pamiętaj by kliknąć wcześniej odpowiednie dla nich pola (Sell Order, Sell Short Order, i Buy To Cover Order).

Sell Order : cross(mov(close,25,simple),close)
Sell Short Order : cross(mov(close,25,simple),close)
Buy To Cover Order : cross(close,mov(close,25,simple))

Po ich poprawnym wpisaniu kliknij OK.

Jeżeli w składni wpisywanej reguły istnieje błąd to zostanie wyświetlony komunikat o istocie tego błędu, a po kliknięciu OK program umieści kursor w miejscu, w którym wystąpił błąd.
Po poprawieniu formuły ponownie kliknij OK.

Wszystkie cztery zakładki kupna / sprzedaży posiadają identyczne opcje:

Order Type - jeśli chcemy, aby system włączył do testu stopy, limity, stop limity, możemy zaznaczyć tutaj odpowiednią opcję.

·         Limit - system będzie poszukiwał najlepszej ceny dostępnej powyżej, lub poniżej (w zależności od typu transakcji) podanego limitu ceny.

·         Stop - system będzie poszukiwał najlepszej ceny, jeżeli cena ta dotarła do podanego przez nas limitu.

·         Stop Limit - system będzie poszukiwał najlepszej ceny powyżej, bądź poniżej limitu, gdy cena ta dotarła do limitu.

Limit or Stop Price - cena używana podczas okresu, gdy gracz pozostaje poza rynkiem (out of market)

Entry Size - w tym polu można określić ile walorów system ma zakupić / sprzedać podczas otwierania / zamykania pozycji. Liczba może być wyrażona ilościowo (Number of Units), pieniężnie (Transaction Cost), bądź procentem kapitału (% of Available Equity).

Expiration - system umożliwia zamykanie pozycji z końcem dnia, bądź pozostawienie jej otwartej do czasu gdy pojawi się sygnał do zamknięcia (określony przez użytkownika).

Strategic Delay - system może zachowywać się identycznie jak inwestor, tzn. w rzeczywistości mamy dostęp do opóźnionych danych (15min). Aby urealnić nasz system możemy opóźnić zawieranie transakcji na rynkach terminowych o dowolną ilość minut, lub dni, gdy np. gramy na akcjach a wieczorem ściągamy uaktualnione dane do Metastocka.

 

 

Testowany System – Opcje

Testing - Trading

Points Only Test
Jeśli inwestujesz na rynku terminowym zaznacz tę opcję - w przeciwnym razie system wygeneruje wynik w wartościach pieniężnych, a nie w punktach.

Initial Equity
Suma, jaką dysponujesz przed rozpoczęciem inwestowania. (opcja ta jest niedostępna gdy zaznaczony został Points Only Test)

Default Size
Każde zlecenie może być dokonywane zgodnie z wyborem odnośnie liczby walorów (Number of Units), sumy pieniędzy (Total Transaction Cost), bądź procentu kapitału, jakim dysponujemy (% of Available Equity).

Testing - Portfolio

Long/Short/Both - określa jakie typy transakcji system może zawierać.

Close all positions on the last bar - jeśli zaznaczymy tę opcję, po skończeniu testu, wszystkie otwarte pozycje zostaną zamknięte.

Testing - Results

Możemy przeprowadzić przyspieszony test, który zajmuje mniej czasu i miejsca na dysku, jednakże nie będziemy w stanie obejrzeć wielu raportów.
Jeżeli system używa optymalizacji, możemy zaznaczyć również ile najlepszych wyników chcemy zachować.
Klikając na "More" mamy dostęp do kolejnych opcji:


 

Interest Rates

Margin - jest to stopa procentowa depozytów bankowych.
Money Market - jest to stopa procentowa kredytów bankowych.

Margin Requirements

Wymagane fundusze, jakie musisz zdeponować aby zawrzeć transakcje.

Long Initial - aby otwierać długie pozycje nie musimy nic deponować (wpisujemy 100)
Long Maintenance - aby utrzymać pozycje, nic nie musimy dopłacać (wpisujemy 0)
Short Initial - aby otworzyć pozycje krótkie wymagany jest depozyt (dostępne wartości 101-200; jeśli jest to 30% wpisujesz 130)
Short Maintenance - to samo dotyczy utrzymania krótkiej pozycji

Commissions

Tutaj możemy określić rodzaj prowizji, jaką pobierają biura maklerskie (jako punkty od transakcji, jako punkty od ilości walorów, lub jako procent od wartości)

Następnie możemy wpisać określone wartości jako koszty prowizji za otwarcie pozycji (Entry) oraz za zamknięcie pozycji (Exit).



 

Trade Price

Mamy dwie możliwości: zaznaczyć kwadracik Realistic Market Prices i zezwolić systemowi na otwieranie i zamykanie pozycji po cenie rynkowej, bądź pozostawić tę opcję odznaczoną i własnoręcznie wprowadzić interesujące nas wartości, po których mają być zawierane transakcje na poszczególnych pozycjach (po cenie otwarcia, zamknięcia, maksymalnej, bądź minimalnej).

Delay order opening __ bars - wprowadź ile słupków po sygnale zawarcia transakcji ma być ona przeprowadzona.

Slippage

Dzięki tej opcji masz możliwość wprowadzenia poziomu strat, jakie mogą się pojawić przy daytradingu w opóźnieniu pomiędzy danymi rzeczywistymi, a czasem jaki zabiera złożenie zlecenia i przeprowadzenie go. W tym czasie rynek często się ochładza o kilka punktów, co możemy zasymilować w naszym systemie.

 

Raport Podsumowujący


 

"Summary Report" to podsumowanie informacji na temat wszystkich przeprowadzonych testów.
Jeżeli w teście nie wystąpiły parametry optymalizowane to zawiera on dane dotyczące tylko jednego testu.

W górnej części raportu znajduje się histogram uporządkowanych, wg wielkości zysku, transakcji.
Kolumny "Summary Report"

ID
Numer testu, w zależności od tego w jakiej kolejności był wykonywany.

Symbol
Symbol waloru, na którym zawarta została transakcja.

Periodicity
Częstotliwość danych, na których testowany był system.

Date Range
Czasowy zasięg danych poszczególnych walorów.

Net Profit:
Całkowity zysk lub strata netto w wyniku stosowania systemu.
Zawiera potencjalny zysk jaki byłby osiągnięty z zamknięcia ostatniej pozycji zajętej przez system w czasie testu.

% Gain
Procentowy zysk lub strata netto powstałe w wyniku stosowania systemu.
Zawiera potencjalny zysk jaki byłby osiągnięty z zamknięcia ostatniej pozycji zajętej przez system w czasie testu.
Parametr jest nieosiągalny w czasie testu "points only".

Trades
Liczba wygenerowanych transakcji.
Podawana jest tylko liczba zamkniętych transakcji - nie uwzględnia transakcji otwartych w chwili zakończenia testu.
Możliwa jest wartość 0 - w przypadku wygenerowania jednego sygnału i nie zamknięcia pozycji przed końcem testu.

Trade Profit / Loss
Liczba transakcji zamkniętych z zyskiem / liczba transakcji zamkniętych ze stratą.

Avg. Profit / Avg. Loss
Stosunek przeciętnego zysku do przeciętnej straty z transakcji.
Przeciętny zysk oblicza się dodając zyski z transakcji i dzieląc je przez ich liczbę.
Podobnie z przeciętną stratą.

Status:
Mogą być wyświetlane trzy wartości - "Completed", "Invalid", lub "Terminated".

"Invalid" - test jest nieważny - wystąpił błąd matematyczny (dzielenie przez 0).
Dostępny jest wynik testu ale jego wartość jest wątpliwa.

"Terminated" - ma miejsce w sytuacji w której nie mogą być zastosowane reguły systemu (za mało danych - firma jest notowana krócej niż 200 sesji a w teście wykorzystujemy średnią z 200 sesji).
W przypadku przerwania testu podawane są informacje o przyczynie.

 

Raport Systemu – Ogólny


 

 

Okno raportu ogólnego wyświetla szczegółowe informacje o transakcjach dokonanych na poszczególnym walorze, lub testowanych optymalizacjach systemu. Przedstawia ono szczegółową analizę działania systemu.
Aby wyświetlić ten raport zaznacz wybraną transakcję w zakładce "Summary Report" i kliknij "View".

Summary

W tej części mamy podgląd ogólnych danych tj. nazwa testowanego papieru, data i czas testu, ilość słupków (dni) oraz zakres czasowy waloru.

Performance

Profit
Pokazuje ile pieniędzy zarobił dany papier w czasie testu. Jeśli wartość jest ujemna, oznacza to, że system przyniósł straty.

Performance
Procentowa wartość skuteczności działania systemu liczona jako iloraz zysku, lub straty i wartości początkowej (Initial Equity). Np. jeśli zaczynaliśmy z 1000$ a zakończyliśmy z 1100$ - wskaźnik performance wyniósł 10%.

Annualized Performance
Opisuje jak wyglądałby powyższy wskaźnik Performance gdyby symulacja trwała rok.
Otrzymuje się go poprzez dzielenie 365 dni przez ilość dni zastosowanych w symulacji i pomnożenie przez wartość Performance.
Buy And Hold Profit
Zysk z zastosowania strategii "Kup i Trzymaj". Strategia ta polega na kupnie walorów pierwszego dnia symulacji i trzymania ich aż do ostatniego dnia symulacji.
W obliczeniach system uwzględnia prowizję za kupno.
Buy And Hold Performance
Wskaźnik Buy And Hold Performance wyrażony procentowo.
Różnica procentowa pomiędzy stanem początkowym a końcowym kapitału dla strategii kupna walorów pierwszego i sprzedaży ostatniego dnia testu.

Buy And Hold Annualized Performance
Pokazuje jak zyskowny, bądź stratny mógłby być system, gdyby zakupów dokonano pierwszego dnia roku kalendarzowego a sprzedano ostatniego dnia grudnia.

Reward / Risk Index
Ten indeks porównuje wartość dochodu do ryzyka.
Ryzyko jest rozumiane jako największy spadek wielkości kapitału w otwartej pozycji, dochód to całkowity zysk netto.

Wartość indeksu Reward/Risk należy do przedziału -100 (bardzo ryzykownie) do +100 (bezpiecznie).
Wartość 0 indeksu Reward/Risk oznacza wzajemne zniesienie dochodu i ryzyka.

Index       Reward      Risk
+100       High            None
  +50       Medium      Medium
      0        None...

Zgłoś jeśli naruszono regulamin