środa, 29 sierpnia 2012

Ciągłość zmian pozycji przy dynamicznej optymalizacji systemu transakcyjnego

Niedawno rozpoczęta została analiza zagadnienia inicjowania pozycji przy iteracyjnym przechodzeniu do kolejnych sekwencji rekordów OHLC dla hierarchicznego dwupoziomowego systemu transakcyjnego. Rozważania zostały zakończone wprowadzeniem rozszerzonej symboliki, niezbędnej do formalnie poprawnego opisu algorytmu. Rozpocznę zatem od przypomnienia operacji wyznaczającej sekwencje zysków w poszczególnych interwałach:


Jak widać, oprócz sekwencji wejściowej, parametrem p tego operatora jest odległość determinująca poziom odwrócenia pozycji. Jest jednak jeszcze trzeci parametr s – określa on znak (ang. sign) początkowej pozycji: długiej, krótkiej lub neutralnej. Przyjmuje on możliwe wartości +/-1 lub 0, o oczywistej interpretacji. Wynik też proponuję ująć w rozszerzonej strukturze, względem poprzednio proponowanej. Zawiera ona nie tylko sekwencję zysków osiąganych w poszczególnych interwałach czasowych, ale również znaki odpowiadające zajmowanym przez gracza pozycjom na zakończeniu każdego z tych interwałów. Pozwala to odtworzyć sytuacje gracza w całym rozpatrywanym horyzoncie czasowym, a co więcej stanowi informację startową niezbędną do kontynuacji symulacji jego gry w kolejnych interwałach.

W zakresie optymalizacji parametru p nie ma w zasadzie żadnych różnic w stosunku do schematu opisanego poprzednio. Jedynie zapis w postaci wzorów wygląda nieco inaczej ze względu na rozszerzony zestaw argumentów funkcji. Optymalizacja odbywa się na sekwencji kończącej się na rekordzie (n-1)-szym


Oczywiście w tym przypadku znak pozycji początkowej pinit=0 ze względu na postulat jej neutralności.

Właściwy krok symulacji działania gracza w systemie na drugim poziomie hierarchii polega na wyznaczeniu wyniku dla pojedynczego rekordu wejściowego o indeksie n na podstawie wartości popt zoptymalizowanej dla sekwencji kończącej się na rekordzie (n-1)-szym, a w charakterze pozycji początkowej przyjmując pozycję końcową z procesu optymalizacji. Opisać to można następującym wzorem:


I to już jest wzór, który w pełni oddaje sens działania systemu na obu poziomach hierarchii. Na pierwszym – symulacja i optymalizacja z neutralną pozycją początkową dla zbioru m rekordów. Na drugim – właściwa gra na pojedynczym rekordzie, chronologicznie bezpośrednio następującym po sekwencji optymalizacyjnej z optymalną wartością parametru p.

Należy teraz zauważyć, że rozmiar m sekwencji optymalizacyjnej musi zostać jakoś ustalony. Jak zatem słusznie zauważył jeden z czytelników w komentarzu do artykułu wprowadzającego w temat optymalizacji dynamicznej, pozbywając się konieczności doboru parametru p, zarazem wprowadzamy parametr m. Pozytywne, w kontekście wspomnianej niedawno teorii V-C, jest to że przy zaproponowanej rozbudowie koncepcji systemu liczba parametrów nie wzrosła. Natomiast czy hierarchiczna rozbudowa przynosi pozytywne rezultaty, ocenić będzie można na podstawie badań empirycznych, których wyniki będą wkrótce omawiane.

2 komentarze:

  1. Ciekawe czy lepiej wybierać p tylko spośród tych, które na pierwszym poziomie zajmują tą samą pozycję co faktycznie grający system na drugim poziomie (takie spóźnione podpięcie się pod realny scenariusz), czy ze wszystkich (postawa trochę bardziej abstrakcyjna).
    Do takiej refleksji natchnął mnie mały problem - w symulacji skrypt MetaTradera czasami wyliczał odwrócenie pozycji, podczas gdy faktycznie ono nie nastąpowało, no i trzeba się było dostosować do rzeczywistości.

    OdpowiedzUsuń
    Odpowiedzi
    1. Ciekawy pomysł z tym zawężeniem zbioru przy poszukiwaniu optymalnego p. Przy tym bardzo intuicyjny, a mnie jakoś wcześniej nie przyszedł go głowy - potwierdza to po raz kolejny zalety opisywania pomysłów w tej formie :)
      Zagadnienie rozbieżności wyników symulacji z rzeczywistością jest też bardzo istotne i obszerne. Ja miałem z tym do czynienia, kiedy działałem np. na interwałach godzinowych i poziom odwrócenia z interwału poprzedniego był bliski któremuś z ekstremów. W kolejnym interwale poziom był często inny, odleglejszy, ale i tak następowało odwrócenie. Wszystko dlatego, że przed jego aktualizacją, "na styku interwałów" uaktywniał się ten z poprzedniego. Tego typu niuanse niestety utrudniają prowadzenie symulacji tak aby dawała realistyczne wyniki, ale jakoś trzeba sobie radzić.

      Usuń