BTC192,7k zł9,53%
ETH6,00k zł9,42%
XRP3,52 zł14,13%
LTC170 zł2,10%
BCH1,10k zł8,43%
DOT3,31 zł11,02%

Matematyka strat: asymetria odrabiania kapitału i Risk of Ruin

W poprzednim artykule pokazaliśmy, że strata 50% wymaga +100% zysku do odrobienia. Teraz rozbieramy tę arytmetykę na czynniki pierwsze — pełna tabela asymetrii od −5% do −90%, formuły Risk of Ruin dla różnych win rate i R:R (z zastrzeżeniami, których brakuje w 99% poradników), symulacje Monte Carlo, które pokażą ci rozkład możliwych equity curve dla twojego systemu, i praktyczne narzędzia do policzenia tego samemu. Jeśli tego nie policzysz, nie zarządzasz ryzykiem — zgadujesz rozmiar własnej straty.

Matematyka strat na Forex — asymetria odrabiania kapitału, krzywa Risk of Ruin i symulacja Monte Carlo equity curve
Najważniejsze w 60 sekund
  • Asymetria strat jest nieliniowa — po −20% potrzebujesz +25%, po −50% potrzebujesz +100%, po −70% potrzebujesz +233%. Im głębszy drawdown, tym recovery przyspiesza w sposób brutalnie nieliniowy
  • Risk of Ruin (RoR) to obliczalne prawdopodobieństwo bankructwa — ale formuła analityczna działa TYLKO dla R:R 1:1. Dla asymetrycznych systemów potrzebujesz symulacji Monte Carlo
  • Monte Carlo jest użyteczne dopiero wtedy, gdy karmisz je realnymi danymi netto. Na śmieciowych danych z backtestu bez kosztów da ci śmieciowy rozkład — i fałszywe poczucie bezpieczeństwa
  • Compounding drawdownu działa na dwa sposoby: chroni kapitał (mniejsze pozycje po stracie), ale spowalnia recovery (zyski liczone od mniejszej bazy)
  • Koszty egzekucji (spread, slippage, swap) potrafią obciąć 30–50% expectancy brutto — Monte Carlo bez nich to fikcja

1. Pełna tabela asymetrii — od −5% do −90%

W artykule 9.1 pokazaliśmy skróconą wersję. Teraz pełna tabela z trzema dodatkowymi kolumnami: czas odrabiania przy swing tradingu (5 transakcji/miesiąc) i day tradingu (20 transakcji/miesiąc), obie przy expectancy +0,4R netto i 1% ryzyka. Ważne: tabela zakłada stałą kwotę ryzyka na transakcję (ekwiwalent fixed lot / fixed risk), nie fixed fractional od bieżącego equity. Dzięki temu pokazuje dolną granicę czasu recovery. W realnym tradingu fixed fractional wydłuży odrabianie — bo zyski są liczone od coraz mniejszej bazy (szczegóły w sekcji 2).

Strata kapitałuZysk do odrobieniaTransakcje (0,4R, 1%)Swing (~5/mies.)Day (~20/mies.)
−5%+5,3%~14~3 tygodnie~3 dni robocze
−10%+11,1%~29~6 tygodni~7 dni roboczych
−15%+17,6%~48~10 tygodni~12 dni
−20%+25,0%~70~14 tygodni~18 dni
−25%+33,3%~96~19 tygodni~24 dni
−30%+42,9%~122~24 tygodnie~31 dni
−40%+66,7%~185~37 tygodni~46 dni
−50%+100,0%~290~58 tygodni (>1 rok)~73 dni (~3,5 mies.)
−60%+150,0%~450~90 tygodni (~1,7 roku)~113 dni (~5,5 mies.)
−70%+233,3%~710~142 tygodnie (~2,7 roku)~178 dni (~9 mies.)
−80%+400,0%~1 250~250 tygodni (~4,8 roku)~313 dni (~16 mies.)
−90%+900,0%~3 000~600 tygodni (~11,5 roku)~750 dni (~3 lata)

Kalkulacja zakłada stałą expectancy +0,4R netto na transakcję z ryzykiem 1% — warunki optymistyczne. Realnie: expectancy fluktuuje, serie strat wydłużają recovery, a koszty transakcyjne rosną w okresach niskiej zmienności. Traktuj te liczby jako dolną granicę czasu odrabiania.

Kluczowa obserwacja: krzywa asymetrii nie jest liniowa — jest wypukła (hiperboliczna: recovery = 1/(1−DD) − 1). Między −5% a −20% rośnie łagodnie (+5,3% → +25%). Między −20% a −50% rośnie szybko (+25% → +100%). Powyżej −50% eksploduje (+100% → +900%). W wielu profesjonalnych setupach detalicznych kill switch pojawia się już przy −10% do −20%. Przy systemach o niskim WR i wysokim R:R (trend-following) ten próg bywa szerszy — ale musi wynikać z danych Monte Carlo, nie z ego. Po przekroczeniu tej granicy odrabianie staje się projektem na miesiące lub lata, a psychika tradera jest już mocno nadszarpnięta.

Kontekst ESMA: drawdown a Margin Closeout. W UE drawdown −50% to nie tylko kwestia czasu odrabiania. Przy dźwigni 1:30 i dużym wykorzystaniu marginu spadek equity do 50% poziomu wymaganego margin level uruchamia algorytm Margin Closeout — broker ma obowiązek zamykać twoje pozycje bez pytania. Nie ty decydujesz, kiedy uciąć stratę — robi to skrypt na serwerze brokera, zaczynając od najbardziej stratnych pozycji, po cenach, które w tym momencie oferuje rynek (czyli z rozszerzonym spreadem i poślizgiem). RoR w Europie to nie jest tylko koncepcja matematyczna — to prawo, na podstawie którego broker likwiduje twoją ekspozycję. Dla kontekstu: analiza ESMA sprzed interwencji produktowej wykazała, że 74–89% klientów CFD u regulowanych brokerów traciło pieniądze (źródło [10]). Asymetria strat jest jednym z mechanizmów, które pomagają wyjaśnić, dlaczego odsetek tracących klientów CFD jest tak wysoki.
Krzywa asymetrii strat — zysk potrzebny do odrobienia rośnie nieliniowo (zależność hiperboliczna)
Strata kapitału (%) Zysk do odrobienia (%) 0% 100% 200% 300% 400% 600% 800% −10% −20% −30% −40% −50% −60% −70% −80% −90% 11% 25% 67% 100% 233% 900% Odrabialne (tygodnie) Trudne (miesiące) Ruina (lata lub nigdy) Przy expectancy +0,4R netto, 1% ryzyka, swing trading (5 transakcji/miesiąc)
Pełna tabela asymetrii strat od -5% do -90% z czasem odrabiania dla swing i day tradingu — wizualizacja nieliniowego wzrostu trudności recovery
Pełna tabela asymetrii strat od -5% do -90% z czasem odrabiania dla swing i day tradingu — wizualizacja nieliniowego wzrostu trudności recovery

2. Compounding drawdownu — podwójne ostrze

