资产配置与组合优化Skill 资产配置与组合优化

本技能涵盖现代投资组合理论、Black-Litterman模型、风险预算、全天候策略等资产配置核心理论,并指导使用等波动、风险平价、均值方差、最大化分散等四种优化器进行组合优化,适用于量化投资与资产配置场景。

资产配置 0 次安装 10 次浏览 更新于 6/20/2026

name: 资产配置与组合优化 description: 资产配置理论与优化器使用指南,涵盖 MPT、Black-Litterman、风险预算与全天候策略,并包含 4 种优化器及再平衡规则说明。 category: asset-class

Asset Allocation and Portfolio Optimization

Overview

From asset allocation theory to practical implementation, this skill covers classical frameworks (MPT, BL, risk budgeting, all-weather) and the usage of the four optimizers built into this system. The output can be written directly into config.json.

Asset Allocation Theory

1. Modern Portfolio Theory (MPT, Markowitz)

Core idea: maximize expected return for a given level of risk (the efficient frontier).

Optimization problem:
min  w'Σw              (portfolio variance)
s.t. w'μ = target_return
     Σw = 1
     w ≥ 0              (no shorting)
Advantages Disadvantages
Mathematically rigorous Extremely sensitive to inputs (garbage in, garbage out)
Efficient frontier is visualizable Concentrated-allocation problem (often produces extreme weights)
Foundational framework Assumes normality and ignores fat tails

Practical advice: do not use raw MPT directly. Add constraints (upper/lower bounds, sector limits) or use a regularized version.

2. Black-Litterman Model

Core idea: start from market equilibrium and incorporate investor views.

Steps:
1. Reverse-imply market equilibrium returns: π = δΣw_mkt
2. Build the view matrices: P (selection matrix), Q (view returns), Ω (view uncertainty)
3. Blend the posterior: μ_BL = [(τΣ)^-1 + P'Ω^-1 P]^-1 [(τΣ)^-1 π + P'Ω^-1 Q]
4. Run Markowitz optimization using posterior μ_BL

Example views:

  • Absolute view: “China A-shares will return 10% over the next year” → P=[1,0,0], Q=[0.10]
  • Relative view: “China A-shares will outperform US equities by 5%” → P=[1,-1,0], Q=[0.05]

Parameter guidance:

  • τ (uncertainty scaling): 0.025-0.05
  • Ω: set according to view confidence, where higher confidence = smaller variance

3. Risk Budgeting

Core idea: allocate by risk contribution rather than by capital share.

Risk contribution: RC_i = w_i × (Σw)_i / σ_p
Target: RC_i / σ_p = budget_i  (for all i)
Strategy Risk Budget Best Use Case
Equal risk contribution Each asset 1/N When you do not know which asset is best
Equity-tilted risk budget Stocks 60%, bonds 30%, commodities 10% When you want equities to contribute more risk
Dynamic risk budget Adjust dynamically by signal strength When you have market-timing ability

4. All-Weather Strategy

Bridgewater framework: allocate risk equally across economic environments.

Economic environment   Asset allocation
─────────              ─────────
Growth rising          Equities + commodities + corporate bonds
Growth falling         Government bonds + inflation-protected bonds
Inflation rising       Commodities + inflation-protected bonds + EM debt
Inflation falling      Equities + government bonds

Simplified allocation example for China-focused portfolios:
- 30% CSI 300 / CSI 500
- 40% government bonds / credit bonds
- 15% gold
- 15% commodities / REITs

Guide to the 4 Optimizers

Overview of the Built-In Optimizers

Configure them in config.json through optimizer and optimizer_params:

optimizer Display Name Core Idea Best Use Case
equal_volatility Equal Volatility Allocate weights by inverse volatility Simple and effective baseline
risk_parity Risk Parity Equalize risk contribution while accounting for correlation Long-term robust allocation
mean_variance Mean-Variance Maximize Sharpe ratio or minimize variance When return forecasts are available
max_diversification Maximum Diversification Maximize the diversification ratio When pursuing a low-correlation portfolio

1. equal_volatility

{
  "optimizer": "equal_volatility",
  "optimizer_params": {
    "lookback": 60
  }
}

Principle: w_i = (1/σ_i) / Σ(1/σ_j)

Parameter Default Description
lookback 60 Volatility calculation window (trading days)

Advantages: simple and fast, no return forecast required, no correlation matrix required.
Disadvantages: ignores cross-asset correlation.

2. risk_parity

{
  "optimizer": "risk_parity",
  "optimizer_params": {
    "lookback": 60
  }
}

Principle: solve for weights such that each asset contributes the same amount of risk.

Parameter Default Description
lookback 60 Covariance-matrix estimation window

Advantages: accounts for correlation, spreads risk more evenly, and is robust over long horizons.
Disadvantages: requires iterative solving and is sensitive to covariance estimates.

3. mean_variance

