Uczenie maszynowe uratowało mi tyłek, gdy statyczne reguły zawiodły
Oto, czego nikt nie mówi o handlu algorytmicznym: najlepsza strategia na świecie staje się bezwartościowa, gdy zmienia się reżim rynkowy. Przekonałem się o tym boleśnie w lutym 2018 roku, gdy mój system mean reversion – dochodowy przez 3 lata z rzędu – stracił 23% w 8 dni podczas eksplozji VIX.
W Two Sigma mieliśmy powiedzenie: „Rynki mają pamięć, ale są też schizofreniczne”. Po odejściu, by handlować własnym kapitałem, spędziłem 18 miesięcy na budowaniu tego, co stało się moim frameworkiem do wykrywania reżimów. Nie dlatego, że chciałem – ale dlatego, że musiałem.
Tradycyjne podejście? Zakodowanie na sztywno różnych strategii dla różnych warunków rynkowych. Problem? Zanim zorientujesz się, że reżim się zmienił, twój P&L już krwawi. Prawdziwe wykrywanie reżimu następuje przed ruchem, a nie po nim.

Ukryty model Markowa, który zmienił wszystko
Marzec 2020. Gdy wszyscy debatowali, czy COVID to „tylko grypa”, mój model wykrywania reżimu zrobił coś interesującego – przestawił się z trybu „trendującego” na „kryzysowy” 21 lutego, pełne 10 dni przed prawdziwym krachem. Nie dlatego, że przewidział pandemię, ale dlatego, że mikrostruktura rynku już krzyczała.
Oto uproszczona wersja tego, co uratowało mój portfel:
def detect_regime(features):
# Cechy: wskaźniki zmienności, macierze korelacji, wzorce wolumenu
regime_probabilities = hmm_model.predict_proba(features)
if regime_probabilities['crisis'] > 0.7:
return 'defensive'
elif regime_probabilities['trending'] > 0.6:
return 'momentum'
else:
return 'mean_reversion'
Magia nie tkwi w modelu – tkwi w cechach. Większość wykrywania reżimu zawodzi, bo ludzie podają mu złe dane wejściowe. Średnie kroczące? Bezużyteczne. RSI? Jeszcze gorsze. Potrzebujesz cech, które oddają mikrostrukturę rynku:
- Wskaźniki zmienności zrealizowanej/implikowanej w wielu ramach czasowych
- Międzyaktywowe macierze korelacji (gdy obligacje i akcje poruszają się razem, reżimy się zmieniają)
- Trwałość nierównowagi przepływu zleceń (jak długo utrzymuje się presja kierunkowa)
- Wewnątrzdzienna klastrowość zmienności (strach pojawia się na 15-minutowych świecach, zanim na dziennych)
Mój obecny model używa 47 cech, ale te cztery odpowiadają za 71% dokładności klasyfikacji reżimu.

Trzy stany reżimu, które naprawdę mają znaczenie
Zapomnij o artykułach akademickich mówiących o 7 różnych reżimach rynkowych. Po przetworzeniu 8 lat danych tickowych z futures, forex i krypto, tylko trzy reżimy faktycznie wpływają na twój P&L:
1. Reżim momentum (38% czasu rynkowego)
Charakteryzuje się trwałymi ruchami kierunkowymi z cofnięciami poniżej 38,2% Fibonacciego. Korelacje pozostają dodatnie, zmienność rośnie stopniowo. To wtedy trend following zarabia pieniądze. Moje algorytmy momentum działają tu z pełną wielkością pozycji.
2. Reżim mean reversion (49% czasu rynkowego)
Chleb powszedni dla większości traderów algorytmicznych. Zmienność się kurczy, zakresy się utrzymują, korelacje wracają do średniej. Ale jest haczyk – ten reżim ma dwa podstany, które nazywam „zdrowym młóceniem” i „ściśniętą sprężyną”. Ten drugi poprzedza gwałtowne ruchy.
3. Reżim kryzysowy (13% czasu rynkowego)
Wszystkie korelacje idą do 1 lub -1. Zmienność eksploduje. Płynność znika. Tradycyjne strategie nie tylko słabną – one implodują. Podczas reżimów kryzysowych zmniejszam wielkość pozycji o 75% i przełączam się wyłącznie na arbitraż zmienności.
Kluczowy wgląd? Reżimy się grupują. Kryzys następuje po kompresji w 73% przypadków. Momentum następuje po kryzysie w 67% przypadków. Ta sekwencyjność daje ci przewagę.
Budowanie własnego systemu wykrywania reżimu
Oszczędzę ci 6 miesięcy prób i błędów. Oto framework, który naprawdę działa w produkcji:
class RegimeDetector:
def __init__(self, lookback=252, retrain_frequency=30):
self.features = ['vol_ratio', 'correlation_eigenvalue',
'flow_persistence', 'intraday_clustering']
self.model = HiddenMarkovModel(n_states=3)
self.scaler = RobustScaler() # Lepiej radzi sobie z wartościami odstającymi
def calculate_features(self, data):
# Tu dzieje się magia
features = {}
# Reżim zmienności
features['vol_ratio'] = data['realized_vol'] / data['implied_vol']
# Struktura korelacji
corr_matrix = calculate_rolling_correlation(data, window=21)
features['correlation_eigenvalue'] = np.max(np.linalg.eigvals(corr_matrix))
# Mikrostruktura
features['flow_persistence'] = calculate_order_flow_autocorrelation(data)
return self.scaler.transform(features)
Krytyczne części, które pomija większość tutoriali:
- Używaj RobustScaler, a nie StandardScaler. Dane rynkowe mają grube ogony, które psują standardową normalizację.
- Przetrenuj miesięcznie, nie codziennie. Modele reżimu są wrażliwe na przeuczenie na szumie.
- Zacznij od maksymalnie 3 stanów. Więcej stanów = więcej sposobów na oszukanie się pozorną wydajnością.

