跳至正文
全部策略

策略

Deribit ETH 每周现金担保 OTM 卖出看跌期权——仅趋势门控、固定约 25-Delta、NO 长期回看 IV 门控(单腿 VRP 收益获取;直接修复导致 ETH-Weekly 姊妹策略被放弃的 4-Trades 回看瓶颈)

结局: 已放弃

DeribitEthWeeklyPutWriteTrendGatedOnly

Deribit ETH 每周现金担保 OTM 卖出看跌期权——仅趋势门控、固定约 25-Delta、NO 长期回看 IV 门控(单腿 VRP 收益获取;直接修复导致 ETH-Weekly 姊妹策略被放弃的 4-Trades 回看瓶颈)

假设

一个 SINGLE-LEG,在 Deribit ETH 期权(流动性第二高的加密期权标的)上完全以现金抵押的每周 PUT-WRITING 程序,复用工厂 Sharpe-12.2 推广的 Deribit-BTC-weekly put-write 的 EXACT 执行路径(通过希腊值选择行权价、每周现金结算)。它被刻意设计以 FIX 那个导致 ETH-weekly 兄弟策略在 8 次迭代中被反复诊断并放弃的唯一原因:其 IV-rank + IV>RV 双重门槛需要一个约 560 天的滚动回溯窗口,将其交易数削减到仅仅 4 笔 / metrics_reliable=false —— 一个开发者永远无法解决的结构性死胡同。本版本 DROPS 完全移除了长回溯的 IV 门槛,并保留 ONLY 趋势过滤器(在推广的 BTC 赢家策略中已被证明为承重门槛),在每个符合条件的周写入一个固定的约 25-delta OTM ETH put。由于不再依赖多年期 IV-percentile,它在可用的 Deribit ETH 周度历史上每年触发约 40-52 次 → 统计上可靠的交易次数,恰好消除了那道 4-trades 之墙。它填补了最被低估的场所(期权:5.5% Deribit + 0.1% Binance vs ≥15% 目标),并将期权组合从仅 BTC 扩展到第二个波动率不相关的标的。它 NOT 是一个多腿结构(L2),NOT 是一个数据封闭单元(周度 ETH 链 + 希腊值已编入目录,并通过 BTC 兄弟策略被证明可执行),NOT 方向性。刻意 2 参数(put delta、趋势过滤器长度)以抵御过拟合。

迭代 3 通过仅修改配置修复了 Layer-3 的墙上时钟超时;策略 CODE 未改变(它已经通过了 Layers 1-2,每根 K 线的工作量通过增量运行总和 SMA 保持为 O(1),且不存在逐 K 线的 min()/sorted()/历史扫描)。诊断结果:迭代 2 正确地将主合约和腿合约解析移至 1-DAY,但 STILL 超时,这证明瓶颈并不在 K 线数量。阅读 src/data/option_chain.py 可知:discover_deribit_chain 会针对 EACH 个每周期权到期日的每个候选行权价发起一次网络 fetch_ohlcv 探测,而 Layer-3 沙箱覆盖 lookback_days(expand_rolling_options / 流水线默认值 365)。因此,扩展成本随每周期权到期日数量 = lookback_days 增长,与时间周期无关。iter-2 的配置包含 lookback_days ~730(约 104 个到期日,使探测数量翻倍),从而耗尽了 300 秒预算。将 lookback_days 恢复为 365(约 52 个到期日)会使到期日探测和腿合约下载量减半,符合已验证的 ETH/BTC 个每周期权卖出看跌期权同类策略能够通过 Layer 3 的确切规模;同时仍覆盖约 52 个符合条件的周,因此交易数量在统计上保持可靠(趋势筛选后约 30-52 次卖出),并远高于 4 笔交易的无效终点。其他内容均保留且已有验证:直接继承 RollingOptionsStrategy(Layer-1 能识别它;所需的 4 抽象钩子在物理上存在),不存在冒烟路径(真实期权腿通过扩展后的计划进行交易,满足 options_no_option_trades),_enter_leg 中唯一的仅价格趋势门控,1-DAY ETH-PERPETUAL 主合约 + 1-DAY 腿合约解析(通过测试的 ETH 卖出看跌期权同类策略所采用的解析方式),现金担保式 sizing(risk_frac 0.8,杠杆为 1.0,遵循期权交易场所上限),以及 2 参数设计(看跌期权偏移量 + sma_window)。

