Siirry sisältöön

Näytä alkuperäinen

DeribitEthWeeklyPutWriteTrendGatedOnly

Hypoteesit

Deribit ETH Viikoittainen Käteisvakuudellinen OTM Put-Write — Vain Trendiportin Kanssa, Kiinteä ~25-Delta, NO Pitkän Takaisinkatseluikkunan IV-Portti (Yksiosainen VRP-Korjuu; Korjaa Suoraan 4-Kaupan Takaisinkatseluikkunamuurin, Joka Hylkäsi ETH-Viikoittaisen Sisarstrategian)

Hypoteesit

SINGLE-LEG, täysin käteisvakuudellinen viikoittainen PUT-WRITING-ohjelma Deribitin ETH-optioilla — toiseksi likvidein kryptovaluuttaoptioiden kohde-etuus, jossa hyödynnetään uudelleen tehtaan Sharpe-12.2-luokiteltua, ylennettyä Deribit-BTC-viikoittaista put-write-strategiaa käyttävää EXACT-toteutuspolkua (strike-valinta greekkojen kautta, viikoittainen käteisselvitys). Se on tarkoituksella suunniteltu FIX sen yhden, toistuvasti diagnosoidun syyn, jonka vuoksi ETH-viikoittainen sisarstrategia hylättiin 8 iteraation aikana: sen IV-rank + IV>RV -kaksoisportti vaati ~560 päivän liukuvan takaisinkatseluikkunan, mikä rajasi sen vain 4 kauppaan / metrics_reliable=false — rakenteellinen umpikuja, jota kehittäjä ei koskaan pystynyt ratkaisemaan. Tämä versio DROPS pitkän takaisinkatseluikkunan IV-portin kokonaan ja säilyttää ONLY trendisuodattimen (portin, joka on osoitettu kantavaksi ylennetyssä BTC-voittajastrategiassa), kirjoittaen kiinteän ~25-deltan OTM ETH put-option joka soveltuvana viikkona. Koska monivuotista IV-persentiiliriippuvuutta ei ole, se laukeaa ~40-52 kertaa/vuosi käytettävissä olevan Deribitin ETH-viikoittaisen historian aikana → tilastollisesti luotettava kauppamäärä, mikä poistaa juuri sen 4-kaupan muurin. Se täyttää aliedustetuimman kauppapaikan (optiot: 5.5% Deribit + 0.1% Binance vastaan ≥15%-tavoite) ja monipuolistaa optiosalkkua BTC-yksinomaisuudesta toiseen korreloimattomaan volatiliteetin kohde-etuuteen. Se on NOT moniosainen rakenne (L2), NOT datamuurattu solu (viikoittainen ETH-ketju + greekat on luetteloitu ja osoitettu suoritettavaksi BTC-sisarstrategian kautta), NOT suunnattu. Tarkoituksella 2 parametrit (put-delta, trendisuodattimen pituus) ylisovittamisen välttämiseksi.

Hypoteesit

Iteraatio 3 korjaa Layer-3-seinäkellon aikakatkaisun pelkällä konfiguraatiomuutoksella; strategian CODE on muuttumaton (se läpäisi jo Layerit 1-2, baaria kohden tehtävä työ on O(1) inkrementaalisen juoksevan summan SMA kautta, eikä baaria kohden ole min()/sorted()/historiaskannauksia). Diagnoosi: iteraatio 2 siirsi oikein primary+leg-ratkaisun 1-DAY-tasolle, mutta STILL aikakatkaistiin silti, mikä todistaa, ettei pullonkaula ole baarimäärä. Tiedostoa src/data/option_chain.py lukiessa: discover_deribit_chain lähettää verkko-fetch_ohlcv-koettimen jokaiselle EACH-viikoittaisen erääntymisen ehdokas-strikelle, ja Layer-3-hiekkalaatikko kattaa lookback_days (expand_rolling_options / putken oletusarvo 365). Laajennuksen kustannus siis skaalautuu viikoittaisten erääntymisten määrän mukaan = lookback_days, riippumatta aikaikkunasta. iter-2:n konfiguraatiossa oli lookback_days ~730 (~104 erääntymistä, kaksinkertaistaen koettimien määrän), mikä ylitti 300 s:n budjetin. Palauttamalla lookback_days takaisin arvoon 365 (~52 erääntymistä) puolittaa erääntymiskoettimet ja leg-lataukset, vastaten tarkalleen sitä mittakaavaa, jolla todistetut ETH/BTC-viikoittaiset put-write-sisarstrategiat läpäisevät Layerin 3, kattaen silti ~52 soveltuvaa viikkoa, joten kauppamäärä pysyy tilastollisesti luotettavana (~30-52 kirjoitusta trendiportin jälkeen) ja kaukana 4-kaupan umpikujasta. Kaikki muu on säilytetty ja todistettu: RollingOptionsStrategy-luokan suora periytyminen (Layer-1 tunnistaa sen; 4-abstraktikoukut ovat fyysisesti läsnä), ei savupolkua (todelliset option-legit käyvät kauppaa laajennetun aikataulun kautta, mikä täyttää options_no_option_trades), ainoa pelkkään hintaan perustuva trendiportti funktiossa _enter_leg, 1-DAY ETH-PERPETUAL primary + 1-DAY leg-ratkaisu (ratkaisu, jota läpäisevä ETH put-write-sisarstrategia käyttää), käteisvakuudellinen mitoitus (risk_frac 0.8, vipuvaikutus 1.0 option-kauppapaikan katon mukaisesti), ja 2-parametrinen suunnittelu (put-offset + sma_window).

Hypoteesit