Przy fixed fractional position sizing (1% rachunku na transakcję) twoje pozycje automatycznie się zmniejszają, gdy rachunek spada. 1% z 10 000 USD = 100 USD. Po serii strat: 1% z 8 500 USD = 85 USD. To ochrona — tracisz coraz wolniej, bo ryzyko w wartości bezwzględnej maleje.

Ale jest druga strona: odrabianie też jest wolniejsze. Kiedy rachunek wynosi 8 500 USD, twoje zyski są liczone od mniejszej bazy. Żeby wrócić do 10 000 USD, potrzebujesz +17,6% — ale każda wygrana daje mniej dolarów niż przed drawdownem. To „podwójne ostrze" compoundingu:

FazaKapitał1% ryzyka (USD)Zysk +0,4R netto (USD)Efekt
Start10 000100+40Pełna prędkość wzrostu
Po −15% DD8 50085+34Wolniejsze straty, ale też wolniejsze zyski
Po −30% DD7 00070+28Odrabianie o 30% wolniejsze niż na starcie
Po −50% DD5 00050+20Odrabianie 2× wolniejsze — spiral of decay

Wniosek: tabela asymetrii z sekcji 1 zakłada stałą wielkość pozycji. Przy fixed fractional (compounding) czas odrabiania jest dłuższy niż w tabeli, bo zyski maleją razem z kapitałem. Powyżej drawdownu −20% compounding zaczyna pracować brutalnie przeciwko tobie — dlatego ten poziom jest naturalnym progiem, na którym warto się zatrzymać i zredukować ekspozycję.

Stop loss hunting — mechanika, nie spisek. Trader ustawia SL 20 pipsów poniżej wsparcia na EUR/USD. Rynek spada dokładnie do jego SL, wykonuje go, a następnie wraca o 60 pipsów w górę. Złudzenie: „broker mnie poluje". Realność: brokerzy, market makerzy i dostawcy płynności widzą przepływ zleceń znacznie lepiej niż detal. Rynek nie „poluje" na pojedynczego tradera, ale bardzo sprawnie wykorzystuje przewidywalne klastry stopów. Jeśli większość pozycji long ma SL w strefie 1,0820–1,0835 (klasyczne wsparcie techniczne), rynek ma powód, żeby tam zajrzeć — bo stop lossy to zlecenia sprzedaży, czyli płynność do kupna po atrakcyjnej cenie. Implikacja dla RoR: jeśli twoje SL są regularnie „omiatane" przed ruchem w twoją stronę, twój realny R-multiple na przegranej nie wynosi −1,0R — wynosi −1,0R plus koszt reentry albo −1,0R bez zysku, który „należał się" systemowi. To zniekształca rozkład R-multiple i zaniża expectancy netto bardziej, niż pokazują proste liczby.
Compounding drawdownu — porównanie fixed lot vs fixed fractional w odrabianiu −30%
10 000 8 500 7 000 USD 0 Drawdown Recovery Transakcje Fixed lot — szybsze recovery, ale brak ochrony w DD Fixed fractional — wolniejsze, ale bezpieczniejsze
Brudna praktyka: „zwiększam lot po stracie, żeby szybciej odrobić". Rachunek 8 000 PLN po drawdownie −20% (start: 10 000). Trader myśli: „gdybym wrócił do 1% z oryginalnych 10 000 (100 PLN ryzyka zamiast 80), szybciej odrobię". Zwiększa ryzyko do 1,25% aktualnego kapitału. Następna seria 5 strat kosztuje −488 PLN zamiast −392 PLN. Drawdown pogłębia się do −25,1% zamiast −23,9%. Różnica wygląda na niewielką — ale w Monte Carlo na 10 000 symulacji ta zmiana podnosi RoR (−50%) z 2,1% do 5,8%. Trzy razy wyższe prawdopodobieństwo ruiny — za różnicę 0,25% ryzyka.
Porównanie dwóch realnych equity curve: fixed lot (szybsze recovery, ale głębszy drawdown) vs fixed fractional (wolniejsze recovery, ale płytszy drawdown i lepsza ochrona kapitału)
Porównanie dwóch realnych equity curve: fixed lot (szybsze recovery, ale głębszy drawdown) vs fixed fractional (wolniejsze recovery, ale płytszy drawdown i lepsza ochrona kapitału)

3. Risk of Ruin — formuła analityczna i jej ograniczenia

Risk of Ruin (RoR) to prawdopodobieństwo, że twój rachunek spadnie do poziomu, przy którym handlowanie nie ma sensu. Definiujesz ten poziom sam — zwykle −50% (połowa kapitału) lub −70% (bankructwo operacyjne).

Formuła dla R:R 1:1

Przy symetrycznym R:R = 1:1 (tyle samo zarabiasz na zwycięskiej, co tracisz na przegranej) formuła RoR ma zamkniętą postać analityczną:

RoR = (1 − edge1 + edge)N

Gdzie:

  • edge = 2 × WR − 1 (np. WR 55% → edge 0,10)
  • N = liczba jednostek ryzyka do poziomu ruiny. Formuła Gambler's Ruin zakłada stałą stawkę (fixed lot / fixed risk), więc N = kapitał_startowy / ryzyko_per_trade (np. przy 2% ryzyka i ruinie −50%: N = 25). Dla fixed fractional nie ma prostego odpowiednika parametru N z tego modelu — poprawną metodą kalkulacji RoR przy fixed fractional jest wyłącznie Monte Carlo
Win rateEdgeRyzyko 0,5%
(N=100)
Ryzyko 1%
(N=50)
Ryzyko 2%
(N=25)
Ryzyko 5%
(N=10)
Ryzyko 10%
(N=5)
52%0,040,02%1,3%11,3%44,9%67,0%
55%0,10< 0,01%0,1%0,6%13,7%37,0%
58%0,16< 0,01%< 0,01%< 0,01%3,3%18,2%
60%0,20< 0,01%< 0,01%< 0,01%1,1%10,7%

Ruina zdefiniowana jako −50% kapitału. Formuła WYŁĄCZNIE dla R:R 1:1. Dla asymetrycznych R:R patrz sekcja 4.

Kluczowe wnioski z tabeli:

  • Przy WR 55% i ryzyku 1% — RoR wynosi 0,1%. Jeden rachunek na tysiąc. Dla większości systemów detalicznych to akceptowalny poziom.
  • Przy WR 55% i ryzyku 5% — RoR skacze do 13,7%. Co siódmy rachunek. A to jest modelowe RoR — realnie, po kosztach egzekucji, będzie wyższe.
  • Przy WR 52% (ledwie powyżej 50%) i ryzyku 2% — RoR wynosi 11,3%. System niby „zarabia", ale z takim position sizingiem co dziesiąty rachunek zostanie wyczyszczony.
  • Różnica między 1% a 5% ryzyka to nie „5× większe zyski". To różnica między rachunkiem, który przetrwa normalną wariancję, a rachunkiem, który jej nie przetrwa.
Heatmapa Risk of Ruin — kolory od zielonego (niskie RoR) przez żółty do czerwonego (wysokie RoR) dla różnych kombinacji win rate i ryzyka na transakcję
Heatmapa Risk of Ruin — kolory od zielonego (niskie RoR) przez żółty do czerwonego (wysokie RoR) dla różnych kombinacji win rate i ryzyka na transakcję

