跳至正文

查看原文

BtcSpotDualTimeframeMomentumConfluenceLong

假设数

BTC 现货双时间框架动量共振,LONG-ONLY 1x(BTCUSDT.BINANCE_SPOT,4H主周期 + 1D确认周期,仅当BOTH个时间框架均指向UP时做多,否则FLAT至现金,ATR追踪止损 + 日线级别趋势转变退出,保留源优化参数)

假设数

将工厂中表现最佳的已晋级策略(BtcDualTimeframeMomentumConfluenceLS,Sharpe 1.99,458笔交易,模拟盘29天内+$4,774)移植为LONG-ONLY、1x、CASH账户版本,用于BTCUSDT.BINANCE_SPOT,专门作为FIRST LIVE-TRADING CANDIDATE而创建,因为实盘交易场所仅支持现货。机制不变,纯OHLCV,单一标的:FAST腿 = 4-HOUR根K线上追踪18根K线收益率的符号;SLOW腿 = DAILY根K线上追踪15根K线收益率的符号(通过on_extra_bar作为上下文腿读取,绝不作为同步屏障)。两者必须AGREE。CASH账户强制要求的唯一结构性改动是将{LONG/FLAT/SHORT}塌缩为{LONG/FLAT}:期货母策略在联合下跌共振时会SHORT,而现货版本则持有100% USDT。其余一切原样保留:ATR(14)追踪止损,距运行极值3.033x ATR,日线级别趋势转变退出,波动率缩放的资金相对仓位规模计算(risk_pct 1.011% / 3.033xATR止损距离),49.7%名义价值上限,以及源优化选出的完全相同的参数向量(fast_lookback 18,slow_lookback 15,trail_atr_mult 3.033)。三个可调参数,无补充数据,无空头,无杠杆。现货专属代码改动:BINANCE_SPOT CASH交易场所(position_size中无杠杆乘数),size_precision 5 / price_precision 2,min_notional $10,卖出规模仅限于已持有的基础资产数量。已验证数据存在:BTCUSDT.BINANCE_SPOT 4-HOUR和1-DAYK线自2017-08-17起连续运行(约9年,约19,800根4H K线)。

假设数

将已晋级的期货母策略BtcDualTimeframeMomentumConfluenceLS直接移植到现货交易场所,因为预定的实盘交易场所仅支持现货。机制原样保留:同样的两条动量腿、同样的AGREE-或空仓门控、同样的基于运行极值的ATR(14) 3.033x追踪止损、同样的日线级别趋势转变退出、同样的波动率缩放的risk_pct / 止损距离仓位规模计算(附带49.7%名义价值上限),以及源优化选出的完全相同的参数向量(fast_lookback 18,slow_lookback 15,trail_atr_mult 3.033)。按照假设的规定,CASH账户仅强制要求一处结构性改动:{LONG,FLAT,SHORT}塌缩为{LONG,FLAT}——should_enter仅在联合上涨时返回BUY,其余情况返回None,因此联合下跌时是100% USDT而非做空。现货专属改动:交易场所为BINANCE_SPOT,杠杆为1.0,且position_size中没有杠杆项,size_precision 5 / price_precision 2(BTCUSDT现货),min_notional提高到$10,并且所有退出均通过基础模板的只减仓close_position进行路由,因此SELL只能减少已持有的基础资产数量(裸现货空头在结构上是不可能的,基础模板的_would_open_spot_short防护从未被触发)。calculate_signal每根K线都返回连续的18根K线4H收益率(该值逐根K线变化);离散的共振门控则按要求存在于should_enter中。每根K线的计算成本为O(1):ATR使用固定的15根K线窗口,快速收益率只是单次索引查找,因此不存在随历史长度增长的计算量。给分析师的一个诚实提醒:现货往返成本约为0.20%,而期货母策略约为0.10%,因此单笔交易的优势必须能克服两倍的摩擦成本——趋势跟踪型的退出结构(追踪止损+趋势转变退出,没有固定止盈)使平均持仓时间足够长,从而使这一点具备合理性,但这仍是首先要关注的指标。

实现

LONG-ONLY 1x BTCUSDT现货(BINANCE_SPOT,CASH)双时间框架动量共振。FAST腿 = 4-HOURK线(主周期)上追踪18根K线收益率的符号;SLOW腿 = 1-DAYK线上追踪15根K线收益率的符号,通过on_extra_bar作为较慢时间框架的上下文腿被读取(不同的时间框架,因此基础模板的跨腿对齐屏障绝不会延迟4H信号)。两条腿必须同时指向UP才能持有BTC;联合下跌(期货母策略在此做空的情形)以及两者不一致,都意味着持有100% USDT。退出条件:ATR(14)追踪止损,位于头寸运行高点下方3.033x ATR处,或OR日线腿在多头持仓下翻转向下(更高时间框架的趋势转变)。仓位规模基于波动率缩放且与资金相关:权益 * 1.011% / (3.033 * ATR),以名义价值计上限为USDT余额的49.7%,杠杆乘数为NO(CASH账户不可借贷),按size_precision 5量化取整,低于$10现货最小名义价值时将被拒绝。三个可调参数,纯OHLCV,无补充数据,无空头。

验证结果

要么在should_exit的追踪止损比较中使用self._atr(当前值)以与母策略完全匹配,要么在描述中明确说明追踪止损锚定在入场K线的ATR上,以免分析师将与母策略的差异误归因于交易场所的变更。

