W poprzedniej części rozpocząłem omawianie
konstrukcji
arkusza symulującego efekty działania prostej strategii
transakcyjnej. Omówiona została kluczowa formuła, definiująca
zajmowane przez gracza pozycje. Jak wspominałem, jest ona
zdefiniowana w
postaci
iteracyjnej.
Obecnie chciałbym krótko skupić uwagę na znaczeniu wartości
początkowej
pozycji na rynku.
W
pierwszej wersji arkusza jej wartość została arbitralnie ustalona
jako +1, czyli przyjęto pozycję
długą.
Dlaczego by jednak nie miała mieć wartości przeciwnej? Pamiętajmy
że na Forex, w przeciwieństwie do rynków akcji czy obligacji,
żadna z tych wartości nie jest w jakikolwiek sposób naturalnie
wyróżniona. Wzrost kursu pary walutowej może być równie dobry
(lub zły) jak jego spadek – to, co nas interesuje to trendy, ich
siła i czas trwania.
Oczywiście
nic nie
stoi na przeszkodzie, aby wykonać obliczenia zmieniając w
odpowiednim wierszu liczbę +1 na -1. Pytanie tylko brzmi: jaka
będzie wartość poznawcza tak przeprowadzonych symulacji? Każdej z
osobna – moim zdaniem niewielka. Warunki początkowe powinny być
neutralne.
Ten dość naturalny postulat można byłoby zrealizować
wprowadzając możliwość przyjmowania w odpowiednich kolumnach
wartości 0. Wprawdzie kłóci się to nieco z założeniem o stałej
obecności gracza na rynku,
jednak nie na tym polega największy problem.
Ostatecznie
pozycja neutralna byłaby utrzymywana tylko przez kilka początkowych
interwałów. Później, po zajęciu pozycji właściwej – długiej
lub krótkiej – strategia już przebiegałaby według
odpowiedniego, przedstawianego wcześniej algorytmu. Oczywiście
przeprowadzenie symulacji działania takiego systemu wymagałoby
modyfikacji formuły na odwrócenia pozycji. Jednak, jak zwykle,
diabeł
tkwi w szczegółach.
Problem pojawia się z jednoznacznym określeniem wejścia na pozycję
dla niewielkich wartości parametru odległości od kursu
początkowego.
Spróbujmy
prześledzić tę
sytuację dla drugiego interwału z przykładowego zbioru danych
czyli tygodnia rozpoczynającego się 20 maja 2012. Przypomnijmy
kursy OHLC w dwu wersjach:
BID: 1.5817,1.5848,1.5630,1.5659,
ASK: 1.5819,1.5850,1.5632,1.5661,
Załóżmy,
że parametr odległości
został ustalony na 25, co po uwzględnieniu kroku notowań oznacza,
że poziomy wejścia na pozycje znajdują się o 0.0025 poniżej (dla
wejścia poprzez SellStop)
oraz powyżej (odpowiednio dla BuyStop)
kursu otwarcia. A teraz policzmy jakie odległości pokonywał kurs w
górę oraz w dół:
askHigh
– askOpen = 1.5850 – 1.5819 = 0.0031
bidOpen
– bidLow = 1.5817 – 1.5630 = 0.0187
Oczywiście
ta druga wartość jest zdecydowanie wyższa. Przy tym różnica
Close
– Open
jest liczbą ujemną, co oznacza że zajęcie pozycji krótkiej
blisko kursu początkowego przynosi zysk i jest zdecydowanie
korzystniejsze niż zajęcie pozycji długiej. Nie na tym jednak
polega istota tego przykładu.
To
co jest ważne, to fakt że obie wyliczone powyżej odległości
przekraczają
próg 0.0025.
Praktyczne konsekwencje tego faktu objawiają się tym, że nie jest
możliwe określenie, którą właściwie pozycję zajął gracz.
Można byłoby to zdeterminować znając chronologię zdarzeń, czyli
analizując poszczególne wartości kursów na przestrzeni tego
interwału tygodniowego. Jednak jest to sprzeczne z założeniami,
wedle których cała
informacja niezbędna do wykonania symulacji
jest zawarta w wartościach kursów OHLC na danym interwale. Zarazem
oczekujemy też, że zachowanie strategii jest w pełni determinowane
poprzez algorytm
i parametry liczbowe.
Dobrze przeprowadzany eksperyment liczbowy nie dopuszcza aby wyniki
były nieokreślone bądź przyjmowane uznaniowo.
Jak
rozwiązać ten problem? W następnym
odcinku zamieszczę rozszerzenie arkusza o mechanizm pozwalający
wyznaczyć te wyniki w obiektywny sposób. Po raz kolejny zaproponuję
zastosowanie koncepcji wirtualnych
inwestorów,
którą niegdyś przedstawiałem w tekstach o bliźniakach na rynkuForex.
Trzymanie się reguł stałej obecności na rynku (i tylko odwracania pozycji) oraz podejmowania decyzji tylko na początku interwału ogranicza możliwe ulepszenia bazowego algorytmu tylko do dynamicznego wyznaczania wartości parametru t, pomijając oczywiście kwestie money management.
OdpowiedzUsuńOczywiście, że ogranicza. Warto zauważyć, że stanowi to jednocześnie wadę i zaletę podejścia. Wynika to z tego, że rozbudowane reguły zwykle zawierają też wiele parametrów, które jakoś trzeba dobrać. Albo arbitralnie czyli potocznie mówiąc "z palca", albo poprzez optymalizację empiryczną. Jednak w tym drugim przypadku zachodzi niebezpieczeństwo nadmiernego dopasowania modelu do danych historycznych, czyli tzw. "overfitting", co może doprowadzić do rewelacyjnych wyników na zbiorze uczącym, ale kiepskich na zbiorze testowym czy w realnym działaniu. Dlatego też na początek chcę skupiać uwagę na badaniu własności prostej metody z tylko jednym parametrem - na rozszerzenia przyjdzie czas później.
UsuńA co do MM, to tutaj też droga nie jest zamknięta. Wystarczy prosta modyfikacja reguł odwracania, np. zmienna wielkość pozycji przy każdym odwróceniu, dobierana na podstawie liczbowej oceny dotychczasowej skuteczności. Innymi słowy, przy zarządzaniu antymartyngałowym (osobiście innych nie dopuszczam) przy odpowiednio rosnącym kapitale, mając np. 20 L przy najbliższym odwróceniu otwieram o 1 pozycję więcej czyli przechodzę na 21 S. I tutaj uwidacznia się zaleta kont mikro, bo pozwalają na efektywną podzielność kapitału.
Dzięki za uwagę - cenię wszystkie, zwłaszcza krytyczne :)
Tematy, które poruszyłeś, rozwinę w oddzielnych odcinkach, być może wielu.
Co to znaczy "zarządzanie antymartyngałowe"? Bo nie za bardzo skumałem :/
OdpowiedzUsuńTo znaczy takie, kiedy powiększanie pozycji następuje w miarę przyrostu zysków nad stratami. Przeciwieństwo do martyngału, kiedy to nawet po serii pozycji ze stratą otwieramy kolejną, większą w nadziei że zysk z niej zrekompensuje wszystkie poprzednie straty.
Usuńpóźniej się zreflektowałem i domyśliłem się tego :P - ale dzięki wielkie za wyjaśnienie! :)
Usuńpozdrawiam