Ograniczenia formuły analitycznej

Formuła powyżej ma cztery poważne ograniczenia, których nie wolno zignorować:

  1. Działa TYLKO dla R:R 1:1. Jeśli twój system ma R:R 1:2 lub 1:3, formuła daje bzdurny wynik. Nie istnieje prosta zamknięta formuła analityczna dla asymetrycznego R:R — potrzebujesz symulacji Monte Carlo.
  2. Zakłada stały WR i R:R. Realne systemy mają zmienną skuteczność — WR 55% to średnia, nie stała. W okresie konsolidacji spada do 40%, w trendzie rośnie do 65%. RoR policzone na średniej WR jest optymistyczne.
  3. Ignoruje koszty transakcyjne. Edge brutto +0,54R po spreadzie i swapie spada do +0,41R netto. RoR na edge brutto jest niższy niż realny.
  4. Zakłada niezależność transakcji. W rzeczywistości: volatility clustering, reżimy rynkowe, seryjnie skorelowane straty. Realne serie strat bywają dłuższe niż model Bernoulli'ego przewiduje.
Skąd pochodzi formuła? Formuła RoR dla R:R 1:1 to szczególny przypadek problemu „Gambler's Ruin" (Huygens, 1657; Laplace). W tradingu spopularyzował ją Ralph Vince (The Mathematics of Money Management, 1992). Szczegóły matematyczne — patrz źródło [5] w bibliografii.

4. RoR dla asymetrycznych systemów (R:R ≠ 1:1)

Większość realnych systemów ma asymetryczne R:R, a koszt wejścia sprawia, że każda pozycja startuje od ujemnego wyniku netto — spread i prowizja musisz odrobić, zanim zobaczysz jakikolwiek zysk. Trend-following zwykle daje R:R 1:2–1:4 z WR 30–45%, scalping 1:0,8–1:1,2 z WR 55–70%, mean reversion 1:1,5–1:2 z WR 50–60%. Dla tych systemów formuła analityczna z sekcji 3 nie działa.

Istnieje przybliżona formuła rozszerzona (tzw. „Kelly-based RoR"):

RoR ≈ ((1 − K) / (1 + K))^N

Gdzie K to Kelly fraction: K = WR − (1 − WR) / RR, a N = kapitał/ryzyko na transakcję. Ale to przybliżenie — dokładność spada gwałtownie przy niskim WR i wysokim R:R (typowy trend-following). W praktyce Monte Carlo na realnym rozkładzie R-multiple daje znacznie lepszy obraz niż przybliżenie analityczne — szczególnie przy niskim WR, gdzie Kelly-based RoR potrafi błądzić o rząd wielkości.

Profil systemuWRR:RExpectancy/tradeRoR (1% risk, MC 10k sym.)RoR (2% risk, MC)
Scalping agresywny62%1:0,8+0,12R~0,8%~6,5%
Day trading standard48%1:1,8+0,30R~0,2%~2,1%
Swing trend-following38%1:3,0+0,52R~0,1%~0,9%
Position macro32%1:4,5+0,76R< 0,1%~0,4%

RoR z symulacji Monte Carlo (10 000 iteracji, 500 transakcji, ruina = −50%, fixed fractional). Tabela ma charakter ilustracyjny — dwa systemy o tym samym WR i średnim R:R mogą mieć zupełnie inne RoR, jeśli różni się rozkład R-multiple, slippage i serial correlation strat. Wartości zależą też od kosztów egzekucji, częstotliwości i zmienności warunków rynkowych.

Wniosek: trend-following z WR 35% sprawi, że będziesz czuł się jak idiota przez 65% czasu. Emocjonalnie to tortura — serie po 5–7 strat z rzędu są statystyczną normalnością przy 500 transakcjach, nie sygnałem do wyłączenia systemu. Ale matematycznie to właśnie ten profil ma paradoksalnie niższe RoR niż przyjemny psychologicznie scalping z wysokim WR, który wykrwawia się na spreadach i slippage'u.

Scalping z WR 62% i RoR 0,8% brzmi bezpiecznie — dopóki nie wyjdziesz na normalne dane NFP i nie zobaczysz, jak trzy transakcje z rzędu gubisz na spreadzie, zanim cena w ogóle się ruszy. WR 62% liczony był na spokojnej sesji. Live liczy wszystko.

Heatmapa Risk of Ruin z symulacji Monte Carlo — 4 profile systemów (scalping, day trading, swing, position) przy różnych poziomach ryzyka
Heatmapa Risk of Ruin z symulacji Monte Carlo — 4 profile systemów (scalping, day trading, swing, position) przy różnych poziomach ryzyka
Brudna praktyka: RoR policzony na edge brutto. Trader backtestuje system: WR 55%, R:R 1:1,5. Edge brutto +0,30R. Monte Carlo daje RoR 0,3% przy 2% ryzyka. Wchodzi live. Spread +0,08R, swap +0,02R/noc (swing trzymany 3 noce = +0,06R), slippage +0,03R. Edge netto: +0,13R. Monte Carlo na edge netto: RoR 4,2%. 14× wyższe niż backtest sugerował. Formuła nie kłamie — kłamie input. Zawsze licz na edge netto.

5. Symulacja Monte Carlo — co to jest i po co ci to

Monte Carlo to metoda obliczeniowa, która odpowiada na pytanie: „Gdybym powtórzył 500 transakcji 10 000 razy z losową kolejnością wygranych i przegranych — jak wyglądałby rozkład wyników?"

Twój backtest to jedna ścieżka zdarzeń. Monte Carlo generuje tysiące ścieżek, losowo tasując kolejność wygranych i przegranych (przy zachowaniu tego samego WR i R:R). Wynik: rozkład equity curve — od najlepszego scenariusza po najgorszy. Z tego rozkładu odczytujesz:

  • Medianowy drawdown — typowe obsunięcie, którego powinieneś się spodziewać
  • Maksymalny drawdown (95. percentyl) — najgorszy rozsądny scenariusz. Jeśli nie przeżyjesz tego DD, system jest za agresywny
  • Risk of Ruin — procent symulacji, w których rachunek spadł do poziomu ruiny
  • Oczekiwany zysk (mediana i rozstęp) — nie „ile zarobię", ale „w jakim przedziale prawdopodobnie się zmieszczę"
Symulacja Monte Carlo — 50 losowych equity curve dla tego samego systemu (WR 55%, R:R 1:1,5, ryzyko 1%)
10 000 12 000 14 000 8 000 USD 0 100 200 300 Transakcje 95. percentyl (najlepszy rozsądny scenariusz) Mediana 5. percentyl (najgorszy rozsądny scenariusz)

Wachlarz się poszerza z każdą transakcją — to efekt variancji. Im dłuższa próbka, tym większa rozpiętość między najlepszym a najgorszym scenariuszem. Dlatego 50 transakcji nic ci nie mówi o systemie. 200 zaczyna dawać obraz. 500 daje rozkład, z którego można wyciągać wnioski.

Histogram maksymalnych drawdownów z 10 000 symulacji Monte Carlo — rozkład od -8% do -45% z medianą przy -18%
Histogram maksymalnych drawdownów z 10 000 symulacji Monte Carlo — rozkład od -8% do -45% z medianą przy -18%

6. Monte Carlo w praktyce — jak to policzyć

Dane historyczne prosto z MT4 bywają pełne luk i sztucznych ticków — do rzetelnego MC potrzebujesz prawdziwych tick data (np. z Dukascopy lub przez Tick Data Suite z modelowaniem zmiennego spreadu). Do samej symulacji wystarczy arkusz kalkulacyjny albo 25 linii Pythona. Poniżej — krok po kroku.

a) Metoda: bootstrap na wynikach transakcji

  1. Zbierz dane — lista wyników transakcji w R-multiple (np. −1R, +1,8R, −1R, +2,3R, −1R, +1,5R…). Minimum 100 transakcji, optymalnie 200+.
  2. Losuj z powtórzeniami — wyciągnij 500 losowych transakcji z twojej próbki (bootstrap). Każda transakcja ma takie samo prawdopodobieństwo wylosowania.
  3. Oblicz equity curve — startując od 10 000 USD z 1% ryzyka na transakcję, przelicz saldo po każdej wylosowanej transakcji.
  4. Powtórz 10 000 razy — za każdym razem inna losowa kolejność.
  5. Odczytaj statystyki — mediana, 5. i 95. percentyl końcowego salda, max drawdown, RoR.

