Przejdź do treści

Wyświetl oryginał

DeribitEthWeeklyPutWriteTrendGatedOnly

Hipotezy

Deribit ETH Tygodniowy Put-Write Zabezpieczony Gotówkowo OTM — Wyłącznie z Bramką Trendu, Stała ~25-Delta, NO Bramka Długookresowego Lookback IV (Zbiór Jednonogi VRP; Bezpośrednio Naprawia Ścianę Lookback 4 Transakcji, Która Doprowadziła do Porzucenia Sibling ETH-Weekly)

Hipotezy

SINGLE-LEG, w pełni zabezpieczony gotówkowo tygodniowy program PUT-WRITING na opcjach Deribit ETH — drugim pod względem płynności instrumencie bazowym opcji kryptowalutowych, wykorzystujący ponownie ścieżkę wykonania EXACT (wybór strike'a za pomocą greków, tygodniowe rozliczenie gotówkowe) z awansowanej przez fabrykę strategii Sharpe-12.2 Deribit-BTC-weekly put-write. Jest celowo zaprojektowany, aby FIX jedyny, wielokrotnie zdiagnozowany powód, dla którego ETH-weekly sibling został porzucony w 8 iteracjach: jego podwójna bramka IV-rank + IV>RV wymagała ~560-dniowego kroczącego okna lookback, co ograniczyło ją do zaledwie 4 transakcji / metrics_reliable=false — strukturalny ślepy zaułek, którego deweloper nigdy nie zdołał rozwiązać. Ta wersja DROPS całkowicie długookresową bramkę lookback IV i zachowuje ONLY filtr trendu (bramkę, która okazała się kluczowa w awansowanym zwycięzcy BTC), wystawiając stały ~25-delta OTM ETH put w każdym kwalifikującym się tygodniu. Bez wieloletniej zależności od percentyla IV, uruchamia się ~40-52 razy/rok w dostępnej historii tygodniowej Deribit ETH → statystycznie wiarygodna liczba transakcji, eliminująca dokładnie tę ścianę 4 transakcji. Wypełnia najbardziej niedoreprezentowany rynek (opcje: 5.5% Deribit + 0.1% Binance wobec celu ≥15%) i dywersyfikuje portfel opcyjny z instrumentu wyłącznie BTC na drugi, nieskorelowany pod względem zmienności instrument bazowy. Jest NOT strukturą wieloczłonową (L2), NOT komórką odgrodzoną danymi (tygodniowy łańcuch ETH + greki są skatalogowane i udowodnione jako wykonalne poprzez sibling BTC), NOT kierunkowa. Celowo 2 parametry (delta puta, długość filtra trendu), aby przeciwdziałać przeuczeniu.

Hipotezy

Iteracja 3 naprawia przekroczenie czasu rzeczywistego Layer-3 za pomocą zmiany wyłącznie w konfiguracji; kod strategii CODE pozostaje niezmieniony (już wcześniej przeszedł Layers 1-2, praca na poziomie pojedynczego bara ma złożoność O(1) dzięki przyrostowej sumie kroczącej SMA, i nie ma skanów min()/sorted()/historii na poziomie bara). Diagnoza: iteracja 2 poprawnie przeniosła rozwiązywanie primary+leg na 1-DAY, ale STILL przekroczyła czas, co dowodzi, że wąskim gardłem nie jest liczba barów. Analiza src/data/option_chain.py pokazuje: discover_deribit_chain wysyła sieciowy probe fetch_ohlcv dla każdego kandydującego strike'a EACH tygodniowego wygaśnięcia, a sandbox Layer-3 obejmuje lookback_days (expand_rolling_options / domyślnie pipeline 365). Zatem koszt rozszerzenia skaluje się wraz z liczbą tygodniowych wygaśnięć = lookback_days, niezależnie od ramy czasowej. Konfiguracja iter-2 zawierała lookback_days ~730 (~104 wygaśnięć, podwajając liczbę probe'ów), co przekroczyło budżet 300s. Przywrócenie lookback_days do 365 (~52 wygaśnięć) zmniejsza o połowę liczbę probe'ów wygaśnięć i pobrań legów, dopasowując się dokładnie do skali, przy której udowodnione siblingi ETH/BTC weekly put-write przechodzą Layer 3, jednocześnie nadal obejmując ~52 kwalifikujących się tygodni, dzięki czemu liczba transakcji pozostaje statystycznie wiarygodna (~30-52 wystawień po bramce trendu) i znacznie powyżej ślepego zaułka 4 transakcji. Wszystko inne pozostaje zachowane i udowodnione: bezpośrednie dziedziczenie po RollingOptionsStrategy (Layer-1 to rozpoznaje; abstrakcyjne hooki 4 są fizycznie obecne), brak ścieżki dymnej (rzeczywiste nogi opcyjne handlują poprzez rozszerzony harmonogram, spełniając options_no_option_trades), pojedyncza bramka trendu oparta wyłącznie na cenie w _enter_leg, rozwiązywanie primary 1-DAY ETH-PERPETUAL + legów 1-DAY (rozwiązanie stosowane przez przechodzący sibling ETH put-write), rozmiar zabezpieczony gotówkowo (risk_frac 0.8, dźwignia 1.0 zgodnie z limitem venue opcji), oraz projekt z 2 parametrami (offset puta + sma_window).

