# 组合优化详解
## `quant_portfolio_optimization_demo.py` 学习文档

> **目标读者**：量化入门者，已完成前四篇学习  
> **配套文件**：`quant_portfolio_optimization_demo.py`  
> **系列位置**：第 5 篇 — 组合优化篇

---

## 目录

1. [为什么需要组合优化？](#1-为什么需要组合优化)
2. [核心数学框架：均值-方差优化](#2-均值-方差优化mean-variance-optimization)
3. [协方差矩阵估计：从样本到收缩](#3-协方差矩阵估计)
4. [有效前沿与资本市场线](#4-有效前沿与资本市场线)
5. [三种特殊组合](#5-三种特殊组合)
6. [风险平价：不依赖预期收益的方法](#6-风险平价risk-parity)
7. [Black-Litterman 模型：贝叶斯框架](#7-black-litterman-模型)
8. [带约束的组合优化](#8-带约束的组合优化)
9. [滚动回测：五策略横向对比](#9-滚动回测)
10. [结果解读](#10-结果解读)
11. [术语速查表](#11-术语速查表)

---

## 1. 为什么需要组合优化？

### 1.1 从"选股"到"构建组合"

前几篇 Demo 告诉我们如何**选择好股票**（Alpha 因子）。但知道哪些股票好之后，下一个问题是：

> "我手里有 20 只股票，分别该买多少？"

这个问题看似简单，但影响极大：

```
方案1：每只股票买 5%（等权，最简单）
方案2：只买最好的 3 只，各 33%（过度集中）
方案3：根据各股的风险-收益特性，科学分配权重 ← 这就是组合优化
```

### 1.2 多元化的数学价值

多元化 (Diversification) 的精华在于：**不同资产的涨跌不完全同步（相关系数 < 1），组合的风险可以低于各资产风险的加权平均**。

$$\sigma_p = \sqrt{\sum_i \sum_j w_i w_j \sigma_{ij}} \leq \sum_i w_i \sigma_i$$

其中 $\sigma_{ij} = \rho_{ij} \sigma_i \sigma_j$ 是协方差，$\rho_{ij}$ 是相关系数。

**当 $\rho_{ij} < 1$ 时，等号不成立，组合波动率严格小于各股波动率的加权平均。**

直觉例子：

| 资产 | 波动率 | 情景 |
|------|--------|------|
| 科技股 A | 30% | 经济好时大涨，经济差时大跌 |
| 医疗股 B | 25% | 与经济景气关联较小，独立波动 |
| A+B 等权 | ≈ **20%**（低于 27.5%！）| 两者不完全相关，组合风险被"稀释" |

### 1.3 优化的目标

Harry Markowitz (1952) 在诺贝尔奖论文中指出，理性投资者应该：

> **在承担相同风险的前提下，选择期望收益最高的组合；  
> 在期望相同收益的前提下，选择风险最小的组合。**

这就是"均值-方差框架 (Mean-Variance Framework)"的核心逻辑。

---

## 2. 均值-方差优化（Mean-Variance Optimization）

### 2.1 问题形式

组合优化的数学问题可以写成：

$$\boxed{\min_{w}\ w'\Sigma w \quad \text{subject to} \quad w'\mu = \mu^*, \quad \mathbf{1}'w = 1, \quad w \geq 0}$$

| 符号 | 含义 |
|------|------|
| $w$ | 权重向量 (weight vector), shape $(N, 1)$ |
| $\Sigma$ | 协方差矩阵 (covariance matrix), shape $(N, N)$ |
| $\mu$ | 预期收益向量 (expected return vector), shape $(N, 1)$ |
| $\mu^*$ | 目标收益率 (target return) |
| $\mathbf{1}'w = 1$ | 全投资约束 (full investment constraint) |
| $w \geq 0$ | 多头约束 (long-only constraint) |

这个问题在不同目标收益率 $\mu^*$ 下重复求解，就得到了**有效前沿**。

### 2.2 算法：SLSQP（序列二次规划）

本 Demo 使用 `scipy.optimize.minimize` 的 SLSQP 方法：

```
SLSQP = Sequential Least Squares Programming
       序列二次规划法
```

SLSQP 每轮迭代将非线性约束优化问题近似为一个二次规划 (QP) 子问题，逐步收敛到最优解。

```python
from scipy.optimize import minimize

result = minimize(
    objective,                   # 目标函数（如最小化组合方差）
    w0,                          # 初始权重（等权作为起点）
    method='SLSQP',
    bounds=[(0.0, 1.0)] * N,    # 权重区间：[0%, 100%]
    constraints=[
        {'type': 'eq', 'fun': lambda w: sum(w) - 1}  # 权重之和 = 1
    ],
    options={'ftol': 1e-12, 'maxiter': 1500}
)
```

### 2.3 组合的三个核心指标

给定权重 $w$、预期收益 $\mu$、协方差矩阵 $\Sigma$，可以计算：

| 指标 | 公式 | 说明 |
|------|------|------|
| 组合收益率 | $r_p = w'\mu$ | 各股收益的加权平均 |
| 组合波动率 | $\sigma_p = \sqrt{w'\Sigma w}$ | 关键！非线性，受协方差影响 |
| 夏普比率 | $SR = (r_p - r_f) / \sigma_p$ | 单位风险的超额收益，越高越好 |

---

## 3. 协方差矩阵估计

### 3.1 为什么协方差矩阵很重要？

组合优化的结果对协方差矩阵的估计极其敏感。$\Sigma$ 的一个小误差，可能导致组合权重大幅波动——这是 Markowitz 框架在实践中最大的挑战。

### 3.2 样本协方差矩阵的问题

$$\hat{\Sigma}_{sample} = \frac{1}{T-1} \sum_{t=1}^{T} (r_t - \bar{r})(r_t - \bar{r})'$$

**问题1：维度诅咒 (Curse of Dimensionality)**  
估计一个 $N$ 只股票的协方差矩阵，需要估计 $N(N+1)/2$ 个参数。  
20 只股票 → 210 个参数；50 只股票 → 1275 个参数  
当 T（样本长度）与 N（资产数量）之比较小时（如 T/N < 5），估计误差极大。

**问题2：条件数过高 (High Condition Number)**  

```
条件数 (Condition Number) = 最大特征值 / 最小特征值
```

条件数高意味着矩阵"病态"——求逆时微小误差被放大，优化结果不稳定。

### 3.3 Ledoit-Wolf 收缩估计

**核心思想**：将样本协方差矩阵向一个"结构化目标"方向收缩：

$$\hat{\Sigma}_{LW} = (1-\alpha) \hat{\Sigma}_{sample} + \alpha \cdot F$$

其中：
- $F$ 是目标矩阵（如"单位矩阵×平均方差"），结构简单，估计误差小
- $\alpha$ 是**最优收缩系数**（由数据自动决定，不需手动调参）

**收缩的直觉**：  
- 样本协方差：复杂，可能过度拟合历史数据
- 目标矩阵：简单，但忽略了资产间真实相关性
- 收缩后：二者的折中，在偏差和方差之间取平衡

```python
from sklearn.covariance import LedoitWolf
lw = LedoitWolf()
lw.fit(return_data)
cov_shrunk      = lw.covariance_   # 收缩后的协方差矩阵
shrink_coeff    = lw.shrinkage_    # 最优收缩系数 α（自动计算）
```

**本 Demo 结果**：
- 样本协方差条件数：35.4
- 收缩后条件数：34.0（收缩系数 α = 0.0098，很小 → 本数据质量较好，无需大幅收缩）

---

## 4. 有效前沿与资本市场线

### 4.1 有效前沿（Efficient Frontier）

**有效前沿**是所有"帕累托最优"组合的集合：
- 在相同波动率下，收益最高
- 在相同收益下，波动率最低

有效前沿由两个端点确定：
- **左端点**：全局最小方差组合 (GMV)——风险最低的点
- **右端点**：单只股票（预期收益最高的那只，极度集中）

```
       ▲ 收益率
       │         ×  ×       ←← 有效前沿
       │       ×    MaxSharpe ●
       │     ×    MinVar ●
       │   ×   ×   ×
       │  × × × ×
       │────────────────────→ 波动率
```

位于有效前沿**左下方**的是"劣势组合"——存在一个前沿组合，既有更高收益、又有更低风险。

### 4.2 资本市场线（Capital Market Line, CML）

引入无风险资产（如国债，年化收益率 $r_f = 2\%$）后：

- 投资者可以在"无风险资产"和"某个风险组合"之间分配资金
- 最优的风险组合就是从 $r_f$ 出发，与有效前沿相切的那点——**切线组合 (Tangency Portfolio)**，也叫**最大夏普组合**

资本市场线的方程：

$$r_p = r_f + SR_{tangency} \times \sigma_p$$

- 斜率 $SR_{tangency}$ 就是切线组合的夏普比率
- **任何有效投资者都应该持有切线组合**（可以加上无风险资产来调节总风险）

---

## 5. 三种特殊组合

### 5.1 等权组合（Equal Weight, EW）

$$w_i = \frac{1}{N} \quad \forall i$$

**优点**：
- 最简单，无需任何参数估计
- 对估计误差完全免疫
- 实证研究发现，等权组合在许多市场中难以被复杂模型超越（"1/N 难题"）

**缺点**：
- 完全忽略各股的风险差异（高波动股和低波动股同等对待）
- 没有利用任何收益预测信息

### 5.2 最小方差组合（Minimum Variance Portfolio, MinVar）

$$\min_w\ w'\Sigma w \quad \text{s.t.}\ \mathbf{1}'w=1,\ w\geq 0$$

**重要特点**：**完全不需要预期收益 $\mu$ 的估计！**

这是一个极大的优势——预期收益 $\mu$ 是非常难以估计的，而协方差矩阵 $\Sigma$ 相对更稳定（因为波动率和相关性的历史规律更具持久性）。

**适用场景**：投资者没有可靠的收益预测，但希望最小化风险。

**本 Demo 结果**：  
- 收益 12.5%，波动 **18.5%**（所有策略中最低！），夏普 0.57  
- 回测中夏普 1.005 — 体现了低波动的稳健性

### 5.3 最大夏普组合（Maximum Sharpe / Tangency Portfolio）

$$\max_w\ \frac{w'\mu - r_f}{\sqrt{w'\Sigma w}} \quad \text{等价于}\ \min_w\ -\text{SR}$$

**这是理论上最优的风险组合**，但高度依赖对 $\mu$ 的准确估计。

实践中的问题：

1. **误差传导**：$\mu$ 的估计误差被优化器"放大"，产生极端权重
2. **集中效应**：最大夏普组合常常把权重集中在少数几只"看起来最好"的股票上
3. **过拟合**：历史中表现好的股票，未来未必继续好

**本 Demo 结果**：  
- 收益 50.4%，波动 **29.7%**（最高！），夏普 1.63（基于全期数据的理论值）  
- 回测夏普 0.844 — 因为样本内最优 ≠ 样本外最优，存在过拟合

---

## 6. 风险平价（Risk Parity）

### 6.1 核心思想

等权组合 → 权重相等 → 但高波动股对组合风险贡献更大！

风险平价 → **风险贡献相等** → 每只股票对总风险的贡献相同

```
等权组合中：
  低波动股（σ=15%）权重 5% → 风险贡献 很小
  高波动股（σ=35%）权重 5% → 风险贡献 很大  ← 实际上被高波动股"主导"

风险平价组合：
  低波动股（σ=15%）权重 大（≈10%）→ 风险贡献 = 1/N
  高波动股（σ=35%）权重 小（≈2%）→ 风险贡献 = 1/N  ← 真正均衡
```

### 6.2 风险贡献的数学

**边际风险贡献 (Marginal Risk Contribution, MRC)**：

$$\text{MRC}_i = \frac{\partial \sigma_p}{\partial w_i} = \frac{(\Sigma w)_i}{\sigma_p}$$

**绝对风险贡献 (Risk Contribution, RC)**：

$$\text{RC}_i = w_i \times \text{MRC}_i = \frac{w_i \cdot (\Sigma w)_i}{\sigma_p}$$

**验证**：$\sum_i \text{RC}_i = \sigma_p$（各股风险贡献之和 = 总波动率）

**等风险贡献条件**：

$$\frac{\text{RC}_i}{\sigma_p} = \frac{1}{N} \quad \Leftrightarrow \quad w_i \cdot (\Sigma w)_i = w_j \cdot (\Sigma w)_j \quad \forall i, j$$

### 6.3 风险平价的优化问题

$$\min_w \sum_i \left(\frac{\text{RC}_i}{\sigma_p} - \frac{1}{N}\right)^2$$

这是一个非线性最小二乘问题（没有解析解），需要数值优化求解。

```python
def objective(w):
    rc, sigma_p = risk_contributions(w, cov)
    rc_pct = rc / sigma_p           # 各资产风险贡献占比
    target = 1.0 / N                # 目标：1/N
    return np.sum((rc_pct - target) ** 2)
```

**本 Demo 结果**：  
- 各股 RC 最大偏差 = **0.000**（完美等风险贡献！）  
- 收益 9.5%，波动 21.0%，夏普 0.36（因为低波动持仓更多低收益股）

### 6.4 风险平价的适用场景

| 场景 | 适合 | 理由 |
|------|------|------|
| 没有可靠的收益预期 | ✓ | 不需要 μ 估计 |
| 管理多资产配置（股债商品）| ✓ | 各资产类别风险差异大 |
| 需要稳健的长期策略 | ✓ | 比最大夏普更稳定 |
| 单一股票池、收益差异明显 | △ | 可能过于保守 |

---

## 7. Black-Litterman 模型

### 7.1 Markowitz 框架的根本缺陷

**对预期收益的"蝴蝶效应"**：

Markowitz 优化是一个"误差放大器"——$\mu$ 哪怕有 1% 的估计误差，权重可能变动 30%+。这导致实际使用中，最大夏普组合常常产生极度集中的"角点解"。

Black-Litterman（1990）给出了一个优雅的解决方案：**从市场均衡出发，而不是从历史均值出发**。

### 7.2 三步 BL 框架

**第一步：建立先验（市场均衡隐含收益）**

市场是所有投资者信息的综合。如果市场是均衡的，当前市值加权组合 $w_{mkt}$ 就是所有投资者的"最优"选择。

反向推导这个最优选择对应的隐含收益（CAPM 均衡）：

$$\Pi = \delta \cdot \Sigma \cdot w_{mkt}$$

| 符号 | 含义 |
|------|------|
| $\Pi$ | 市场均衡隐含超额收益 (Market-implied excess returns) |
| $\delta$ | 市场风险厌恶系数，通常取 2.0~3.0 |
| $\Sigma$ | 协方差矩阵 |
| $w_{mkt}$ | 市值权重组合 (Market cap weights) |

这个先验的优点：**总是给出合理的、多元化的权重**，不会产生极端集中。

---

**第二步：表达投资者观点**

投资者可以输入对特定股票（或组合）的主观看法：

```
观点矩阵 P (View matrix, K × N):
  P[k, i] = 股票 i 在观点 k 中的权重（正=多头，负=空头）

观点收益向量 Q (View returns, K × 1):
  Q[k] = 观点 k 的预期超额收益

观点不确定性矩阵 Ω (View uncertainty, K × K 对角矩阵):
  Ω[k,k] 越大 = 对第 k 个观点越不自信
```

本 Demo 的两个观点：

```python
# 观点1（绝对观点）: "S01 的年化超额收益将达到 +5%"
P[0, 1] = 1.0
Q[0]    = 0.05

# 观点2（相对观点）: "S00 将比 S04 多赚 3%"
P[1, 0] = +1.0   # S00 多头
P[1, 4] = -1.0   # S04 空头
Q[1]    = 0.03
```

---

**第三步：贝叶斯更新，求后验预期收益**

$$\mu_{BL} = \underbrace{\left[(\tau\Sigma)^{-1} + P'\Omega^{-1}P\right]^{-1}}_{\text{精度矩阵之和的逆}} \cdot \underbrace{\left[(\tau\Sigma)^{-1}\Pi + P'\Omega^{-1}Q\right]}_{\text{加权均值向量}}$$

直观理解：
- $(\tau\Sigma)^{-1}$ 越大 → 先验越"确定"，后验越接近先验 $\Pi$
- $\Omega^{-1}$ 越大 → 观点越"确定"，后验越接近观点 $Q$
- $\tau$ 是先验的"置信度调节参数"，通常取 0.025~0.10

**本 Demo 结果**：  
- BL 将 S00（观点2的受益者）权重从 5%（等权）调升至 **17.1%**  
- 后验收益比均衡先验更集中在观点受益股  
- 回测中 BL 夏普 **1.107**，Calmar **1.51**——所有策略中最优

### 7.3 BL vs 直接 Markowitz

| | 直接 Markowitz | Black-Litterman |
|--|----------------|-----------------|
| 先验 | 历史均值（含估计误差） | 市场均衡（反向优化，更稳定） |
| 观点融入 | 直接修改 μ（极端敏感） | 贝叶斯混合（平滑过渡） |
| 结果 | 容易极度集中 | 分散化程度好 |
| 无观点时 | 结果无意义 | 退回到市值加权 |

---

## 8. 带约束的组合优化

### 8.1 为什么需要约束？

纯粹的 Markowitz 优化常常产生：
- 单只股票权重 40%+（过度集中）
- 某行业权重 0%（完全空缺某一行业的风险敞口）
- 与上期持仓相差 80%（极高换手率 → 高交易成本）

实际组合管理需要通过约束来控制这些问题。

### 8.2 三类常见约束

**约束1：权重上下限（集中度管理）**

```python
bounds = [(0.0, 0.15)] * N   # 每只股票：0% ≤ w_i ≤ 15%
```

**约束2：行业权重区间**

```python
# 每行业权重在 10%~35% 之间
for sector_indices in SECTORS.values():
    constraints.append({
        'type': 'ineq',
        'fun': lambda w: sum(w[sector_indices]) - 0.10   # ≥ 10%
    })
    constraints.append({
        'type': 'ineq',
        'fun': lambda w: 0.35 - sum(w[sector_indices])   # ≤ 35%
    })
```

**约束3：换手率约束（交易成本控制）**

```python
# 本期与上期权重的 L1 距离 ≤ 50%
# L1 distance = Σ |w_new,i - w_old,i|
constraints.append({
    'type': 'ineq',
    'fun': lambda w: 0.50 - np.sum(np.abs(w - w_prev))
})
```

**本 Demo 结果（带约束最大夏普）**：
- 夏普 0.94（vs 无约束的 1.63）——约束降低了理论最优解的质量
- 但实际上更可行：最大单股 15%，各行业 10%~35%，约束全部满足 ✓

### 8.3 约束与优化效率的权衡

```
约束越多 → 可行域越小 → 最优解越差（理论值）
约束越多 → 组合越分散 → 实际表现可能更好（防止过拟合）
```

这是组合管理的核心矛盾：**理论最优 vs 实践可行**。

---

## 9. 滚动回测

### 9.1 滚动回测的必要性

如果用全量历史数据估计 $\mu$ 和 $\Sigma$，再用"最优"权重买入，实际上**使用了未来信息**（前视偏差 / Look-Ahead Bias）——这样的回测结果不真实。

正确做法：滚动窗口（Walk-Forward）回测

```
时间轴:  ──────── LOOKBACK ──────────────── 测试期 ──────────

  t=0                 t=126      t=147      t=168  ...
  │─── 估计期 126 天 ──│─ 持有21天 ─│─ 持有21天 ─│
         ↑                 ↑
       估计 μ、Σ         用新数据重新估计，重新优化
```

### 9.2 调仓流程

```python
for t in rebalance_dates:
    # ① 用过去 126 天历史估计 μ 和 Σ
    hist     = returns.iloc[t-126 : t]
    mu_roll  = hist.mean() * 252
    cov_roll = hist.cov() * 252

    # ② 用当前估计重新计算各策略权重
    w_minvar    = min_variance(mu_roll, cov_roll)
    w_maxsharpe = max_sharpe(mu_roll, cov_roll)
    # ...

    # ③ 持有到下次调仓日，每日记录组合收益
    for d in range(t, next_rebalance):
        portfolio_return = w @ returns.iloc[d]
```

### 9.3 五策略对比结果

| 策略 | 年化收益 | 年化波动 | 夏普比率 | 最大回撤 | Calmar |
|------|----------|----------|----------|----------|--------|
| 等权 EW | 17.6% | 22.4% | 0.70 | -22.3% | 0.79 |
| 最小方差 MinVar | 21.6% | **19.5%** | 1.00 | -22.1% | 0.98 |
| 最大夏普 MaxSharpe | **25.0%** | 27.2% | 0.84 | -24.5% | 1.02 |
| 风险平价 RP | 17.3% | 21.6% | 0.71 | -21.7% | 0.80 |
| **Black-Litterman BL** | **25.6%** | 21.3% | **1.11** | **-16.9%** | **1.51** |

---

## 10. 结果解读

### 10.1 最小方差 vs 等权

MinVar 收益比等权高 4%，波动比等权低 3%——用更复杂的优化换来了双向改善。  
这通常在**样本量充足、协方差估计可靠**时发生。

### 10.2 最大夏普的"过拟合"现象

理论值：Sharpe = 1.63（全量数据）  
回测值：Sharpe = 0.84（样本外）

**下降 50%**——这就是过拟合的代价。滚动窗口估计出的 $\mu$ 不稳定，每次重估都有误差，导致权重频繁剧烈变动。

### 10.3 Black-Litterman 为什么最好？

1. **先验稳定**：从市场均衡出发，不过度依赖嘈杂的历史均值
2. **观点有效**：本 Demo 中 S00/S01（科技/金融）确实注入了较高的 Alpha，观点与真实 Alpha 方向一致
3. **不极端集中**：贝叶斯混合平滑了权重，避免了角点解

> **注意**：如果投资者观点是错误的，BL 的结果可能比等权更差。BL 的价值在于"正确观点"的放大，而不是错误观点的保护。

### 10.4 Calmar 比率与最大回撤

$$\text{Calmar} = \frac{\text{年化收益}}{\text{最大回撤绝对值}}$$

BL 策略 Calmar = 1.51，最大回撤仅 -16.9%，说明在每次大幅下跌时损失相对可控。这对于风险管理 (Risk Management) 极为重要——一个持续盈利但某年大幅亏损的策略，在实际操作中往往难以坚持。

---

## 11. 术语速查表

| 中文 | English | 简要说明 |
|------|---------|----------|
| 组合优化 | Portfolio Optimization | 在约束下选择最优资产权重 |
| 均值-方差框架 | Mean-Variance Framework | Markowitz (1952) 的经典框架 |
| 权重向量 | Weight Vector (w) | 各资产的持仓比例 |
| 协方差矩阵 | Covariance Matrix (Σ) | 资产收益率的协方差关系矩阵 |
| 预期收益向量 | Expected Return Vector (μ) | 各资产的预期年化收益率 |
| 多元化 | Diversification | 持有多种相关性低的资产，降低整体风险 |
| 有效前沿 | Efficient Frontier | 给定风险下收益最高的组合集合 |
| 全局最小方差组合 | Global Minimum Variance Portfolio (GMV) | 有效前沿的左端点，风险最低 |
| 切线组合 | Tangency Portfolio | 资本市场线与有效前沿的切点，即最大夏普组合 |
| 资本市场线 | Capital Market Line (CML) | 从无风险利率到切线组合并延伸的直线 |
| 最大夏普组合 | Maximum Sharpe Portfolio | 夏普比率最高的组合 |
| 无风险利率 | Risk-Free Rate (Rf) | 国债等无风险资产的收益率 |
| 夏普比率 | Sharpe Ratio | (收益-无风险利率) / 波动率，衡量风险调整后收益 |
| Calmar 比率 | Calmar Ratio | 年化收益 / 最大回撤，衡量下行风险调整后收益 |
| 最大回撤 | Maximum Drawdown (MDD) | 历史上从高点到低点的最大跌幅 |
| 样本协方差 | Sample Covariance | 用历史数据直接计算的协方差矩阵 |
| 条件数 | Condition Number | 矩阵最大特征值/最小特征值之比，衡量矩阵"病态"程度 |
| Ledoit-Wolf 收缩 | Ledoit-Wolf Shrinkage | 将样本协方差向结构化目标收缩，减少估计误差 |
| 收缩系数 | Shrinkage Coefficient (α) | Ledoit-Wolf 中收缩强度的参数，由数据自动决定 |
| 风险平价 | Risk Parity | 每只资产对组合总风险贡献相等的配置方法 |
| 边际风险贡献 | Marginal Risk Contribution (MRC) | 增加该资产权重时组合波动率的变化率 |
| 风险贡献 | Risk Contribution (RC) | 某资产对组合总风险的绝对贡献量 |
| Black-Litterman | Black-Litterman (BL) | 贝叶斯框架，融合市场均衡先验与投资者观点 |
| 先验 | Prior | 贝叶斯框架中引入观测数据之前的信念 |
| 后验 | Posterior | 贝叶斯更新后，融合先验与观测的新信念 |
| 观点矩阵 | View Matrix (P) | 表达投资者观点的矩阵，K观点 × N资产 |
| 观点收益向量 | View Returns Vector (Q) | 各观点的预期收益 |
| 观点不确定性矩阵 | View Uncertainty Matrix (Ω) | 对角矩阵，表达对各观点的置信度 |
| 市场均衡隐含收益 | Market Equilibrium Implied Returns (Π) | CAPM均衡下，对应市值加权组合的隐含预期收益 |
| 风险厌恶系数 | Risk Aversion Coefficient (δ) | 衡量投资者对风险-收益权衡的偏好参数 |
| 绝对观点 | Absolute View | 对某资产预期收益的绝对判断（如"S01 将涨 5%"）|
| 相对观点 | Relative View | 对两资产相对表现的判断（如"A 比 B 多赚 3%"）|
| 全投资约束 | Full Investment Constraint | Σw_i = 1，所有资金都投入 |
| 多头约束 | Long-Only Constraint | w_i ≥ 0，不允许卖空 |
| 权重上限 | Weight Upper Bound | 单只资产的最大持仓比例限制 |
| 行业权重约束 | Sector Weight Constraint | 限制某一行业的总持仓比例范围 |
| 换手率约束 | Turnover Constraint | 限制新旧权重变化总量，控制交易成本 |
| 换手率 | Turnover | Σ|w_new - w_old|，每次调仓时权重变动的总量 |
| 前视偏差 | Look-Ahead Bias | 回测中错误地使用了未来才能获得的数据 |
| 滚动回测 | Rolling / Walk-Forward Backtest | 用历史窗口估计参数，样本外验证的正确回测方式 |
| SLSQP | Sequential Least Squares Programming | 序列最小二乘规划法，scipy 中常用的约束优化算法 |
| 过拟合 | Overfitting | 模型过度拟合历史数据，样本外表现大幅下降 |
| 角点解 | Corner Solution | 优化结果极度集中在少数资产，非分散化的极端解 |
| 误差传导 | Error Propagation | 输入参数的微小误差被优化器放大后产生极端结果 |
| 风险分散 | Risk Diversification | 通过多资产配置降低总组合风险的过程 |
| 行业暴露 | Sector Exposure | 组合对某一行业的权重，影响风格风险 |

---

*上一篇：[Alpha 因子研究](doc_04_alpha_factor.md)*

---

## 附录：系列文档导航

| 篇 | 文件 | 文档 | 核心内容 |
|----|------|------|----------|
| 第 1 篇 | `quant_data_pipeline_demo.py` | `doc_01_data_pipeline.md` | 复权、收益率、缺失值、异常值、涨跌停 |
| 第 2 篇 | `quant_strategy_backtest_demo.py` | `doc_02_strategy_backtest.md` | 技术指标、策略逻辑、向量化回测、绩效指标 |
| 第 3 篇 | `quant_event_driven_backtest_demo.py` | `doc_03_event_driven_backtest.md` | 事件驱动架构、6大组件、成本模型 |
| 第 4 篇 | `quant_alpha_factor_demo.py` | `doc_04_alpha_factor.md` | 因子构建、IC/ICIR、分层回测、因子合成、多空组合 |
| **第 5 篇** | `quant_portfolio_optimization_demo.py` | `doc_05_portfolio_optimization.md` | MVO、有效前沿、MinVar、MaxSharpe、风险平价、BL、约束优化 |