b) Narzędzia

NarzędzieKosztUwagi
Excel / Google SheetsDarmowyRANDBETWEEN + tabela wyników. Wystarczy do 1 000 symulacji. Powyżej — wolny.
Python (numpy/pandas)Darmowy10 000 symulacji w sekundy. Gotowy skrypt poniżej.
Tick Data Suite (TDS)~65 EUR/rokModelowanie zmiennego spreadu i slippage na tick data MT4/MT5. Standard do backtestu przed MC.
Edgewonk~170 USD/rokWbudowany Monte Carlo. Importuje dane z MT4/MT5.
QuantAnalyzer~150 EUR jednorazowoZaawansowane MC z analizą robustness. Dla EA/algo traderów.
Myfxbook Monte CarloDarmowyOgraniczone — basic MC na danych z połączonego konta.

c) Na co patrzeć w wynikach

MetrykaCo mówiAkceptowalny zakres
Mediana końcowego saldaTypowy wynik po 500 transakcjach> kapitał startowy (system zarabia)
5. percentyl końcowego saldaWynik w pesymistycznym scenariuszu> 70% kapitału (przeżyjesz)
Mediana max drawdownTypowe obsunięcie, którego się spodziewaj< −25%
95. percentyl max drawdownNajgorszy rozsądny drawdown< −40% (jeśli > −50%, zmniejsz ryzyko)
Risk of Ruin (−50%)Procent symulacji, które zjechały do −50%< 1% (ideał < 0,1%)

d) Gotowy skrypt Python — Monte Carlo RoR

Wklej do Jupyter Notebook lub uruchom z terminala. Podmień tablicę moje_transakcje na swoje R-multiple ze statementu MT4/MT5.

import numpy as np

def monte_carlo_ror(trades, n_sim=10_000, n_trades=500,
                    risk_pct=0.01, ruin_level=0.50):
    capital_start = 10_000
    ruin_count = 0
    max_dds = []

    for _ in range(n_sim):
        capital = capital_start
        peak = capital
        max_dd = 0
        sample = np.random.choice(trades, size=n_trades, replace=True)

        for r in sample:
            capital *= (1 + r * risk_pct)
            peak = max(peak, capital)
            dd = (capital - peak) / peak
            max_dd = min(max_dd, dd)
            if capital <= capital_start * (1 - ruin_level):
                ruin_count += 1
                break

        max_dds.append(max_dd)

    ror = ruin_count / n_sim
    med_dd = np.median(max_dds)
    worst_dd = np.percentile(max_dds, 5)  # najgorszy drawdown (5. percentyl)
    return {"RoR": f"{ror:.2%}",
            "Median Max DD": f"{med_dd:.1%}",
            "Worst-Case DD (P5)": f"{worst_dd:.1%}"}

# Przykład — wklej własne R-multiple z MT4/MT5:
moje_transakcje = np.array([
    -1, 1.8, -1, 2.3, -1, 1.5, -1, -1, 3.1, -1,
    -1, 0.8, -1, -1, 2.1, -1, 1.4, -1, -1, 2.8
])
print(monte_carlo_ror(moje_transakcje))

Skrypt używa fixed fractional (linia capital *= (1 + r * risk_pct)). Zmień risk_pct na swój procent ryzyka, ruin_level na próg ruiny. Wynik: RoR, mediana max drawdown i 5. percentyl (pesymistyczny scenariusz).

Przykładowy arkusz Monte Carlo w Excelu — kolumny: numer symulacji, losowe R-multiple, saldo, drawdown. Widoczne formuły RANDBETWEEN i IF.
Przykładowy arkusz Monte Carlo w Excelu — kolumny: numer symulacji, losowe R-multiple, saldo, drawdown. Widoczne formuły RANDBETWEEN i IF.
Ile symulacji wystarczy? 1 000 daje przybliżoną odpowiedź. 10 000 daje stabilny wynik (mediana i percentyle zmieniają się o < 0,5% między kolejnymi uruchomieniami). 100 000 to overkill — nie zyskujesz precyzji, którą by sens interpretować. W Excelu: 1 000. W Pythonie: 10 000. Wynik: ten sam wniosek operacyjny.

7. Koszty transakcyjne w symulacji — edge brutto vs netto

Backtest zwykle nie uwzględnia realnych kosztów egzekucji. Monte Carlo puszczone na wynikach backtestowych powiela ten błąd — i daje optymistyczny wynik. Zanim włożysz dane do symulacji, odejmij koszty od każdej transakcji.

Koszty, które musisz odliczyć

