/ / /
第30讲:资本资产定价模型与套利定价理论 (CAPM and APT)
🔴
入学要求
💯
能力测试
🛣️
课程安排
🕹️
研究资源

第30讲:资本资产定价模型与套利定价理论 (CAPM and APT)

💡

查看全集:💎Quantopia量化分析56讲

一、基础概念与CAPM模型

1.1 风险类型解析

1.2 风险溢价机制

当投资组合充分分散时,只有系统性风险需要补偿:

预期收益=无风险利率+风险溢价 预期收益 = 无风险利率 + 风险溢价 

1.3 CAPM核心公式

E(Ri)=Rf+βi(E(Rm)Rf) E(R_i) = R_f + β_i(E(R_m) - R_f) 

1.4 Beta系数计算实战

import yfinance as yf
import statsmodels.api as sm

# 获取数据
start = '2020-01-01'
end = '2021-01-01'
aapl = yf.download('AAPL', start, end)['Close'].pct_change().dropna()
spy = yf.download('SPY', start, end)['Close'].pct_change().dropna()
risk_free = yf.download('^IRX', start, end)['Close'].iloc[-1]/25200  # 转换为日利率

# 计算超额收益
excess_asset = aapl - risk_free
excess_market = spy - risk_free

# 回归计算Beta
model = sm.OLS(excess_asset, sm.add_constant(excess_market))
results = model.fit()
beta = results.params[1]
print(f'AAPL Beta: {beta:.2f}')

二、CAPM模型进阶应用

2.1 有效前沿构建

通过优化算法寻找最优投资组合:

import cvxopt as opt

# 生成随机收益数据
np.random.seed(42)
returns = np.random.randn(4, 1000)

# 投资组合优化
n = len(returns)
S = opt.matrix(np.cov(returns))
pbar = opt.matrix(returns.mean(axis=1))

# 约束条件
G = -opt.matrix(np.eye(n))
h = opt.matrix(0.0, (n,1))
A = opt.matrix(1.0, (1,n))
b = opt.matrix(1.0)

# 有效前沿计算
portfolios = [opt.solvers.qp(mu*S, -pbar, G, h, A, b)['x']
             for mu in np.logspace(-3, 3, 50)]

2.2 市场组合与CML线

资本市场线的斜率即最大夏普比率:

def sharpe_ratio(returns, rf):
    excess = returns - rf
    return excess.mean() / excess.std()

三、套利定价理论(APT)解析

3.1 多因子模型

APT基本公式:

E(Ri)=Rf+βi1F1+βi2F2+...+βikFkE(R_i) = R_f + \beta_{i1}F_1 + \beta_{i2}F_2 + ... + \beta_{ik}F_k

其中:

E(Ri)E(R_i) 表示资产i的预期收益率

RfR_f 表示无风险利率

βij\beta_{ij} 表示资产i对第j个因子的敏感度

FjF_j 表示第j个因子的风险溢价

kk 表示模型中包含的因子数量

3.2 Fama-MacBeth回归

分两步估计因子风险溢价:

  1. 时间序列回归估计因子载荷
  1. 横截面回归估计风险溢价
# 因子数据准备
factors = pd.DataFrame({
    'Market': spy,
    'SMB': small_portfolio - big_portfolio,
    'HML': value_portfolio - growth_portfolio
})

# 第一步:时间序列回归
betas = []
for asset in assets:
    model = sm.OLS(asset_returns[asset], sm.add_constant(factors))
    betas.append(model.fit().params[1:])

# 第二步:横截面回归
final_model = sm.OLS(mean_returns, sm.add_constant(pd.DataFrame(betas)))
results = final_model.fit()

四、模型对比与实践应用

4.1 CAPM vs APT对比

特征CAPMAPT
因子数量单一市场因子多个宏观因子
假设条件较多较少
数据需求较低较高
实践应用简单易用需因子选择

4.3 实战练习

  1. 使用yfinance获取特斯拉(TSLA)过去3年数据
  1. 计算其相对于NASDAQ指数(^IXIC)的Beta值
  1. 比较实际收益与CAPM预测收益的差异
# 练习参考答案
tsla = yf.download('TSLA', '2020-01-01', '2023-01-01')['Adj Close'].pct_change().dropna()
nasdaq = yf.download('^IXIC', '2020-01-01', '2023-01-01')['Adj Close'].pct_change().dropna()

model = sm.OLS(tsla - risk_free, sm.add_constant(nasdaq - risk_free))
results = model.fit()
beta_tsla = results.params[1]
predicted_return = risk_free + beta_tsla*(nasdaq.mean() - risk_free)

五、注意事项与更新

  1. 市场数据接口已更新为yfinance
  1. 实际应用需考虑交易成本与市场摩擦
  1. 定期检查因子有效性(每季度或半年)
  1. 结合基本面分析验证模型结果

通过本教程,读者可以系统掌握资产定价的核心模型,理解市场风险定价机制,并具备实际建模分析能力。建议通过练习巩固知识,并持续关注最新研究进展。

附:练习合集