返回首页

DiffQuant:可微分模拟器中的夏普优化

DiffQuant 通过 PyTorch 中的可微分交易策略模拟器实现夏普比率的直接优化。将模型、仓位、PnL 和成本集成到一个单一图中。在 BTC 数据上的走前测试(扣除佣金后)显示夏普 +1.73。

DiffQuant 中无代理目标的直接夏普优化
Advertisement 728x90

# DiffQuant:可微分交易模拟器,直接优化夏普比率

在基于机器学习的算法交易中,传统模型使用均方误差(MSE)或交叉熵来预测回报率或价格方向,而性能评估则依赖考虑成本的夏普比率。这种脱节导致问题:微观波动预测准确并不保证样本外盈利。DiffQuant 通过构建从市场特征到最终盈亏(PnL)和夏普比率的单一可微分图,消除代理目标。滚动前向测试实现夏普比率 +1.73,扣除手续费后回报 +8.22%。

传统代理目标的挑战

标准流程将预测与交易分离:

  • 模型最小化回报_{t+1} 的 MSE。
  • 仓位大小依赖启发式规则。
  • 回测器事后施加手续费。

这导致:

Google AdInline article slot
  • 误差空间不匹配:对噪声波动的准确预测引发过度交易和成本侵蚀。
  • 仓位大小无梯度:模型无法学习进场激进度。
  • 训练忽略成本:滑点和手续费位于计算图外。

DiffQuant 将仓位调整、PnL 模拟和指标整合进 PyTorch 图,实现端到端梯度传递。

可微分交易模拟器

模拟器在时间跨度 t ∈ [0, H-1] 上以张量运算计算 PnL:

$$r_t = \frac{c_t - c_{t-1}}{|c_{t-1}| + \varepsilon}$$

Google AdInline article slot

$$gross_t = p_{t-1} \cdot r_t$$

$$cost_t = smooth\_abs(\Delta p_t) \cdot (commission + slippage)$$

$$pnl_t = gross_t - cost_t$$

Google AdInline article slot

关键创新——smooth_abs 确保可微分:

$$smooth\_abs(x) = \sqrt{x^2 + \varepsilon}, \quad \varepsilon = 10^{-6}$$

这保证零点附近 C^∞ 平滑,策略初始平仓,避免次梯度不连续。

负夏普梯度流经 PnL → 仓位 → 模型,训练其端到端考虑成本。

基于 iTransformer 的策略架构

骨干网络是 iTransformer(ICLR 2024):倒置 Transformer,标记为特征通道而非时间步。对金融数据,这捕捉跨通道依赖(价格-成交量-波动率)。

配置:d_model=32, n_layers=4, n_heads=2, d_ff=64(52k 参数)。

完整图:

  • 上下文窗口 (B, ctx, F) 的 Z-score 归一化,无前瞻。
  • iTransformerEncoder。
  • 拼接额外信息:[prev_pos, prev_delta, t/H, (H-t)/H]。
  • PolicyHead:direction_head × gate_head。

仓位:$$p_t = \tanh\left(\frac{d_t}{\tau_{dir}}\right) \times \sigma\left(\frac{g_t}{\tau_{gate}}\right)$$

门控信号屏蔽不确定方向(类似动作屏蔽)。gate_bias=-1.0 初始化稳定初始平仓。

滚动 rollout:

for t in range(H):
    window = full_seq[:, t : t + ctx, :]
    window_norm = normalize_context(window)
    extras = [prev_pos, prev_delta, t/H, (H-t)/H]
    pos_t = model(window_norm, extras)
    positions_list.append(pos_t)
positions = cat(positions_list)
step_pnl = simulator.simulate(closes, positions)
loss = hybrid_loss(step_pnl, positions)
loss.backward()

混合损失防止病态行为

纯夏普会导致过度换手、平仓崩溃、做多偏差、期末暴露、回撤失明。混合损失修复这些:

$$\mathcal{L} = \lambda_1 \cdot (-Sharpe) + \lambda_2 \cdot turnover + \lambda_3 \cdot drawdown_{log} + \lambda_4 \cdot |p_H| + \lambda_5 \cdot (\hat{f} - f^*)^2 + \lambda_6 \cdot |\bar{p}|$$

  • $\lambda_2$:换手惩罚防过度交易。
  • $\lambda_3$:对数回撤提升稳定性。
  • $\lambda_4$:期末零暴露。
  • $\lambda_5$:通过 sigmoid 目标平仓比例。
  • $\lambda_6$:反偏差,在牛市关键。

$$drawdown_{log} = mean(cummax(cumsum(log(1+pnl))) - cumsum(log(1+pnl)))$$

镜像增强实现对称性

训练数据(2024–2025)为牛市 BTC。无干预,模型仅做多。镜像增强在批次子集翻转价格和特征,创建对称对。

结果:做空比例 17.3%(测试),20.9%(回测)。

实验:数据与划分

| 参数 | 值 |

|------|----|

| 标的 | BTCUSDT 币安期货 |

| 分辨率 | 30 分钟 K 线(1 分钟聚合) |

| 周期 | 2021–2025 |

划分:

  • 训练:2024 年 1 月 – 2025 年 3 月。
  • 测试:2025 年 7–9 月。
  • 回测:2025 年 10–12 月。
  • 滚动前向样本外。

关键要点

  • 从特征到夏普的单一可微分图解决代理问题,包括成本和仓位调整。
  • iTransformer + 方向×门控实现跨通道注意力和自信交易。
  • 带反偏差的混合损失防止换手和仅做多等病态。
  • 镜像增强在非对称数据上产生对称策略。
  • BTC 样本外滚动夏普 +1.73,扣手续费后。

— Editorial Team

Advertisement 728x90

继续阅读