KosztTypowa wartość (EUR/USD)Wpływ na R-multipleUwagi
Spread (wejście)0,6–1,2 pipsa−0,03R do −0,06RZależy od pory i par
Spread (wyjście SL/TP)0,6–1,2 pipsa−0,03R do −0,06RNa SL zwykle gorszy niż na TP (rynek leci w kierunku twojego stopa)
Prowizja ECN3–7 USD/lot RT−0,03R do −0,07R (przy SL 10 pips)Zależy od brokera i typu rachunku; per side vs round turn
Slippage (średni)0,3–0,8 pipsa−0,02R do −0,04RNa SL gorszy niż na TP — detal wychodzi z rynkiem, nie pod prąd
Swap overnight (swing)−0,50 USD/noc/0,1 lota−0,02R/nocKumuluje się przy 3+ nocach
Triple Swap (środa→czwartek)3× swap dzienny−0,06R jednorazowoRozliczenie T+2: pozycja trzymana ze śr. na czw. pokrywa weekend. Na parach z dużym dysparytetem stóp (USD/TRY, USD/MXN) potrafi zjeść znaczną część zysku z transakcji
Asymetryczny slippageZmienny−0,01R do −0,05RU brokerów market maker: opóźnienie egzekucji 100–300 ms. Cena idzie na twoją korzyść → requote. Przeciwko tobie → natychmiastowy fill z negatywnym poślizgiem. Efekt netto: slippage obciąża straty bardziej niż pomaga zyskom
Spread nie jest stały — zmienia się z warunkami rynkowymi. Tabela powyżej podaje typowe wartości w spokojnej sesji londyńskiej. Ale koszt egzekucji jest stanowo-zależny:
Normalna sesja (Londyn/NY overlap): EUR/USD 0,6–1,2 pipsa.
Niska płynność (22:00–00:00 CET, rollover): EUR/USD 1,5–3 pipsy. Na parach z PLN — wielokrotnie więcej.
NFP/CPI/FOMC ±2 minuty: EUR/USD 5–15 pipsów. Twój SL na 15 pipsów może zostać wykonany samym spreadem, bez ruchu ceny mid.
Flash crash / event risk: 50+ pipsów lub całkowity brak kwotowań.
System z expectancy +0,3R liczoną na spreadzie 0,8 pipsa jest zyskowny na papierze. Jeśli regularnie handlujesz na newsach albo trzymasz pozycje przez rollover — twój realny koszt jest wyższy, a expectancy netto może być ujemna.
Porównaj realne warunki egzekucji u różnych brokerów: Ranking brokerów ECN z najniższymi spreadami.

Przykład kumulacji: swing trade EUR/USD, SL 50 pipsów, ryzyko 1R. Trzymany 4 noce.

  • Spread wejście: −0,04R
  • Spread wyjście: −0,04R
  • Slippage: −0,03R
  • Swap 4 noce: −0,08R
  • Łączny koszt: −0,19R

Zwycięska transakcja z backtestowym +1,8R daje realnie +1,61R. Przegrana z backtestowym −1,0R daje realnie −1,19R. Przy WR 55% expectancy spada z +0,54R (backtest) do +0,35R (live). To 35% niższa expectancy — a z nią proporcjonalnie wolniejszy wzrost rachunku i wyższe RoR.

Erozja edge'u — od backtestowego brutto do realnego netto
+0,54R EDGE brutto Backtest −0,08R Spread Slippage −0,03R Swap −0,08R Koszty egzekucji +0,35R EDGE netto Live trading Wpływ na Monte Carlo Backtest RoR: 0,3% Live RoR: 4,2% 14× wyższe ryzyko ruiny Różnica = koszty, których backtest nie modelował
Brudna praktyka: backtest na spreadzie 0. Trader testuje scalpingowy EA na danych M1 — SL 8 pipsów, TP 12 pipsów. Spread w backteście: 0 (tick data od brokera nie zawierają spreadu). Wyniki: WR 58%, expectancy +0,36R, Profit Factor 2,1. Live: spread 0,8 pipsa wejście + 0,8 wyjście = 1,6 pipsa kosztu na transakcję. Na SL 8 pipsów to dodatkowe 20% straty na każdym przegranym i 13% mniejszy zysk na każdym wygranym. Expectancy netto: −0,04R. System zarabiający na backteście traci na live. Nie dlatego, że rynek się zmienił — dlatego, że spread nie istniał w symulacji.
War story: 15 stycznia 2015 — najlepsza lekcja o Risk of Ruin, która nie przyszła z Excela. SNB znosi peg EUR/CHF. Ruch: z 1,2000 do okolic 0,85 w ciągu minut — ok. 3 500 pipsów. Płynność znika. Brokerzy detaliczni nie są w stanie wykonać stop lossów — nie ma ofert po drugiej stronie. FXCM kończy dzień z dziurą 225 mln USD, bo klienci mają ujemne salda przekraczające ich depozyty. Alpari UK ogłasza upadłość tego samego dnia. Trader z pozycją long EUR/CHF, ryzykiem „2%" i SL 50 pipsów poniżej: jego stop istnieje na papierze. Fill przychodzi 2 800 pipsów dalej. Strata: nie −2%, ale ponad −100% rachunku. Konto na debecie. Żadna formuła RoR tego nie modelowała. Bootstrap MC na danych EUR/CHF z 2014 nie zawierał ani jednej transakcji z R-multiple −56. Wniosek operacyjny: RoR liczone bez uwzględnienia fat tail events to dolna granica bezpieczeństwa, nie gwarancja. Gap risk i liquidity risk to kategorie strat, których bootstrap MC nie uwzględni, jeśli nie ma ich w danych historycznych.
War story: NFP — kiedy spread zjada twojego stopa. Pierwszy piątek miesiąca, 14:30 CET. Trader wchodzi long EUR/USD, SL 15 pipsów od wejścia. Spread w normalnych warunkach: 0,8 pipsa. O 14:30:01 spread skacze do 8 pipsów. SL tradera zostaje wykonany natychmiast — spread sam zamknął różnicę między ceną bid a jego stop lossem. Trader nie stracił na ruchu rynkowym. Stracił, bo spread rozszerzył się do poziomu jego SL w ciągu sekundy. Twój edge netto liczony na spreadzie 0,8 pipsa jest fałszywy, jeśli regularnie handlujesz wokół publikacji makro. Prawdziwy koszt: średni spread ważony przez warunki rynkowe, w których faktycznie otwierasz i zamykasz pozycje. Sprawdź, jak różni brokerzy radzą sobie ze spreadem na danych: Ranking brokerów ECN.
Wykres tickowy EUR/USD podczas publikacji NFP — widoczne gwałtowne rozszerzenie spreadu z 0,8 do 8+ pipsów w ciągu sekund, z zaznaczonym momentem egzekucji stop lossa
Wykres tickowy EUR/USD podczas publikacji NFP — widoczne gwałtowne rozszerzenie spreadu z 0,8 do 8+ pipsów w ciągu sekund, z zaznaczonym momentem egzekucji stop lossa
War story: krwawa środa i iluzja zysku na carry trade. Trader łapie setup na short EUR/PLN we wtorek. Technicznie czysty sygnał, R:R ustawione na 1:2. Trzyma pozycję do czwartku rano, rynek robi dokładnie to, co zakładał — spada o 40 pipsów. Problem? W nocy ze środy na czwartek broker potrąca potrójny swap (Triple Swap Wednesday — rozliczenie T+2 pokrywa weekend). Ujemny potrójny swap na tej parze obciął znaczną część zysku — na zamknięciu w czwartek zamiast oczekiwanego +2R, trader zaksięgował marginalny profit albo stratę netto, mimo poprawnego kierunku. Koszty finansowania zjadły większość ruchu pipsowego. Expectancy twojego systemu to fikcja, jeśli ignorujesz stopy procentowe banków centralnych i kalendarz rozliczeń.
Zrzut ekranu z zakładki Historia konta w MT4 — transakcja z zyskiem pipsowym (kolumna Profit na plusie), ale stratą netto po uwzględnieniu kolumn Swap i Commission. Zaznaczone na czerwono.
Zrzut ekranu z zakładki Historia konta w MT4 — transakcja z zyskiem pipsowym (kolumna Profit na plusie), ale stratą netto po uwzględnieniu kolumn Swap i Commission. Zaznaczone na czerwono.

