马科维茨

马克维茨投资组合理论的有效性分析

摘要

本文通过实证分析验证了马克维兹现代投资组合理论(MPT)的有效性。利用Quantmod包获取市场数据,结合PortfolioAnalytics和PerformanceAnalytics等工具,构建了多个资产的有效前沿,并分析了不同风险偏好下的最优投资组合配置。研究结果表明,通过分散投资和优化资产权重,马克维兹投资组合能够在相同风险水平下获得更高收益,或在相同收益水平下承担更低风险,充分体现了多元化投资的价值。

引言

现代投资组合理论(Modern Portfolio Theory, MPT)由Harry Markowitz于1952年提出,是金融学领域的重要突破。该理论通过数学模型证明了投资者可以通过资产组合的选择,在风险和收益之间找到最佳平衡点,实现投资组合的最优化。本文将通过R语言实现马克维兹投资组合理论的核心思想,并通过实证分析验证其有效性。

理论背景

马克维兹投资组合理论的核心假设是投资者是风险厌恶的,他们在追求最大收益的同时也希望最小化风险。该理论通过以下几个关键概念来实现投资组合的优化:

  1. 风险与收益的权衡:投资组合的预期收益是各资产预期收益的加权平均,而风险则由资产间的协方差决定。
  2. 有效前沿:在给定风险水平下能够提供最高预期收益的投资组合集合,或者在给定预期收益下风险最小的投资组合集合。
  3. 最优投资组合:结合投资者的风险偏好,在有效前沿上选择最适合的投资组合。

数据获取与预处理

加载必要的R包

首先加载本文分析所需的R包:

# 加载必要的R包
library(quantmod)      # 获取金融数据
library(PortfolioAnalytics)  # 投资组合分析
library(PerformanceAnalytics)  # 绩效分析
library(ggplot2)       # 数据可视化
library(dplyr)         # 数据处理
library(scales)        # 数据转换

数据获取

我们将选择几只具有代表性的美国股票作为分析对象,包括科技股、金融股和消费品股,时间范围设定为过去5年:

# 定义股票代码
tickers <- c("AAPL", "MSFT", "JPM", "PG", "XOM")

# 设置时间范围
start_date <- "2018-01-01"
end_date <- "2023-01-01"

# 创建一个空列表存储股票数据
stock_data <- list()

# 获取每只股票的价格数据
for(ticker in tickers) {
  stock_data[[ticker]] <- getSymbols(ticker, 
                                     from = start_date, 
                                     to = end_date, 
                                     auto.assign = FALSE)
}

# 查看数据结构
str(stock_data[[1]])
## An xts object on 2018-01-02 / 2022-12-30 containing: 
##   Data:    double [1259, 6]
##   Columns: AAPL.Open, AAPL.High, AAPL.Low, AAPL.Close, AAPL.Volume ... with 1 more column
##   Index:   Date [1259] (TZ: "UTC")
##   xts Attributes:
##     $ src    : chr "yahoo"
##     $ updated: POSIXct[1:1], format: "2025-07-02 17:40:27"

数据预处理

将获取的原始价格数据转换为日收益率,并合并为一个数据框: