系统性风险与非系统性风险

  假设有一资产在可行集内,坐标为(σ1,r1),我们知道CML的方程为E(RP) = Rf + [(E(RM) - Rf) / σM] × σP,将r1代入E(RP) 可得σP1,σP1就是系统性风险,σ1 - σP1为非系统性风险。系统性风险可看做是公司外部的不可控的市场风险,无法通过分散消除;非系统性风险是由公司自身因素引发的,可以通过分散消除。
  下面以2016-2018年的上证180指数的成分股为例来模拟投资组合,且剔除了在该时段内上市的公司数据,最终保留155支股票。做法是在组合中逐渐增加成分股股票数量N,并且保证每支股票等权重(均为1/N),计算出N个组合的波动率。可以预测随着组合中成分股数量的增加,分散化带来的好处越来越大,组合的波动率会逐渐下降。

import numpy as np
import pandas as pd
df=pd.read_excel('C:/Users/lenovo/Desktop/155支成分股日收盘价.xlsx',index_col=0)
#若不指定索引为日期列,它会自动生成一列索引
df.describe()
Out[1]: 洛阳钼业        华友钴业         口子窖  ...        首创股份        白云机场        浦发银行
count  731.000000  731.000000  731.000000  ...  731.000000  731.000000  731.000000
mean     5.244309   56.553228   40.662859  ...    5.259658   13.992517   14.021341
std      1.635156   29.425595    8.710005  ...    1.495235    1.969342    2.744419
min      3.060000   14.120000   28.260000  ...    3.020000    9.760000    9.260000
25%      3.960000   34.285000   34.045000  ...    4.150000   12.500000   11.710000
50%      4.490000   47.950000   36.560000  ...    4.770000   14.010000   13.170000
75%      6.740000   82.685000   46.385000  ...    6.410000   15.230000   16.480000
max      9.690000  132.090000   66.000000  ...    9.400000   19.890000   18.450000
[8 rows x 155 columns]

  可以发现该数据共有155支股票以及731个交易日的日收盘价数据。下面计算每支股票的对数收益率,并且生成不同数量股票对应的投资组合的收益波动率:

r=np.log(df/df.shift(1))
r=r.dropna()
n=155
volp=np.zeros(n)#生成存放投资组合收益率序列波动率的初始数组
for i in range(1,n+1):w=np.ones(i)/i#生成权重数组1/Ncov=252*r.iloc[:,0:i].cov()#依次计算股票间的年协方差volp[i-1]=np.sqrt(w@cov@w)#@与np.dot一样表示矩阵的内积,最后一个w自动转换为列向量

  然后画图,发现N在30以上时就已经达到最优分散化效果了:

import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
plt.plot(range(1,156),volp)
plt.xlabel('股票数量')
plt.ylabel('组合收益率的波动率')
plt.title('组合中股票数量与组合收益率的波动率关系')
plt.grid()

模型表达式的应用及证券市场线

  资本资产定价模型的表达式为E(Ri) = Rf + βi × [E(Rm) - Rf],E(Ri)是资产i的预期收益率,E(Rm)是所有可投资资产组合(即市场组合)产生的收益率,βi是资产i的预期收益率与市场收益率敏感性的反映。
  假定股票A的β值为1.2,无风险利率为3%,市场组合收益率为10%,求股票A的预期收益率,并在证券市场线上标出该点:

def r(rf,beta,rm):return rf+beta*(rm-rf)
rf,beta,rm=0.03,1.2,0.1
ri=r(rf,beta,rm);ri
Out[3]: 0.114
x=np.arange(0,2.0,0.01)#np.arange()支持步长为小数
plt.plot(x,rf+x*(rm-rf),label='证券市场线')
plt.plot(beta,rf+beta*(rm-rf),'ro',label='股票A')
plt.xlabel('βi')
plt.ylabel('E(ri)')
plt.xlim(0,2)
plt.title('证券市场线')
plt.legend()
plt.grid()

CAPM的实证检验

  使用资本资产定价模型的关键在于估计斜率值β,下面以2016年-2018年沪深300指数的日收盘价为市场组合数据,从上述df数据框中挑出第1只股票,使用线性回归估计这只股票的β,进而写出CAPM表达式:

import statsmodels.api as sm
hs300=pd.read_excel('C:/Users/lenovo/Desktop/16-18沪深300指数.xlsx',index_col=0)
rhs=np.log(hs300/hs300.shift(1))
rhs=rhs.dropna()
rhs.describe()
Out[5]: 沪深300指数
count  730.000000
mean    -0.000194
std      0.011610
min     -0.071853
25%     -0.005143
50%      0.000359
75%      0.005065
max      0.042262
y=r.iloc[:,0];y.head()#取出第一支股票的收益率序列
Out[6]:
日期
2016-01-05   -0.020101
2016-01-06    0.094387
2016-01-07   -0.104591
2016-01-08    0.047568
2016-01-11   -0.063073
Name: 洛阳钼业, dtype: float64
rhs_addc=sm.add_constant(rhs)
model=sm.OLS(y,rhs_addc).fit()
model.summary()
Out[7]:
<class 'statsmodels.iolib.summary.Summary'>
"""OLS Regression Results
==============================================================================
Dep. Variable:                洛阳钼业   R-squared:                       0.284
Model:                            OLS   Adj. R-squared:                  0.283
Method:                 Least Squares   F-statistic:                     289.0
Date:                Mon, 03 Feb 2020   Prob (F-statistic):           7.85e-55
Time:                        16:34:19   Log-Likelihood:                 1641.2
No. Observations:                 730   AIC:                            -3278.
Df Residuals:                     728   BIC:                            -3269.
Df Model:                           1
Covariance Type:            nonrobust
==============================================================================coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.0002      0.001      0.188      0.851      -0.002       0.002
沪深300指数     1.3874      0.082     17.000      0.000       1.227       1.548
==============================================================================
Omnibus:                      112.290   Durbin-Watson:                   2.045
Prob(Omnibus):                  0.000   Jarque-Bera (JB):              250.210
Skew:                           0.848   Prob(JB):                     4.65e-55
Kurtosis:                       5.313   Cond. No.                         86.2
==============================================================================
print('洛阳钼业股票的CAPM模型表达式为R={:.4f}+{:.4f}×Rm。'.format(model.params[0],model.params[1]))洛阳钼业股票的CAPM模型表达式为R=0.0002+1.3874×Rm。

(二十四)资本资产定价模型相关推荐

  1. 二十四、Struts2中的UI标签

    二十四.Struts2中的UI标签 Struts2中UI标签的优势: 数据回显 页面布局和排版(Freemark),struts2提供了一些常用的排版(主题:xhtml默认 simple ajax) ...

  2. python 分数序列求和公式_Python分数序列求和,编程练习题实例二十四

    本文是关于Python分数序列求和的应用练习,适合菜鸟练习使用,python大牛绕行哦. Python练习题问题如下: 问题简述:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13 要 ...

  3. 异常处理程序和软件异常——Windows核心编程学习手札之二十四

    异常处理程序和软件异常 --Windows核心编程学习手札之二十四 CPU负责捕捉无效内存访问和用0除一个数值这种错误,并相应引发一个异常作为对错误的反应,CPU引发的异常称为硬件异常(hardwar ...

  4. 数字图像处理领域的二十四个典型算法及vc实现、第一章

    数字图像处理领域的二十四个典型算法及vc实现.第一章 作者:July   二零一一年二月二十六日. 参考:百度百科.维基百科.vc数字图像处理. --------------------------- ...

  5. 山海演武传·黄道·第一卷 雏龙惊蛰 第二十二 ~ 二十四章 真龙之剑·星墟列将...

    山海演武传·黄道·第一卷 雏龙惊蛰 第二十二 ~ 二十四章 真龙之剑·星墟列将 "我是第一次--请你,请你温柔一点--"少女一边娇喘着,一边将稚嫩的红唇紧贴在男子耳边,樱桃小嘴盈溢 ...

  6. [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  7. CYQ.Data 轻量数据层之路 使用篇-MAction 取值赋值 视频[带音乐] F (二十四)

    CYQ.Data 轻量数据层之路 使用篇-MAction 取值赋值 视频[带音乐] F (二十四) 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇三曲 MAction 取值赋值 ...

  8. SAP UI5 初学者教程之二十四 - 如何使用 OData 数据模型试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  9. 实验二十四、OSPF 在NBMA 环境中点到点的配置

    实验二十四.OSPF 在NBMA 环境中点到点的配置 一. 实验目的 1. 掌握NBMA 环境中点到点的配置 2. 理解NBMA 环境中点到点网络类型的意义 二. 应用环境 在帧中继的网络中,OSPF ...

  10. FreeSql (二十四)Linq To Sql 语法使用介绍

    原本不支持 IQueryable 主要出于使用习惯的考虑,如果继承 IQueryable,编写代码的智能总会提示出现一堆你不想使用的方法(对不起,我有强迫症),IQueryable 自身提供了一堆没法 ...

最新文章

  1. Oracle中TO_DATE格式
  2. uitableviw 自适应高度
  3. spring IOC 之篇三:默认标签的解析
  4. 素描的几大基础知识点_2020年让您感到惊奇的5大素描资源
  5. 鼎信诺审计前端取数工具_给2019前端的5个建议
  6. 项目管理九大知识领域
  7. 豆瓣电影、纪录片、书籍......下载神器
  8. 《细说PHP》读书笔记
  9. 如何制作计算机启动盘,电脑怎么制作U盘启动盘
  10. Label Consistent Matrix Factorization Hashingfor Large-Scale Cross-Modal Similarity Search(LC)--文献翻译
  11. 数字三角形的多种解法思路
  12. 第十一章 性能与可伸缩性(待续)
  13. 自制COREXY结构的3D打印机
  14. 5.11 Go语言文本大数据处理(2):文件分割与入库
  15. iOS开发关于“发送原图”功能问题的记录
  16. 37种传感器(六)之声音传感器模块+Stduino NanoUNO
  17. 人生要懂得放弃的八个心理负担,你已经放弃了吗?
  18. 第十届蓝桥杯真题-灵能传输
  19. Docker Swarm简单教程
  20. CLRS 13.3插入

热门文章

  1. Shamir秘密共享协议
  2. python社区微信群_Python 打造微信群聊天机器人(带操作界面)-Go语言中文社区...
  3. html项目经验范文,优秀的项目经验怎么写?
  4. 微信开发者工具登录二维码不显示
  5. word或wps中如何把visio或公式等转换为图片
  6. 赞奇福利来袭:双重金秋好礼等着你
  7. 数据库范式1NF 2NF 3NF详细阐述
  8. AprilTag中的apriltag.c文件
  9. 关于局域网不能访问-共享打印机
  10. KingbaseES V8R6集群管理运维案例之---repmgr standby switchover故障