backtest_failed: RuntimeError: rolling_options -laajennus epäonnistui (ConnectError: ); kieltäytyy suorittamasta tyhjällä optioaikataululla Traceback (viimeisin kutsu viimeisenä): 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 Yllä oleva poikkeus oli suoraan seuraavan poikkeuksen aiheuttaja: Traceback (viimeisin kutsu viimeisenä): 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 Yllä oleva poikkeus oli suoraan seuraavan poikkeuksen aiheuttaja: Traceback (viimeisin kutsu viimeisenä): 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 -laajennus epäonnistui (ConnectError: ); kieltäytyy suorittamasta tyhjällä optioaikataululla

Toteutus

Yksiosainen, käteisvakuudellinen viikoittainen OTM put-kirjoitus ETH Deribitin eurooppalaisilla optioilla, vain trendiportilla. Joka viikko kehys ratkaisee historiallisen Deribitin ETH viikoittaisen put-ketjun (tavoitteena ~25-deltan OTM-strike -6% moneyness-offsetin kautta) ja rullaa sen; strategia SELLS yhden put-option ~7 päivää ennen erääntymistä ja sulkee sen ~24 h ennen selvitystä. ONLY-portti on pelkkään hintaan perustuva trendisuodatin: se kirjoittaa put-option vain, kun ETH spot on yli ~50 päivän SMA-liukuvan keskiarvon (päiväbaarit), pysyen sivussa vahvistetuissa laskutrendeissä. Koska monivuotista IV-persentiili-ikkunaa ei ole, se käy kauppaa joka soveltuvana viikkona (~52/vuosi 365 päivän ikkunan aikana) tilastollisesti luotettavan kauppamäärän saavuttamiseksi, mikä poistaa suoraan 4-kaupan takaisinkatseluikkunamuurin, joka hylkäsi IV-portilla varustetun ETH-viikoittaisen sisarstrategian. Primary = ETH-PERPETUAL.DERIBIT 1-DAY-baareilla (vain rullauskello, ei koskaan kaupankäynnin kohteena). Käteisvakuudellinen mitoitus (risk_frac 0.8), ei vipuvaikutusta, 2 viritetyt parametrit (put-offset, sma_window).

Varmennuksen tulokset

CLEAN RESTART 2026-09-04 — tämän ajon tuomiohistoria ja oppimistiedot poistettiin, ja se käynnistettiin uudelleen varmennuksesta. Sen aiempi hylkääminen johtui putkesta, ei markkinasta: Layer-2-testikehys sitoi @staticmethod-apufunktiot virheellisesti (korjattu), QA antoi lopullisia suoritustuomioita optimoimattomasta savutestistä (poistettu — QA arvioi nyt vain oikeellisuutta), ja hiekkalaatikon aikakatkaisut johtuivat backtest-paikkojen nälkiintymisestä (korjattu). Hypoteesi ja strategian koodi ovat muuttumattomia. Varmenna koodi sen ansioiden perusteella; suorituskyky ratkaistaan myöhemmin täydellä backtestillä ja optimoijalla.

Varmennuksen tulokset

Ei tarvita.

Varmennuksen tulokset

Layer-1 merkitsi self._win.append()-kutsun rajoittamattomaksi, mutta on_bar typistää dequen joka baarilla (while len > sma_window: popleft()), joten kasvu on rajattu arvoon sma_window. Virheellinen positiivinen tulos.

Iteration History

Varmennus epäonnistui (Layer 3 — hiekkalaatikon backtest): savutesti ylitti 300 s seinäkellon aikarajan. Tämä tarkoittaa lähes aina baaria kohden tehtävää työtä, joka skaalautuu historian mukaan — esim. koko funding-/lisäsarjan uudelleenskannaus tai listan uudelleenrakentaminen ja min()/sorted()-kutsuminen funktioiden calculate_signal()/on_bar() sisällä joka baarilla. Esilaske järjestetyt aikaleimataulukot ONCE __init__-metodissa ja käytä bisectiä, tai välimuistita haut aikaleiman mukaan avaimistettuna, jotta baaria kohden kustannus on O(log n) eikä O(n).

Iteration History

RuntimeError: rolling_options-laajennus epäonnistui (ConnectError: ); kieltäytyy ajamasta tyhjällä option-aikataululla Jäljitys (viimeisin kutsu viimeisenä): 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 Yllä oleva poikkeus oli suora syy seuraavaan poikkeukseen: Jäljitys (viimeisin kutsu viimeisenä): 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 Yllä oleva poikkeus oli suora syy seuraavaan poikkeukseen: Jäljitys (viimeisin kutsu viimeisenä): 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-laajennus epäonnistui (ConnectError: ); kieltäytyy ajamasta tyhjällä option-aikataululla

Hylkäyksen syy

backtest_failed: RuntimeError: rolling_options -laajennus epäonnistui (ConnectError: ); kieltäytyy suorittamasta tyhjällä optioaikataululla Traceback (viimeisin kutsu viimeisenä): 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 Yllä oleva poikkeus oli suoraan seuraavan poikkeuksen aiheuttaja: Traceback (viimeisin kutsu viimeisenä): 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 Yllä oleva poikkeus oli suoraan seuraavan poikkeuksen aiheuttaja: Traceback (viimeisin kutsu viimeisenä): 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 -laajennus epäonnistui (ConnectError: ); kieltäytyy suorittamasta tyhjällä optioaikataululla
Strategiaraportti

Stratmill on tutkimus- ja paperikaupankäyntityökalu, ei sijoitusneuvontaa tai välittäjä. Takaisintestaus- ja paperikaupankäyntitulokset ovat hypoteettisia. Kaupankäyntiin liittyy tappion riski.