跳至正文
全部策略

策略

ianzeng123 RWA 风险平价 v2.5——忠实移植至 Bybit 四资产组合

结局: 已放弃

IanzengRwaRiskParityV25

结局总结

IanzengRwaRiskParityV25 尝试将 ianzeng123 的 Bybit 四资产风险平价配置器(BTC、黄金、SPY、原油)移植到平台,并保留源代码模拟分支的配置逻辑。经过 3 次迭代,代码始终未能通过第 3 层验证,因为沙盒冒烟测试在约 20,000 根小时 K 线的窗口上超过了 300 秒的限制。可能原因是每根 K 线都重建时间戳映射,并对四条腿的完整历史求交集。该运行在任何回测、优化或分析师评审之前便被放弃,因此没有绩效数据。

假设

移植 ianzeng123 的可执行多资产配置策略,保留所提供的代码,不为使其符合文字说明而修正代码。在 Bybit 上交易 BTC、黄金、SPY 和原油 USDT 永续合约。代码使用 PERIOD_H1,而非描述中的 15 分钟协方差 K 线。保留带符号的风险平价权重、随波动率变化的敞口、初始/定时/权重变化/方向变化再平衡,以及紧急部分减仓。源代码默认值为 TRADE_MODE=模拟盘、INIT_CAPITAL=10000 USDT、LOOKBACK=60、EWMA_LAMBDA=0.94、TARGET_VOL=0.15、MAX_LEVERAGE=3、REBALANCE_HOURS=24、DRIFT_THRESHOLD=0.15、POSITION_RATIO=0.95 和 MIN_REBAL_USDT=5。平台适配使用实际的 $100000 账户权益和引擎记账,并计入实际佣金和执行成本;不得将源代码免手续费的模拟盈亏作为回测结果。将源代码模拟分支的配置决策与引擎记账分开保留。未获准进行参数优化。

用户明确要求忠实移植,因此应优先遵从,而非选择其他多样化机制。Bybit 占比不足,为 2.3%;这个四资产组合旨在解决单一标的集中问题。原始资产池要求使用 BTC。corpus_concentration 为空,因此无法核实该标的近期的特定份额。精确的 1-HOUR 目录包含全部四个 Bybit 标的的 parquet 文件。文件名范围表明,潜在共同覆盖期可能从 2026-05-14 10:00 UTC 延续至 2026-10-02 00:00 UTC;这并不能证明行级连续性、时间戳交集或合约的经济属性一致。编码/回测前请先验证这些事项,包括确认 CL 是原油,且 SPY 代表预期的股票敞口。不要替换为名称相似的代币或其他资产。

verification_loop: sandbox_timeout: 验证失败(第 3 层——沙盒回测):冒烟测试在约 20000 根 K 线的窗口上超过了 300 秒的墙钟时间限制(833 天的 BTCUSDT.BYBIT-1-HOUR-LAST-EXTERNAL)。这几乎总是意味着每根 K 线的工作量随历史增长,例如反复扫描完整的资金费率/补充序列,或在每根 K 线上于 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预先计算排序后的时间戳数组 ONCE,并使用 bisect;或者按时间戳缓存查找结果,使每根 K 线的开销为 O(log n),而非 O(n)。

实现

忠实移植 ianzeng123 的 RWA 风险平价 v2.5。该策略使用 BTC、XAU、SPY 和 CL USDT 永续合约的 Bybit 小时收盘价,仅保留四个资产均有 K 线的时间戳。协方差使用 EWMA(lambda 0.94、60 收益、0.001 正则化)。带符号的风险平价求解器根据各资产与等波动率组合的协方差确定方向,将权重限制在 +/-0.5,并将目标杠杆设为 min(0.15/annual_vol, 3)。源代码的模拟盘配置账本执行初始再平衡、每 24 小时再平衡、方向翻转再平衡和 15% 漂移再平衡。它还执行紧急规则(不利变动达到 5% 时将该资产仓位减半)和保证金预算缩放。账本通过引擎逐个资产发送真实市价单,并计入 Bybit 实际手续费。

第 3 次迭代只修复第 2 层故障。合成测试框架以默认杠杆 1.0 构建配置,而 parameters.leverage 保持为 3.0,因此硬性“必须一致”检查导致每个场景都在初始化时失败。现已移除此检查。实际配置仍设置杠杆为 3.0,且 parameters.leverage=3.0,与计划中的固定值一致。仓位规模仍读取 self.config.leverage:current_leverage = min(TARGET_VOL/annual_vol, MAX_LEVERAGE, config.leverage)。信号、求解器、账本、再平衡和紧急逻辑、参数及配置均与第 2 次迭代相同。

验证结果

