Zjawisko
obsunięcia kapitału i jego
ilościowej oceny dobrze jest śledzić obserwując jego przebieg dla
pojedynczej realizacji wybranej strategii. Oczywiście pamiętając,
że stanowi ona jedną
z realizacji wielu możliwych wariantów,
niczym pojedyncza nić w płachcie tkaniny.
Natomiast
implementację mierników
zysku i ryzyka warto, przynajmniej na początek, zrealizować w
sposób ułatwiający ich wizualizację. Bezpośrednio obserwować
proces ich obliczeń. Arkusz kalkulacyjny jest to tego odpowiednim
narzędziem, w miarę rosnącej komplikacji wzorów i algorytmów być
może trzeba będzie poszukać dla nich mocniejszych środków
obliczeniowych. Obecnie proponuję rozpocząć konstrukcję
przykładowego arkusza.
Punktem
startowym są sekwencje skumulowanych zysków znajdujące się w
zakładce cGain.
Jego kolumny gromadzą pojedyncze trajektorie odpowiadają
realizacjom strategii indeksowanych parametrem. Istotny jest tutaj
fakt, że nie nadajemy tutaj żadnej interpretacji tym parametrom i
rodzinom strategii. Mogą one nawet same być strategiami złożonymi.
Muszą spełniać istotny warunek: wszystkie
operują na jednakowej liczbie pozycji, niezmiennej w czasie.
Natomiast
kolejna zakładka o dość intuicyjnej nazwie mDD
jest przeznaczona na sekwencje o analogicznym układzie kolumnowym, w
których znajdą się wartości wskaźnika MDD liczonego kolejnych
interwałach. Patrząc więc na wzory przedstawione tutaj opisujące bieżące oraz maksymalne obsunięcie
kapitału, zabieramy się do konstrukcji formu. Jak zwykle pierwszą
kolumnę przeznaczymy na informacje o czasie kolejnych interwałów
(np. daty w przypadku notowań dobowych) natomiast pierwszy wiersz na
parametry strategii lub co najmniej ich kolejne indeksy. Oznacza to,
że punkt startowy dla pierwszej trajektorii znajduje się w komórce
B2.
Chwilowe
obsunięcie, będąc zmienną pomocniczą zostaje wkomponowane w
całość formuły. Należy
oszczędzać miejsce na arkuszu, co również sprzyja optymalizacji
czasu niezbędnego na przeliczenie jego zawartości. W MDD występuje
maksimum chwilowych obsunięć od początku sekwencji. Można
je wyznaczać iteracyjnie jako maksimum DD bieżącego oraz MDD w
interwale poprzednim.
To kolejny element optymalizacji złożoności formuł.
Skoro
startujemy z linią kapitału od wartości zero, to i w chwili
początkowej obsunięcie jest zerowe. Natomiast w kolejnym interwale,
czyli komórce mDD.B3
mamy formułę
=
MAX( MAX( cGain.B$2:B3 ) cGain.B3; B2 )
Wykorzystano
tutaj mechanizm dwojakiego tworzenia odwołań, zwanych niekiedy
miękkimi
i twardymi.
Te pierwsze są aktualizowane przy kopiowaniu i przeciąganiu komórek
zawierających formuły. Natomiast w drugim przypadku (jest on
oznaczany symbolem $ przed nazwą kolumny i/lub wiersza) adres
pozostaje niezmienny. Przydatne to jest w wewnętrznej funkcji MAX,
której argumenty tworzą zakres o początku niezmiennym a końcu
zwiększającym się z każdym kolejnym interwałem czasowym. W ten
sposób w komórce B4 automatycznie generuje się uaktualniona
formuła.
=
MAX( MAX( cGain.B$2:B4 ) cGain.B4; B3 )
Poniższy
fragment arkusza ilustruje opisaną powyżej słownie koncepcję i
pozwala prześledzić działanie formuł dla
przykładowych danych.
Przedstawiona
formuła ma charakter pomocniczy. Można ją traktować jako drobne
ćwiczenie wprowadzające, przygotowanie do kolejnego etapu.
Nitki pojedynczych trajektorii tworzą snop, który będziemy powoli
przeczesywać w poszukiwaniu włókien najlepszej jakości. Z nich
trzeba będzie upleść właściwy materiał.
Jestem pod wrażeniem wyników i gratuluję :) Inwestuj dalej i życzę ci samych sukcesów. A poza tym jak możesz to zajrzyj tutaj do mnie na bloga :)
OdpowiedzUsuńJak zawsze dokładna i użyteczna analiza. Nadal handluję za pomocą platformy z tej Ildar Sharipov. Nie mogę się doczekać, aby jeszcze bardziej poprawić swoje umiejętności.
OdpowiedzUsuń