8. Ile transakcji potrzeba, żeby znać swój edge?

Odpowiedź zależy od zmienności twojego systemu (odchylenie standardowe R-multiple) i od tego, jak precyzyjnie chcesz znać expectancy. Prosta reguła kciuka:

Pewność estimacjiPotrzebna próbkaSwing (5/mies.)Day (20/mies.)
Orientacyjna (± 0,54R)~30 transakcji~6 tygodni~8 dni
Rozsądna (± 0,29R)~100 transakcji~20 tygodni~25 dni
Solidna (± 0,21R)~200 transakcji~40 tygodni~50 dni
Statystycznie istotna (± 0,15R)~400 transakcji~80 tygodni (~1,5 roku)~100 dni (~5 mies.)

Półszerokość 95% przedziału ufności: 1,96 × σ / √n, przy σ ≈ 1,5R. Np. dla n=100: 1,96 × 1,5 / 10 ≈ ±0,29R. Systemy o wyższej zmienności wyników (trend-following: σ ≈ 2–3R) wymagają znacznie większych próbek.

Rynek to nie mikrofalówka. Przy 5 transakcjach w miesiącu potrzebujesz pół roku mechanicznego wciskania przycisków, zanim próbka w ogóle zacznie być statystycznie użyteczna. Zmienisz choćby jeden parametr w 19. tygodniu? Wracasz na start — modyfikacja systemu w trakcie zbierania próbki unieważnia całe liczenie.

Wykres przedziału ufności expectancy w funkcji liczby transakcji — od bardzo szerokiego przy 30 transakcjach do wąskiego przy 400
Wykres przedziału ufności expectancy w funkcji liczby transakcji — od bardzo szerokiego przy 30 transakcjach do wąskiego przy 400
Dlaczego 30 transakcji to za mało? Centralne twierdzenie graniczne (CTG) mówi, że średnia z próbki dąży do rozkładu normalnego, gdy próbka rośnie. Ale CTG potrzebuje czasu — przy wysokiej zmienności wyników (typowej dla tradingu) 30 obserwacji daje przedział ufności tak szeroki, że expectancy +0,3R mieści się w przedziale od −0,2R do +0,8R. Nie wiesz, czy zarabiasz, czy tracisz. Przy 200 transakcjach przedział zawęża się do +0,1R – +0,5R. Wciąż nieprecyzyjne — ale operacyjnie użyteczne.

9. Najczęstsze błędy w kalkulacji ryzyka

Błąd 1: Stosowanie formuły RoR dla R:R 1:1 do systemu z R:R 1:3

Formuła analityczna zaniża RoR dla systemów z niskim WR i wysokim R:R. Przy WR 35% i R:R 1:3 formuła dla R:R 1:1 daje edge = 2×0,35 − 1 = −0,30. Wynik: „system traci". Realna expectancy: 0,35 × 3 − 0,65 × 1 = +0,40R. System zarabia — ale formuła go „zabiła". Jedyną poprawną metodą jest Monte Carlo na realnym rozkładzie R-multiple.

Błąd 2: Liczenie expectancy bez kosztów transakcyjnych

Edge brutto minus koszty = edge netto. Różnica między nimi jest często 30–50% expectancy. Monte Carlo na edge brutto daje fałszywe poczucie bezpieczeństwa. Zawsze licz na edge netto — po spreadzie, prowizji, swapie i estymowanym slippage'u.

Błąd 3: Optymizm próbki

Backtest na 3 latach danych EUR/USD z optymalizowanymi parametrami. „Edge +0,8R, RoR < 0,01%". Problem: optymalizacja dobrała parametry do historii. Na out-of-sample edge spada do +0,3R, a RoR rośnie 10×. Zawsze testuj Monte Carlo na wynikach out-of-sample lub walk-forward, nie na in-sample.

Błąd 4: Ignorowanie zmienności edge'u w czasie

System z WR 55% na 3-letnim backteście miał WR 62% w 2023, 54% w 2024 i 48% w 2025 (hipotetyczny przykład). RoR policzone na WR 55% nie uwzględnia, że przez pół roku system faktycznie tracił. Rozwiązanie: podziel dane na podokresy i uruchom MC osobno dla każdego. Najgorszy podokres daje realniejszy obraz RoR niż średnia z całości.

Infografika — Błędy 1–4 w kalkulacji ryzyka: zła formuła RoR dla asymetrycznych systemów, brak kosztów transakcyjnych, optymizm próbki z overfittingu, ignorowanie zmienności edge w czasie
Infografika — Błędy 1–4 w kalkulacji ryzyka: zła formuła RoR dla asymetrycznych systemów, brak kosztów transakcyjnych, optymizm próbki z overfittingu, ignorowanie zmienności edge w czasie

Błąd 5: Zapomnienie o reżimach rynkowych

Trend-following system działa dobrze w trendującym rynku. W konsolidacji — seria strat. Jeśli twoja próbka 200 transakcji obejmowała 18 miesięcy silnych trendów, MC pokaże piękne wyniki. Kiedy rynek wejdzie w 6-miesięczny range, twoje RoR eksploduje. Rozwiązanie: uwzględnij w MC dane z różnych reżimów (trend, range, kryzys). Albo: traktuj wyniki MC jako scenariusz optymistyczny i dodaj margines bezpieczeństwa.

War story: długi range zabija trend-following. Trend-follower wygląda genialnie po okresie mocnych impulsów. Potem przychodzi kilkumiesięczny range i system zaczyna płacić haracz: seria małych stopów, fałszywe wybicia, kolejny stop. Excel na średniej rocznej nazywa to „przejściowym obsunięciem". Trader na żywym rachunku nazywa to miesiącem, w którym zaczyna majstrować przy parametrach — i zabija system własną ręką, zanim reżim się zmieni.

Błąd 6: Backtest na słabym feedzie brokera CFD

Problemem nie jest sama etykieta A-Book/B-Book, tylko jakość i konstrukcja danych — choć dotyczy to w szczególności rachunków w modelu market maker / B-Book, gdzie broker sam generuje kwotowania. Kluczowe czynniki: syntetyczne kwotowania CFD, różnice high/low między providerami, pojedyncze spikes (świece z ekstremalnym high/low niewidoczne na innych feedach) i inny model budowy świec niż na niezależnym feedzie. Wynik: backtest na słabych danych zniekształca WR i expectancy — stop lossy są wykonywane w miejscach, gdzie rynek interbank ich nie notował. Monte Carlo na takich danych to fikcja. Rozwiązanie: testuj na danych od niezależnych providerów (Dukascopy tick data, Tick Data Suite z modelowaniem zmiennego spreadu) albo przynajmniej porównaj wyniki backtestu na feedzie od dwóch różnych źródeł.

