📊 投资策略与绩效

Ch04 · Python 金融风险管理 · 应用卷
6 节 · 定投 · 事件驱动 · 多空头 · 跨市场套利 · 绩效评估 · 业绩归因

📋 章节导航

  1. 定投策略 — 每日 vs 每周定投宁德时代
  2. 事件驱动策略 — 货币政策 + 并购套利 (AMD/Xilinx)
  3. 多空头策略 — 中信证券 vs 海通证券 · β 中性
  4. 跨市场套利 — 比亚迪 A/H 比价套利
  5. 绩效评估 — Sharpe · Sortino · Treynor · Calmar · Info Ratio
  6. 业绩归因 — Brinson 模型 · 配置/选择/交互收益
💰 策略

4.1 定投策略 · Dollar Cost Averaging

白话版:每次固定买 N 股,不管涨跌。涨了买得贵但赚了,跌了买得便宜但套了。最终收益 = 平均成本 vs 当前价格。

核心公式

Cₜ = N · ΣPᵢ   (累积成本)
Rₜ = tN · P̄ₜ − Cₜ   (浮动收益)
rₜ = Rₜ / Cₜ   (收益率)
关键结论:宁德时代期间涨 25.86%,但日定投收益仅 5.56%。因为高点也买了。定投不是为了收益最大化,而是纪律性 + 平滑波动

核心代码

Python
import numpy as np
import pandas as pd

N = 100                     # 每次买 100 股
cost_each = N * price         # 每次花费
total_cost = cost_each.cumsum()  # 累积成本 Cₜ
shares = (N * ones).cumsum()     # 累积持仓数量
mv = shares * price              # 当前市值
profit = mv - total_cost         # 浮动盈亏 Rₜ
ret = profit / total_cost        # 收益率 rₜ

要点:累计持仓 → cumsum(),取最终值 → .iloc[-1]

📡 策略

4.2 事件驱动策略 · Event-Driven

白话版:利用重大事件(降准、并购)带来的股价异常波动获利。分为宏观(货币政策)、中观(产业政策)、微观(并购套利)。

📌 示例 1:降准事件

2021-12-06 央行宣布降准 0.5%。T 日后 3-5 个交易日 A 股普涨,但 T+30 日效应消退。

Python
P_new = P_index / P_index.loc['2021-12-06']  # 归一化

# 不同窗口的涨跌幅
R1 = P1.iloc[-1] / P1.iloc[0] - 1    # T-30 to T
R2 = P2.iloc[5]  / P2.iloc[0] - 1    # T to T+5
关键发现:降准对股市的拉动效应随 时间推移逐步消退,获利周期很短。创业板/科创 50 波动 > 上证/深证。

📌 示例 2:并购套利 — AMD 收购 Xilinx

2020-10-27 ~ 2022-02-14,对冲基金做空 AMD、做多 XLNX(按 1:1.7234 换股比例)。

Rₜ = −NA·(PtA − P0A) + NB·(PtB − P0B)
Python
N_AMD = 1.7234e5
N_XLNX = 1e5

profit_AMD  = -N_AMD * (P_AMD - P_AMD.iloc[0])   # 空头
profit_XLNX =  N_XLNX * (P_XLNX - P_XLNX.iloc[0]) # 多头
profit = profit_AMD + profit_XLNX
关键教训:328 个交易日中 >75% 的交易日亏损,最大浮亏超 400 万美元。并购套利绝非轻松盈利——能否完成并购有极大不确定性
⚖️ 策略

4.3 多空头策略 · Long-Short Strategy

白话版:同一行业的两只股票,股价比值会在一个区间波动。比值高时做空贵的、做多便宜的,等比值回归。

案例:中信证券 vs 海通证券,股价比值在 2.0 ~ 2.2 区间震荡。
比值 < 2.0 → 买入中信、做空海通;比值 > 2.2 → 做空中信、买入海通。

Rₜ = NA·(PtA − P0A) − NB·(PtB − P0B) (做多 A + 做空 B)
Python
N_citics = 1e6       # 买入 100 万股中信
N_htsec  = 1e6       # 做空 100 万股海通

profit = N_citics * (P_citics - P0_citics) \
       - N_htsec * (P_htsec - P0_htsec)

🔬 β 中性调整

简单 1:1 做多/做空没有消除系统性风险。需要按 β 调整:

NA·βA = NB·βB  →  NB = NA·βA / βB
Python
import statsmodels.api as sm

# 计算 β
model = sm.OLS(endog=R_stock, exog=R_market_addcons)
result = model.fit()
beta = result.params[-1]

# 调整后做空数量
N_htsec_new = N_citics * beta_citics / beta_htsec
# → 做空 138.8 万股海通(原来 100 万股)
关键结论:β 中性调整后策略收益改善,日最高收益 ~11%,日最大亏损从 >3% 收窄至 <1%。
🌐 策略

4.4 跨市场套利 · A/H Share Arbitrage

白话版:同一公司在 A 股和 H 股上市,两个市场的价格比在合理范围波动。偏离了就做多便宜的、做空贵的。

