金融分析与风险管理——资本资产定价模型
1 系统性风险与非系统性风险
在理论上,股票面临的风险可以抽象的划分为系统性风险与非系统性风险。系统性风险(不可分散风险),也称市场风险,通常是由于公司外部因素引起、与公司正常经营无关的风险;非系统性风险(可分散风险),通常是由于公司自身原因引起的风险。
本文以上证180指数成分股为例演示投资组合的系统性风险与非系统性风险,数据集时间为2016-2018年,已剔除期间上市的股票,最终保留155只股票,在该数据集中,等权重逐步增加投资组合的股票个数,完整的数据可以通过百度网盘获取,提取码:lvzd。其Python程序如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #中文显示问题
plt.rcParams['axes.unicode_minus'] = False #负数显示问题
stocks_data = pd.read_excel(r'C:\Users\Administrator\Desktop\上证180指数成分股日收盘价.xlsx',header = 0,index_col = 0)
#观察数据
stocks_data.head()
stocks_data.shape
#计算对数收益率
return_stocks = np.log(stocks_data/stocks_data.shift(1))
return_stocks = return_stocks.dropna()
#获取行数
n = return_stocks.shape[1]
#构建投资组合的波动率一维数组
vol_port = np.zeros(n)
for i in range(1,n+1):
weight = np.ones(i)/i
return_cov = 252*return_stocks.iloc[:,:i].cov()
vol_port[i-1] = np.sqrt(np.dot(weight,np.dot(return_cov,weight.T)))
N_list = np.arange(n) + 1 #生产1-155的数组
plt.figure(figsize=(8,6))
plt.plot(N_list,vol_port