DeribitEthWeeklyPutWriteTrendGatedOnly
Hipotezler
Deribit ETH Haftalık Nakit Teminatlı OTM Put-Write — Yalnızca Trend Kapılı, Sabit ~25-Delta, NO Uzun-Lookback IV Kapısı (Tek Bacaklı VRP Hasadı; ETH-Haftalık Kardeşi Terk Ettiren 4-İşlem Lookback Duvarını Doğrudan Düzeltir)
Hipotezler
Deribit ETH opsiyonları üzerinde SINGLE-LEG, tamamen nakit teminatlı haftalık PUT-WRITING programı — en likit ikinci kripto opsiyon dayanak varlığı; factory'nin Sharpe-12.2 ile terfi ettirdiği Deribit-BTC-haftalık put-write'ın EXACT işlem yolunu (greeks üzerinden strike seçimi, haftalık nakit uzlaşma) yeniden kullanıyor. ETH-haftalık kardeşin 8 iterasyon boyunca terk edilmesine yol açan, tekrar tekrar teşhis edilmiş tek nedeni FIX için kasıtlı olarak tasarlandı: IV-sıra + IV>RV çift kapısı ~560 günlük hareketli bir lookback gerektiriyordu, bu da onu yalnızca 4 işleme / metrics_reliable=false düzeyine indiriyordu — geliştiricinin asla çözemediği yapısal bir çıkmaz. Bu sürüm uzun-lookback IV kapısını DROPS tamamen ortadan kaldırıyor ve trend filtresini (BTC kazananında yük taşıdığı kanıtlanmış kapı) ONLY koruyarak, uygun her hafta sabit ~25-delta OTM ETH put yazıyor. Çok yıllı IV-yüzdelik bağımlılığı olmadan, mevcut Deribit ETH haftalık geçmişi boyunca yılda ~40-52 kez tetikleniyor → istatistiksel olarak güvenilir bir işlem sayısı sağlıyor ve tam olarak 4-işlem duvarını ortadan kaldırıyor. En az temsil edilen venue'yu (opsiyonlar: 5.5% Deribit + 0.1% Binance, ≥15% hedefine karşı) dolduruyor ve opsiyon defterini yalnızca BTC'dan, korelasyonsuz ikinci bir volatilite dayanak varlığına çeşitlendiriyor. NOT çok bacaklı bir yapıdır (L2), NOT veri açısından duvarlı bir hücredir (haftalık ETH zinciri + greeks kataloglanmış ve BTC kardeş strateji üzerinden çalıştırılabilirliği kanıtlanmış), NOT yönlüdür. Aşırı uyumu önlemek için parametreler (put deltası, trend-filtresi uzunluğu) kasıtlı olarak 2.
Hipotezler
İterasyon 3, Layer-3 gerçek zamanlı (wall-clock) zaman aşımını yalnızca konfigürasyon değişikliğiyle düzeltir; strateji CODE değişmemiştir (zaten Layer 1-2'ü geçmişti, bar-başına iş artımlı bir running-sum SMA üzerinden O(1)'dır ve bar-başına min()/sorted()/geçmiş taraması yoktur). Teşhis: iterasyon 2, primary+leg çözümlemesini doğru şekilde 1-DAY'e taşıdı ancak STILL zaman aşımına uğradı; bu da darboğazın bar sayısı olmadığını kanıtlar. src/data/option_chain.py dosyasını okuduğumuzda: discover_deribit_chain, EACH haftalık vadenin her aday strike'ı için bir ağ fetch_ohlcv sorgusu (probe) gönderiyor ve Layer-3 sandbox'ı lookback_days'i (expand_rolling_options / pipeline varsayılanı 365) kapsıyor. Yani genişletme maliyeti, zaman diliminden bağımsız olarak haftalık vade sayısı = lookback_days ile ölçekleniyor. iter-2'un konfigürasyonu lookback_days ~730 taşıyordu (~104 vade, sorgu sayısını ikiye katlıyordu), bu da 300s bütçesini aştı. lookback_days'ü 365'e geri döndürmek (~52 vade) vade sorgularını ve leg indirmelerini yarıya indiriyor; bu da kanıtlanmış ETH/BTC haftalık put-write kardeşlerinin Layer 3'i geçtiği tam ölçekle eşleşiyor, aynı zamanda hâlâ ~52 uygun haftayı kapsayarak işlem sayısının istatistiksel olarak güvenilir kalmasını (trend kapısından sonra ~30-52 yazım) ve 4-işlem çıkmazının çok üzerinde kalmasını sağlıyor. Geri kalan her şey korunmuş ve kanıtlanmıştır: RollingOptionsStrategy'den doğrudan alt sınıflama (Layer-1 bunu tanıyor; 4 soyut hook'ları fiziksel olarak mevcut), smoke yolu yok (gerçek opsiyon legleri genişletilmiş program üzerinden işlem görüyor, options_no_option_trades'ü karşılıyor), _enter_leg içindeki tek fiyata dayalı trend kapısı, 1-DAY ETH-PERPETUAL primary + 1-DAY leg çözümlemesi (geçen ETH put-write kardeşinin kullandığı çözümleme), nakit teminatlı boyutlandırma (risk_frac 0.8, kaldıraç 1.0, opsiyon venue üst sınırına göre) ve 2-parametreli tasarım (put ofseti + sma_window).
Hipotezler
backtest_failed: RuntimeError: rolling_options genişletme işlemi başarısız oldu (ConnectError: ); boş bir opsiyon programıyla çalıştırma reddediliyor
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
Yukarıdaki istisna, aşağıdaki istisnanın doğrudan nedeniydi:
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
Yukarıdaki istisna, aşağıdaki istisnanın doğrudan nedeniydi:
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 genişletme işlemi başarısız oldu (ConnectError: ); boş bir opsiyon programıyla çalıştırma reddediliyor
Uygulama
ETH Deribit Avrupa tipi opsiyonlar üzerinde tek bacaklı, nakit teminatlı haftalık OTM put yazımı, yalnızca trend kapılı. Framework her hafta geçmiş Deribit ETH haftalık put zincirini çözümler (-6% moneyness ofseti üzerinden ~25-delta OTM strike'ı hedefleyerek) ve onu yuvarlar (roll); strateji vadeye ~7 gün kala bir put SELLS ve uzlaşmadan ~24 saat önce kapatır. ONLY kapısı yalnızca fiyata dayalı bir trend filtresidir: put'u yalnızca ETH spot fiyatı ~50 günlük SMA üzerindeyken (günlük barlar) yazar; doğrulanmış düşüş trendlerinde işlem yapmaz. Çok yıllı IV-yüzdelik penceresi olmadığından, uygun her hafta işlem yapar (365 günlük pencerede yılda ~52), bu da istatistiksel olarak güvenilir bir işlem sayısı sağlayarak IV-kapılı ETH-haftalık kardeşi terk ettiren 4-işlem lookback duvarını doğrudan ortadan kaldırır. Primary = 1-DAY barlarda ETH-PERPETUAL.DERIBIT (yalnızca roll saati, asla işlem görmez). Nakit teminatlı boyutlandırma (risk_frac 0.8), kaldıraç yok, 2 ayarlanmış parametreler (put ofseti, sma_window).
Doğrulama Sonuçları
CLEAN RESTART 2026-09-04 — bu çalıştırmanın karar geçmişi ve öğrenme kayıtları kaldırıldı ve doğrulama aşamasından yeniden başlatıldı. Önceki terk edilişi piyasadan değil, pipeline'dan kaynaklandı: Layer-2 test düzeneği @staticmethod yardımcı fonksiyonlarını yanlış bağlıyordu (düzeltildi), QA optimize edilmemiş bir smoke testinde nihai performans kararları veriyordu (kaldırıldı — QA artık yalnızca doğruluğu değerlendiriyor) ve sandbox zaman aşımları backtest-slot açlığından kaynaklanıyordu (düzeltildi). Hipotez ve strateji kodu değişmedi. Kodu kendi esasına göre doğrulayın; performans daha sonra tam backtest ve optimizer tarafından belirlenecek.
Doğrulama Sonuçları
Gerekli değil.
Doğrulama Sonuçları
Layer-1, self._win.append()'i sınırsız (unbounded) olarak işaretledi, ancak on_bar her barda deque'yi kırpıyor (while len > sma_window: popleft()), bu yüzden büyüme sma_window ile sınırlıdır. Yanlış pozitif.
Iteration History
Doğrulama başarısız oldu (Layer 3 — sandbox backtest): smoke test 300s gerçek zamanlı (wall-clock) sınırını aştı. Bu neredeyse her zaman geçmişle ölçeklenen bar-başına iş anlamına gelir — örneğin tam funding/ek seriyi yeniden taramak veya her barda calculate_signal()/on_bar() içinde bir liste yeniden oluşturup min()/sorted() çağırmak. Sıralanmış zaman damgası dizilerini ONCE __init__ içinde önceden hesaplayın ve bisect kullanın, ya da zaman damgasına göre anahtarlanmış lookup'ları önbelleğe alın; böylece bar-başına maliyet O(n) değil O(log n) olur.
Iteration History
RuntimeError: rolling_options genişletme işlemi başarısız oldu (ConnectError: ); boş bir opsiyon programıyla çalıştırma reddediliyor
Traceback (most recent call last):
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 101, in map_httpcore_exceptions
yield
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 394, in handle_async_request
resp = await self._pool.handle_async_request(req)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 256, in handle_async_request
raise exc from None
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 236, in handle_async_request
response = await connection.handle_async_request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 101, in handle_async_request
raise exc
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 78, in handle_async_request
stream = await self._connect(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 156, in _connect
stream = await stream.start_tls(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_backends/anyio.py", line 67, in start_tls
with map_exceptions(exc_map):
File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
raise to_exc(exc) from exc
httpcore.ConnectError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/strategy-factory/src/agents/backtest_agent.py", line 49, in expand_rolling_options_into_config
extra_i, extra_bt, sched = await expand_rolling_options(collector, spec, start, end)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/src/data/option_chain.py", line 242, in expand_rolling_options
contracts = await discover_deribit_chain(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/src/data/option_chain.py", line 143, in discover_deribit_chain
perp_bars = await collector.fetch_ohlcv(perp, start_ms, end_ms, "1D")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/src/data/collectors/deribit_collector.py", line 169, in fetch_ohlcv
result = await self._get("/public/get_tradingview_chart_data", {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/src/data/collectors/deribit_collector.py", line 86, in _get
response = await self._client.get(f"{DERIBIT_API_URL}{endpoint}", params=params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
return await self.request(
^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
return await self.send(request, auth=auth, follow_redirects=follow_redirects)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
response = await self._send_handling_auth(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
response = await self._send_handling_redirects(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
response = await self._send_single_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
response = await transport.handle_async_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 393, in handle_async_request
with map_httpcore_exceptions():
File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/opt/strategy-factory/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 118, in map_httpcore_exceptions
raise mapped_exc(message) from exc
httpx.ConnectError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/strategy-factory/src/agents/backtest_agent.py", line 184, in _run_backtest
config = await self._maybe_expand_rolling_options(config, catalog_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/src/agents/backtest_agent.py", line 427, in _maybe_expand_rolling_options
config = await expand_rolling_options_into_config(config, catalog_path, self._logger)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/strategy-factory/src/agents/backtest_agent.py", line 59, in expand_rolling_options_into_config
raise RuntimeError(
RuntimeError: rolling_options genişletme işlemi başarısız oldu (ConnectError: ); boş bir opsiyon programıyla çalıştırma reddediliyor
Vazgeçme Nedeni
backtest_failed: RuntimeError: rolling_options genişletme işlemi başarısız oldu (ConnectError: ); boş bir opsiyon programıyla çalıştırma reddediliyor
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
Yukarıdaki istisna, aşağıdaki istisnanın doğrudan nedeniydi:
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
Yukarıdaki istisna, aşağıdaki istisnanın doğrudan nedeniydi:
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 genişletme işlemi başarısız oldu (ConnectError: ); boş bir opsiyon programıyla çalıştırma reddediliyor
Stratmill bir araştırma ve kağıt üzerinde işlem (paper trading) aracıdır; finansal danışmanlık veya aracı kurum değildir. Geriye dönük test ve kağıt üzerinde işlem sonuçları varsayımsaldır. İşlem yapmak kayıp riski taşır.