一、投资组合理论基础:从马科维茨到CAPM

各位同学,今天我们来聊聊投资组合理论的基石。说实话,这部分内容我当年学的时候也觉得有点枯燥,但后来在实盘交易中,这些理论帮我避开了不少坑。

现代投资组合理论(MPT)是哈里·马科维茨在1952年提出的。他因此拿了诺贝尔奖。为什么?因为他用数学解决了「不要把鸡蛋放在一个篮子里」这个古老问题。

1.1 风险与收益的量化

先搞清楚两个基本概念:风险和收益怎么量化。

收益率的计算,我个人习惯用对数收益率:

import numpy as np

# 简单收益率
simple_return = (price_t - price_t_1) / price_t_1

# 对数收益率(我更喜欢这个)
log_return = np.log(price_t / price_t_1)

为什么用对数收益率?因为它在时间上可加,而且近似正态分布。嗯,这里要注意,实际金融数据有肥尾特征,但那是后话了。

风险的度量,最常用的是标准差(波动率):

# 年化波动率
daily_returns = np.diff(prices) / prices[:-1]
annual_vol = np.std(daily_returns) * np.sqrt(252)

我在项目中遇到过一个问题:用30天滚动窗口算波动率,结果遇到2020年3月市场暴跌,波动率瞬间飙升。后来我改用EWMA(指数加权移动平均)模型,效果好了很多。

核心公式:

组合预期收益:E(Rp) = Σ wi × E(Ri)

组合方差:σ²p = ΣΣ wi × wj × σij

其中wi是权重,σij是协方差

1.2 有效前沿:最优组合的集合

有效前沿是什么?说白了,就是给定风险水平下,能拿到的最高收益。

你想想看,市场上那么多资产,怎么配比最好?马科维茨给出了答案:

  1. 计算所有资产的预期收益、方差、协方差
  2. 求解优化问题:最小化方差,给定目标收益
  3. 得到一系列最优组合,连成一条曲线

这条曲线就是有效前沿。曲线上的每个点,都是一个「帕累托最优」组合。

实战经验:我曾经用50只A股做有效前沿,结果发现前沿上的组合权重变化剧烈。后来加了约束条件(单只股票权重不超过5%),组合才变得可操作。

下面我用SVG画一张图,展示本章的知识体系:

投资组合理论基础 · 知识体系 投资组合理论 现代投资组合理论(MPT) 有效前沿 资本资产定价模型(CAPM) 均值-方差分析 分散化投资 最优组合选择 资本市场线(CML) 证券市场线(SML) Beta系数 风险量化 → 组合优化 → 定价模型

1.3 资本资产定价模型(CAPM)

CAPM是夏普等人在MPT基础上发展出来的。它回答了一个问题:单个资产的预期收益应该怎么定?

公式很简单:

E(Ri) = Rf + βi × [E(Rm) - Rf]

其中:
- Rf:无风险利率(比如国债收益率)
- βi:资产i的系统性风险
- E(Rm):市场组合预期收益

β系数衡量的是资产对市场波动的敏感度。β=1,跟市场同涨同跌;β>1,波动比市场大;β<1,波动比市场小。

避坑指南:我曾经用CAPM给一只小盘股定价,结果β算出来只有0.6,但实际波动大得吓人。后来发现,CAPM只考虑系统性风险,非系统性风险它不管。小盘股的非系统性风险占比很高,所以CAPM会低估风险。

1.4 风险与收益的量化实战

讲完理论,咱们来点实际的。下面是我常用的风险收益分析框架:

指标 公式 说明
夏普比率 (Rp - Rf) / σp 每单位风险获得的超额收益
索提诺比率 (Rp - Rf) / σd 只考虑下行风险,更实用
最大回撤 max(峰值 - 谷值) / 峰值 历史最大亏损幅度
信息比率 (Rp - Rb) / TE 相对于基准的超额收益

我个人最看重的是索提诺比率。为什么?因为投资者真正怕的是亏损,不是波动。上涨的波动是好事,下跌的波动才是风险。

def calculate_sortino(returns, rf=0.03, target=0):
    """
    计算索提诺比率
    returns: 日收益率序列
    rf: 无风险利率(年化)
    target: 最低可接受收益率
    """
    excess_returns = returns - target
    downside_returns = excess_returns[excess_returns < 0]
    downside_std = np.std(downside_returns) * np.sqrt(252)
    annual_return = np.mean(returns) * 252
    sortino = (annual_return - rf) / downside_std
    return sortino

一个小技巧:计算下行标准差时,我习惯用日数据,然后年化。这样能捕捉到更精细的风险特征。用月数据的话,有些日内的大跌会被平滑掉。

1.5 理论在实战中的局限

说了这么多理论,我得泼点冷水。MPT和CAPM在实际应用中有几个硬伤:

  • 假设太强:投资者理性、市场无摩擦、收益率正态分布——现实中都不成立
  • 参数不稳定:协方差矩阵随时间变化,历史数据不一定能预测未来
  • 尾部风险:黑天鹅事件(比如2008年、2020年)在正态分布假设下几乎不可能发生,但现实中发生了

我记得2015年A股股灾时,很多用MPT做出来的组合一天就跌了10%以上。为什么?因为模型假设资产间相关性稳定,但危机时所有资产的相关性都趋向1,分散化失效了。

所以,我的建议是:把这些理论当作分析框架,而不是教条。用它们来理解风险收益的底层逻辑,但做决策时一定要结合市场经验和常识。


专注资料整理