niedziela, 9 września 2012

Krótka refleksja na temat uogólnionych miar zysku i ryzyka jako kryteriów optymalizacji systemu transakcyjnego

W poprzednim wpisie przedstawiłem wyniki symulacji systemu transakcyjnego o zmodyfikowanej, w stosunku do pierwszych eksperymentów, funkcji kryterium zastosowanej dla optymalizacji parametru odwrócenia pozycji. Przypomnę krótko, że skumulowany zysk zastąpiła mediana, a zamiast maksymalnego obsunięcia w mianowniku odpowiedniego ilorazu pojawiło się odchylenie bezwzględne. Ponieważ w kolejnych kilku tekstach planuję zaprezentować wyniki uzyskane dla jeszcze paru innych funkcji kryterium, dzisiaj chciałbym krótko omówić uogólnioną koncepcję konstrukcji takich funkcji.

Ogólna idea jest dość prosta i oczywista – zarówno średnia z zysków (czyli skumulowany zysk po podzieleniu przez liczbę obserwacji) jaki i ich mediana służą do oceny globalnej zyskowności strategii czyli wartości oczekiwanej profitu. Z kolei maksymalne obsunięcie oraz odchylenie bezwzględne są miarami ryzyka czyli ujmują liczbowo rozproszenie uzyskiwanych wartości i związaną z tym niepewność wyników. Listę takich miar można rozszerzać, dokładając np. odchylenie standardowe, odstęp międzykwartylowy i zapewne jeszcze parę innych, mniej znanych lecz użytecznych wskaźników statystycznych.

Z powyższych dywagacji wprost wynika, że ogólna formuła omawianej funkcji kryterium i związany z nią schemat optymalizacji parametru można opisać następującym wzorem:
Wyjaśnienia może wymagać pojawiający się tutaj parametr oznaczony grecką literą theta wraz z symbolem przynależności do zbioru, zamiast wcześniejszego parametru odwrócenia pozycji p. Oznacza to jednak po prostu, że formuła ta ma charakter uniwersalny, a parametr podlegający optymalizacji może mieć dowolną interpretację. Również zakres wartości przezeń przyjmowanych nie zawsze musi stanowić przedział – może być zbiorem dowolnie określonym.

Powyżej opisane uogólnienie jest w zasadzie dość naturalnym wnioskiem, który można wysnuć po przejrzeniu kilku konkretnych przykładów takich funkcji. Powodem, dla którego poświęcam temu tematowi cały wpis jest propozycja jeszcze dalszego rozwinięcia tej idei. Opiera się ona na spostrzeżeniu, że jakkolwiek funkcja kryterium o powyższej konstrukcji spełnia podstawowy postulat – tzn. maksymalizacji zysku i minimalizacji ryzyka – to nie zadaje w jawny sposób proporcji pomiędzy tymi czynnikami. Innymi słowy, nie umożliwia określenia przez podmiot wydający polecenie optymalizacji (gracza-człowieka bądź też element systemu na wyższym poziomie hierarchii) jaki stopień ważności ma być przypisany mierze zysku a jaki ryzyka.

Od razu warto zauważyć, że pomnożenie licznika i/lub mianownika przez stałą nie rozwiązuje problemu, ponieważ stałe te mogłyby zostać wyniesione przed symbol operatora maksymalizacji, a w konsekwencji nie miałyby żadnego wpływu na wynik operacji. Konieczne jest zatem użycie bardziej złożonej funkcji – tutaj z pomocą przychodzi funkcja potęgowa. Z powodów, które będziemy szerzej omawiać w dalszych rozważaniach, praktyczne jest zastosowanie następującej, uogólnionej funkcji
gdzie symbol w oznacza wykładnik funkcji potęgowej i jest ustaloną liczbą nieujemną. Na obecną chwilę najprostszym argumentem na rzecz zastosowania funkcji potęgowej w mianowniku jest fakt, że miara ryzyka przyjmuje z definicji wartości nieujemne, a pomijając przypadki zdegenerowane, można przyjąć, że nawet ściśle dodatnie, co było szerzej dyskutowane tutaj.

Natomiast wprowadzenie zaproponowanego uogólnienia implikuje natychmiastowe pojawienie się kwestii doboru parametru w. Jak pamiętamy z rozważań dotyczących zdolności uogólniania liczba parametrów strategii powinna być możliwie jak najmniejsza, aby zapobiegać zjawisku nadmiernego dopasowywania do zbioru danych. Mając na uwadze ten postulat, do zagadnienia uogólniania funkcji kryteriów należy podchodzić z należytą rozwagą.