Hipotezy

backtest_failed: RuntimeError: rozszerzenie rolling_options nie powiodło się (ConnectError: ); odmowa uruchomienia z pustym harmonogramem opcji Traceback (most recent call last): File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 101, in map_httpcore_exceptions yield File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 394, in handle_async_request resp = await self._pool.handle_async_request(req) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 256, in handle_async_request raise exc from None File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 236, in handle_async_request response = await connection.handle_async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 101, in handle_async_request raise exc File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 78, in handle_async_request stream = await self._connect(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 156, in _connect stream = await stream.start_tls(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_backends/anyio.py", line 67, in start_tls with map_exceptions(exc_map): File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions raise to_exc(exc) from exc httpcore.ConnectError Powyższy wyjątek był bezpośrednią przyczyną następującego wyjątku: Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 49, in expand_rolling_options_into_config extra_i, extra_bt, sched = await expand_rolling_options(collector, spec, start, end) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/option_chain.py", line 242, in expand_rolling_options contracts = await discover_deribit_chain( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/option_chain.py", line 143, in discover_deribit_chain perp_bars = await collector.fetch_ohlcv(perp, start_ms, end_ms, "1D") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/collectors/deribit_collector.py", line 169, in fetch_ohlcv result = await self._get("/public/get_tradingview_chart_data", { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/collectors/deribit_collector.py", line 86, in _get response = await self._client.get(f"{DERIBIT_API_URL}{endpoint}", params=params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get return await self.request( ^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request return await self.send(request, auth=auth, follow_redirects=follow_redirects) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send response = await self._send_handling_auth( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth response = await self._send_handling_redirects( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects response = await self._send_single_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request response = await transport.handle_async_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 393, in handle_async_request with map_httpcore_exceptions(): File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 118, in map_httpcore_exceptions raise mapped_exc(message) from exc httpx.ConnectError Powyższy wyjątek był bezpośrednią przyczyną następującego wyjątku: Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 184, in _run_backtest config = await self._maybe_expand_rolling_options(config, catalog_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/agents/backtest_agent.py", line 427, in _maybe_expand_rolling_options config = await expand_rolling_options_into_config(config, catalog_path, self._logger) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/agents/backtest_agent.py", line 59, in expand_rolling_options_into_config raise RuntimeError( RuntimeError: rozszerzenie rolling_options nie powiodło się (ConnectError: ); odmowa uruchomienia z pustym harmonogramem opcji

Implementacja

Jednonogi, zabezpieczony gotówkowo tygodniowy put-write OTM na europejskich opcjach ETH Deribit, wyłącznie z bramką trendu. Co tydzień framework wyznacza historyczny tygodniowy łańcuch putów Deribit ETH (celując w strike o ~25-delcie OTM poprzez offset moneyness -6%) i go rolluje; strategia SELLS jednego puta ~7 dni do wygaśnięcia i zamyka go ~24h przed rozliczeniem. Bramka ONLY to filtr trendu oparty wyłącznie na cenie: wystawia puta tylko wtedy, gdy spot ETH znajduje się powyżej swojej ~50-dniowej SMA (świece dzienne), pomijając potwierdzone trendy spadkowe. Bez wieloletniego okna percentyla IV zawiera transakcje w każdym kwalifikującym się tygodniu (~52/rok w oknie 365-dniowym), zapewniając statystycznie wiarygodną liczbę transakcji, co bezpośrednio eliminuje ścianę lookback 4 transakcji, która doprowadziła do porzucenia sibling IV-gated ETH-weekly. Primary = ETH-PERPETUAL.DERIBIT na świecach 1-DAY (wyłącznie zegar rollowania, nigdy nie handlowany). Rozmiar zabezpieczony gotówkowo (risk_frac 0.8), brak dźwigni, 2 dostrojone parametry (offset puta, sma_window).

Wyniki weryfikacji

CLEAN RESTART 2026-09-04 — historia werdyktów i zapisy uczenia tego przebiegu zostały usunięte, a proces zrestartowano od weryfikacji. Jego wcześniejsze porzucenie wynikało z pipeline'u, a nie z rynku: harness Layer-2 niepoprawnie wiązał pomocnicze metody @staticmethod (naprawiono), QA wydawał ostateczne werdykty dotyczące wydajności na niezoptymalizowanym teście dymnym (usunięto — QA ocenia teraz wyłącznie poprawność), a przekroczenia czasu w sandboksie wynikały z głodzenia slotów backtestu (naprawiono). Hipoteza i kod strategii pozostają niezmienione. Zweryfikuj kod pod kątem jego wartości merytorycznej; wydajność zostanie oceniona później przez pełny backtest i optymalizator.

Wyniki weryfikacji

Nic nie jest potrzebne.

Wyniki weryfikacji

Layer-1 oznaczył self._win.append() jako nieograniczone, ale on_bar przycina deque przy każdym barze (while len > sma_window: popleft()), więc wzrost jest ograniczony do sma_window. Fałszywie pozytywny wynik.

Iteration History

Weryfikacja nie powiodła się (Layer 3 — backtest w sandboksie): test dymny przekroczył limit czasu rzeczywistego 300s. Oznacza to niemal zawsze pracę na poziomie pojedynczego bara, która skaluje się wraz z historią — np. ponowne skanowanie całej serii finansowania/danych dodatkowych, lub przebudowywanie listy i wywoływanie min()/sorted() wewnątrz calculate_signal()/on_bar() przy każdym barze. Wstępnie oblicz posortowane tablice znaczników czasu ONCE w __init__ i użyj bisect, albo buforuj wyszukiwania kluczowane znacznikiem czasu, tak aby koszt na bar wynosił O(log n), a nie O(n).

Iteration History

RuntimeError: rozszerzenie rolling_options nie powiodło się (ConnectError: ); odmowa uruchomienia z pustym harmonogramem opcji Traceback (most recent call last): File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 101, in map_httpcore_exceptions yield File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 394, in handle_async_request resp = await self._pool.handle_async_request(req) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 256, in handle_async_request raise exc from None File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 236, in handle_async_request response = await connection.handle_async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 101, in handle_async_request raise exc File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 78, in handle_async_request stream = await self._connect(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 156, in _connect stream = await stream.start_tls(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_backends/anyio.py", line 67, in start_tls with map_exceptions(exc_map): File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions raise to_exc(exc) from exc httpcore.ConnectError The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 49, in expand_rolling_options_into_config extra_i, extra_bt, sched = await expand_rolling_options(collector, spec, start, end) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/option_chain.py", line 242, in expand_rolling_options contracts = await discover_deribit_chain( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/option_chain.py", line 143, in discover_deribit_chain perp_bars = await collector.fetch_ohlcv(perp, start_ms, end_ms, "1D") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/collectors/deribit_collector.py", line 169, in fetch_ohlcv result = await self._get("/public/get_tradingview_chart_data", { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/collectors/deribit_collector.py", line 86, in _get response = await self._client.get(f"{DERIBIT_API_URL}{endpoint}", params=params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get return await self.request( ^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request return await self.send(request, auth=auth, follow_redirects=follow_redirects) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send response = await self._send_handling_auth( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth response = await self._send_handling_redirects( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects response = await self._send_single_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request response = await transport.handle_async_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 393, in handle_async_request with map_httpcore_exceptions(): File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 118, in map_httpcore_exceptions raise mapped_exc(message) from exc httpx.ConnectError The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 184, in _run_backtest config = await self._maybe_expand_rolling_options(config, catalog_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/agents/backtest_agent.py", line 427, in _maybe_expand_rolling_options config = await expand_rolling_options_into_config(config, catalog_path, self._logger) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/agents/backtest_agent.py", line 59, in expand_rolling_options_into_config raise RuntimeError( RuntimeError: rolling_options expansion failed (ConnectError: ); refusing to run with an empty option schedule

Powód porzucenia

backtest_failed: RuntimeError: rozszerzenie rolling_options nie powiodło się (ConnectError: ); odmowa uruchomienia z pustym harmonogramem opcji Traceback (most recent call last): File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 101, in map_httpcore_exceptions yield File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 394, in handle_async_request resp = await self._pool.handle_async_request(req) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 256, in handle_async_request raise exc from None File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 236, in handle_async_request response = await connection.handle_async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 101, in handle_async_request raise exc File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 78, in handle_async_request stream = await self._connect(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 156, in _connect stream = await stream.start_tls(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_backends/anyio.py", line 67, in start_tls with map_exceptions(exc_map): File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions raise to_exc(exc) from exc httpcore.ConnectError Powyższy wyjątek był bezpośrednią przyczyną następującego wyjątku: Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 49, in expand_rolling_options_into_config extra_i, extra_bt, sched = await expand_rolling_options(collector, spec, start, end) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/option_chain.py", line 242, in expand_rolling_options contracts = await discover_deribit_chain( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/option_chain.py", line 143, in discover_deribit_chain perp_bars = await collector.fetch_ohlcv(perp, start_ms, end_ms, "1D") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/collectors/deribit_collector.py", line 169, in fetch_ohlcv result = await self._get("/public/get_tradingview_chart_data", { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/data/collectors/deribit_collector.py", line 86, in _get response = await self._client.get(f"{DERIBIT_API_URL}{endpoint}", params=params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get return await self.request( ^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request return await self.send(request, auth=auth, follow_redirects=follow_redirects) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send response = await self._send_handling_auth( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth response = await self._send_handling_redirects( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects response = await self._send_single_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request response = await transport.handle_async_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 393, in handle_async_request with map_httpcore_exceptions(): File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 118, in map_httpcore_exceptions raise mapped_exc(message) from exc httpx.ConnectError Powyższy wyjątek był bezpośrednią przyczyną następującego wyjątku: Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 184, in _run_backtest config = await self._maybe_expand_rolling_options(config, catalog_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/agents/backtest_agent.py", line 427, in _maybe_expand_rolling_options config = await expand_rolling_options_into_config(config, catalog_path, self._logger) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/agents/backtest_agent.py", line 59, in expand_rolling_options_into_config raise RuntimeError( RuntimeError: rozszerzenie rolling_options nie powiodło się (ConnectError: ); odmowa uruchomienia z pustym harmonogramem opcji
Raport strategii

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.