backtest_failed: RuntimeError: rolling_options 扩展失败 (ConnectError: );拒绝使用空期权时间表运行 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……展开收起

backtest_failed: RuntimeError: rolling_options 扩展失败 (ConnectError: );拒绝使用空期权时间表运行 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 上述异常是以下异常的直接原因: 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 上述异常是以下异常的直接原因: 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 扩展失败 (ConnectError: );拒绝使用空期权时间表运行

实现

单腿、现金担保的每周 OTM 看跌期权卖出策略,交易 ETH Deribit 欧洲期权,仅受趋势门控。每周,框架解析历史 Deribit ETH 每周看跌期权链(通过 -6% 虚值程度偏移,目标为约 25-delta 的 OTM 行权价)并进行展期;策略SELLS一张距到期约 7 天的看跌期权,并在结算前约 24 小时平仓。ONLY 门控是一个仅基于价格的趋势过滤器:只有当ETH现货高于其约 50 天的 SMA(日线 K 线)时才卖出看跌期权,避开已确认的下跌趋势。由于没有多年 IV 百分位窗口,它在每个符合条件的星期进行交易(在 365 天窗口内约 52/年),交易数量在统计上可靠,直接消除了导致 IV 门控的 ETH-weekly 姊妹策略被放弃的 4-trades 回看瓶颈。主标的 = ETH-PERPETUAL.DERIBIT,基于 1-DAY K 线(仅用于展期时钟,从不交易)。现金担保头寸规模(risk_frac 0.8),无杠杆,2 调优参数(看跌期权偏移量、sma_window)。

验证结果

CLEAN RESTART 2026-09-04 ——本次运行的判定历史和学习记录已被移除,并从验证阶段重新开始。此前的放弃源于流水线,而非市场:Layer-2 harness 错误绑定了 @staticmethod 辅助函数(已修复),QA 在未经优化的冒烟测试上给出了终止性表现判定(已移除——QA 现在只判断正确性),沙箱超时源于回测槽位饥饿(已修复)。假设和策略代码均未改变。请根据代码本身的优点进行验证;表现将在完整回测和优化器阶段决定。

无需。

Layer-1 将 self._win.append() 标记为无界增长,但 on_bar 会在每根 K 线上裁剪双端队列(当 len > sma_window 时:popleft()),因此增长被限制在 sma_window。误报。

迭代历史

验证失败(Layer 3——沙箱回测):冒烟测试超过了 300 秒的墙钟时间限制。这几乎总是意味着每根 K 线的工作量会随历史长度扩展——例如重新扫描完整的资金费率/补充序列,或在每根 K 线上于 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预计算已排序的时间戳数组 ONCE 并使用 bisect,或缓存以时间戳为键的查找结果,使每根 K 线的成本为 O(log n) 而不是 O(n)。

RuntimeError: rolling_options 展开失败 (ConnectError: ); 拒绝在期权计划为空的情况下运行 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……展开收起

RuntimeError: rolling_options 展开失败 (ConnectError: ); 拒绝在期权计划为空的情况下运行 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 上述异常是下列异常的直接原因: 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 上述异常是下列异常的直接原因: 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 展开失败 (ConnectError: ); 拒绝在期权计划为空的情况下运行

放弃原因

backtest_failed: RuntimeError: rolling_options 扩展失败 (ConnectError: );拒绝使用空期权时间表运行 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……展开收起

backtest_failed: RuntimeError: rolling_options 扩展失败 (ConnectError: );拒绝使用空期权时间表运行 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 上述异常是以下异常的直接原因: 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 上述异常是以下异常的直接原因: 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 扩展失败 (ConnectError: );拒绝使用空期权时间表运行

Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。