sandbox_timeout: 验证失败(第 3 层——沙盒回测):冒烟测试在约 20000 根 K 线的窗口上超过了 300 秒的墙钟时间限制(833 天的 BTCUSDT.BYBIT-1-HOUR-LAST-EXTERNAL)。这几乎总是意味着每根 K 线的工作量随历史增长,例如反复扫描完整的资金费率/补充序列,或在每根 K 线上于 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预先计算排序后的时间戳数组 ONCE,并使用 bisect;或者按时间戳缓存查找结果,使每根 K 线的开销为 O(log n),而非 O(n)。

迭代历史

验证失败(第 1.5 层——假设/配置一致性)[class=hypothesis_mismatch]: - optimization_plan 将杠杆固定为 3.0

验证失败(第 2 层——合成场景): 使用的参数:['LOOKBACK', 'leverage', 'TARGET_VOL', 'TRADE_MODE', 'EWMA_LAMBDA', 'ANNUAL_HOURS', 'INIT_CAPITAL', 'MAX_LEVERAGE', 'MID_INTERVAL', 'PNL_INTERVAL', 'SOURCE_ORDER', 'FAST_INTERVAL', 'NUMERIC_FLOOR', 'POSITION_DUST', 'SLOW_INTERVAL', 'EMERGENCY_DROP', 'MIN_REBAL_USDT', 'POSITION_RATIO', 'DRIFT_THRESHOLD', 'REBALANCE_HOURS', 'CASH_BUFFER_USDT', 'COV_SCALE_TARGET', 'EMERGENCY_REDUCE', 'MAX_SHORT_WEIGHT', 'SOLVER_TOLERANCE', 'MIN_SOLVER_WEIGHT', 'SOLVER_ITERATIONS', 'COV_REGULARIZATION',……展开收起

验证失败(第 2 层——合成场景): 使用的参数:['LOOKBACK', 'leverage', 'TARGET_VOL', 'TRADE_MODE', 'EWMA_LAMBDA', 'ANNUAL_HOURS', 'INIT_CAPITAL', 'MAX_LEVERAGE', 'MID_INTERVAL', 'PNL_INTERVAL', 'SOURCE_ORDER', 'FAST_INTERVAL', 'NUMERIC_FLOOR', 'POSITION_DUST', 'SLOW_INTERVAL', 'EMERGENCY_DROP', 'MIN_REBAL_USDT', 'POSITION_RATIO', 'DRIFT_THRESHOLD', 'REBALANCE_HOURS', 'CASH_BUFFER_USDT', 'COV_SCALE_TARGET', 'EMERGENCY_REDUCE', 'MAX_SHORT_WEIGHT', 'SOLVER_TOLERANCE', 'MIN_SOLVER_WEIGHT', 'SOLVER_ITERATIONS', 'COV_REGULARIZATION', '_optimization_plan', 'MIN_ADD_MARGIN_USDT', 'ALIGNMENT_EXTRA_BARS', 'INVALID_VARIANCE_VOL'] 检查 __init__ 是否设置了 self.parameters.get() 中的所有属性。 - steady_uptrend: 初始化错误:ValueError: parameters.leverage 必须与 config.leverage 一致 - steady_downtrend: 初始化错误:ValueError: parameters.leverage 必须与 config.leverage 一致 - flat_ranging: 初始化错误:ValueError: parameters.leverage 必须与 config.leverage 一致 - volatility_spike: 初始化错误:ValueError: parameters.leverage 必须与 config.leverage 一致 - zero_volume: 初始化错误:ValueError: parameters.leverage 必须与 config.leverage 一致 - price_gap: 初始化错误:ValueError: parameters.leverage 必须与 config.leverage 一致

结局总结

对于多腿策略,应限制每根 K 线的工作量:增量维护按时间戳对齐的滚动价格窗口,而不是在每根 K 线上,针对每条腿的全部缓冲历史重建字典并求集合交集。

在验证循环进行 3 次迭代后,该策略被放弃:Layer 3 沙盒回测在约 20,000 根 K 线的时间窗口上超出 300 秒的墙钟时间限制(833 天,包含 BTCUSDT.BYBIT 根 1 小时 K 线)。可能原因是逐根 K 线的计算量会随历史长度增加。

忠实移植 ianzeng123 的 RWA 风险平价 v2.5 策略:在 Bybit 上的 BTC、黄金、SPY 和原油 USDT 永续合约之间分配带符号的风险平价权重,使用小时 EWMA 协方差、波动率目标设定(TARGET_VOL=0.15、MAX_LEVERAGE=3),并按时间、漂移和方向变化进行再平衡;未获准进行参数优化。

没有任何绩效数据:该策略从未生成回测报告,因此收益、夏普比率和交易笔数均不可得;优化、分析师评审和风险评审阶段也从未开始。

分析

RWA大类资产风险平价策略

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