策略
Binance USD-M 52周高点邻近度动量美元中性篮子(成熟主流币、按距高点远近排名、无杠杆封顶仓位、每周再平衡、多空)
结局: 已放弃
HighProximityMomentumDollarNeutralBasketDaily
真正独立、有记录的信号 (George-Hwang 52-周高接近度),具有清晰的单参数、低换手率结构(佣金仅为总值的 1.1%)
假设
一种美元中性的每日横截面动量篮子,覆盖约10个历史完整确认的Binance USD-M主流币种(BTC、ETH、SOL、BNB、XRP、DOGE、ADA、LTC、LINK、BCH),使用52-WEEK-HIGH PROXIMITY信号(George & Hwang)而非滞后收益动量。每个资产根据其当前价格相对其过去约1年高点的接近程度进行评分(接近度 = 收盘价 / 过去-252日高点,接近1.0 = 处于其高点);篮子LONG最接近高点的币种,SHORT距离高点最远的币种,以等额美元名义价值配置。这是一个有文献记载的STANDALONE动量异常,实证上仅与基于收益的动量部分相关——接近高点的资产继续跑赢(对好消息的锚定/反应不足)——因此它与工厂推广的基于收益的趋势篮子真正不同:横截面RETURN-rank篮子(本人的,待定),以及Donchian BREAKOUT(连续接近状态 vs 突破事件)。它严格保持在唯一经过验证的优势家族内(已确立主流币种上的DAILY动量——盘中/纯做空/MR/长周期变体均被驳回),使用纯主流币种的每日OHLCV(数据安全——广义山寨币/HL篮子因数据问题失效),并设计用于规避BOTH重复出现的失败模式:(1)单一FROZEN参数(高点窗口),因此前推(walk-forward)优化器没有可过度集中的地方(过拟合崩塌修复),以及(2)NO波动率目标杠杆标量和NO未封顶的逆波动率权重——近似等额的封顶仓位,总杠杆硬性上限为1.0×(杠杆爆炸修复)。市场中性构建改善了87%多头偏斜;每周再平衡使费用微乎其微。
迭代 4 修复 Layer-2 失败:`self._bar_ts(bar)` 抛出 `TypeError: _bar_ts() takes 1 positional argument but 2 were given`,因为 Layer-2 合成代理暴露了一个与实时基础签名不同的 `_bar_ts`。最小改动:添加了一个本地静态 `_ts_of(bar)`,直接读取 `bar.ts_event`/`bar.ts_init`,并替换了唯一的调用点。所有 Layer-1 传递的结构、导入和信号/再平衡逻辑保持不变,因此不会导致先前层的回归。实现了 George & Hwang 52-周高接近度异常作为一个独立的日动量信号,具有单一冻结边缘参数 (high_window),无波动率目标/反向波动率杠杆,直接解决了先前的两个重复失败模式。
净亏损的美元中性 52-周高接近度篮子,出现灾难性回撤——不值得 2 小时的优化。超过 252 笔交易:total_return -68.84%,CAGR -17.0%,profit_factor 0.775,每笔预期收益 -$263.55,avg_trade_return_pct -2.22%(负),Sharpe -0.108 (CI [-0.85, 0.70] 横跨零),PSR 0.40,和 max_drawdown 83.6% (CI 到 98.7%) — 远超 L19 硬性放弃线,正常波动率状态为 -73%。它在 7 年中的 4 年亏损 (2021 -67.4%,2024 -23.2%,2025 -18.8%),因此 George-Hwang 52-周高异常未能转移到加密货币主流资产。结果也是离群值驱动的,中性/杠杆控制未按设计运作:return_kurtosis 137,-67.77% 单日收益率为 2021-04-19,exposure_pct 605.88% 尽管有规定的美元中性总-1.0x上限。这是 L45/L52 市场中性横截面篮子类别 (0/84 multi_instrument);benchmark_meaningful 正确为假,绝对风险调整指标均为负。单一冻结 high_window 优化器基本上没有可调参数,任何调整都无法修复 84% 回撤或负的每笔优势。失败模式:no_edge/risk_reject 市场中性横截面动量篮子,>50% DD。
实现
美元中性横截面 52-周高接近度动量篮子,涵盖约 10 个已建立的 Binance USD-M 主流资产,使用日线数据。每个资产按接近度 = 收盘价 / 过去-252日高点评分;按周度频率,篮子做多最接近高点的 top_k 个资产,做空距离高点最远的 bottom_k 个资产,等美元名义金额,总杠杆硬性上限为 1.0x 权益(无杠杆)。再平衡使用目标减去当前签名数量的净额 OMS 订单。
验证结果
CLEAN RESTART 2026-09-04 — 本次运行的判定历史和学习记录已删除,并已从验证阶段重新开始。此前放弃是由流水线导致的,而非市场导致的:Layer-2 测试框架错误绑定了 @staticmethod 辅助函数(已修复),QA 在未经优化的冒烟测试上给出了终局绩效判定(已移除——QA 现在只判断正确性),沙箱超时则源于回测槽位不足(已修复)。假设和策略代码均未改变。请根据代码本身进行验证;绩效将在之后由完整回测和优化器判定。
回测评审
- 夏普
- -0.11
- 总收益率
- -68.84%
- 最大回撤
- 83.61%
- 总交易数
- 252
- 胜率
- 49.2%
- 盈利因子
- 0.78
真正独立、有记录的信号 (George-Hwang 52-周高接近度),具有清晰的单参数、低换手率结构(佣金仅为总值的 1.1%)
净亏损:total_return -68.84%,CAGR -17.0%,profit_factor 0.775,单笔期望收益 -$263.55/笔,avg_trade_return_pct -2.22%(负值)
max_drawdown 83.6%(CI 至 98.7%)— 已超过 50% 硬性放弃线(L19);常态市场区间 -73%
无显著优势:Sharpe -0.108 (CI [-0.85, 0.70] 横跨零),PSR 0.40;在 7 年中的 4 年亏损,由 2021 -67.4% 主导
敞口/头寸规模未按设计:exposure_pct 605.88% 和 -67.77% 单日收益率 (2021-04-19) 对于声称的美元中性总-1.0x账簿;峰度 137,偏度 -2.7 — 离群值驱动
L45/L52 市场中性横截面篮子类别(0/84);单一冻结参数使优化器无参数可调
迭代历史
验证失败(Layer 2 — 合成场景): 使用的参数:['top_k', 'assets', 'high_window', 'min_notional', 'qty_precision', 'gross_cap_frac', 'rebalance_days', 'default_qty_precision'] 请检查 __init__ 是否通过 self.parameters.get() 设置了所有属性。 - steady_uptrend: TypeError: HighProximityMomentumDollarNeutralBasketDaily._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - steady_downtrend: TypeError: HighProximityMomentumDollarNeutralBasketDaily._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - flat_ranging: TypeError: HighProximityMomentumDollarNeutralBasketDaily._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - volatility_spike: TypeError: HighProximityMomentumDollarNeutralBasketDaily._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - zero_volume: TypeError: HighProximityMomentumDollarNeutralBasketDaily._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - price_gap: TypeError: HighProximityMomentumDollarNeutralBasketDaily._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000)
验证失败(Layer 2 — 合成场景): 使用的参数:['top_k', 'assets', 'high_window', 'min_notional', 'qty_precision', 'gross_cap_frac', 'rebalance_days', 'default_qty_precision'] 请检查 __init__ 是否通过 self.parameters.get() 设置了所有属性。 - steady_uptrend: TypeError: FactoryStrategy._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - steady_downtrend: TypeError: FactoryStrategy._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - flat_ranging: TypeError: FactoryStrategy._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - volatility_spike: TypeError: FactoryStrategy._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - zero_volume: TypeError: FactoryStrategy._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - price_gap: TypeError: FactoryStrategy._bar_ts() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000)
验证失败(Layer 2 — 合成场景): 使用的参数:['top_k', 'assets', 'high_window', 'min_notional', 'qty_precision', 'gross_cap_frac', 'rebalance_days', 'default_qty_precision'] 请检查 __init__ 是否通过 self.parameters.get() 设置了所有属性。 - steady_uptrend: TypeError: HighProximityMomentumDollarNeutralBasketDaily._ts_of() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - steady_downtrend: TypeError: HighProximityMomentumDollarNeutralBasketDaily._ts_of() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - flat_ranging: TypeError: HighProximityMomentumDollarNeutralBasketDaily._ts_of() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - volatility_spike: TypeError: HighProximityMomentumDollarNeutralBasketDaily._ts_of() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - zero_volume: TypeError: HighProximityMomentumDollarNeutralBasketDaily._ts_of() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000) - price_gap: TypeError: HighProximityMomentumDollarNeutralBasketDaily._ts_of() 需要 1 个位置参数,但实际给出了 2 个(K线时间戳:1735704780000)
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。