DeribitEthWeeklyPutWriteTrendGatedOnly
Hipotēzes
Deribit ETH Nedēļas Ar Skaidru Naudu Nodrošināta OTM Pārdošanas Opcijas Rakstīšana — Tikai Ar Tendencies Filtrēta, Fiksēta ~25-Delta, NO Garais Retrospektīvais IV Filtrs (Viena Kāja VRP Ieņēmumu Novākšana; Tieši Novērš 4-Darījumu Retrospektīvā Loga Sienu, Kas Pārtrauca ETH-Nedēļas Radniecīgo)
Hipotēzes
A SINGLE-LEG, pilnībā ar skaidru naudu nodrošināta nedēļas PUT-WRITING programma uz Deribit ETH opcijām — otrs vislikvīdākais kripto opciju bāzes aktīvs, atkārtoti izmantojot EXACT izpildes ceļu (strike izvēle caur grieķiem, nedēļas norēķins skaidrā naudā) no fabrikas Sharpe-12.2 paaugstinātā Deribit-BTC-nedēļas pārdošanas opcijas rakstīšanas risinājuma. Tas ir tīši izstrādāts, lai FIX vienu, atkārtoti diagnosticētu iemeslu, kāpēc ETH-nedēļas radniecīgais risinājums tika pārtraukts 8 iterācijās: tā IV-ranga + IV>RV dubultais filtrs pieprasīja ~560-dienu retrospektīvo logu, kas to samazināja līdz tikai 4 darījumiem / metrics_reliable=false — strukturāls strupceļš, ko izstrādātājs nekad nevarēja atrisināt. Šī versija DROPS garā retrospektīvā loga IV filtru pilnībā un patur ONLY tikai tendences filtru (filtrs, kas ir pierādīts kā nesošais paaugstinātajā BTC uzvarētājā), rakstot fiksētu ~25-delta OTM ETH pārdošanas opciju katrā atbilstošā nedēļā. Bez vairāku gadu IV-procentiles atkarības tas nostrādā ~40-52 reizes/gadā pieejamajā Deribit ETH nedēļas vēsturē → statistiski uzticams darījumu skaits, novēršot tieši 4-darījumu sienu. Tas aizpilda visnepieteicamāk pārstāvēto platformu (opcijas: 5.5% Deribit + 0.1% Binance pret ≥15% mērķi) un diversificē opciju portfeli no BTC-tikai uz otru nesakārīgas volatilitātes bāzes aktīvu. Tas NOT ir daudzkāju struktūra (L2), NOT ir datu norobežota šūna (nedēļas ETH ķēde + grieķi ir katalogizēti un pierādīti izpildāmi caur BTC radniecīgo), NOT virziena. Apzināti 2 parametri (pārdošanas opcijas delta, tendences filtra garums), lai izturētu pārmērīgu pielāgošanu.
Hipotēzes
Iterācija 3 labo Layer-3 sienas pulksteņa noildzi ar tikai konfigurācijas izmaiņu; stratēģija CODE ir nemainīga (tā jau izturēja Slāņus 1-2, darbs pa joslām ir O(1) caur inkrementālu skrejošo summu SMA, un nav katras joslas min()/sorted()/vēstures skenējumu). Diagnoze: iterācija 2 pareizi pārvietoja primāro+kājas izšķirtspēju uz 1-DAY, bet STILL noildzēja, kas pierāda, ka šaurā vieta nav joslu skaits. Lasot src/data/option_chain.py: discover_deribit_chain izdod tīkla fetch_ohlcv pieprasījumu katram kandidāta strikam no EACH nedēļas termiņa beigām, un Layer-3 smilškaste aptver lookback_days (expand_rolling_options / konveijera noklusējums 365). Tātad izvēršanas izmaksas mērogojas atkarībā no nedēļas termiņa beigu skaita = lookback_days, neatkarīgi no laika ietvara. Iter-2's konfigurācija nesa lookback_days ~730 (~104 termiņa beigas, dubultojot pieprasījumu skaitu), kas pārsniedza 300s budžetu. Atgriežot lookback_days uz 365 (~52 termiņa beigas), tiek uz pusi samazināti termiņa beigu pieprasījumi un kāju lejupielādes, atbilstot precīzi tādam mērogam, kādā pierādītie ETH/BTC nedēļas pārdošanas opcijas rakstīšanas radniecīgie iztur Slāni 3, vienlaikus joprojām nosedzot ~52 atbilstošas nedēļas, lai darījumu skaits paliek statistiski uzticams (~30-52 rakstīšanas pēc tendences filtrēšanas) un tālu virs 4-darījumu strupceļa. Viss pārējais ir saglabāts un pierādīts: tieša RollingOptionsStrategy apakšklase (Layer-1 to atpazīst; 4 abstraktie āķi ir fiziski klāt), bez ātrtesta ceļa (īstās opciju kājas tirgojas caur izvērsto grafiku, apmierinot options_no_option_trades), vienīgais cenu tendences filtrs _enter_leg, 1-DAY ETH-PERPETUAL primārais + 1-DAY kājas izšķirtspēja (tā izšķirtspēja, ko izmanto izturošais ETH pārdošanas opcijas rakstīšanas radniecīgais), ar skaidru naudu nodrošināta izmēru noteikšana (risk_frac 0.8, svira 1.0 saskaņā ar opciju platformas ierobežojumu), un 2-parametru dizains (pārdošanas opcijas nobīde + sma_window).
Hipotēzes
backtest_failed: RuntimeError: rolling_options izvēršana neizdevās (ConnectError: ); atsakās darbināt ar tukšu opciju grafiku
Izsekošana (pēdējais izsaukums pēdējais):
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", rinda 101, funkcijā map_httpcore_exceptions
yield
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", rinda 394, funkcijā handle_async_request
resp = await self._pool.handle_async_request(req)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", rinda 256, funkcijā handle_async_request
raise exc from None
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", rinda 236, funkcijā handle_async_request
response = await connection.handle_async_request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", rinda 101, funkcijā handle_async_request
raise exc
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", rinda 78, funkcijā handle_async_request
stream = await self._connect(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", rinda 156, funkcijā _connect
stream = await stream.start_tls(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_backends/anyio.py", rinda 67, funkcijā start_tls
with map_exceptions(exc_map):
Datne "/usr/lib/python3.12/contextlib.py", rinda 158, funkcijā __exit__
self.gen.throw(value)
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_exceptions.py", rinda 14, funkcijā map_exceptions
raise to_exc(exc) from exc
httpcore.ConnectError
Iepriekš minētais izņēmums bija tiešais nākamā izņēmuma cēlonis:
Izsekošana (pēdējais izsaukums pēdējais):
Datne "/opt/strategy-factory/src/agents/backtest_agent.py", rinda 49, funkcijā expand_rolling_options_into_config
extra_i, extra_bt, sched = await expand_rolling_options(collector, spec, start, end)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/data/option_chain.py", rinda 242, funkcijā expand_rolling_options
contracts = await discover_deribit_chain(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/data/option_chain.py", rinda 143, funkcijā discover_deribit_chain
perp_bars = await collector.fetch_ohlcv(perp, start_ms, end_ms, "1D")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/data/collectors/deribit_collector.py", rinda 169, funkcijā fetch_ohlcv
result = await self._get("/public/get_tradingview_chart_data", {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/data/collectors/deribit_collector.py", rinda 86, funkcijā _get
response = await self._client.get(f"{DERIBIT_API_URL}{endpoint}", params=params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1768, funkcijā get
return await self.request(
^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1540, funkcijā request
return await self.send(request, auth=auth, follow_redirects=follow_redirects)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1629, funkcijā send
response = await self._send_handling_auth(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1657, funkcijā _send_handling_auth
response = await self._send_handling_redirects(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1694, funkcijā _send_handling_redirects
response = await self._send_single_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1730, funkcijā _send_single_request
response = await transport.handle_async_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", rinda 393, funkcijā handle_async_request
with map_httpcore_exceptions():
Datne "/usr/lib/python3.12/contextlib.py", rinda 158, funkcijā __exit__
self.gen.throw(value)
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", rinda 118, funkcijā map_httpcore_exceptions
raise mapped_exc(message) from exc
httpx.ConnectError
Iepriekš minētais izņēmums bija tiešais nākamā izņēmuma cēlonis:
Izsekošana (pēdējais izsaukums pēdējais):
Datne "/opt/strategy-factory/src/agents/backtest_agent.py", rinda 184, funkcijā _run_backtest
config = await self._maybe_expand_rolling_options(config, catalog_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/agents/backtest_agent.py", rinda 427, funkcijā _maybe_expand_rolling_options
config = await expand_rolling_options_into_config(config, catalog_path, self._logger)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/agents/backtest_agent.py", rinda 59, funkcijā expand_rolling_options_into_config
raise RuntimeError(
RuntimeError: rolling_options izvēršana neizdevās (ConnectError: ); atsakās darbināt ar tukšu opciju grafiku
Implementācija
Viena kāja, ar skaidru naudu nodrošināta nedēļas OTM pārdošanas opciju rakstīšana uz ETH Deribit Eiropas opcijām, filtrēta tikai ar tendenci. Katru nedēļu ietvars atrisina vēsturisko Deribit ETH nedēļas pārdošanas opciju ķēdi (mērķējot uz ~25-delta OTM strike, izmantojot -6% cenas nobīdi) un to atjauno; stratēģija SELLS vienu pārdošanas opciju ~7 dienas līdz termiņa beigām un aizver to ~24h pirms norēķina. ONLY filtrs ir tikai cenu tendences filtrs: tā raksta pārdošanas opciju tikai tad, kad ETH spot cena ir virs tās ~50-dienu SMA (dienas joslas), izlaižot apstiprinātus lejupslīdes periodus. Bez vairāku gadu IV-procentiles loga tā tirgo katru atbilstošu nedēļu (~52/gadā pār 365-dienu logu) statistiski uzticamam darījumu skaitam, tieši novēršot 4-darījumu retrospektīvā loga sienu, kas pārtrauca IV-filtrēto ETH-nedēļas radniecīgo. Primārais = ETH-PERPETUAL.DERIBIT uz 1-DAY joslām (tikai atjaunošanas pulkstenis, nekad netirgo). Ar skaidru naudu nodrošināta izmēru noteikšana (risk_frac 0.8), bez sviras, 2 noregulēti parametri (pārdošanas opcijas nobīde, sma_window).
Verifikācijas rezultāti
CLEAN RESTART 2026-09-04 — šīs palaišanas slēdzienu vēsture un mācīšanās ieraksti tika noņemti, un tā tika restartēta no verifikācijas. Tās iepriekšējā pārtraukšana nāca no konveijera, nevis no tirgus: Layer-2 ietvars nepareizi sasaistīja @staticmethod palīgfunkcijas (labots), QA izdeva galīgos veiktspējas slēdzienus par neoptimizētu ārrtestu (noņemts — QA tagad vērtē tikai pareizību), un smilškastes noildzes nāca no atpakaļtestēšanas slotu resursu trūkuma (labots). Hipotēze un stratēģijas kods nav mainīti. Pārbaudiet kodu pēc nopelniem; veiktspēju vēlāk noteiks pilnā atpakaļtestēšana un optimizētājs.
Verifikācijas rezultāti
Nav nepieciešams.
Verifikācijas rezultāti
Layer-1 atzīmēja self._win.append() kā neierobežotu, bet on_bar apgriež deque katrā joslā (kamēr len > sma_window: popleft()), tāpēc pieaugums ir ierobežots līdz sma_window. Nepareizs pozitīvs rezultāts.
Iteration History
Verifikācija neizdevās (Slānis 3 — smilškastes atpakaļtestēšana): ātrtests pārsniedza 300s sienas pulksteņa limitu. Tas gandrīz vienmēr nozīmē darbu pa joslām, kas mērogojas atkarībā no vēstures — piemēram, atkārtota visas finansēšanas/papildu sērijas skenēšana, vai saraksta atjaunošana un min()/sorted() izsaukšana calculate_signal()/on_bar() iekšienē katrā joslā. Iepriekš aprēķiniet sakārtotas laika zīmogu masīvus ONCE __init__ un izmantojiet bisect, vai kešojiet meklēšanu pēc laika zīmoga, lai katras joslas izmaksas būtu O(log n), nevis O(n).
Iteration History
RuntimeError: rolling_options izvēršana neizdevās (ConnectError: ); atsakās darbināt ar tukšu opciju grafiku
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
Iepriekš minētā kļūda bija tiešais iemesls šādai kļūdai:
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
Iepriekš minētā kļūda bija tiešais iemesls šādai kļūdai:
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 izvēršana neizdevās (ConnectError: ); atsakās darbināt ar tukšu opciju grafiku
Atmešanas iemesls
backtest_failed: RuntimeError: rolling_options izvēršana neizdevās (ConnectError: ); atsakās darbināt ar tukšu opciju grafiku
Izsekošana (pēdējais izsaukums pēdējais):
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", rinda 101, funkcijā map_httpcore_exceptions
yield
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", rinda 394, funkcijā handle_async_request
resp = await self._pool.handle_async_request(req)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", rinda 256, funkcijā handle_async_request
raise exc from None
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", rinda 236, funkcijā handle_async_request
response = await connection.handle_async_request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", rinda 101, funkcijā handle_async_request
raise exc
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", rinda 78, funkcijā handle_async_request
stream = await self._connect(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", rinda 156, funkcijā _connect
stream = await stream.start_tls(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_backends/anyio.py", rinda 67, funkcijā start_tls
with map_exceptions(exc_map):
Datne "/usr/lib/python3.12/contextlib.py", rinda 158, funkcijā __exit__
self.gen.throw(value)
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_exceptions.py", rinda 14, funkcijā map_exceptions
raise to_exc(exc) from exc
httpcore.ConnectError
Iepriekš minētais izņēmums bija tiešais nākamā izņēmuma cēlonis:
Izsekošana (pēdējais izsaukums pēdējais):
Datne "/opt/strategy-factory/src/agents/backtest_agent.py", rinda 49, funkcijā expand_rolling_options_into_config
extra_i, extra_bt, sched = await expand_rolling_options(collector, spec, start, end)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/data/option_chain.py", rinda 242, funkcijā expand_rolling_options
contracts = await discover_deribit_chain(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/data/option_chain.py", rinda 143, funkcijā discover_deribit_chain
perp_bars = await collector.fetch_ohlcv(perp, start_ms, end_ms, "1D")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/data/collectors/deribit_collector.py", rinda 169, funkcijā fetch_ohlcv
result = await self._get("/public/get_tradingview_chart_data", {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/data/collectors/deribit_collector.py", rinda 86, funkcijā _get
response = await self._client.get(f"{DERIBIT_API_URL}{endpoint}", params=params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1768, funkcijā get
return await self.request(
^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1540, funkcijā request
return await self.send(request, auth=auth, follow_redirects=follow_redirects)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1629, funkcijā send
response = await self._send_handling_auth(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1657, funkcijā _send_handling_auth
response = await self._send_handling_redirects(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1694, funkcijā _send_handling_redirects
response = await self._send_single_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", rinda 1730, funkcijā _send_single_request
response = await transport.handle_async_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", rinda 393, funkcijā handle_async_request
with map_httpcore_exceptions():
Datne "/usr/lib/python3.12/contextlib.py", rinda 158, funkcijā __exit__
self.gen.throw(value)
Datne "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", rinda 118, funkcijā map_httpcore_exceptions
raise mapped_exc(message) from exc
httpx.ConnectError
Iepriekš minētais izņēmums bija tiešais nākamā izņēmuma cēlonis:
Izsekošana (pēdējais izsaukums pēdējais):
Datne "/opt/strategy-factory/src/agents/backtest_agent.py", rinda 184, funkcijā _run_backtest
config = await self._maybe_expand_rolling_options(config, catalog_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/agents/backtest_agent.py", rinda 427, funkcijā _maybe_expand_rolling_options
config = await expand_rolling_options_into_config(config, catalog_path, self._logger)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Datne "/opt/strategy-factory/src/agents/backtest_agent.py", rinda 59, funkcijā expand_rolling_options_into_config
raise RuntimeError(
RuntimeError: rolling_options izvēršana neizdevās (ConnectError: ); atsakās darbināt ar tukšu opciju grafiku
Stratmill ir izpētes un papīra tirdzniecības rīks, nevis finanšu konsultācija vai brokeris. Atpakaļejošās testēšanas un papīra tirdzniecības rezultāti ir hipotētiski. Tirdzniecība ir saistīta ar zaudējumu risku.