niedziela, 2 września 2012

Problem dzielenia przez zero przy optymalizacji systemu transakcyjnego

W dyskusji jaka toczyła się przy okazji omawiania pierwszych wyników symulacji hierarchicznego systemu transakcyjnego wynikła kwestia numerycznego wyznaczania wskaźnika jakości. Przypomnę, że jest nim iloraz skumulowanego zysku na zakończenia okresu optymalizacji przez maksymalne obsunięcie w tymże okresie. Problem pojawia się, kiedy mianownik tego ilorazu miałby przyjąć wartość zero. Może tak się zdarzyć dla pewnych wartości parametru podlegającego optymalizacji, szczególnie kiedy zbiór rekordów w analizowanym okresie ma niewielki rozmiar.

Skoro jest problem, to trzeba znaleźć rozwiązanie, modyfikując wskaźnik jakości w taki sposób, aby dla każdych danych wejściowych możliwe było poprawne wyznaczenie jego wartości. Zatem poniżej spróbuję przedstawić pewne konstruktywne propozycje wraz z omówieniem ich zalet i wad.

Najpierw opiszę pierwszy pomysł, jaki przyszedł mi do głowy i który stosowałem w dotychczas realizowanych symulacjach. Prosty i dość naiwny: skoro nie wolno nam dzielić przez zero, to... nie dzielmy wtedy wcale. Uściślając: w przypadkach, kiedy maksymalne obsunięcie wynosi zero, jako wskaźnik jakości przyjmujemy sam skumulowany zysk a nie iloraz.

Rozwiązanie to ma oczywistą wadę, a jest nią nieporównywalność wskaźników jakości dla przypadków z dzieleniem i bez niego. Fizycy zapewne z łatwością dostrzegą ten problem, ponieważ są przyzwyczajeni do rygorystycznego przestrzegania zasady nieporównywania wielkości wyrażanych w różnych jednostkach. Jak widać, omawiany iloraz jest tutaj wielkością bezwymiarową, natomiast sam skumulowany zysk jest wyrażany w jednostkach waluty, w której jest rozliczany kontrakt.

W celu ominięcia wspomnianego wyżej problemu wprowadziłem następujący, dodatkowy element: w sytuacjach, kiedy miałoby następować porównywanie samego zysku z ilorazem po prostu pomijamy. Innymi słowy, jeśli w zbiorze wyników do optymalizacji są takie, dla których maksymalne obsunięcie wynosi 0, to ograniczamy się wyłącznie do nich, pomijając pozostałe. Warto przy tym zauważyć, że bezpośrednio z definicji obsunięcia wynika, że końcowy zysk każdego z nich musi być wartością nieujemną.

Jest to propozycja bardzo radykalna i jako taka ma też niewątpliwą wadę w postaci bezwzględnej dyskryminacji tych strategii, które wykazują się jakimkolwiek, choćby symbolicznym, obsunięciem na rzecz tych, które wykazują się znikomym zyskiem i zerowym obsunięciem. A to ostatnie często nie wynika z zalet samej strategii ale jest efektem np. korzystnej pozycji początkowej. Oczywiście nie będzie to zachodzić w proponowanej przeze mnie metodzie symulacji z neutralną pozycją początkową. Jednak teraz omawiamy sytuację ogólną.

Przedstawione tutaj rozwiązanie jest zbliżone do tego, które zaproponował czytelnik w komentarzu do poprzedniego wpisu. Teoretycznie są one różne, jednak zauważmy, że dzielenie przez minimalną jednostkę notowań to jak gdyby dzielenie przez stałą równą jeden. A dzielenie przez 1 to brak dzielenia, z dokładnością do tego, że uwalniamy się od wzmiankowanego przeze mnie wyżej problemu zgodności jednostek. Również proponowane przeze mnie ograniczenie do zbioru wyników o zerowym obsunięciu jest czystym formalizmem. Strategia o jakimkolwiek, nawet minimalnym obsunięciu, musiałaby mieć kosmicznie duży zysk końcowy, aby ich iloraz mógł zdominować sam zysk dla strategii z zerowym obsunięciem. Wygląda więc na to, że niezależnie wpadaliśmy na podobne pomysły.

