Monte Carlo pozwala sprawdzić, jak zmieniają się wyniki modelu po losowaniu zdarzeń. W tradingu może pokazać wrażliwość obsunięcia na kolejność transakcji albo rozrzut wyników przy określonych założeniach. Nie dowodzi istnienia przewagi i nie zamienia historycznej próby w gwarancję przyszłego ryzyka.
Najpierw wybierz, co losujesz
Przetasowanie bez powtórzeń zmienia kolejność istniejących wyników. Przy niezmiennych kwotach transakcji suma końcowa pozostaje taka sama, choć zmienia się ścieżka. Bootstrap losuje ze zwracaniem: niektóre obserwacje trafiają do nowej sekwencji wielokrotnie, inne wcale. Zmieniają się wtedy także sumy.
Model parametryczny generuje wyniki z określonego rozkładu i jego parametrów. Prosty wariant „wygrana albo strata” to tylko jeden przykład, nie definicja wszystkich modeli parametrycznych. Inne modele mogą uwzględniać zmienną wielkość wyników i zależności między zdarzeniami.
Oznacz jednostkę danych. Kwoty z transakcji o różnych wolumenach nie są automatycznie równoważną próbką przy stałym ryzyku. Wyniki w R wymagają konsekwentnie określonego początkowego ryzyka; stopy zwrotu wymagają właściwej podstawy kapitału. Nie mieszaj ich w jednym losowaniu.
Ta sama suma, inne obsunięcie
Własny przykład dydaktyczny: początkowy kapitał to 1000 jednostek, a trzy wyniki kwotowe wynoszą +200, −100 i −100. Wszystkie są umownie po kosztach. Nie modelujemy otwartych pozycji, marginu ani zmiany wolumenu. Zmieniamy wyłącznie kolejność.
| Etap | A: +200, −100, −100 | B: −100, −100, +200 |
|---|---|---|
| Początek | 1000 | 1000 |
| Po pierwszej | 1200 | 900 |
| Po drugiej | 1100 | 800 |
| Po trzeciej | 1000 | 1000 |
| Maksymalne obsunięcie | 16,67% | 20,00% |
W A spadek ze szczytu 1200 do 1000 daje 200 / 1200 = 16,67%. W B spadek z początkowego 1000 do 800 daje 20%. Końcowy wynik jest identyczny. Kapitał początkowy musi należeć do historii szczytów; pominięcie go zaniżyłoby obsunięcie po pierwszych stratach.
W czystym modelu stałego procentu ryzyka iloczyn tych samych czynników zwrotu również nie zależy od kolejności. W praktyce limity straty, zatrzymanie strategii, zaokrąglenia wolumenu i wymogi depozytu mogą to zmienić. Model musi uwzględniać reguły, które naprawdę przerywają albo ograniczają handel.
Co oznacza 95. percentyl?
Z każdej symulowanej ścieżki wyznacz maksymalne obsunięcie, a następnie percentyl całej listy tych maksimów. To inna operacja niż policzenie percentyla kapitału w każdym kroku i odczytanie obsunięcia z narysowanego pasma. Pasmo punktowe nie jest jedną rzeczywistą ścieżką.
Jeśli 95. percentyl maksymalnego obsunięcia wynosi 30%, opisuje wyniki wygenerowane przez konkretny model. Nie znaczy, że z 95-procentową pewnością przyszła strata nie przekroczy 30%. Pozostają błędy danych, parametrów i założeń. Percentyl empiryczny może też zależeć od metody interpolacji.
Więcej losowań zmniejsza szum samej symulacji, ale nie uzupełnia brakujących scenariuszy rynkowych. Tysiąc przebiegów nie daje tysiąca nowych niezależnych doświadczeń strategii. Nie wybieraj korzystniejszego wyniku po wielokrotnym przeliczaniu tych samych parametrów.
Prosty model w Excelu
Wpisz A1 = 0,55, A2 = 100, A3 = −80 i A4 = 10 000. To hipotetyczne prawdopodobieństwo oraz dwie stałe kwoty wyniku, a nie prognoza. W C1 wpisz =A4, D1 =C1, E1 =0. Pierwszy wiersz przechowuje stan przed transakcją.
| Komórka | Formuła w polskim Excelu | Znaczenie |
|---|---|---|
| B2 | =JEŻELI(LOS()<$A$1;$A$2;$A$3) | Losowany wynik |
| C2 | =C1+B2 | Kapitał po transakcji |
| D2 | =MAX(D1;C2) | Dotychczasowy szczyt |
| E2 | =(D2-C2)/D2 | Bieżące obsunięcie procentowe |
Skopiuj B2:E2 do wiersza 201, aby uzyskać 200 transakcji. Odwołania $A$1, $A$2 i $A$3 pozostają stałe. Wynik końcowy odczytasz z C201, a maksymalne obsunięcie z MAX(E1:E201). Przy powielaniu bloku w bok zachowaj stałe parametry i oddzielny stan początkowy każdej ścieżki.
W tym modelu wartość oczekiwana pojedynczego wyniku to 0,55 × 100 − 0,45 × 80 = 19. Dla 200 prób oczekiwana suma wynosi 3800; nie jest to zapewniona mediana ani wynik każdego przebiegu. Model pomija ograniczenia handlu przy niedostatecznym kapitale i wymaga ich dodania przed praktycznym zastosowaniem.
Funkcje losowe przeliczają się ponownie. Zachowaj kopię wylosowanych wartości do kontroli konkretnej próby. Dla listy maksymalnych obsunięć użyj PERCENTYL.PRZEDZ.ZAMK z argumentem 0,95. Format procentowy oznacza, że 0,30 pokazuje się jako 30%, a nie 0,30%.
Bootstrap działa także w arkuszu
Jeżeli sto liczbowych wyników netto umieścisz w H2:H101, możesz losować je formułą =INDEKS($H$2:$H$101;LOS.ZAKR(1;100)). To losowanie ze zwracaniem, więc powtórzenia są oczekiwane. Sto komórek jest wygodnym rozmiarem przykładu, nie statystycznym progiem wiarygodności.
Python ułatwia powtarzalny zapis eksperymentu. Biblioteka standardowa oferuje random.choices, a NumPy Generator.choice ze zwracaniem. Zapisz ziarno generatora, wersję programu, dane, horyzont i reguły ryzyka. Samo ziarno nie gwarantuje identycznego wyniku przy dowolnej zmianie biblioteki lub algorytmu.
Przed tysiącami losowań sprawdź rachunek na ręcznie wpisanej sekwencji z tabeli. Obie ścieżki powinny kończyć na 1000, a maksymalne obsunięcia wynosić odpowiednio około 16,67% i 20%. Jeżeli test nie przechodzi, napraw obliczenia, zamiast interpretować rozkład z błędnego arkusza.
Czego proste losowanie nie zachowuje?
Niezależne losowanie pojedynczych transakcji niszczy ich zależności czasowe. Może zgubić skupiska strat i wspólne ekspozycje równoczesnych pozycji. Bootstrap blokowy losuje fragmenty sekwencji i może zachować część tej struktury, lecz wymaga wyboru długości bloków oraz dalszych założeń.
Próbka historyczna nie zawiera każdej możliwej przyszłej straty. Powtarzanie jej obserwacji nie odkryje nieobserwowanego szoku ani awarii egzekucji. Uzupełnij analizę odrębnymi scenariuszami pogorszenia kosztów, luk, brakujących wykonań i zmiany rozkładu. Nie nazywaj najgorszego wylosowanego wyniku granicą ryzyka.
Rozróżnij też ruinę matematyczną od praktycznej. W idealnym modelu tracenia zawsze 5% bieżącego kapitału pozostaje 0,95 do potęgi liczby strat razy kapitał początkowy; po skończonej liczbie takich strat wynik nie jest dokładnie zerem. Praktyczny próg zatrzymania, brak minimalnego marginu i straty większe od założonych wymagają osobnego modelowania.
Porównuj warianty na tych samych losowaniach
Własny model ma wynik + 1 przy losowej liczbie U poniżej progu i −1 w przeciwnym razie. U jest równomierne od 0 do 1. Progi A = 0,55 i B = 0,60 są hipotetyczne. Oczekiwane wyniki wynoszą 0,10 i 0,20, więc oczekiwana różnica B − A to 0,10.
| Losowanie dla pary A/B | Możliwe różnice B − A | Wariancja różnicy |
|---|---|---|
| Wspólne U | 0 lub + 2 | 0,19 |
| Dwa niezależne U | −2, 0 lub + 2 | 1,95 |
Przy wspólnym U wyniki różnią się tylko w przedziale 0,55–0,60, o długości 0,05. Różnica + 2 występuje z prawdopodobieństwem 0,05, a zero z 0,95. Wariancja to 4 × 0,05 − 0,10² = 0,19. Przy niezależnych losowaniach sumują się wariancje A i B: 0,99 + 0,96 = 1,95.
W tym konkretnym porównaniu wspólne losowania ułatwiają odczytanie wpływu zmienionego progu. Nie zmieniają oczekiwanej przewagi ani nie zwiększają wiarygodności założeń rynkowych. Metoda nie musi redukować wariancji dla dowolnych strategii; tutaj efekt wynika z jawnej, zgodnej konstrukcji dwóch wariantów.
Jak wykorzystać wynik?
Zdefiniuj horyzont i próg niedopuszczalnej sytuacji przed analizą. Porównuj warianty ryzyka przy tych samych danych i ograniczeniach. Nie uznawaj dopasowania percentyla do tolerancji za dowód bezpieczeństwa. Po zmianie wielkości pozycji przelicz również koszty i ograniczenia wykonania.
Symulację połącz z kontrolą jakości backtestu i testem na danych niewykorzystanych do strojenia. Walk-forward pomaga uporządkować kolejne okresy, ale także wymaga uczciwego rozdzielenia projektowania i sprawdzania strategii.
Sprawdź, czy rozumiesz
Jedno krótkie ćwiczenie
Kapitał zaczyna na 1000 i po dwóch stratach spada do 800, po czym wraca do 1000. Jakie było maksymalne obsunięcie?
Sprawdź odpowiedź
20%: (1000 − 800) / 1000. Powrót do początkowego kapitału nie usuwa wcześniejszego obsunięcia.
