Naar inhoud gaan
Alle strategieën

Strategieën

Deribit ETH Wekelijkse Cash-Secured OTM Put-Write — Alleen Trend-Gated, Vaste ~25-Delta, NO Lange-Terugkijk IV-Poort (Single-Leg VRP-Oogst; Herstelt Direct de 4-Trades-Terugkijkmuur Die de ETH-Wekelijkse Zuster Deed Opgave)

Uitkomst: Gestaakt

DeribitEthWeeklyPutWriteTrendGatedOnly

Deribit ETH Wekelijkse Cash-Secured OTM Put-Write — Alleen Trend-Gated, Vaste ~25-Delta, NO Lange-Terugkijk IV-Poort (Single-Leg VRP-Oogst; Herstelt Direct de 4-Trades-Terugkijkmuur Die de ETH-Wekelijkse Zuster Deed…

Hypothese

Een SINGLE-LEG, volledig cash-gedekt wekelijks PUT-WRITING-programma op Deribit ETH-opties — de op één na meest liquide crypto-optieonderliggende, waarbij het EXACT-executiepad (strike-selectie via greeks, wekelijkse cash-afwikkeling) wordt hergebruikt van de door de fabriek gepromoveerde Sharpe-12.2 Deribit-BTC-wekelijkse put-write. Het is bewust ontworpen om FIX de ene, herhaaldelijk gediagnosticeerde reden waarom de ETH-wekelijkse zuster over 8 iteraties heen werd opgegeven: haar IV-rank + IV>RV dubbele poort……Meer tonenMinder tonen

Een SINGLE-LEG, volledig cash-gedekt wekelijks PUT-WRITING-programma op Deribit ETH-opties — de op één na meest liquide crypto-optieonderliggende, waarbij het EXACT-executiepad (strike-selectie via greeks, wekelijkse cash-afwikkeling) wordt hergebruikt van de door de fabriek gepromoveerde Sharpe-12.2 Deribit-BTC-wekelijkse put-write. Het is bewust ontworpen om FIX de ene, herhaaldelijk gediagnosticeerde reden waarom de ETH-wekelijkse zuster over 8 iteraties heen werd opgegeven: haar IV-rank + IV>RV dubbele poort vereiste een ~560-daagse voortschrijdende terugkijkperiode, wat haar beperkte tot slechts 4 trades / metrics_reliable=false — een structurele doodlopende weg die de ontwikkelaar nooit kon oplossen. Deze versie DROPS de lange-terugkijk IV-poort volledig en behoudt ONLY de trendfilter (de poort waarvan bewezen is dat deze dragend is in de gepromoveerde BTC-winnaar), en schrijft elke in aanmerking komende week een vaste ~25-delta OTM ETH put. Zonder meerjarige IV-percentiel-afhankelijkheid vuurt hij ~40-52 keer/jaar over de beschikbare Deribit ETH-wekelijkse historie → een statistisch betrouwbaar aantal trades, waarmee precies de 4-trades-muur wordt weggenomen. Hij vult de meest ondervertegenwoordigde venue (opties: 5.5% Deribit + 0.1% Binance tegenover een ≥15%-doel) en diversifieert het optieboek van BTC-alleen naar een tweede onderliggende met ongecorreleerde vol. Het is NOT een multi-leg-structuur (L2), NOT een door data afgebakende cel (wekelijkse ETH-chain + greeks zijn gecatalogiseerd en bewezen uitvoerbaar via de BTC-zuster), NOT directioneel. Bewust 2 parameters (put-delta, lengte trendfilter) om overfit te weerstaan.

Iteratie 3 verhelpt de time-out van de wandklok in laag -3 met alleen een configuratiewijziging; de strategie CODE is ongewijzigd (deze slaagde al voor lagen 1-2; het werk per bar is O(1) via een incrementele lopende som SMA, en er zijn geen min()/sorted()-aanroepen of scans van de geschiedenis per bar). Diagnose: iteratie 2 verplaatste de oplossing van primair instrument + leg terecht naar 1-DAY, maar STILL liep tegen een time-out aan. Dat bewijst dat het knelpunt niet het aantal bars is. Uit het lezen van……Meer tonenMinder tonen

Iteratie 3 verhelpt de time-out van de wandklok in laag -3 met alleen een configuratiewijziging; de strategie CODE is ongewijzigd (deze slaagde al voor lagen 1-2; het werk per bar is O(1) via een incrementele lopende som SMA, en er zijn geen min()/sorted()-aanroepen of scans van de geschiedenis per bar). Diagnose: iteratie 2 verplaatste de oplossing van primair instrument + leg terecht naar 1-DAY, maar STILL liep tegen een time-out aan. Dat bewijst dat het knelpunt niet het aantal bars is. Uit het lezen van src/data/option_chain.py blijkt: discover_deribit_chain voert voor elke kandidaatstrike van een wekelijkse expiratie EACH een netwerk-fetch_ohlcv-controle uit, en de sandbox van laag -3 omvat lookback_days (expand_rolling_options / standaardwaarde van de pipeline 365). De uitbreidingskosten schalen dus met het aantal wekelijkse expiraties = lookback_days, ongeacht het tijdsinterval. De configuratie van iter-2 bevatte lookback_days ~730 (~104 expiraties, een verdubbeling van het aantal controles), waardoor het budget van 300 seconden werd overschreden. Door lookback_days terug te zetten naar 365 (~52 expiraties), worden de controles op expiraties en het downloaden van legs gehalveerd. Dat komt overeen met de schaal waarop de bewezen wekelijkse put-write-varianten ETH/BTC laag 3 doorstaan, terwijl er nog steeds ongeveer 52 geschikte weken worden bestreken. Zo blijft het aantal trades statistisch betrouwbaar (~30-52 geschreven puts na trendfiltering) en ruim boven de doodlopende grens van 4 trades. Al het overige blijft behouden en is bewezen: rechtstreeks subclassen van RollingOptionsStrategy (laag -1 herkent deze; de abstracte hooks 4 zijn daadwerkelijk aanwezig), geen rooktestpad (er wordt daadwerkelijk gehandeld in optielegs via het uitgebreide schema, waarmee aan options_no_option_trades wordt voldaan), de enige prijsgebaseerde trendfilter in _enter_leg, oplossing van primair instrument in 1-DAY ETH-PERPETUAL plus oplossing van legs in 1-DAY (de oplossing die de geslaagde put-write-variant ETH gebruikt), cash-secured positiegrootte (risk_frac 0.8, leverage 1.0 volgens de limiet van het optieplatform) en het ontwerp met 2 parameters (put-offset + sma_window).

backtest_failed: RuntimeError: rolling_options-expansie mislukt (ConnectError: ); weigert te draaien met een leeg optieschema 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^……Meer tonenMinder tonen

backtest_failed: RuntimeError: rolling_options-expansie mislukt (ConnectError: ); weigert te draaien met een leeg optieschema 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 De bovenstaande uitzondering was de directe oorzaak van de volgende uitzondering: 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 De bovenstaande uitzondering was de directe oorzaak van de volgende uitzondering: 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-expansie mislukt (ConnectError: ); weigert te draaien met een leeg optieschema

Implementatie

Single-leg, cash-secured wekelijks OTM-put-writing op ETH Deribit Europese opties, alleen trend-gated. Elke week bepaalt het framework de historische Deribit ETH-wekelijkse put-chain (met als doel een ~25-delta OTM-strike via een -6%-moneyness-offset) en rolt deze; de strategie SELLS één put ~7 dagen voor expiratie en sluit deze ~24u voor afwikkeling. De ONLY-poort is een trendfilter op alleen prijs: hij schrijft de put alleen wanneer ETH-spot boven zijn ~50-daagse SMA staat (dagelijkse bars), en blijft uit bevestigde neerwaartse trends. Zonder meerjarig IV-percentielvenster handelt hij elke in aanmerking komende week (~52/jaar over het 365-daagse venster) voor een statistisch betrouwbaar aantal trades, waarmee direct de 4-trades-terugkijkmuur wordt weggenomen die de IV-gated ETH-wekelijkse zuster deed opgave. Primair = ETH-PERPETUAL.DERIBIT op 1-DAY-bars (alleen rolklok, nooit verhandeld). Cash-secured-sizing (risk_frac 0.8), geen hefboom, 2 afgestemde parameters (put-offset, sma_window).

Verificatieresultaten

CLEAN RESTART 2026-09-04 — de oordelingsgeschiedenis en leerrecords van deze run zijn verwijderd en hij is opnieuw gestart vanaf verificatie. De eerdere opgave kwam uit de pipeline, niet uit de markt: de Layer-2-harness bond @staticmethod-helpers verkeerd (opgelost), QA gaf definitieve prestatie-uitspraken af over een niet-geoptimaliseerde rooktest (verwijderd — QA beoordeelt nu alleen correctheid), en sandbox-time-outs kwamen van uithongering van backtest-slots (opgelost). De hypothese en de strategiecode zijn ongewijzigd. Verifieer de code op zijn merites; de prestatie wordt later beslist door de volledige backtest en de optimizer.

Niet nodig.

Layer-1 markeerde self._win.append() als onbegrensd, maar on_bar kort de deque elke bar in (while len > sma_window: popleft()), waardoor de groei beperkt blijft tot sma_window. Fout-positief.

Iteratiegeschiedenis

Verificatie mislukt (Layer 3 — sandbox-backtest): rooktest overschreed de 300s wandkloklimiet. Dit betekent bijna altijd per-bar-werk dat schaalt met de historie — bijv. het opnieuw scannen van de volledige funding-/aanvullende reeks, of het herbouwen van een lijst en het aanroepen van min()/sorted() binnen calculate_signal()/on_bar() op elke bar. Bereken gesorteerde timestamp-arrays ONCE vooraf in __init__ en gebruik bisect, of cache lookups gesleuteld op timestamp, zodat de kosten per bar O(log n) zijn en niet O(n).

RuntimeError: uitbreiding van rolling_options mislukt (ConnectError: ); weigert te starten met een leeg optieschema 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……Meer tonenMinder tonen

RuntimeError: uitbreiding van rolling_options mislukt (ConnectError: ); weigert te starten met een leeg optieschema 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: uitbreiding van rolling_options mislukt (ConnectError: ); weigert te starten met een leeg optieschema

Reden voor afbreken

backtest_failed: RuntimeError: uitbreiding rolling_options mislukt (ConnectError: ); weigert uit te voeren met een leeg optieschema Traceback (meest recente aanroep als laatste): 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)……Meer tonenMinder tonen

backtest_failed: RuntimeError: uitbreiding rolling_options mislukt (ConnectError: ); weigert uit te voeren met een leeg optieschema Traceback (meest recente aanroep als laatste): 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 De bovenstaande uitzondering was de directe oorzaak van de volgende uitzondering: Traceback (meest recente aanroep als laatste): 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 De bovenstaande uitzondering was de directe oorzaak van de volgende uitzondering: Traceback (meest recente aanroep als laatste): 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: uitbreiding rolling_options mislukt (ConnectError: ); weigert uit te voeren met een leeg optieschema

Stratmill is een onderzoeks- en papertrading-tool, geen financieel advies of broker. Backtest- en paperresultaten zijn hypothetisch. Handelen brengt risico op verlies met zich mee.