15 komentarzy:

  1. Miary z w>1 wydają się dość ryzykowne, załóżmy przez chwilę, że dla wszystkich wartości optymalizowanego parametru mamy CG<0 (sytuacja wcale nie niemożliwa). W takim przypadku wybrana zostanie najgorsza opcja np. CG=-1,MDD=1 przegra z CG=-1,MDD=2.

    OdpowiedzUsuń
    Odpowiedzi
    1. Co gorsza ta właściwość stawia pod znakiem zepytania sens wyznaczania średniej i mediany...

      Usuń
    2. ...na kolejnym poziomie adaptacji.

      Usuń
    3. Chyba nawet każde w>0 ma tę wadę. Np. dla w=1/2 dla podanych liczb będzie -1/1 < -1/sqrt(2)
      To jest ogólny problem kiedy miarę ryzyka umieszczamy w mianowniku. Rozwiązać można to w ten sposób, że kiedy mamy dla wszystkich wartości parametru zysk ujemny, to zmieniamy kryterium na przeciwne, czyli minimalizujemy zamiast maksymalizować.

      Usuń
    4. Może dałoby radę dzielenie zamienić na:
      signum(CG)*log(abs(CG)) - log(MDD)

      Usuń
    5. Też o tym myślałem - logarytm jest faktycznie dobry, bo zamienia model multiplikatywny na addytywny. Ale z tymi znakami to chyba nie będzie tak prosto, szczególnie w przypadku okolic zera. No bo weźmy (dla ustalenia uwagi logarytm niech będzie dziesiętny) CG = 0.01 w zestawieniu z CG = -0.01 , MDD niech będzie dowolne, i tak się uprości. Wtedy dla dodatniego zysku mamy:
      +1 * log( 0.01 ) = -2
      a dla ujemnego
      -1 * log( |-0.01| ) = -1 * log( 0.01 ) = -1 * -2 = 2
      i kicha - strata dominuje nad zyskiem pod względem funkcji celu :(

      Usuń
    6. Zyski w okolicach 1 dolara nie są aż tak częste, ale dla poprawności:
      (abs(CG)<1 ? -1 : 1)*signum(CG)*log(abs(CG)) - w * log(MDD)

      Usuń
  2. Teraz już chyba dobrze:
    signum(CG)*log(abs(CG)+1) - w * log(MDD)

    OdpowiedzUsuń
  3. A co powiecie na zmianę funkcji celu na tego typu:
    Fc = Zk/MDD, gdzie Zk = Kk/Kp, Kk to kapitał końcowy, Kp to kapitał początkowy.
    Zk jest odpowiednikiem CG z tą różnicą, że zawsze przyjmuje wartości dodatnie a strata wyrażana jest w wartościach mniejszych od 1 - tj. z przedziału (1,0>.

    OdpowiedzUsuń
    Odpowiedzi
    1. Do moich zastosowań słabo pasuje, bo nie można po tym policzyć porównywalnej średniej, ale w ogólności nie widzę przeciwskazań.

      Usuń
    2. Nie wiem też jak by miało wyglądać uogólnienie tego na inne przedstawione propozycje funkcji jakości, które w liczniku miały średnią i medianę?

      Usuń
    3. ad. 1)
      O jakiej porównywalnej średniej piszesz? A jakbyś ją policzył po tradycyjnym wzorze tj. Fc = CG/MDD?
      Funkcja jak funkcja - bardziej mi chodziło o rozwiązanie problemu zmiany kierunku optymalizacji funkcji -> w poprzednim wzorze, gdy zysk był dodatni to się funkcję maksymalizowało, a gdy zysk był ujemny to minimalizowało. Natomiast w tej zaproponowanej przeze mnie funkcję się tylko maksymalizuje - niezależnie czy jest zysk czy strata.
      ad. 2)
      Ponownie nie rozumiem co masz na myśli pisząc o uogólnieniu tego na inne przedstawione propozycje funkcji. To jest kolejna koncepcja funkcji - nie porównujesz jej z innymi funkcjami.

      Usuń
    4. Widzę, że dyskusja się dynamicznie rozwinęła :)
      Co do funkcji dzielącej przez kapitał początkowy, to niestety nie w tym modelu - no bo jak go określić, skoro na tym etapie badamy tylko skumulowane zyski nominalne z pojedynczej pozycji? W tym sensie kapitał początkowy wynosi zero, a to na pewno nie nadaje się na dzielnik :(

      Usuń
    5. Czyli rozumiem, że te "zyski" są wyrażone w pipsach - jako różnica między ceną zakupu a sprzedaży? Bo ja zyski bardziej kojarzyłem jako Kk - Kp z optymalizowanego okresu.
      Przepraszam, że trochę mieszam, ale czytam trochę w pośpiechu (bodajże przedwczoraj odkryłem tego bloga i chcę to jak najszybciej odrobić) i trudno mi to wszystko tak na raz ogarnąć.

      Teraz znowu trochę strzelam, bo ciągle mam wiele wątpliwości, czy dobrze to rozumiem, ale:
      Jeśli chodzi o obliczanie skumulowanych zysków z pojedynczej pozycji tj. bez uwzględniania kapitału to można rozważyć również zamiast obliczania zysku w postaci sumy z (Ask - Bid - spread), iloczyn z (Ask - spread)/Bid.
      Wówczas nie będzie potrzebne uwzględnianie kapitału a wyjdziemy chyba mniej więcej na to samo. Oczywiście to nie będzie "zysk" w takiej formie jak wcześniej ale będzie miał własności, które rozwiążą przynajmniej jeden problem - zmianę kierunku optymalizacji przy ujemnym zysku. Oczywiście to należy traktować jako oddzielny wskaźnik.
      Z drugiej strony i tak optymalizacja polega na przeszukaniu wszystkich rozwiązań i wybraniu tej "optymalnej" więc to nie musi być takim dużym problemem - każde rozwiązanie z dodatnim (nawet małym) zyskiem i dużym MDD będzie bardziej optymalne od rozwiązania z małym ujemnym zyskiem i dużym/małym MDD.
      Reasumując szukam nieistotnego rozwiązania :)

      Usuń
    6. ad. 1)
      Na blogu zaczyna pojawiać się definicja systemu z dwoma poziomami adaptacji. O ile na pierwszym poziomie adaptacji Twoja propozycja (z modyfikacją którą zaraz podam) mogłaby się sprawdzić do porównywania alternatyw, to przy dwóch poziomach mamy dwuwymiarową macierz jakości i musimy z niej wybrać jakąś kolumnę. Samo się narzuca by wybrać tą z największą średnią. CG/MDD też słabo się nadaje stąd przejście na logarytmy.
      Modyfikacja mogłaby wyglądać następująco (MaxCG+CG+1)/MDD, MaxCG i tak wyznaczamy do MDD.
      ad. 2)
      Powyższe problemy dotyczą też innych funkcji, logarytm jest rozwiązaniem uniwersalnym.

      Usuń