精华帖子

策略分享-大类ETF策略-DRO组合优化

由bq9e696k创建,最终由bq9e696k 被浏览 28 用户

在金融市场的不确定性面前,传统基于历史数据的组合优化常因 “未来与历史相似” 的假设失效而受挫。分布式鲁棒优化(DRO)通过主动纳入 “分布不确定性”,为极端行情下的组合稳健性提供了新解法。本文结合实践案例,详解 DRO 组合的构建流程与核心注意事项。

一、DRO 组合优化的核心逻辑:在不确定性中找稳健解

传统组合优化(如均值 - 方差模型)假设未来收益分布与历史完全一致,而 DRO 的核心突破在于:不迷信历史数据,而是在 “可能的分布集合”(不确定性集)中,追求 “最差情况” 下的最优表现


举个通俗例子:若历史数据显示某股票年化收益 10%,传统优化会直接以此为依据;而 DRO 会思考 “若未来收益因黑天鹅事件降至 5% 甚至亏损,组合能否承受?”,并据此调整权重 —— 这就是 DRO “稳健性” 的来源。

\

二、DRO 组合的完整构建流程

1.数据准备

夯实优化基础 标的选择:优先纳入低相关性资产(如股票 ETF + 债券 ETF + 黄金 ETF),利用资产间的对冲效应增强鲁棒性。例如:510300.SH(沪深 300)、511260.SH(国债)、518880.SH(黄金)等,覆盖股、债、商品大类。 收益率计算:通过回溯期(如 252 个交易日)的历史收盘价计算日收益率,需注意: 剔除上市时间不足的标的(避免数据量不足导致优化失败)

2.定义不确定性集

量化 “未来可能的偏差” DRO 的关键是明确 “未来分布与历史分布的最大允许差异”,常用Wasserstein 距离度量这种差异,核心参数为epsilon(分布偏移容忍度): epsilon越小:允许的分布偏差越小,模型越依赖历史数据,收益潜力高但抗风险弱; epsilon越大:允许的偏差越大,模型越保守,极端行情下更稳健但收益可能被压制。 通过以下代码构建最差情况分布:


模拟收益恶化的分布(epsilon控制偏移幅度)

shifted_dist = empirical_distributions[asset] * (1 + epsilon)

3.设计目标函数

平衡收益与极端风险 目标函数决定优化方向,需根据风险偏好选择: 平衡型(收益风险比):最大化 “经分布偏移惩罚后的收益 / 风险(如 CVaR)”,适合中等风险偏好:

return -(mean_return - penalty_coef * 分布偏移惩罚) / cvar

保守型(最小化最大损失):直接控制极端损失,适合风险厌恶者:

取历史极端损失与最差分布损失的最大值

max_loss = max(历史最大损失, 最差情况预期损失) + 分布偏移惩罚

3.1 max_loss的定义

  1. 风险 1(历史极端损失)

    max_historical_loss
    

    ,基于历史数据计算的极端单日损失(年化),反映经验分布下的最差情况。

  2. 风险 2(最差分布预期损失)

    worst_case_expected_loss
    

    ,假设资产收益分布向 “恶化方向” 偏移(

    shifted_dist = 经验分布 * (1 + epsilon)
    

    )后,计算的预期损失,反映 “可能的最差分布” 下的损失。

  3. 风险 3(分布偏移惩罚)

    distribution_shift_penalty
    

    ,通过 Wasserstein 距离衡量 “经验分布” 与 “偏移后的最差分布” 的距离,并用权重加权求和,反映分布偏移的 “不合理程度”。

\

4.约束与求解

确保组合可行性 权重约束:设置min_weight(如 5%)和max_weight(如 30%),避免单一资产过度暴露。 优化求解:用scipy.optimize.minimize(如 SLSQP 方法)求解,需处理收敛失败问题(如案例中用风险平价作为备选方案)。

5. 策略落地

动态调仓与异常处理 调仓频率:结合市场波动设置(如每 22 天调仓一次),平衡时效性与交易成本。

三、策略回测

四、策略链接

https://bigquant.com/square/ai/9aac2915-db14-7ded-e3a8-408e01b60c90

\

{link}