War story: złoty Graal z serwera demo. Trader kupuje EA za 2 000 USD. Backtest na danych M1 z MetaTradera od 2020 roku — idealna krzywa nachylona pod 45°, zero drawdownu. Podłącza do konta live u brokera STP. Po trzech tygodniach rachunek nie istnieje. System opierał się na łapaniu 3-pipsowych ruchów podczas nocnej konsolidacji azjatyckiej. W backteście spread był ustawiony na sztywno na 1 pips. W rzeczywistości między 23:00 a 01:00 CET spread na live rozszerzał się do 4 pipsów. Robot kupował po ask i natychmiast był na 4 pipsach straty. Algorytm perfekcyjnie optymalizował ułudę.

Błąd 7: Ignorowanie fat tails w bootstrap MC

Bootstrap MC losuje z historycznej próbki transakcji, zakładając że przyszłość ma podobny rozkład. Problem: wyniki FX mają fat tails (Mandelbrot, 2004). Flash crash CHF 2015, GBP 2016 (−1 800 pipsów w minutę po głosowaniu Brexit) — żaden backtest z 2014 roku tych zdarzeń nie zawiera. Bootstrap na „normalnych" danych nie modeluje strat rzędu −5R do −20R, które zdarzają się rzadko, ale niszczą rachunki. Dla swing tradingu bez zarządzania ekspozycją overnight: rozważ MC z parametrycznym rozkładem t-Studenta z grubymi ogonami zamiast prostego bootstrapu. To rozwiązanie dla zaawansowanych użytkowników Pythona lub oprogramowania statystycznego — większość detalistów lepiej wyjdzie na prostym bootstrap plus osobny ręczny stress test na zdarzenia ogonowe (np. „co jeśli jedna transakcja skończy się na −5R zamiast −1R?"). Niezależnie od metody: traktuj wyniki bootstrapu na „normalnych" danych jako dolną granicę ryzyka, nie jako gwarancję.

10. Liczby, które musisz znać

Jeśli nie masz policzonych tych pięciu metryk na twardych danych netto, to nie masz systemu — masz drogie hobby z dostępem do dźwigni finansowej:

  1. Expectancy netto — po wszystkich kosztach transakcyjnych. Jeśli jest ujemna — nie handluj.
  2. Risk of Ruin przy twoim position sizingu — Monte Carlo na 10 000 symulacji. Akceptowalne RoR: < 1%.
  3. Mediana max drawdown — z Monte Carlo. To drawdown, który powinieneś psychologicznie zaakceptować ZANIM otworzy się pierwszą pozycję.
  4. 95. percentyl max drawdown — najgorszy rozsądny scenariusz. Jeśli tego nie przeżyjesz, zmniejsz ryzyko.
  5. Czas odrabiania drawdownu — ile transakcji (tygodni, miesięcy) zajmie odrobienie typowego i ekstremalnego DD.

Rynek nie nagradza za intencje. Nagradza za poprawnie policzone liczby — i za to, że nie handlowałeś, kiedy ich nie miałeś.

W następnym artykule (9.3) przejdziemy od teorii do proceduralnych reguł: ile ryzykować na pojedynczą transakcję, jak ustawić dzienny, tygodniowy i miesięczny limit strat, i co robić, kiedy go przekroczysz.

FAQ — Najczęściej zadawane pytania

Czy Monte Carlo to to samo co backtest?
Nie. Backtest to jedna historyczna ścieżka zdarzeń — konkretna kolejność wygranych i przegranych. Monte Carlo bierze te same wyniki i tasuje ich kolejność tysiące razy, generując rozkład możliwych scenariuszy. Backtest mówi: „tak wyglądało". Monte Carlo mówi: „tak mogłoby wyglądać przy innym szczęściu". MC jest bliższe realności, bo w live nie dostaniesz dokładnie tej samej sekwencji co w historii.
Czy mogę policzyć Monte Carlo w Excelu?
Tak, do ~1 000 symulacji. Wstaw listę wyników w R-multiple (kolumna A), użyj INDEX(A:A, RANDBETWEEN(1,COUNT(A:A))) do losowania, oblicz saldo kumulacyjne, i powtórz w kolejnych kolumnach. Każda kolumna = jedna symulacja. 1 000 kolumn to granica praktyczna Excela. Dla 10 000 symulacji: Python (numpy) liczy to w < 1 sekundy.
Ile transakcji powinienem mieć, zanim zacznę ufać wynikowi Monte Carlo?
Monte Carlo jest tak dobre, jak dane wejściowe. 30 transakcji → MC pokaże piękne wykresy, ale wnioski będą bezwartościowe (zbyt mała próbka, zbyt szeroki przedział ufności). 100 transakcji → orientacyjny obraz. 200+ → wynik operacyjnie użyteczny. Optymalne: 300–500 transakcji z konsekwentną egzekucją jednego systemu. Nie mieszaj danych z różnych systemów w jednej symulacji.
Czy Risk of Ruin 0,1% oznacza, że jestem bezpieczny?
RoR 0,1% oznacza, że w modelu 1 na 1 000 rachunków zbankrutuje. To niska wartość — ale model zakłada stałe WR, stałe R:R i niezależność transakcji. W rzeczywistości: WR zmienia się z reżimem rynku, R:R zmienia się z volatility, a transakcje bywają seryjnie skorelowane. Realny RoR jest wyższy niż modelowy. Traktuj 0,1% jako dolną granicę, nie jako gwarancję. Dlatego profesjonaliści stosują margines bezpieczeństwa — ryzykują mniej, niż model sugeruje jako „bezpieczne".
Jaka jest różnica między fixed fractional a fixed lot position sizing?
Fixed lot: stała wielkość pozycji niezależnie od salda (np. 0,10 lota). Fixed fractional: stały procent salda (np. 1%). Fixed fractional automatycznie zmniejsza ryzyko w drawdownie (ochrona) i zwiększa w trendzie wzrostowym (compounding). Fixed lot nie chroni w drawdownie — 100 USD ryzyka z rachunku 10 000 to 1%, ale z rachunku 5 000 to 2%. Fixed fractional jest standardem w profesjonalnym tradingu. Fixed lot ma sens tylko w fazie testowej na mikrolotach.
Dlaczego nie mogę po prostu stosować Kelly criterion jako position sizing?
Pełny Kelly na detalicznym Forexie jest dla większości traderów praktycznie nieużywalny, bo prowadzi do drawdownów, których psychicznie i kapitałowo nie wytrzymają. Model zakłada niezmienną przewagę statystyczną — stałe WR, stałe R:R, niezależne transakcje, brak kosztów. Kiedy na rynek wjeżdża NFP albo bank centralny zmienia reżim, twoje wyliczenia z backtestu tracą wartość. Kelly sugeruje ~10% ryzyka dla systemu z WR 55% i R:R 1:1,5 — na takim sizingu drawdowny −50% zdarzają się regularnie. Standard profesjonalny: max pół-Kelly (2,5–5%), i nawet to jest agresywne. Więcej o Kelly w artykule 9.5.
Co jeśli mój system ma ujemną expectancy po kosztach?
Nie handluj nim. Ujemna expectancy netto nie potrzebuje dalszej debaty — to nie strategia, tylko kosztowny nawyk. Wróć do etapu projektowania: sprawdź, czy edge istnieje po odliczeniu realnych kosztów (spread, slippage, swap, prowizja). Jeśli edge brutto jest dodatni, ale netto ujemny — albo zmień timeframe (dłuższy TF = niższy koszt na R), albo zmień instrument (niższy spread), albo zmień brokera (ECN vs B-Book). Jeśli edge brutto jest ujemny — system nie działa. Żadna ilość optymalizacji position sizingu nie zamieni systemu bez przewagi w zyskowny.
Czy drawdown −20% to dużo?
To zależy od systemu. Dla scalpera z WR 65% i R:R 1:0,8 — drawdown −20% to sygnał, że coś jest nie tak (oczekiwany max DD ≈ −8–12%). Dla trend-followera z WR 35% i R:R 1:3 — drawdown −20% to normalny koszt prowadzenia biznesu (oczekiwany max DD ≈ −15–25%). Monte Carlo pokaże ci, jaki max DD jest „normalny" dla TWOJEGO systemu. Jeśli realne obsunięcie przekracza 95. percentyl z MC — albo rynek się zmienił, albo twoja egzekucja się pogorszyła. W obu przypadkach: redukuj ryzyko.
Czy stop loss gwarantuje maksymalną stratę?
Nie. Stop loss to zlecenie rynkowe, które aktywuje się po osiągnięciu ceny — ale nie gwarantuje wykonania po tej cenie. Przy luce cenowej (gap), flash crashu lub braku płynności (jak CHF 15 stycznia 2015) fill może przyjść dziesiątki lub setki pipsów dalej. Twoje „ryzykuję 1%" zakłada ciągłość notowań — a rynek nie jest zobowiązany do ciągłości. Jedyny stop gwarantujący cenę to guaranteed stop loss (GSLO), który oferuje część brokerów za dodatkową premię. Bez GSLO każdy stop loss to życzenie, nie gwarancja. To fundamentalnie ważne dla kalkulacji RoR: model zakłada, że strata na przegranej = −1R. W rzeczywistości przy event risk może wynosić −2R, −5R lub więcej. Więcej o tym w artykule 9.10 (Event risk).

