第二章:金融基础回顾——投资组合理论、有效前沿、夏普比率、最大回撤

做量化投资,尤其是资产配置这一块,金融基础是绕不开的。很多人觉得这些理论太老,都是上世纪的东西了。但我个人习惯是,每次回看这些基础,都能发现新的感悟。说白了,现代投资组合理论就是整个量化配置的“地基”。地基不稳,上面盖的强化学习大楼再漂亮也得塌。

2.1 现代投资组合理论:别把鸡蛋放一个篮子里

这个道理其实很朴素。你想想看,如果你把所有钱都买一只股票,那这只股票跌停,你就直接“关灯吃面”了。马科维茨在1952年用数学把这件事说清楚了。他告诉我们:投资组合的收益是各资产收益的加权平均,但风险(方差)却不是简单的加权平均。

为什么?因为资产之间有相关性。有的资产同涨同跌,有的资产你涨我跌。利用这种相关性,我们可以在不降低预期收益的情况下,把风险降下来。

我记得刚入行时,有个老交易员跟我说:“小伙子,分散化是投资里唯一的‘免费午餐’。”我当时半信半疑。直到我在项目中遇到过一回,重仓了某行业的两只龙头股,结果行业政策一收紧,两只票一起腰斩。嗯,从那以后,我对“分散化”这三个字有了刻骨铭心的理解。

核心公式:

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

组合方差:σp2 = ΣΣ wi wj σi σj ρij

其中 wi 是权重,σi 是标准差,ρij 是相关系数。

2.2 有效前沿:最优配置的“天花板”

有了上面的公式,我们就可以做一件事:在给定风险水平下,找收益最大的组合;或者在给定收益水平下,找风险最小的组合。把所有这样的“最优组合”连成一条线,就是有效前沿。

有效前沿是一条凸向原点的曲线。在这条曲线下方的点,都是“次优”的——你承担了同样的风险,却拿到了更低的收益。曲线右上方的点,对不起,在现有资产条件下你做不到。

我个人习惯用Python来画这条线。代码其实不复杂,核心就是蒙特卡洛模拟或者凸优化。

import numpy as np
import matplotlib.pyplot as plt

# 假设有3个资产,给定预期收益、标准差和相关系数矩阵
# 这里只展示核心逻辑
def simulate_portfolios(mean_returns, cov_matrix, num_portfolios=10000):
    results = np.zeros((3, num_portfolios))
    for i in range(num_portfolios):
        weights = np.random.random(len(mean_returns))
        weights /= np.sum(weights)
        portfolio_return = np.dot(weights, mean_returns)
        portfolio_std = np.sqrt(np.dot(weights.T, np.dot(cov_matrix, weights)))
        results[0,i] = portfolio_return
        results[1,i] = portfolio_std
        results[2,i] = portfolio_return / portfolio_std  # 夏普比率
    return results

画出来之后,你会看到一堆散点,有效前沿就是这些散点的上边界。我曾经用这个框架给一个客户做FOF配置,发现他现有的组合离有效前沿还有一段距离。调整之后,同样的风险,年化收益提升了将近2%。

避坑指南: 有效前沿是基于历史数据算出来的。但历史不会简单重复。我曾经见过一个团队,用过去5年的数据算出了完美的有效前沿,结果未来一年市场风格突变,组合直接跑偏。所以,有效前沿更多是“参考系”,不是“圣杯”。

2.3 夏普比率:收益与风险的“性价比”

有效前沿告诉我们哪些组合是“最优”的,但哪个组合“最好”?这时候就需要一个统一的评价指标。夏普比率就是干这个的。

夏普比率 = (组合收益 - 无风险利率) / 组合标准差

说白了,就是你每承担一单位风险,能拿到多少超额收益。这个值越高,说明这个投资“性价比”越好。

我建议大家在评估策略时,不要只看收益率。年化50%看起来很爽,但如果最大回撤是40%,夏普比率可能只有0.8,这其实是个很糟糕的策略。我个人习惯是,夏普比率低于1的策略,基本不会实盘跑。

夏普比率 评价 我的经验
< 0.5 较差 基本不考虑,风险调整后收益太低
0.5 - 1.0 一般 可以观察,但需要进一步优化
1.0 - 2.0 良好 值得实盘,但要注意过拟合
> 2.0 优秀 小心!可能是数据有误或者过拟合了
注意: 夏普比率假设收益是正态分布的。但金融市场经常出现“肥尾”现象——极端行情比正态分布预测的要频繁得多。所以,夏普比率高的策略,不一定能扛住黑天鹅。

2.4 最大回撤:投资者的“心理底线”

最大回撤,就是从净值最高点跌到最低点的最大幅度。这个指标太重要了。为什么?因为回撤直接影响投资者的心态。

你想想看,一个策略年化收益30%,但最大回撤是50%。这意味着你投100万,最多的时候亏到只剩50万。这时候你还能淡定地持有吗?大部分人的答案是:不能。我见过太多人,在回撤最大的时候割肉离场,结果完美错过了后面的反弹。

最大回撤的计算很简单:

def max_drawdown(equity_curve):
    # equity_curve 是净值序列
    peak = np.maximum.accumulate(equity_curve)
    drawdown = (equity_curve - peak) / peak
    return np.min(drawdown)

在资产配置中,我习惯把最大回撤作为硬约束。比如,客户要求最大回撤不能超过15%,那我在做优化时,就会把回撤约束加进去。强化学习里的奖励函数,也可以把回撤惩罚写进去——这是后话了。

我的经验: 最大回撤和夏普比率往往是矛盾的。追求高夏普,可能会牺牲收益;控制回撤,可能会错过机会。怎么平衡?这就是我们后面要用强化学习来解决的问题。

2.5 本章知识体系

下面这张图,是我自己梳理的本章知识结构。你可以把它当作一个“地图”,方便后续复习。

资产配置金融基础 投资组合理论 均值-方差模型 分散化降低风险 相关系数的重要性 有效前沿 最优组合的边界 风险收益的帕累托最优 蒙特卡洛模拟 夏普比率 收益/风险的性价比 策略评价的核心指标 注意肥尾风险 最大回撤 投资者的心理底线 硬约束条件 与夏普比率的平衡 这些概念是强化学习做资产配置的“输入”和“约束”

这四个概念,环环相扣。投资组合理论是基础,有效前沿是目标,夏普比率是评价标准,最大回撤是约束条件。后面我们用强化学习做资产配置,本质上就是在这些框架下,找到一个能动态适应市场变化的策略。

好了,金融基础就回顾到这里。这些东西看着简单,但真正用好并不容易。下一章,我们会正式进入强化学习的部分,看看怎么用智能体来帮我们做配置决策。


专注资料整理