{
  "optimizer": "mean_variance",
  "optimizer_params": {
    "lookback": 60,
    "risk_free": 0.0
  }
}

Principle: Markowitz optimization that maximizes the Sharpe ratio.

Parameter Default Description
lookback 60 Window for estimating means and covariances
risk_free 0.0 Risk-free rate (annualized)

Advantages: theoretically optimal (if inputs are accurate).
Disadvantages: extremely sensitive to inputs, prone to extreme weights, and often performs poorly out of sample.
Recommendation: do not make lookback too short (<30 easily overfits), and add upper/lower weight constraints.

4. max_diversification

{
  "optimizer": "max_diversification",
  "optimizer_params": {
    "lookback": 60
  }
}

Principle: maximize DR = (w'σ) / σ_p (the diversification ratio).

Parameter Default Description
lookback 60 Calculation window

Advantages: does not require return forecasts and seeks true diversification.
Disadvantages: effectiveness is limited in highly correlated environments.

Optimizer Selection Decision Tree

Do you have return forecasts?
├── Yes → mean_variance (remember to add constraints)
└── No → Do you need to account for correlation?
    ├── Yes → risk_parity (recommended default)
    └── No → Are volatility differences across assets large?
        ├── Yes → equal_volatility
        └── No → max_diversification

Rebalancing Strategy

Three Rebalancing Triggers

Method Trigger Condition Advantages Disadvantages
Periodic rebalancing Fixed monthly / quarterly date Simple, predictable trading cost May miss or delay adjustments
Threshold trigger Deviation from target weight > X% Trades only when needed Frequent trading in high-volatility markets
Volatility trigger VIX / volatility breaks a threshold Adapts to market regime Parameter selection is difficult

Suggested Rebalancing Frequency

Asset Class Suggested Frequency Threshold
Equity portfolio Monthly ±5%
Stock-bond mix Quarterly ±10%
Global macro Quarterly / semiannual ±10%
Cryptocurrency Weekly / biweekly ±15% (high volatility)

Rebalancing in Backtests

Implement rebalancing logic in signal_engine.py:

# Periodic rebalancing example (every 20 trading days)
if bar_count % rebalance_freq == 0:
    # Recompute weights
    new_weights = calculate_target_weights(data_map)
    for code, weight in new_weights.items():
        signals[code].iloc[i] = weight

Cross-Asset Correlation Analysis

Typical Correlation Matrix (China-Focused Portfolio Example)

CSI 300 CSI 500 Government Bonds Gold BTC
CSI 300 1.00 0.85 -0.15 0.05 0.10
CSI 500 0.85 1.00 -0.10 0.03 0.12
Government Bonds -0.15 -0.10 1.00 0.20 -0.05
Gold 0.05 0.03 0.20 1.00 0.15
BTC 0.10 0.12 -0.05 0.15 1.00

Key patterns:

  • Negative stock-bond correlation is the foundation of allocation (but it does not always hold; in 2022 both stocks and bonds sold off)
  • Gold has low correlation with equities and serves as a hedge
  • BTC’s correlation with traditional assets is unstable and tends to become positive in crises
  • Large-cap versus small-cap China A-shares have high correlation (0.85), so diversification benefits are limited

Output Format

## Asset Allocation Recommendation

### Allocation Plan
| Asset | Weight | Risk Contribution | Expected Return (Annualized) |
|------|------|---------|--------------|
| CSI 300 | 30% | 45% | 8% |
| Government Bond ETF | 40% | 15% | 3% |
| Gold | 15% | 20% | 5% |
| BTC | 15% | 20% | 15% |

### Optimizer Configuration
```json
{
  "optimizer": "risk_parity",
  "optimizer_params": {"lookback": 60}
}

Expected Risk / Return

Metric Value
Expected annualized return 7.2%
Expected annualized volatility 8.5%
Expected Sharpe 0.85
Expected maximum drawdown -12%

Rebalancing Rules

  • Frequency: quarterly (first trading day of March / June / September / December)
  • Threshold: trigger when any asset deviates from target by ±10%
  • Cost: estimated annual trading cost 0.15%

## Notes

1. **The optimizer needs enough instruments**: at least 3 instruments are needed for meaningful optimization; with 2 instruments, `equal_volatility` is usually enough
2. **`lookback` window**: too short (`<20`) is noisy, too long (`>120`) reacts slowly, and 60 is a reasonable default
3. **`mean_variance` trap**: it is the easiest to overfit, and out-of-sample Sharpe is often cut by half or more
4. **Rebalancing cost**: frequent rebalancing eats into returns; for China A-share portfolios, stamp duty of 0.05% plus commissions is material
5. **Cross-market allocation**: use `"source": "auto"` in `config.json`, and let `codes` mix instruments from different markets
6. **Leverage constraint**: the sum of weights must be ≤ 1.0, and leverage is not allowed unless explicitly specified
7. **Survivorship bias**: historical correlations may be distorted by delistings and new listings