Dla zaawansowanych: serial correlation i rozkład R-multiple

Korelacja transakcji w Monte Carlo. Podstawowy bootstrap MC zakłada niezależność transakcji — losuje z powtórzeniami. Żeby uwzględnić serial correlation: użyj block bootstrap — zamiast losować pojedyncze transakcje, losuj bloki kolejnych 5–10 transakcji. To zachowuje lokalne zależności (np. serie strat w konsolidacji). Badania (Lo, MacKinlay 1988) pokazują, że straty na FX bywają seryjnie skorelowane — szczególnie w środowiskach wysokiej zmienności. Standard bootstrap, który losuje transakcje niezależnie, może zaniżać prawdopodobieństwo długich serii strat. Dla próbki < 200 transakcji standard bootstrap wystarczy jako przybliżenie, ale traktuj wynik jako optymistyczny.

Rozkład R-multiple a wyniki MC. Tekst dla uproszczenia mówi o stałym R:R (1:1,5, 1:3), ale w rzeczywistości każda transakcja ma inny R-multiple: +0,8R (TP nieosiągnięty), +4,2R (trailing stop złapał ruch), −1,3R (slippage na gapie). MC uruchomione na rzeczywistym rozkładzie R-multiple daje inny wynik niż MC na uproszczonym stałym R:R × WR. Jeśli masz 200+ transakcji — użyj ich pełnego rozkładu. Jeśli masz mniej — uproszczenie jest akceptowalne, ale pamiętaj, że zaniża ryzyko ogonów.

Źródła i bibliografia

  1. Vince R., The Mathematics of Money Management, Wiley, 1992. Formuły Risk of Ruin i position sizing.
  2. Kaufman P., Trading Systems and Methods, 6th ed., Wiley, 2019. Monte Carlo w kontekście systemów transakcyjnych.
  3. Van Tharp, Trade Your Way to Financial Freedom, McGraw-Hill, 2006. R-multiple i expectancy jako metryki systemu.
  4. Thorp E.O., A Man for All Markets, Random House, 2017. Kelly criterion — teoria i praktyczne zastosowania.
  5. Feller W., An Introduction to Probability Theory and Its Applications, Vol. 1, 3rd ed., Wiley, 1968. Gambler's Ruin — formalne rozwiązanie.
  6. Elder A., Trading for a Living, Wiley, 1993. Zasada 2% i psychologia zarządzania ryzykiem.
  7. Barber B., Odean T., „Trading is hazardous to your wealth", Journal of Finance, 55(2), 2000. Overconfidence bias i wpływ na wyniki tradingu.
  8. Mandelbrot B., Hudson R.L., The (Mis)behavior of Markets, Basic Books, 2004. Fat tails i ograniczenia modeli gaussowskich w finansach.
  9. Taleb N.N., Fooled by Randomness, Random House, 2001. Rola losowości w interpretacji wyników tradingu.
  10. ESMA, „Final Report: Product intervention measures on CFDs", 2018. Regulacja dźwigni i stop-out w UE.
  11. Lo A.W., MacKinlay A.C., „Stock Market Prices Do Not Follow Random Walks", Review of Financial Studies, 1(1), 1988. Serial correlation i jej wpływ na modelowanie serii strat.
  12. FXCM Inc., SEC Filing 8-K, 16 stycznia 2015. Strata 225 mln USD z tytułu ujemnych sald klientów po decyzji SNB — źródło pierwotne do war story CHF 2015.

Jarosław Wasiński LinkedIn

Redaktor naczelny MyBank.pl • Analityk finansowy i rynkowy

mgr Jarosław Wasiński — niezależny analityk i praktyk z ponad 20-letnim doświadczeniem w sektorze finansowym. Twórca i redaktor naczelny portalu MyBank.pl, dostarczającego rzetelną wiedzę o finansach osobistych, bankowości i inwestycjach od 2004 roku.

  • Bankowość i produkty finansowe: porównania kont osobistych i firmowych, analiza taryf opłat, testy aplikacji mobilnych, recenzje kredytów, lokat i kart kredytowych — z naciskiem na realne koszty i ukryte opłaty.
  • Rynki finansowe i makroekonomia: analiza fundamentalna rynków walutowych (Forex) i makroekonomicznych od 2007 roku, zarządzanie ryzykiem kapitału, struktura rynków OTC.
  • Kryptowaluty: analiza rynku kryptowalut, mechanizmów blockchain i tokenizacji aktywów w kontekście portfela inwestycyjnego.

Autor setek komentarzy rynkowych, analiz porównawczych produktów bankowych i materiałów edukacyjnych. Zwolennik transparentności — każdy ranking i recenzja na MyBank.pl opiera się na jawnej metodologii i zweryfikowanych źródłach (taryfy banków, regulaminy promocji, dane NBP).

Treści mają charakter edukacyjny i informacyjny — nie stanowią porady inwestycyjnej, rekomendacji ani oferty. Decyzje finansowe podejmuj na podstawie własnej analizy i konsultacji z doradcą.