Koryguje wyniki portfela poprzez przeskalowanie transakcji, uwzględniając wzrost portfela przy łączeniu strategii. Pokazuje oryginalną i przeskalowaną krzywą kapitału z automatycznie wykrywanymi saldami oraz analizą obsunięć kapitału (drawdown).
Przegląd
StrategyQuant X tworzy wyniki portfela, łącząc wiele strategii i sumując P&L ich transakcji na bazie jednego salda początkowego. Jest to szybkie i proste, ale wprowadza systematyczne zniekształcenie – każda strategia była testowana w izolacji, dobierając wielkość pozycji do własnego konta (np. 1% ze 100 000 USD). Po połączeniu portfel rośnie, ale wielkości poszczególnych transakcji nigdy się nie dostosowują, by odzwierciedlić większe, łączne saldo. Strategia, która otworzyła pozycję o wartości 1 000 USD, gdy portfel wynosił 100 tys. USD, nadal otwiera pozycję o wartości 1 000 USD, gdy portfel urósł do 400 tys. USD. Pozycja stanowi teraz zaledwie jedną czwartą tego, czym w rzeczywistości byłoby ryzyko 1%.
Ta wtyczka odtwarza pełną historię transakcji portfela chronologicznie, stosując współczynnik skali do każdej transakcji, dzięki czemu wielkość pozycji każdej strategii jest zawsze dobierana względem bieżącego, łącznego salda portfela, a nie jej własnego, izolowanego salda początkowego. W rezultacie otrzymujesz dwie krzywe kapitału zestawione obok siebie: oryginalną (dokładnie odpowiadającą SQX) oraz przeskalowaną (pokazującą, co dałoby prawidłowe procentowanie składane), a poniżej wykres porównawczy obsunięć kapitału (drawdown).