Przedstawione powyżej metody wyznaczania wskaźników jakości są konstruktywne, w tym sensie, że można jest stosować i dają jednoznaczne wyniki, nie prowadząc do wartości nieokreślonych. A że mają wady? Cóż, trudno. Na razie proponuję pozostać przy nich, a na dalszych etapach konstrukcji złożonych systemów powrócić do poszukiwania jakichś lepszych alternatyw.

6 komentarzy:

  1. Nie bardzo rozumiem uwagę "Oczywiście nie będzie to zachodzić w proponowanej przeze mnie metodzie symulacji z neutralną pozycją początkową." - ja nie widzę żadnej różnicy, przez 3 interwały mamy zero, potem przez 3 szczęśliwe dodatnie zyski cząstkowe. A może być jeszcze gorzej, dla dużego p przez większość czasu było zero i potem trochę szczęścia i zyskujemy ogromną przewagę nad systemami które uczciwie grały przez prawie cały czas, czyli uogulniając seria rozpędowa preferuje niskie m (co można łatwo odfiltrować) a dla pozycji neutralnej preferencje są rozrzucone po wszystkich m i p.
    Rozwiązaniem problemu mogłoby być liczenie MDD nie tylko w punktach, ale również z uwzględnieniem tego co się dzieje wewnątrz interwałów (na pewno L, niekoniecznie H), co w gruncie rzeczy nawet lepiej oddaje ryzyko, zwłaszcza przy długich interwałach.

    OdpowiedzUsuń
    Odpowiedzi
    1. Jak zwykle wszystkiemu winne są moje skróty myślowe :( Chodziło mi tylko o to, że neutralna pozycja początkowa eliminuje sytuację, w której np. dzięki szczęśliwemu rozpoczęciu od długiej pozycji kilka interwałów wzrostowych daje dodatni zysk przy zerowym DD, a gdyby nieszczęśliwie zacząć od krótkiej byłoby skrajnie na odwrót - duża strata i duży DD. Natomiast, jak słusznie zauważasz powstaje sytuacje kiedy jest długo, długo nic, a potem jeden szczęśliwy tick w dobrą stronę. Też niedobrze. Ponownie chylę czoła przed uważnym i dociekliwym czytelnikiem :)
      Co do ulepszonego sposobu liczenia MDD to faktycznie warto uwzględnić również extrema wewnątrz interwału - tu moim zdaniem zarówno L jak i H, bo każde stwarza ryzyko margin call, pierwsze przy długiej, drugie przy krótkiej pozycji. Zatem chwytam za kartkę i długopis i w jutrzejszym wpisie postaram się zamieścić zmodyfikowaną wersję w postaci porządnie napisanych wzorów.

      Usuń
  2. O tej porze myślenie idzie mi nieco gorzej, ale jak mamy dwie funkcję: CG i MDD, z czego jedną się minimalizuje a drugą maksymalizuje to czy nie lepiej sobie uprościć życie i "odwrócić" jedną z tych funkcji dodając znak (-) i połączyć je iloczynem a nie ilorazem? Wówczas funkcja celu troszkę nam się uprości do postaci: Fc = (-)CG*MDD -> którą należy maksymalizować i wówczas zniknie problem z dzieleniem przez 0 :)

    OdpowiedzUsuń
    Odpowiedzi
    1. Jak to się mówi "zbyt piękne aby mogło być prawdziwe" :)
      Zauważmy że taka funkcja może nam zwrócić maksimum dla bardzo dużych strat (CG<<0) i bardzo dużych obsunięć (MDD>>0). A to chyba nie o to chodzi.
      Przejście z iloczynów/ilorazów na sumy/różnice można zrealizować poprzez transformację logarytmem. Dyskutujemy ten temat pod postem z ostatniej niedzieli...

      Usuń
    2. Ten komentarz został usunięty przez autora.

      Usuń