验证结果

追踪止损的ATR在入场时(self._entry_atr,在should_enter中捕获 / 于持仓建立时)被FROZEN锁定,此后从不刷新,因此追踪距离基于3.033 x ATR-at-entry(入场时的值),而非3.033 x当前的ATR(14)。已晋级的期货母策略(BtcDualTimeframeMomentumConfluenceLS4H)会在每根K线上根据CURRENT ATR逐步收紧其追踪止损。假设中的表述('ATR(14)追踪止损,距运行极值3.033x ATR')在两种方式下都能满足,且由于_extreme是单调的,止损水平仍然只会向上收紧,因此这不是一个正确性缺陷——但在入场后波动率扩张的情况下,实际止损会比母策略的更紧,这与声称'原样'移植的策略存在真实的行为差异。

验证结果

根据成交(on_order_filled / 首个存在未平仓头寸的K线)来设置交易状态,而不是在should_enter内部设置,或者在calculate_signal开头、进行仓位查询之前先做防御性重置。

验证结果

should_enter()会在基础模板完成订单规模计算并应用最小名义价值门控之BEFORE就修改交易状态(_in_long = True、_extreme、_entry_atr)。如果position_size()返回0,或$10最小名义价值检查导致该次入场被丢弃,策略就会在实际空仓的情况下被错误标记为持有多头且追踪止损已激活。实际上这会在下一根K线上自我修复(calculate_signal会发现仓位为None并重置这些标志,且should_exit在空仓时永远不会被触发),因此不存在可观察到的行为性缺陷——但如果退出路径日后被修改,这一不变量将会很脆弱。

验证结果

无需为正确性做修复。如果希望实现精确的同根K线消费,可以在calculate_signal内部延迟从self._extra_bars[...]重新计算_slow_dir,而不是将其缓存在on_extra_bar中。

验证结果

日线腿存在一根K线的延迟:DAILYK线与当日最后一根4H K线共享相同的收盘时间戳。如果引擎先交付主4H K线,则_maybe_process_primary()会运行并记录_last_processed_ts,而日线K线的_slow_dir更新(在相同时间戳到达)只会在NEXT 4H K线中被消费。这是保守的做法(只会延迟信号,绝不会泄露未来数据),但这意味着日线级别趋势转变退出可能在约一半情况下会在日线收盘后最多延迟4小时才触发,且回测与模拟盘的一致性依赖于交付顺序的稳定性。

验证结果

忠实的实现,但分析师在评估全历史数据时应权衡以下三点:(1)现货往返成本约为0.20%,而期货母策略约为0.10%,因此相同的毛利优势净收益大致减半——沙盒中已显示佣金占毛利的10.03%;(2)该参数向量(快线18 / 慢线15 / 追踪止损3.033)是在DIFFERENT交易场所、时间框架组合及方向集合(LONG/SHORT期货)上通过优化运行选出的,因此这是一次样本外迁移,而非经过优化的配置——沙盒Sharpe为0.527,sharpe_ci_low -0.233,相对基准information_ratio -0.760,也就是说这是一个仅做多的BTC组合,在冒烟测试窗口期内表现不及持有BTC;(3)去掉空头腿使母策略的交易样本量大致减少一半(250笔交易,全部为多头,43.6%敞口),因此实盘Sharpe预计会明显低于母策略的1.99,而非接近它。在真实回测中首先要检查的是:avg_trade_return_pct相对于0.25%现货下限的情况(沙盒显示为0.82%,但该窗口不含2017,且仅有2401天),以及'正常'波动率三分位数(沙盒中为-8.77%)在全历史数据中是否仍为负。

回测评审

在3146天内(2017-08 → 2026-03)完成314笔平仓交易,metrics_reliable=true,提交了entry_diag 314/314笔入场,其中0笔被丢弃。

回测评审

交易实现了该假设:全部314 LONG / 0空头(正确地将母策略的LONG/FLAT/SHORT塌缩为CASH),最大名义价值/权益为0.50,相对0.497上限,平均持仓4天8小时,且43.6%敞口重现了期货母策略。

回测评审

avg_trade_return_pct 1.20%,而往返成本约为0.20% BINANCE_SPOT;佣金仅占毛利的8.97%,冲击成本4.33%——并非受手续费边际影响。

回测评审

max_drawdown 10.3%(在15%现货默认设置下),PF 1.41,在40.4%的胜率下收益为2.07(趋势形态正确),高压力波动率三分位数为+28.0%。

回测评审

极端集中:314笔交易中排名前10的交易占单笔收益总和的93.8%,前20占141%(第21–314笔交易净为负)。

回测评审

仅有6/10个自然年为正——正好处于硬性下限——且最近两年均为负(2025 −10.5%,2026 −9.9%)。

回测评审

Sharpe为0.664,sharpe_ci_low 0.0042,PSR 0.924(<0.95):在经过约225次试验的筛选门槛之前就已经处于边缘水平。

回测评审

QA的担忧部分得到证实:'正常'波动率三分位数仍为负(−7.70%,16.1% DD),information_ratio −0.757,alpha仅为+2.4%/年——其表现不及持有BTC,且benchmark_meaningful=true,因此这一差距是真实存在的。

回测评审

参数是从另一个交易场所/方向集合迁移而来的样本外参数——未经调优而非过拟合,但在此处也未经过测试。
策略报告

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