Funkcje
- Dokładnie odtwarza oryginalną krzywą portfela z SQX, zapewniając zweryfikowany punkt odniesienia do porównań
- Odtwarza portfel z prawidłowym skalowaniem dla każdej transakcji, gdzie każda transakcja jest przeskalowywana według wzoru: bieżące saldo portfela ÷ izolowane saldo algorytmu w danym momencie
- Wyświetla wykres procentowego obsunięcia kapitału (% drawdown) dla obu krzywych, dzięki czemu widać, kiedy wystąpiły obsunięcia oraz czy przeskalowanie je poprawia, czy pogarsza
- Automatycznie wykrywa wszystkie salda początkowe z danych zleceń; start portfela i izolowany start każdego algorytmu są odczytywane bezpośrednio z pierwszego zlecenia każdej strategii – bez konieczności wprowadzania danych ręcznie
- Obsługuje limit maksymalnej liczby lotów, dzięki czemu można zobaczyć realną, ograniczoną krzywą pod kątem limitów pozycji w firmach prop-tradingowych
- Filtr zakresu dat z mechanizmem warm-start. Zawęź widok do dowolnego podokresu; transakcje sprzed zakresu są odtwarzane w celu doprowadzenia wszystkich sald do właściwego stanu przed rozpoczęciem wybranego okna
- Przełącznik „Rebase to Start” normalizuje obie krzywe do pierwotnego punktu początkowego dla dowolnego wybranego zakresu, co pozwala bezpośrednio i na równych zasadach porównywać dowolne dwa okresy
Jak to działa
Salda początkowe są wykrywane automatycznie. Saldo początkowe portfela jest odczytywane jako firstOrder.Balance − firstOrder.ProfitLoss. Izolowane saldo początkowe każdej strategii jest wykrywane w ten sam sposób z pierwszego zlecenia danej strategii (identyfikowanej po ResultName).
Krzywa oryginalna (Original) to bezpośrednie odtworzenie: start od wykrytego salda portfela, dodawanie pierwotnego wyniku ProfitLoss każdej transakcji w porządku chronologicznym. Musi to dokładnie odpowiadać raportowanemu przez SQX zyskowi netto, saldu końcowemu i obsunięciu kapitału (drawdown). Jeśli tak nie jest, oznacza to, że wykryte saldo początkowe jest błędne.
Krzywa przeskalowana (Rescaled) korzysta z tego samego salda początkowego, a następnie dla każdej transakcji:
scaleFactor = currentPortfolioBalance ÷ algoIsolatedBalance
scaledPL = originalPL × scaleFactor
Wyizolowane saldo algorytmu jest aktualizowane po każdej z jego własnych transakcji (isoBal += originalPL), dzięki czemu ten wskaźnik odzwierciedla to, jak konto danej strategii rozwijałoby się w izolacji. Jeśli ustawiony jest limit max-lots, współczynnik skalowania jest ograniczany od dołu, aby implikowana pozycja nigdy nie przekraczała maxLots ÷ originalLotSize.
Drawdown % jest śledzony niezależnie od drawdown $, dokładnie tak samo jak w SQX: największy spadek procentowy (peak-to-valley ÷ local peak) oraz największy spadek kwotowy są mierzone oddzielnie w całej historii transakcji i raportowane w tabeli statystyk.
Założenia
- Strategie korzystają z procentowego wielkościowania pozycji (np. 1% ryzyka na transakcję)
- Jeśli strategie korzystają ze stałych wielkości lota, współczynnik skalowania zmienia nominalny P&L, ale nie rzeczywistą liczbę lotów. Przeskalowana krzywa będzie wyglądać inaczej, ale nie będzie odzwierciedlać tego, co rzeczywiście można by zrealizować.
- Pole Balance w zleceniach portfela reprezentuje wyizolowane saldo konta pojedynczej strategii (a nie łączne saldo portfela)
- Na tej podstawie wtyczka wykrywa kapitał początkowy każdego algorytmu i śledzi jego ewolucję. Jeśli SQX zapisuje w tym polu bieżące saldo na poziomie portfela, współczynniki skalowania dla poszczególnych algorytmów będą niepoprawne. Zweryfikuj to, sprawdzając, czy wykryte salda początkowe algorytmów zgadzają się z saldami początkowymi Twojej strategii.
- Wszystkie strategie używają tej samej waluty bazowej
- Wartości P&L są sumowane i skalowane w pierwotnych jednostkach walutowych; portfele wielowalutowe nie są obsługiwane.
- Wykrywanie salda początkowego zakłada, że żadne transakcje nie zostały zamknięte przed pierwszym zleceniem w danych
- Jeśli wyeksportowane dane są ucięte (np. przeglądasz wycinek Out-of-Sample), wykrytym saldem początkowym będzie saldo na początku tego wycinka, a nie pierwotnie skonfigurowany kapitał.
Ograniczenia i wady
Przeskalowana krzywa jest symulacją, a nie backtestem. Współczynnik skalowania jest stosowany do pierwotnego P&L, który został obliczony przy użyciu stałych wielkości lota. W rzeczywistości handel większym lotem miałby inny wpływ na rynek i mógłby przesunąć cenę przeciwko Tobie w odmienny sposób. Efekt ten jest pomijalny w przypadku płynnych instrumentów i małych kont, ale może być znaczący na rynkach niepłynnych lub przy bardzo dużych pozycjach.
Nakładające się transakcje nie są obsługiwane. Przeskalowanie zakłada, że każda transakcja jest niezależna. Jeśli dwie strategie utrzymują pozycje jednocześnie, łączna ekspozycja w danym momencie jest sumą obu przeskalowanych pozycji — wtyczka nie sprawdza, czy naruszyłoby to depozyt zabezpieczający lub limity ekspozycji.
Limit max-lots jest stosowany na transakcję, a nie na otwartą pozycję. Jeśli wiele strategii ma otwarte transakcje jednocześnie, każda z nich jest indywidualnie ograniczona, ale łączna liczba otwartych lotów we wszystkich jednoczesnych pozycjach nie podlega ograniczeniu.
Drawdown jest mierzony wyłącznie w momentach zamknięcia transakcji. Wahania kapitału w trakcie trwania transakcji (drawdown otwartych pozycji) nie są widoczne w danych zleceń. Zgłaszany maksymalny drawdown może być niższy niż ten, który byłby obserwowany na krzywej kapitału tworzonej tick po ticku.
Strategie ze stałym lotem nie wykażą żadnej istotnej różnicy między wersją Original a Rescaled — współczynnik skalowania zmienia implikowany zysk/stratę w ujęciu kwotowym, ale nie rzeczywiste zachowanie strategii w kwestii ryzyka.
Zostało to zaprojektowane, aby dać Ci wyobrażenie o tym, jak w rzeczywistości będzie skalować się ryzyko Twojego portfela, ponieważ wartość Drawdown w wynikach StrategyQuant nie jest dokładna w przypadku Risk %