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
Stratmill on tutkimus- ja paperikaupankäyntityökalu, ei sijoitusneuvontaa tai välittäjä. Takaisintestaus- ja paperikaupankäyntitulokset ovat hypoteettisia. Kaupankäyntiin liittyy tappion riski.