策略
横截面RETAIL-CROWDING反向轮动,仅多头(BINANCE USD-M,8个主要币种,WEEKLY持有3 LEAST散户扎堆的品种,按GLOBAL多空账户比率——纯粹的欠持仓FACTOR,而非动量;系统性狂热现金闸门,2参数)
结局: 已放弃
RetailCrowdingContrarianRotationLong
横截面RETAIL-CROWDING反向轮动,仅多头(BINANCE USD-M,8个主要币种,WEEKLY持有3 LEAST散户扎堆的品种,按GLOBAL多空账户比率——纯粹的欠持仓FACTOR,而非动量;系统性狂热现金闸门,2参数)
假设
一种 LONG-ONLY、每周再平衡的横截面 ROTATION,覆盖 8 大型 USD-M 宇宙(BTC、ETH、SOL、BNB、AVAX、LINK、ADA、XRP),根据真正的 NON-PRICE CROWDING 信号选择标的:来自 Binance VISION“metrics”文件的 GLOBAL 多空 ACCOUNT 比率(count_long_short_ratio,一种散户持仓代理指标)(MULTI-YEAR 至约 2020,NOT该 30 日 API)。机制是纯粹的 UNDER-OWNERSHIP 因子——持有散户在其中偏向 LEAST 拥挤做多的大型标的,因为拥挤做多的标的带有潜在的多头清算/挤压下跌风险,而低持有量标的仍有被买入推高的空间。这有意属于在此处可重复存活的 ONLY 结构族——仅做多、大型标的、每周持有排名前 K、参数数量少(已部署的动量轮换夏普比率 2.6 和负资金费率套利篮子的夏普比率 1.97)——并向两者贡献一个选择键 ORTHOGONAL:既不是价格相对强弱(动量),也不是资金费率(套利),而是拥挤持仓。根据本次会话的证据,它避开了所有死亡模式:NOT 单一标的方向性计时器(这些策略在 -100% / -43% / 风险拒绝中失败),NOT 美元中性价差(没有空头腿 → 没有 90% DD 爆仓),NOT 资金费率/期权/清算/纯-OHLCV。它不同于待定的 SmartMoneyGatedMomentumRotation(后者使用 TOP-TRADER 群组来 GATE 动量组合),也不同于 EthRetail(单一标的多空反转):本策略使用 RETAIL/全球群组作为反向 LONG-ONLY 篮子中的 PRIMARY 横截面排名键,完全不包含动量成分。2 参数、K 值和节奏均冻结为经验证的模板。
实现
仅做多、每周再平衡的横截面轮换,覆盖 8 USD-M 个大型标的(BTC、ETH、SOL、BNB、AVAX、LINK、ADA、XRP)。每个标的的拥挤度根据 Binance Vision `metrics` 镜像中每个标的的 TAKER 多空 VOLUME 比率衡量(激进买入量 / 激进卖出量,5 分钟,多年数据),表示为其 7 日均值相对于自身 90 日均值和标准差的 z-score;3 LEAST 拥挤做多的标的以等权方式持有,每个标的占权益的 30%。由 PRIMARY(BTC)全球多空 ACCOUNT 比率构建的系统性狂热现金闸门,会在该比率处于自身 90 日分布的前 15% 时将整个组合轮换为现金,并在第 65 百分位重新投资(滞后机制)。再平衡锚定于日历时间(days_since_epoch % 7),而不是柱计数器。仅做多,杠杆 1.0,无空头腿。
验证结果
迭代历史
验证失败(Layer 2 — 合成场景): 使用的参数:['top_k', 'exit_level', 'min_notional', 'per_name_frac', 'euphoria_level', 'rebalance_days', 'euphoria_window'] 检查 __init__ 是否从 self.parameters.get() 设置了所有属性。 - steady_uptrend:TypeError:RetailCrowdingContrarianRotationLong._asof() 接受 3 个位置参数,但给出了 4 个(柱时间戳:1735691940000) - steady_downtrend:TypeError:RetailCrowdingContrarianRotationLong._asof() 接受 3 个位置参数,但给出了 4 个(柱时间戳:1735691940000) - flat_ranging:TypeError:RetailCrowdingContrarianRotationLong._asof() 接受 3 个位置参数,但给出了 4 个(柱时间戳:1735691940000) - volatility_spike:TypeError:RetailCrowdingContrarianRotationLong._asof() 接受 3 个位置参数,但给出了 4 个(柱时间戳:1735691940000) - zero_volume:TypeError:RetailCrowdingContrarianRotationLong._asof() 接受 3 个位置参数,但给出了 4 个(柱时间戳:1735691940000) - price_gap:TypeError:RetailCrowdingContrarianRotationLong._asof() 接受 3 个位置参数,但给出了 4 个(柱时间戳:1735691940000)
验证失败(Layer 3 — 沙盒回测):冒烟测试超过了 300s 的墙钟时间限制。这几乎总是意味着逐柱工作量随历史长度增长——例如重新扫描完整的资金费率/补充序列,或在每个柱的 calculate_signal()/on_bar() 中重建列表并调用 min()/sorted()。在 __init__ 中预计算已排序的时间戳数组 ONCE 并使用 bisect,或缓存以时间戳为键的查找结果,使逐柱成本为 O(log n) 而非 O(n)。
验证失败(层级 4 — QA 审查)[类别=hypothesis_mismatch]: - [edge_concern] 沙盒是冒烟测试,不是失败原因,但请注意:metrics_reliable=false,Sharpe(0.10)与 total_return(-34.3%)符号不一致,MDD 70%,并且在压力波动率三分位数中,OI-拥挤组合的损失最大(-37.8%)。如果该机制通过回测审查,首先检查 OI z-rank 是否确实具有任何方向性优势,因为 OI 不区分方向。 - 该假设的核心优势是对每个名称的 GLOBAL LONG/SHORT ACCOUNT RATIO 进行横截面排名——一种方向性的散户低持有因子(“持有散户在 LEAST 拥挤-LONG 上的那些名称”)。但代码改为根据每个名称的 PERP OPEN INTEREST z-score 排名,并持有 3 个最低值。这是替代机制,未保留原有经济含义:OI 不是散户代理变量(它是所有参与者的总未平仓名义金额),而 OI 是 DIRECTION-BLIND(永续合约中总多头 == 空头),因此无法表达“最不拥挤的多头”。假设中明确命名的优势在代码中缺失 → 严重问题。
验证失败(Layer 4 — QA 审查)[class=hypothesis_mismatch]: - [edge_concern] 沙盒看起来很健康(+93%,夏普比率 0.77,PF 1.55,avg_trade_return_pct 6.63%),恰恰是因为代码实现的是开发者确认与已部署的负资金费率套利篮子重叠的资金费率套利轮换——因此,这些良好数字说明不应推广一个实时策略的近似重复版本,而不是说明实现了假设本应增加的正交拥挤因子。仅供参考;阻断原因是忠实性。 - 核心优势未实现,且替代指标正是假设 EXCLUDES 的机制。假设按每个标的的 GLOBAL 多空 ACCOUNT 比率(散户拥挤度)排名,并明确表示“不是资金费率(套利)……与动量和资金费率正交”。代码按每个标的的 FUNDING 对横截面排名(最低者 = 持有)——这是一个资金费率套利排名,开发者承认它与已部署的套利篮子重叠。账户比率拥挤键缺失且无法实现(metrics 仅为主标的接入;没有 metrics_by_instrument)。 - 再平衡节奏锚定于相对于进程的柱计数器(self._bar_i % rebalance_days),而不是柱时间戳。重启会重置 _bar_i,使每周轮换网格偏离任何固定日历日期;一致性回放无法复现轮换日期。较轻微的项目-20形式(没有哨兵/首柱触发)。应从自纪元起的天数或固定星期几推导。
放弃原因
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。