案例:比亚迪 A/H 比价在 1.2 ~ 1.4 箱体震荡。
比价 > 1.4 → 做空 A 股 + 做多 H 股;比价 < 1.2 → 做多 A 股 + 做空 H 股。

PRₜ = PtA / (PtB × E)  (E = 汇率,如港币/人民币)
Python
PR = P_A / (P_H * FX)        # A/H 比价

N = 5e5                     # 50 万股
profit_A  = -N * (P_A - P0_A) # 做空 A 股
profit_H  =  N * (P_H - P0_H) * FX  # 做多 H 股(汇率折算)
profit = profit_A + profit_H

# 回测:最高收益 ~20%(3 个月)
# 实战:不到 2 个月最高 19%
关键结论:短期内收益可观(2 个月 ~19%),但拉长至 2 个月以上 大概率亏损(最大 >15%)。何时退出比何时进入更重要。
📏 绩效评估

4.5 绩效评估 · 5 大指标

核心问题:诺安新经济(累计 61.28%)vs 工银创新动力(累计 46.19%)——光看收益,诺安完胜。
但如果考虑风险调整后呢?

夏普比率

(Rₚ − Rf) / σₚ
每单位总风险的超额收益

索提诺比率

(Rₚ − Rf) / σd
只考虑下行风险

特雷诺比率

(Rₚ − Rf) / β
每单位系统性风险的超额收益

卡玛比率

Rₚ / MDD
每单位最大回撤的收益

信息比率

(Rₚ − Rb) / TE
每单位主动管理风险的超额收益

📊 4 只基金对比(2020-2022)

指标诺安新经济华宝品质国寿安保⭐工银创新
累计收益61.28%58.99%48.69%46.19%
夏普0.5888 (2)0.5756 (3)0.5430 (4)0.7522 (1)
索提诺0.5596 (2)0.5391 (3)0.5072 (4)0.7072 (1)
特雷诺0.1426 (3)0.1406 (4)0.1504 (2)0.1902 (1)
卡玛0.5693 (3)0.5794 (2)0.4389 (4)0.9793 (1)
信息比1.4336 (1)1.3809 (2)1.0482 (4)1.3046 (3)
核心认知:收益最高的诺安(61%)风险调整后表现并不出色。工银创新动力收益最低(46%)但 4/5 指标排名第 1——稳健才是长期赢家。
教训:只看收益率买基金 = 只看长相不看性格。
Python
# 夏普比率自定义函数(仅 3 行核心)
def SR(Rp, Rf, Vp):
    return (Rp - Rf) / Vp

# 计算年化收益率和波动率
R_mean = R_fund.mean() * 252         # 年化
Sigma  = R_fund.std()  * np.sqrt(252) # 年化

# 最大回撤率(双重循环)
def Max_DD(data):
    N = len(data)
    DD = np.zeros((N-1, N-1))
    for i in range(N-1):
        Pi = data.iloc[i]
        for j in range(i+1, N):
            DD[i, j-1] = (Pi - data.iloc[j]) / Pi
    return np.max(DD)
🔍 业绩归因

4.6 Brinson 模型 · 业绩归因

白话版:基金经理赚的钱,到底是因为选对了行业(配置)还是选对了股票(选择)?Brinson 模型把超额收益拆成 3 份。
配置收益
AR = Σ(wᵢᵖ − wᵢᵇ)·Rᵢᵇ
权重调整带来的收益
选择收益
SR = Σ(Rᵢᵖ − Rᵢᵇ)·wᵢᵇ
选股带来的收益
交互收益
IR = Σ(wᵢᵖ−wᵢᵇ)·(Rᵢᵖ−Rᵢᵇ)
配置与选股的协同
超额收益 ER = 配置收益 AR + 选择收益 SR + 交互收益 IR

📌 案例:D 组合 vs B 组合(基准)

来源金额占比
超额收益18.17%100%
其中:配置收益6.11%33.6%
其中:选择收益12.08%66.4%
其中:交互收益−0.02%−0.1%
Python
def Brinson_Model(Wp, Wb, Rp, Rb, types):
    """Brinson 归因分析"""
    if types == 'AR':       # 配置收益
        return np.sum((Wp - Wb) * Rb)
    elif types == 'SR':     # 选择收益
        return np.sum((Rp - Rb) * Wb)
    else:                     # 交互收益
        return np.sum((Wp - Wb) * (Rp - Rb))

# 使用
AR = Brinson_Model(Wp, Wb, Rp, Rb, 'AR')
SR = Brinson_Model(Wp, Wb, Rp, Rb, 'SR')
IR = Brinson_Model(Wp, Wb, Rp, Rb, 'IR')
核心发现:全年来看,选择收益贡献最大(选股比调权重重要得多),交互收益最小。
实战含义:大部分超额收益来自选股能力,而非仓位管理。
Python 金融风险管理 · 应用卷 Ch04
生成日期:2026-05-26  |  Cloudflare Pages 部署