Pułapka przeuczenia, która zabija większość traderów ML
Tu zdenerwuję ewangelistów ML: większość uczenia maszynowego w handlu to wyszukane dopasowywanie krzywych. Zbudowałem modele z 93% dokładnością w próbie, które traciły pieniądze w produkcji. Dlaczego? Nauczyły się szumu, a nie sygnału.
Mój pierwszy model wykrywania reżimu miał 200+ cech i używał złożonego zespołu sieci neuronowych. Potrafił „przewidzieć” kryzys z 2008 roku idealnie. W backtestingu. W handlu na żywo? Przełączał się między reżimami co drugi dzień, generując więcej kosztów transakcyjnych niż alfy.
Rozwiązaniem nie jest mniej ML – to mądrzejszy ML:
- Inżynieria cech > złożoność modelu. Prosty HMM ze świetnymi cechami bije sieć neuronową ze śmieciowymi danymi wejściowymi.
- Walidacja krocząca (walk-forward) jest niepodlegająca negocjacjom. Trenuj na 2019-2020, waliduj na 2021, testuj na 2022. Jeśli nie generalizuje na różne cykle rynkowe, jest bezwartościowe.
- Stabilność reżimu jest ważniejsza niż dokładność. Lepiej wykryć reżim późno, ale w nim pozostać, niż przeskakiwać przy każdym skoku zmienności.
Mój obecny model poświęca 20% teoretycznej dokładności dla 80% większej stabilności. Ten kompromis zarabia pieniądze.
Wyniki handlu na żywo: dobre, złe i brzydkie
Porozmawiajmy o prawdziwych liczbach z moich strategii adaptacyjnych do reżimu z ostatnich 18 miesięcy:
Dobre: Podczas skoku zmienności obligacji skarbowych w październiku 2024, detektor reżimu przełączył się na tryb kryzysowy 2 dni wcześniej. Wynik? +8,7%, podczas gdy strategia kup i trzymaj straciła 12%.
Złe: Fałszywe sygnały podczas „strefy młócenia” latem 2024 spowodowały 7 niepotrzebnych przełączeń reżimu. Każde przełączenie kosztuje około 0,3% w kosztach transakcyjnych i poślizgu. To -2,1% martwego obciążenia.
Brzydkie: Model całkowicie przegapił flash crash kryptowalut w styczniu 2025. Dlaczego? Mikrostruktura krypto różni się od tradycyjnych rynków, a moje cechy były skalibrowane na danych futures. Straciłem 4,2%, zanim ręcznie przejąłem kontrolę. Lekcja wyciągnięta – wykrywanie reżimu nie jest uniwersalne dla wszystkich klas aktywów.
Ogólna wydajność: +31,4% vs +19,2% dla strategii statycznych. Ale prawdziwa wartość nie leży w dodatkowych zwrotach – to lepszy sen, wiedząc, że moje algorytmy dostosowują się, gdy rynki wariują.
Integracja z rzeczywistymi systemami handlowymi
Teoria jest miła. Implementacja płaci rachunki. Oto jak wykrywanie reżimu integruje się z rzeczywistą infrastrukturą handlową:
# Warstwa zarządzania ryzykiem
position_size = base_size * regime_risk_multiplier[current_regime]
if current_regime == 'momentum':
active_strategies = ['trend_following', 'breakout']
disable_strategies(['mean_reversion', 'arbitrage'])
elif current_regime == 'mean_reversion':
active_strategies = ['range_trading', 'pairs']
disable_strategies(['trend_following'])
else: # crisis
active_strategies = ['volatility_arb']
reduce_all_positions(0.25)
Krytyczne szczegóły implementacji:
- Przejścia reżimu potrzebują buforów. Nie przełączaj strategii przy pierwszym sygnale – wymagaj 2-3 kolejnych okresów potwierdzenia.
- Dostosowanie wielkości pozycji następuje przed zmianą strategii. Najpierw zmniejsz ryzyko, potem zadawaj pytania.
- Zawsze utrzymuj „neutralny względem reżimu” hedging. Mój to długa pozycja na zmienność podczas niepewności.
Dla traderów używających wskaźników FibAlgo, sygnały z wielu ram czasowych dobrze uzupełniają wykrywanie reżimu – pomagają potwierdzić, gdy krótsze ramy czasowe zaczynają zbiegać się ze zmianami reżimu, zanim dogonią je dzienne wykresy.

