制度匹配多策略投资组合架构 | AI生成和翻译

Home 2026.06

问题: 解释我的多策略交易机器人的架构和逻辑——三种策略跨越五种工具,并共享一个风险层。

回答:

你的机器人是一个经典的制度匹配投资组合:每种策略与其市场的统计行为配对,一个共享的风险层将它们全部标准化为可比较的投注。以下是系统的逐层解析。

1. 为何每种策略适配其工具

核心洞察是不同时间尺度上的收益率自相关性:

你本质上是在信号类型上分散投资,而不仅仅是交易品种。均值回归和趋势跟踪在历史上具有低或负的收益率相关性——当震荡消灭趋势策略时,回归策略获利;当强劲趋势消灭回归策略时,趋势策略获利。

2. 三个信号引擎

均值回归(z-score):

def zscore_signal(closes, n=20):
    mu = closes[-n:].mean()
    sigma = closes[-n:].std()
    z = (closes[-1] - mu) / sigma
    if z <= -2: return "BUY"    # 低于均值2个标准差:统计上超卖
    if z >= 0:  return "SELL"   # 回归至均值:优势已耗尽

这种非对称性很关键:你在-2σ入场,但在0离场,而非+2σ。你仅收割回归部分,不押注超越均值的持续走势。这保持了较短的持仓期,避免过度停留。

动量突破(唐奇安通道):

def donchian_signal(highs, lows, close):
    if close > highs[-21:-1].max(): return "BUY"   # 突破前20根K线高点
    if close < lows[-11:-1].min():  return "SELL"  # 跌破前10根K线低点

非对称通道(20根入场/10根离场)是刻意设计的:入场缓慢(确认突破真实有效),离场快速(趋势消亡时回吐更少)。这是经典的 Turtle 式结构。

趋势跟踪(双SMA):

def sma_trend_signal(closes):
    fast, slow = closes[-20:].mean(), closes[-50:].mean()
    if fast > slow and closes[-1] > slow: return "BUY"
    if fast < slow:                        return "SELL"

额外条件 价格 > 慢速SMA 过滤掉了交叉发生但价格已开始回落时的入场——这是一个廉价的震荡过滤机制。

3. 风险层——真正的工程所在

基于ATR的1%仓位规模 即波动率标准化:

risk_dollars = 0.01 * equity
stop_dist    = 2 * atr14
shares       = risk_dollars / stop_dist

由于 stop_dist 随波动率缩放,一个平静的工具(GLD)获得大仓位,而一个剧烈波动的工具(IBIT)获得小仓位——但两者在触发止损时恰好亏损净值的1%。在风险空间中,每笔交易都是相同大小的投注。这使得一个包含5种工具、3种策略的投资组合保持连贯:各仓位是可比较的单位。

在经纪商处设置GTC止损单 将风险执行与机器人运行状态解耦。由于你在GitHub Actions上运行(可能延迟、受速率限制或停机),止损单驻留在经纪商服务器端意味着1%上限不依赖于你的定时任务触发。这是设计中最重要的可靠性决策。

相关性过滤器(SPLG/QQQM/IBIT最多2个多头):这三个都是风险偏好型资产——在避险冲击中它们会同步下跌,因此三个“独立”的1%投注实际上是一个约3%的投注。上限设为2限制住了相关回撤。

无杠杆、95%现金上限、每个工具25%仓位上限:硬性护栏确保任何仓位规模错误、ATR崩溃(小ATR导致大股数)或信号堆积不会突破合理风险敞口。25%上限特别防范了ATR仓位规模失效模式——低波动率导致巨大仓位。

4. 执行模型及其优势

引擎每15分钟唤醒一次,评估全部五种工具,仅对新出现的信号转换执行操作——即采用边沿触发而非电平触发。这防止了每个周期重复进入同一信号。

本设计中值得关注的事项:

  1. K线收盘对齐:你的1小时(IBIT)和4小时(GLD/USO)策略每4至16个周期才有一次新信息。确保机器人仅基于已收盘的K线评估它们,否则SMA/唐奇安值会在K线内部闪烁,产生虚假信号。
  2. 跳空风险:GTC止损单在止损价格处限制风险,而非1%处。隔夜跳空穿过止损价(尤其是跟踪24/7比特币交易但受限于美国交易时段的IBIT)可能会亏损超过1%。这里的25%仓位上限才是你真正的极端情况边界。
  3. GitHub Actions抖动:计划的工作流可能延迟几分钟执行,或在负载下被跳过。由于止损单在经纪商处,这仅延迟基于信号的入场/离场,不影响风险执行——这是正确的失效模式。
  4. σ趋近于零时的z-score:在极度平静的交易时段,20根K线的标准差可能变得极小,导致z-score爆炸。一个最小σ下限可避免在噪音中产生虚假的-2σ入场信号。

一行总结

三种不相关优势类型(逆势/突破/趋势),每种匹配其市场的自相关性制度,全部通过ATR仓位规模标准化为相同的1%风险单位,并设置经纪商端止损单——即使机器人未运行,风险依然可控。

由于涉及真实资金,需注意:我不是财务顾问,这里任何内容均不声称这些优势当前能够盈利——上述解释涵盖的是机械原理和工程稳健性,这两方面是可靠的。至于实证问题(这些信号在扣除费用/滑点后、在15分钟粒度上是否仍具备优势?)只能通过你的回测和实盘成交数据来回答。


Back Donate