Zacznijmy od oznaczeń danych wejściowych. Dla wskaźników zysku i ryzyka danymi tymi są zyski (lub straty) osiągane w poszczególnych interwałach czasowych. Przy tej okazji zresztą nadmieniam, że nie ma sensu pisać za każdym razem tej frazy „lub straty” - ostatecznie strata to też zysk tylko ze znakiem minus. Więc będę od tej pory mówić o zyskach, jednostkowych lub skumulowanych, w sensie uogólnionym. A ich ciąg oznaczam tutaj literami z wraz z odpowiednimi indeksami. Indeksy, wzorując się na każdym porządnym języku programowania, proponuję numerować od liczby 0.
Wzór
na skumulowany zysk jest oczywisty i banalny, więc nie warto się
nad nim specjalnie rozpisywać. Dodam tylko że, ponieważ
rozpatrywany elementarny system (jak również wszystkie inne
omawiane w dalszej przyszłości) jest determinowany parametrem,
został on uwzględniony jako drugi argument wskaźnika i oznaczony
literą p. W przypadku naszego pierwszego prościutkiego
systemiku jest to parametr determinujący poziom odwrócenia pozycji,
ale w ogólnym przypadku może mieć dowolny sens. Co więcej, może
mieć nawet charakter wielowymiarowy, czyli wyrażać się poprzez
wektor a nie pojedynczą liczbę. A oto i sam wzór:
Jak widać, wzór ten odwołuje się do poprzedniego, co jest zrozumiałe i wynika z sensu tego wskaźnika, wyrażanego przez skumulowane zyski w chwilach poprzedzających bieżącą. Warto jeszcze dodać że wewnętrzne wyrażenie, czyli to zawierające maksimum liczone po zmiennej s, określa chwilowe obsunięcie kapitału, mierzone w interwale o indeksie t.
Zatem
możemy już sformułować zadanie optymalizacji, którego wynikiem
będzie optymalna (przynajmniej w sensie empirycznym) wartość
parametru p. Jako funkcję kryterium proponuję przyjąć
wielkość, która stanowi rosnącą funkcję miary zysku i malejącą
względem miary ryzyka. Najbardziej naturalnym wyborem wydaje się
ich iloraz.
Pozostaje
określić zakres argumentów p, który przeszukujemy. Dolne
ograniczenie pmin nie sprawia problemów, gdyż można przyjąć
liczbę 0. Z punktu widzenia praktyki i realizmu warto dobrać liczbę
wynikającą z minimalnych wymagań brokera w zakresie odległości
poziomów zleceń od bieżącego kursu notowań. Natomiast górne
ograniczenie pmax teoretycznie jest równe nieskończoności,
natomiast ze względu na ograniczone historyczne wahania kursów w
obrębie interwałów czasowych, proponuję dobór empiryczny za
pomocą prostej formuły:
Przedstawione
powyżej wzory pozwalają na wyznaczenie optymalnej, w sensie
przyjętej funkcji celu, wartości parametru metody. Ponieważ
dotyczy to ustalonego zbioru wyników jej działania, indeksowanych
od 0 do n, ten proces określam mianem optymalizacji statycznej.
Ostatnim krokiem niezbędnym do konstrukcji kolejnej, już bardziej
zaawansowanej wersji systemu jest opracowanie procesu optymalizacji w
wersji dynamicznej, co przedstawię wkrótce.
Kontynuacja wątku tutaj.
Mała tylko dygresja a propos porządnych języków programowania. Kilka lat temu byłem na wykładzie profesora Wirtha, który wciąż twierdzi, że jego dzieło jest lepsze. Operator przypisania (:=) jest bardziej intuicyjny niż znak równości, który powinien być zarezerwowany dla warunków. Dziecko indeksuje od 1 a nie od 0, bo tak jest wygodniej procesorowi. A cała ta obiektowość to zwykłe struktury ze wskaźnikami na funkcje...
OdpowiedzUsuńZdanie o "porządnych językach" oczywiście należy traktować z przymrużeniem oka :)
UsuńMyślę, że z punktu widzenia inwestora bardziej interesującą wielkością od skumulowanego zysku jest skumulowany zysk na jednostkę czasu. Najczęściej roczny, nazywany CAGR. Takie obrazowanie zysku pozwala też na porównywanie dwóch strategi przetestowanych na danych o różnej długości.
OdpowiedzUsuńCo do maksymalnego obsunięcia to też inwestor powinien go obliczać trochę inaczej. Maksimum kapitału powinno być brane tylko w momentach zawierania transakcji, bo tylko w tych momentach inwestor będzie rozpoczynał inwestycję. Raczej nie będzie dołączał do sygnału w połowie jego trwania.
Druga uwaga jest niesłuszna, z wzorów wynika właśnie to co zasugerowałeś.
UsuńW pierwszej kwestii: jak najbardziej miara na jednostkę czasu jest bardziej realistyczna, jednak jest to istotne w przypadku systemów docelowych. Optymalizacja systemów, którą wkrótce zaproponuję, stanowi jedynie etap pośredni. Wszystkie strategie elementarne działają na zbiorze rekordów tej samej długości. Interesuje nas tylko porównanie wyników pomiędzy nimi, więc nie musimy sobie zaprzątać uwagi przeliczaniem jednostek czasowych.
UsuńCo do obsunięcia, to zacznę od przyznania się do błędu we wzorze, który dopiero teraz zauważyłem. Błędnie rozstawione nawiasy, a poza tym nieodpowiednie indeksy dolne mogły zmylić czytelnika. Właśnie naniosłem poprawki.
UsuńA sprawa ewentualnego "dołączania" gracza do systemu pomiędzy chwilami odwróceń pozycji jest na tyle złożona i ciekawa, że zasługuje na oddzielny wpis, i to raczej niejeden.