Przejdź do treści
Wszystkie strategie

Strategie

Backtest dziennej przekrojowej anomalii niskiej zmienności: długa pozycja w dolnych -2 aktywach o najniższej zmienności + krótka w górnych -2 o najwyższej wśród 6 głównych kontraktów perpetualnych Binance

Wynik: Porzucona

BinanceCrossSectionalLowVolAnomalyLong2Short2SixMajorsDaily

Podsumowanie wyniku

Była to trzecia strategia w serii przekrojowej, stosująca anomalię niskiej zmienności / Betting-Against-Beta jako neutralny dolarowo portfel z długą pozycją na -2 aktywach o najniższej zmienności i krótką na -2 o najwyższej wśród 6 głównych kryptowalut Binance; miała być nieskorelowana z wcześniejszymi strategiami szeregującymi według stóp zwrotu i finansowania. Po trzech iteracjach naprawiających mechanizmy weryfikacji (w szczególności błędzie proxy warstwy -2, naprawionym przez przeniesienie funkcji pomocniczej……Pokaż więcejPokaż mniej

Była to trzecia strategia w serii przekrojowej, stosująca anomalię niskiej zmienności / Betting-Against-Beta jako neutralny dolarowo portfel z długą pozycją na -2 aktywach o najniższej zmienności i krótką na -2 o najwyższej wśród 6 głównych kryptowalut Binance; miała być nieskorelowana z wcześniejszymi strategiami szeregującymi według stóp zwrotu i finansowania. Po trzech iteracjach naprawiających mechanizmy weryfikacji (w szczególności błędzie proxy warstwy -2, naprawionym przez przeniesienie funkcji pomocniczej zmienności na poziom modułu) powstał działający, rzeczywiście neutralny rynkowo backtest — ale przyniósł stratę 78.7% przy obsunięciu kapitału 95.97%, ponieważ długa pozycja na aktywach o niskiej zmienności i krótka na aktywach o wysokiej zmienności jest w praktyce zakładem na krótką betę i krótkie momentum, który przynosi zyski tylko w reżimach bessy. Analityk porzucił ją podczas przeglądu backtestu, uznając porażkę za strukturalną, a nie możliwą do dostrojenia: trzy parametry zmieniają skalę i częstotliwość, lecz nie mogą odwrócić ujemnego znaku czynnika w rosnącym cyklu, a wahania +94%/-65% pod koniec próby to jedynie arytmetyka procentowych stóp zwrotu na uszczuplonym rachunku. Strategia nie dotarła do optymalizacji, decyzji analityka po optymalizacji, przeglądu ryzyka, paper tradingu ani live tradingu.

Hipoteza

Strategia anomalii przekrojowej neutralna dolarowo na stałym uniwersum 6 głównych kontraktów perpetual Binance USD-M (BTC, ETH, SOL, BNB, AVAX, LINK — wszystkie z potwierdzonymi czystymi danymi), wykorzystująca najlepiej udokumentowaną przekrojową anomalię ryzyka w finansach: LOW-VOLATILITY ANOMALY. Co 24 godzin strategia szereguje 6 aktywów według zrealizowanej zmienności z ostatnich 30 dni, zajmuje pozycję LONG w 2 aktywach o najniższej zmienności LOWEST i SHORT w 2 aktywach o najwyższej zmienności HIGHEST; w……Pokaż więcejPokaż mniej

Strategia anomalii przekrojowej neutralna dolarowo na stałym uniwersum 6 głównych kontraktów perpetual Binance USD-M (BTC, ETH, SOL, BNB, AVAX, LINK — wszystkie z potwierdzonymi czystymi danymi), wykorzystująca najlepiej udokumentowaną przekrojową anomalię ryzyka w finansach: LOW-VOLATILITY ANOMALY. Co 24 godzin strategia szereguje 6 aktywów według zrealizowanej zmienności z ostatnich 30 dni, zajmuje pozycję LONG w 2 aktywach o najniższej zmienności LOWEST i SHORT w 2 aktywach o najwyższej zmienności HIGHEST; w każdej części stosuje równe wagi i zachowuje neutralność dolarową. Utrzymuje pozycje przez 24 godzin, po czym ponownie szereguje aktywa. Środkowe 2 aktywów są pomijane. To trzecia strategia w serii przekrojowej (po CrossSectionalMeanReversion3Major wykorzystującej finansowanie HL oraz DailyCrossSectional7DReturnReversal wykorzystującej stopy zwrotu Binance) — ten sam koszyk głównych aktywów, oś sygnału COMPLETELY DIFFERENT. Szeregowanie według zmienności jest strukturalnie niezależne od szeregowania według stóp zwrotu i finansowania, dlatego strategia będzie zajmować pozycje UNCORRELATED względem dwóch wcześniejszych strategii przekrojowych, zapewniając rzeczywistą dywersyfikację portfela zamiast nakładania się mechanizmów. Anomalię niskiej zmienności opisują: Black (1972), Frazzini-Pedersen (2014), „Betting Against Beta”, Baker-Bradley-Wurgler (2011), „Benchmarks as Limits to Arbitrage” oraz dotyczący kryptowalut Liu-Tsyvinski-Wu (2022), „Common Risk Factors in Cryptocurrency”. Mechanizm: aktywa kryptowalutowe o wysokiej zmienności przyciągają spekulacyjny kapitał szukający „losowych wygranych”, który systematycznie osiąga wyniki gorsze, niż sugeruje ich zrealizowana zmienność (detaliczny FOMO + okresowe kaskady likwidacji); aktywa o niskiej zmienności przyciągają kapitał instytucjonalny i długoterminowy, który zapewnia strukturalne wsparcie popytu oraz stabilne stopy zwrotu skorygowane o ryzyko. Strategia bezpośrednio odpowiada na powtarzaną rekomendację analityka: „w obecnym reżimie priorytetowo traktuj mechanizmy przekrojowe”. Uzupełnia FIVE niedostatecznie reprezentowane obszary: kierunek long-short (14.0% → w stronę 45%), zakres wielu instrumentów (7.2% → poszerzyć), klasę przekrojową (mechanizm o potwierdzonej skuteczności), dywersyfikację portfela względem strategii kierunkowych oraz wyłącznie BINANCE-USD-M (czyste dane). Wielkość pozycji: 12% kapitału na każdą część × 2 + 12% × 2 = 48% ekspozycji brutto, neutralnej dolarowo. Ryzyko na transakcję: około 1%, wynikające ze zmienności dziennego rozproszenia zmienności.

ITER-3 usuwa u źródła zgłoszony błąd Layer-2 („_vol_from_closes() takes 2 positional arguments but 3 were given”): _StrategyProxy w Layer-2 ponownie wiąże każdą wywoływalną metodę INSTANCE przez types.MethodType i wstrzykuje `self`, co zmienia liczbę argumentów funkcji pomocniczej. Przeniesienie `_vol_from_closes` do funkcji MODULE-LEVEL sprawia, że nie jest ona atrybutem instancji, więc proxy nie wiąże jej ponownie i `self` nigdy nie jest wstrzykiwane — wywołanie jest identyczne zarówno w rzeczywistym silniku,……Pokaż więcejPokaż mniej

ITER-3 usuwa u źródła zgłoszony błąd Layer-2 („_vol_from_closes() takes 2 positional arguments but 3 were given”): _StrategyProxy w Layer-2 ponownie wiąże każdą wywoływalną metodę INSTANCE przez types.MethodType i wstrzykuje `self`, co zmienia liczbę argumentów funkcji pomocniczej. Przeniesienie `_vol_from_closes` do funkcji MODULE-LEVEL sprawia, że nie jest ona atrybutem instancji, więc proxy nie wiąże jej ponownie i `self` nigdy nie jest wstrzykiwane — wywołanie jest identyczne zarówno w rzeczywistym silniku, jak i przez proxy. To najmniejsza możliwa zmiana: zmieniły się tylko położenie funkcji pomocniczej i dwa miejsca jej wywołania (_compute_realized_vol, _latest_vol_and_price); cała logika sygnałów, pętla zdarzeń dla wielu instrumentów i ranking przy rebalansowaniu pozostały identyczne bajt po bajcie. Weryfikacja lokalna: analiza statyczna Layer-1 przechodzi bez błędów, a wszystkie 6 syntetyczne scenariusze Layer-2 przechodzą przez rzeczywisty _StrategyProxy bez wyjątku i generują 469/469 unikalnych, skończonych sygnałów zmieniających się z baru na bar (bez zamrożonych sygnałów, NaN ani inf). Strategia stosuje dobrze udokumentowaną anomalię niskiej zmienności / Betting-Against-Beta przekrojowo, niezależnie od wcześniejszych strategii przekrojowych opartych na stopie zwrotu i finansowaniu, co zapewnia rzeczywistą dywersyfikację portfela.

Brak przewagi, a parametrów nie da się dostroić, więc optymalizacja byłaby stratą czasu. Anomalia niskiej zmienności na rynku kryptowalut, wdrożona jako długa pozycja na aktywach o niskiej zmienności i krótka na aktywach o wysokiej zmienności wśród 6 głównych kryptowalut, jest w praktyce zakładem na krótką betę i krótkie momentum: zyskuje wyłącznie w reżimach bessy (2022 rocznie +128%), a w reżimach hossy ponosi katastrofalne straty (2021 -80%, 2024 -78%), osiągając łącznie total_return -78.7%, max_drawdown……Pokaż więcejPokaż mniej

Brak przewagi, a parametrów nie da się dostroić, więc optymalizacja byłaby stratą czasu. Anomalia niskiej zmienności na rynku kryptowalut, wdrożona jako długa pozycja na aktywach o niskiej zmienności i krótka na aktywach o wysokiej zmienności wśród 6 głównych kryptowalut, jest w praktyce zakładem na krótką betę i krótkie momentum: zyskuje wyłącznie w reżimach bessy (2022 rocznie +128%), a w reżimach hossy ponosi katastrofalne straty (2021 -80%, 2024 -78%), osiągając łącznie total_return -78.7%, max_drawdown 95.97%, profit_factor 0.577 oraz ujemne Sharpe/Sortino/wartość oczekiwaną/wskaźnik informacyjny w całej próbie. 3 parametry podlegające dostrojeniu (vol_lookback_days, rebalance_days, leg_capital_pct) zmieniają skalę i częstotliwość, ale nie mogą odwrócić ujemnego znaku czynnika, więc testowanie kroczące nie może jej uratować — dopasowałoby krzywą do bessy z okresu 2022 i zawiodłoby w przyszłości. Niewiarygodne dzienne wahania pod koniec próby (+94%, -65%, kurtoza 304) wynikają z arytmetyki stóp zwrotu procentowych na rachunku uszczuplonym o 96%, a nie z błędu w ustalaniu wielkości pozycji, który dałoby się naprawić; nie jest to więc również przypadek dla programisty do „dalszego rozwijania”. FAILURE PATTERN: neutralna dolarowo anomalia niskiej zmienności na kryptowalutach (długa pozycja na dolnych -2 / krótka na górnych -2 głównych aktywach według zmienności zrealizowanej) to zakład pod przykrywką na krótką pozycję w aktywach o wysokiej zmienności i krótkie momentum, którego znak jest ujemny w trakcie rosnącego cyklu kryptowalut; rentowność ograniczona do bessy i zależna od reżimu nie utrzymuje się w całej próbie i nie da się jej uzyskać przez dostrajanie parametrów.

Implementacja

Neutralna dolarowo, przekrojowa anomalia niskiej zmienności na 6 kontraktach perpetual Binance USD-M (BTC, ETH, SOL, BNB, AVAX, LINK), dzienne świece. Co rebalance_days (domyślnie 1) szereguje 6 aktywów według annualizowanej zmienności zrealizowanej z ostatnich 30 dni, zajmuje pozycję LONG w 2 aktywach o najniższej zmienności i SHORT w 2 o najwyższej (równe wagi, pominięte środkowe 2). Każda noga = nominał 12% kapitału -> ~48% ekspozycji brutto, ~0% netto. Wyłącznie OHLCV, bez dodatkowych danych. Transakcje są kierowane przez _rebalance() w on_bar/on_extra_bar; calculate_signal zwraca ciągłą wartość diagnostyczną opartą na cenach zamknięcia.

Wyniki weryfikacji

Weryfikacja nie powiodła się (warstwa 2 — scenariusze syntetyczne): Użyte parametry: ['min_notional', 'rebalance_days', 'leg_capital_pct', 'vol_lookback_days'] Sprawdź, czy __init__ ustawia wszystkie atrybuty za pomocą self.parameters.get(). - steady_uptrend: TypeError: BinanceCrossSectionalLowVolAnomalyLong2Short2SixMajorsDaily._vol_from_closes() przyjmuje 2 argumentów pozycyjnych, ale przekazano 3 (znacznik czasu świecy: 1735693260000) - steady_downtrend: TypeError:……Pokaż więcejPokaż mniej

Weryfikacja nie powiodła się (warstwa 2 — scenariusze syntetyczne): Użyte parametry: ['min_notional', 'rebalance_days', 'leg_capital_pct', 'vol_lookback_days'] Sprawdź, czy __init__ ustawia wszystkie atrybuty za pomocą self.parameters.get(). - steady_uptrend: TypeError: BinanceCrossSectionalLowVolAnomalyLong2Short2SixMajorsDaily._vol_from_closes() przyjmuje 2 argumentów pozycyjnych, ale przekazano 3 (znacznik czasu świecy: 1735693260000) - steady_downtrend: TypeError: BinanceCrossSectionalLowVolAnomalyLong2Short2SixMajorsDaily._vol_from_closes() przyjmuje 2 argumentów pozycyjnych, ale przekazano 3 (znacznik czasu świecy: 1735693260000) - flat_ranging: TypeError: BinanceCrossSectionalLowVolAnomalyLong2Short2SixMajorsDaily._vol_from_closes() przyjmuje 2 argumentów pozycyjnych, ale przekazano 3 (znacznik czasu świecy: 1735693260000) - volatility_spike: TypeError: BinanceCrossSectionalLowVolAnomalyLong2Short2SixMajorsDaily._vol_from_closes() przyjmuje 2 argumentów pozycyjnych, ale przekazano 3 (znacznik czasu świecy: 1735693260000) - zero_volume: TypeError: BinanceCrossSectionalLowVolAnomalyLong2Short2SixMajorsDaily._vol_from_closes() przyjmuje 2 argumentów pozycyjnych, ale przekazano 3 (znacznik czasu świecy: 1735693260000) - price_gap: TypeError: BinanceCrossSectionalLowVolAnomalyLong2Short2SixMajorsDaily._vol_from_closes() przyjmuje 2 argumentów pozycyjnych, ale przekazano 3 (znacznik czasu świecy: 1735693260000)

Przegląd backtestu

Sharpe
-0,12
Łączna stopa zwrotu
-78,69%
Maksymalne obsunięcie
95,97%
Łączna liczba transakcji
306
Trafność
52,9%
Współczynnik zysku
0,58

Strategia działa mechanicznie: 306 transakcji w ciągu 2082 dni, realizuje neutralne dolarowo pozycje long-short, czyste uniwersum 6 głównych kryptowalut Binance, wyłącznie OHLCV (bez podatności związanej z dodatkowymi danymi)

Rzeczywiście niska korelacja z benchmarkiem (-0.06, beta -0.09) potwierdza, że zgodnie z założeniem strategia jest ortogonalna wobec strategii kierunkowych

Katastrofalne wyniki netto: total_return -78.7%, max_drawdown 95.97%, profit_factor 0.577, ujemne Sharpe/Sortino (-0.12), ujemna wartość oczekiwana (-299/transakcję), IR -0.34

Strukturalny problem ze znakiem: długa pozycja na aktywach kryptowalutowych o niskiej zmienności i krótka na aktywach o wysokiej zmienności wśród głównych kryptowalut to zakład na krótką betę i krótkie momentum — zyski pojawiają się tylko w reżimach bessy (2022 +128%), a w hossie strategia ponosi duże straty (2021 -80%, 2024 -78%); wynik jest ujemny w całym rosnącym cyklu

Porażki nie da się usunąć przez dostrojenie: parametry 3 (vol_lookback, rebalance_days, leg_capital_pct) nie mogą odwrócić kierunku anomalii, więc optymalizacja dopasowałaby krzywą jedynie do bessy z okresu 2022

Ekstremalne dzienne stopy zwrotu (+94%, -65%) i kurtoza 304 to artefakty rachunku bliskiego zeru po obsunięciu kapitału 96%, a nie przewaga, którą można odzyskać

Analiza

Jeszcze nie optymalizuj NOT — portfel nie jest neutralny dolarowo, jak zakłada hipoteza (48% brutto, ~1% ryzyka na transakcję). Dowody: exposure_pct=400% (8x zamierzony 48%), jednodniowe stopy zwrotu sięgające +94.3%/-65.3%/-61.6% oraz return_kurtosis=304. (1) Sprawdź, czy przy każdym rebalansowaniu cztery nogi dają łącznie ekspozycję netto bliską neutralności dolarowej, a ekspozycja brutto utrzymuje się w pobliżu 48% — rejestruj rzeczywiste nominały brutto i netto dla każdego słupka oraz dodaj asercję. (2)……Pokaż więcejPokaż mniej

Jeszcze nie optymalizuj NOT — portfel nie jest neutralny dolarowo, jak zakłada hipoteza (48% brutto, ~1% ryzyka na transakcję). Dowody: exposure_pct=400% (8x zamierzony 48%), jednodniowe stopy zwrotu sięgające +94.3%/-65.3%/-61.6% oraz return_kurtosis=304. (1) Sprawdź, czy przy każdym rebalansowaniu cztery nogi dają łącznie ekspozycję netto bliską neutralności dolarowej, a ekspozycja brutto utrzymuje się w pobliżu 48% — rejestruj rzeczywiste nominały brutto i netto dla każdego słupka oraz dodaj asercję. (2) Odroczona logika zmiany strony („zmiana strony kończy się przy następnym rebalansowaniu” oraz zabezpieczenia „pomijaj pozycję, która jest obecnie krótka/długa”) może pozostawić aktywo bez zabezpieczenia albo utrzymywać nieaktualną pozycję przez dodatkowe słupki — potwierdź, że niepożądane pozycje są faktycznie zamykane AND przed lub podczas tego samego rebalansowania oraz że realizacje _submit_exit_position są uwzględniane przed ustaleniem wielkości nowych nóg. (3) avg_holding_period 27d wobec rebalance_days=1 wskazuje, że pozycje nie są rotowane; sprawdź, czy zamknięcia są realizowane przy każdym rebalansowaniu, a nie tylko wtedy, gdy aktywo opuszcza dolny-2/górny-2 koszyk. (4) Bardzo wysoka kurtoza i duże jednodniowe wahania sugerują, że precyzja ilości dla instrumentu lub ustalanie nominału może być źle wyskalowane dla jednej nogi (np. SOL/AVAX/LINK) — sprawdź, czy nominał każdej nogi wynosi około leg_capital_pct*kapitału własnego. Uruchom ponownie i przed ponownym przesłaniem potwierdź, że ekspozycja netto wynosi około 0 oraz że nie występują jednodniowe wahania większe niż ~15%. Uwaga: jeśli potwierdzi się, że portfel jest neutralny, a mimo to ponosi duże straty, prawdopodobnie problemem jest samo założenie (shortowanie kryptowalut o najwyższej zmienności oznacza shortowanie zwycięskich aktywów o najwyższej becie w okresach hossy) i należy je skierować do revise_hypothesis.

Podsumowanie wyniku

Dobrze udokumentowany czynnik, taki jak anomalia niskiej zmienności, nadal może przynosić ujemne wyniki netto, gdy jest wdrożony jako długa pozycja na aktywach o niskiej zmienności i krótka na aktywach o wysokiej zmienności w stale rosnącym uniwersum kryptowalut — rentowność zależna od reżimu i ograniczona do bessy nie jest przewagą, którą można dostroić, ponieważ żaden parametr nie odwróci kierunkowego znaku czynnika.

Bramka przeglądu backtestu zwróciła decyzję „porzuć” przed jakąkolwiek optymalizacją: długa pozycja na aktywach kryptowalutowych o niskiej zmienności i krótka na aktywach o wysokiej zmienności wśród głównych kryptowalut to zakład pod przykrywką na krótką betę i krótkie momentum, którego znak jest ujemny w całym rosnącym cyklu, a parametrów 3 nie da się użyć do jego odwrócenia, więc testowanie kroczące dopasowałoby krzywą jedynie do bessy z okresu 2022.

Neutralna dolarowo, przekrojowa anomalia niskiej zmienności (Betting-Against-Beta) obejmująca 6 głównych kontraktów perpetual Binance USD-M (BTC, ETH, SOL, BNB, AVAX, LINK); aktywa są codziennie porządkowane według zrealizowanej zmienności z ostatnich 30 dni, strategia zajmuje długie pozycje z równymi wagami w 2 aktywach o najniższej zmienności i krótkie pozycje z równymi wagami w 2 aktywach o najwyższej zmienności, przy ekspozycji brutto ~48%.

Przez 306 transakcji w ciągu ~2,082 dni strategia działała mechanicznie i była rzeczywiście ortogonalna wobec strategii kierunkowych (beta -0.09, korelacja z benchmarkiem -0.06), ale wyniki netto były katastrofalne: stopa zwrotu całkowita -78.7%, maksymalne obsunięcie kapitału 95.97%, profit factor 0.577, ujemne Sharpe/Sortino (-0.12), ujemna wartość oczekiwana (-299/transakcję) oraz IR -0.34; przewaga pojawiała się tylko w reżimie bessy 2022 (+128%), a w reżimach hossy przynosiła straty (2021 -80%, 2024 -78%).

Stratmill to narzędzie do badań i handlu na papierze (paper trading), a nie doradztwo finansowe ani broker. Wyniki backtestów i paper tradingu mają charakter hipotetyczny. Handel wiąże się z ryzykiem straty.