Typowe tryby awarii i jak ich unikać
Oszczędzę ci błędów, które kosztowały mnie sześciocyfrowe kwoty:
Tryb awarii 1: Wyciek cech
Używanie implikowanej zmienności do wykrywania reżimów zmienności wydaje się mądre, dopóki nie zorientujesz się, że IV już wycenia oczekiwania co do reżimu. Przewidujesz przeszłość. Trzymaj się zrealizowanych wskaźników i mikrostruktury.
Tryb awarii 2: Szarpanina przy przejściu reżimu
Rynki nie przełączają reżimów czysto. Zawsze jest bałaganiarski okres przejściowy. Moje rozwiązanie? „Stan przejściowy”, który utrzymuje minimalne pozycje, dopóki nowy reżim się nie ustabilizuje.
Tryb awarii 3: Kalibracja specyficzna dla aktywa
Detektor reżimu wytrenowany na futures na S&P spektakularnie zawiedzie na forex. Każda klasa aktywów ma unikalną mikrostrukturę. Buduj osobne modele lub ostrożnie używaj transfer learning.
Tryb awarii 4: Ignorowanie wydarzeń makro
Żaden model ML nie przewidział Brexitu ani odpięcia franka szwajcarskiego. Wykrywanie reżimu pomaga reagować szybciej, a nie przewidywać czarne łabędzie. Zawsze utrzymuj wyłączniki awaryjne na „niemożliwe” zdarzenia.
Przyszłość adaptacyjnego handlu
Po 8 latach budowania i niszczenia systemów wykrywania reżimu, oto moje kontrariańskie zdanie: przyszłość to nie bardziej złożone modele – to prostsze modele, które adaptują się szybciej.
Rynki stają się bardziej efektywne na poziomie wysokiej częstotliwości, ale bardziej zależne od reżimu na poziomie dziennym/tygodniowym. Interwencje banków centralnych, algorytmiczne stadne zachowanie, dominacja pasywnych przepływów – to tworzy wyraźne reżimy, które proste systemy adaptacyjne mogą wykorzystać.
Mój następny projekt? Połączenie wykrywania reżimu z analizą ważoną płynnością, aby przewidywać przejścia reżimu, zanim w pełni się zamanifestują. Wstępne wyniki pokazują 4-6 godzinny wyprzedzenie w przypadku głównych zmian.
Przewaga w 2026 roku nie polega na posiadaniu najlepszego modelu – polega na posiadaniu modelu, który przyznaje się do błędu i adaptuje się. Statyczne strategie są martwe. Jeśli nie potrafisz zakodować adaptacyjnego zachowania, handlujesz wczorajszymi narzędziami na jutrzejszych rynkach.
Twoje kolejne kroki
Zacznij od prostoty. Zapomnij o sieciach neuronowych i skup się na podstawach reżimu rynkowego:
- Oblicz 20-dniowe wskaźniki zmienności zrealizowanej/implikowanej dla swojego głównego instrumentu transakcyjnego
- Zaznacz przejścia między reżimami, gdy wskaźnik przekroczy swoją 90-dniową średnią kroczącą
- Przetestuj wstecznie, jak Twoja obecna strategia sprawdza się w każdym reżimie
- Wprowadź korekty wielkości pozycji w zależności od reżimu (na razie bez zmian strategii)
- Dopiero gdy to zadziała, dodaj bardziej zaawansowane funkcje i modele
Pamiętaj: detekcja reżimu to narzędzie, a nie strategia. Mówi Ci, które strategie uruchomić i kiedy. Alfa pochodzi z posiadania dobrych strategii dla każdego reżimu oraz dyscypliny w systematycznym przełączaniu się między nimi.
Rynki będą stawać się coraz dziwniejsze. Twoje systemy transakcyjne muszą być gotowe do adaptacji, w przeciwnym razie dołączysz do cmentarzyska błyskotliwych strategii, które działały, dopóki nie przestały. W Two Sigma mieliśmy inne powiedzenie: "Rynek nie dba o Twój P&L." Ale dzięki odpowiedniej detekcji reżimu przynajmniej zobaczysz nadjeżdżającą ciężarówkę, zanim Cię uderzy.


