孙丽泊

摘要:随着中国金融体系的逐步完善和大数据时代的到来,新技术在金融领域的应用不断深化。本文在马科维茨投资组合理论的基础上,借助Python工具,在20只来自不同行业的股票中选取5只进行了组合投资分析,通过实证得到夏普比率最大的最优投资组合及方差最小的最优投资组合,对它们的预期收益率、标准差及夏普比率进行对比分析,并给出资产组合的有效边界。通过实证分析,进一步说明马科维茨投资组合理论在金融风险管理中的重要意义。

关键词:马科维茨模型  Python  夏普比率  有效边界  最优投资组合

一、引言

(一)相关理论

1.马科维茨投资组合理论。1952年,哈里·马科维茨的论文《Portfolio Selection》运用概率论和求解二次规划的方法解决投资组合的选择问题,这是现代资产组合管理理论诞生的标志。在投资者厌恶风险并寻求期望收益最大化的假设条件下,马科维茨投资组合理论包括均值-方差模型和效边界理论两方面内容。该理论提出用均值和方差分别量化投资组合的期望收益和投资风险,投资决策的目标便是寻找相同收益水平下投资风险最小或同等风险水平下收益最高的投资组合,位于有效边界上的投资组合同时满足这两个条件。

(1)均值-方差模型。

假设投资者在某单一投资期投资于n种风险资产构成的组合,ri表示第i个资产的预期收益率,则资产组合的期望收益率为:

(1)

其中表示第i个资产所占的投资比重。

用表示第i个资产的方差,则由n项资产构成的投资组合的方差为:

(2)

其中,i,j表示不同的资产,是资产i和资产j之间的协方差,它是用来衡量两种资产收益率联动性的指标。为资产i与資产j之间的相关系数,可用来比较两种资产之间相关性的大小。和分别表示资产i和资产j的标准差。根据公式(2)可以看出,投资组合的风险主要取决于各个资产的投资比重、不同证券之间的相关系数、以及各项资产的标准差。因此,我们应优先选择方差较小且两两之间相关系数较低的资产构建投资组合从而降低投资风险。在实际应用中,通常用过去收益数据的样本平均值和样本方差来估计未来收益与风险。

(2)资产组合的有效边界。

投资组合中各项资产的所有可能组合构成可行集,其形状类似图1所示的一个左凸的实心区域。MVP点标注的为最小方差资产组合,以该点为中心可将可行集分成两部分,其中位于上半部分边缘线的投资组合同时满足既定收益水平下风险最小和同等风险水平下收益最高的条件,被称为资产组合的有效边界。

2.夏普比率。1966年,夏普提出用夏普比率(Sharpe ratio)作为衡量基金业绩的风险调整指标,夏普比率是投资组合的超额期望收益率与整体标准差之比,计算公式为:

(3)

其中,表示夏普比率,为投资组合整体标准差,是无风险利率。

表示资产组合每多承担一单位风险时,能有多少超额收益。综合考虑了收益与风险,本文的实证研究部分也将使用这一指标作为判断投资组合优劣的标准。

(二)研究内容

本文研究的主要问题是,利用 Python语言说明马科维茨投资组合理论在股市最优投资组合选择中的一个应用实例。Python语言具有完整的数据分析套件和能够调取股价等金融数据的程序包,为解决金融问题提供了很大的方便。利用Python语句求解最优投资组合可有效解决各项资产之间的协方差和相关系数计算复杂等问题。研究表明在Python中能够很快计算出最优投资组合,新技术对于马科维茨的投资组合理论在中国金融市场中的应用有重要价值。

二、实证研究

本文选取了市场上20只来自不同行业比较有代表性的股票,首先利用过去三个月的历史数据计算出这20只股票的收益率均值、股票相互之间的协方差与相关系数,进而从中筛选出收益率较高且相互之间相关系数较小的5只股票;然后通过夏普比率最大化和方差最小化这两种优化方法来找到最优的投资组合权重参数,并计算出这两种最优投资组合的期望收益率、预期波动率和夏普比率;最后对投资组合的有效边界进行可视化。

(一)样本股票的选择及数据获取

首先新建一个Python3文件并将要使用的软件包引入,代码如下:

选取市场中20只来自不同行业的比较有代表性的股票,利用tushare库中的get_hist_data函数,获取它们自2019年1月1日至2019年12月31日之间一共246个交易日的每日收盘价历史数据,分别用mean函数、cov函数和corr函数估计出每只股票的预期年化收益率、相互之间的协方差和相关系数。表1列出了20只股票的股票代码和预期年化收益。

从以上20只股票中筛选出收益率较高且相互之间相关系数较小的5只股票,分别是:贵州茅台(600519)、万科A股(000002)、方正科技(600601)、中国船舶(600150)和晨光文具(603899)(本文后面投资组合的权重向量各股排序与此处相同)。

(二)5只股票的预期收益率、相互之间的协方差与相关系数

重新计算所选5只股票的预期年化收益率、各只股票相互之间的协方差与相关系数,结果如表2所示:

根据表2可见,5只股票的预期收益率均大于0,各股票之间的协方差和相关系数均较小,适合构造投资组合。

(三)模拟大量随机投资组合

为了寻找满足条件的最优投资组合以及有效边界,首先通过一次蒙特卡罗模拟得到50000组随机权重向量,并通过数组记录各组合的期望收益、标准差和夏普比率,这里主要用到for循环语句、append函数和numpy库中的random函数和array函数,其中组合期望收益为5只股票预期收益的加权和,计算夏普比率时无风险利率设定为4%,另外由于中国的股市不允许卖空,还需将各股权重数值限定在0和1之间。在图2中可以看到这些随机组合的分布,它们构成了资产组合的可行集。

(四)找到夏普比率最大的最优投资组合

首先定义一个stat函数记录投资组合的预期收益、标准差和夏普比率,然后引入scipy库中的optimze模块,在权重和等于1的约束下,利用minimize函数最小化夏普比率的负值,起始参数列表采用均匀分布,即5只股票的权重均为0.2,最终求得夏普比率最大的投资组合的权重向量为[0.435,0.057,0.127,0.021,0.36],预期收益率、标准差、夏普比率构成的向量为[0.593,0.226,2.443]。

(五)找到方差最小的最优投资组合

用minimize函数得到方差最小的最优投资组合权重向量为[0.134,0.336,0.162,0.022,0.346],该组合预期收益率、标准差、夏普比率向量为:[0.471,0.200,2.155].

(六)最优投资组合的比较和可视化

将以上得到的夏普比率最大的投资组合和方差最小的投资组合结果整理为表3,以便投资者更直观地对它们进行比较,选择适合自己的最优投资组合。

从表3可以看出,投资组合的夏普比率最大可以达到2.443,对应的标准差为0.226,对那些希望每多承担一单位风险所获得的超额收益达到最大的投资者,应该选择夏普比率最大的投资组合,即对贵州茅台、万科A股、方正科技、中国船舶和晨光文具的投资比重分别为43.5%、5.7%、12.7%、2.1%和36%,该组合的预期收益率是59.3%.对于追求投资风险最小的投资者,应选择方差最小的最优投资组合,即对贵州茅台、万科A股、方正科技、中国船舶和晨光文具的投资比重分别为13.4%、33.6%、16.2%、2.2%和34.6%.该组合的标准差为0.2,相应的预期收益率为47.1%。

利用matplotlib.pyplot中的相关函数对以上最优投资组合在可行集中的位置进行可视化,得到图2。

图2中,五角星标记的是夏普比率最大的投资组合(即风险收益均衡点),正六边形标记的是最小方差投资组合。与图1类似,以最小方差投资组合为界,将可行集分为上下两个部分,上半部分的边缘即为有效边界。

从图2中可以看出,所有投资组合的夏普比率均为正值,有效边界上的投资组合达到了相同收益水平下投资风险最小和同等风险水平下收益最高的效果。此外,有效边界上的投资组合风险和收益一定是相对应的,投资者若想达到得较高的收益,相应的就必须承担更高的风险。

三、结论

实验结果表明,利用马科维茨投资组合理论,能够找到由多个资产组成的投资组合中风险最小或夏普比率最大的投资组合以及有效边界。投资者可以根据自身实际能力以及风险偏好进行理性投资。Python在很大程度上方便了马科维茨投资组合理论中预期收益率、投资组合方差的计算,并能快速找出最优投资组合,对于马科维茨投资组合理论在中国金融市场中的应用有重要价值。将传统的金融理论和新兴程序设计语言结合起来,更加快速、高效地解决金融问题,应该受到金融分析人员和新兴技术人才的重视。

参考文献:

[1]Markowitz H.M..Portfolio Selection[J].Journal of Finance.1952(7).

[2]朱顺泉.投资学及其Python应用[M].北京:清华大学出版社,2019.

[3]张贺清.均值和方差变动的马科维茨投资组合模型研究[D].哈尔滨:哈尔滨工业大学,2015.

[4]李洋,余丽霞.基于马科维茨理论的最优证券组合分析[J].财会月刊.2013(22).

[5]杨芷.投资组合理论发展演变与模型构建[J].经济研究导刊.2018(36).

[6]刘科弟.马科维茨理论构造投资组合[J].現代商业.2018(36).

[7]黎爽.基于Python科学计算包的金融应用实现[D].南昌:江西财经大学,2017.

作者单位:苏州科技大学

python实现马科维茨模型的资本市场线_基于Python的马科维茨投资组合理论的实证研究...相关推荐

  1. python实现马科维茨模型的资本市场线_均值方差模型与资本市场线

    马科维茨在假设投资者以预期收益率的波动程度衡量风险且是理性的,在相同风险下追求最高收益率在相同收益率下要求最低的风险的条件下得到均值方差模型. 如图所示,阴影部分即可行集,即所有证券或组合的可选择集, ...

  2. python实现马科维茨模型的资本市场线_资产配置理论的基础之马科维茨模型

    *本文来自金斧子.选股宝app大师精华,精选证券市场中投资大师心得,打造距离投资大师最近.最有价值的信息场. 1952年,马科维茨在他的学术论文<资产选择:有效的多样化>中,首次应用资产组 ...

  3. 基于python的微信公众号开发教程_基于python的微信公众号开发教程

    应广大python学员的期盼,九宝老师精心制作的"基于python的微信公众号开发"视频教程即将上线. 该课程秉承九宝培训一贯的"简单.高效.快速"的讲课原则, ...

  4. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略

    欧阳元东 摘要:Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python ...

  5. python在材料模拟中的应用_基于Python的ABAQUS二次开发及在板料快速冲压成形模拟中的应用...

    2009 doi :10 1 3969/ j 1 issn 1 1007 2 2012 1 2009 1 04 1 013 基于 Python 的 ABAQUS 二次开发及在板料快速 冲压成形模拟中的 ...

  6. python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  7. python开发微信订阅号如何申请_基于Python的微信公众平台二次开发(Python常用框架、订阅号开发、公众号开发)...

    1.1.课程的背景 微信公众平台的火热程度已经不用多言,无论是个人还是企业,政府还是商家,都已经开始搭建微信公众平台,微信的作用已经被各界人士认可.微信公众平台的技术需求市场缺口巨大.同时python ...

  8. python京东自动签到领金豆_基于Python+Appium实现京东双十一自动领金币功能

    基于Python+Appium实现京东双十一自动领金币功能 发布时间:2020-09-28 02:22:30 来源:脚本之家 阅读:87 作者:一土小亘兄 背景:做任务领金币的过程很无聊,而且每天都是 ...

  9. python做一副54扑克牌发牌_基于Python制作一副扑克牌过程详解

    整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去大王.小王之后的 52 张扑克牌,并实现随机抽牌.排序.洗牌等功能: 创建一个纸牌类 一副扑克除去大王小王之外,剩下的 52 ...

  10. python怎么爬取新浪微博数据中心_基于Python的新浪微博位置数据获取方法研究....

    [1] 新浪微博数据中心.2017微博用户发展报告[EB/OL].[2017-12-25]. http://data.weibo.com/report/reportDetail?id=404. [2] ...

最新文章

  1. 几种Linux段错误调试方法
  2. lda 吗 样本中心化 需要_PCA 与 LDA 分析
  3. 业务总结002:秒杀活动架构设计
  4. ch341a编程和ttl刷机区别_土豪金CH341a编程器 开箱晒物
  5. 去除字符串最后一位的几种方法
  6. LeetCode(100)——相同的树(JavaScript)
  7. Unity Js与C#脚本通信
  8. Android Paint类属性说明
  9. css引入矢量图标_一张矢量图使用css来调用矢量图里的N个图标
  10. 配置中文XeLaTex环境
  11. Nginx——自定义错误页面
  12. winhex数据恢复linux,winhex数据恢复完整图文教程
  13. js pdf文件 如何调用打印机打印_pdf.js —— 在线预览下载打印pdf文件插件,实现的两种方式...
  14. XSS线上靶场---haozi
  15. 爬取虎牙TV全站主播信息
  16. laravel结合easyWeChat的使用
  17. sql server 帐户当前被锁定,所以用户 sa 登录失败。系统管理员无法将该帐户解锁 解决方法
  18. android推送弹窗,总被安卓通知“骚扰”?只需1招,教你屏蔽各种弹窗通知!
  19. Fiddler工具的弱网模拟2G/3G/4G
  20. CVPR2019论文题目中文列表

热门文章

  1. (三)描述统计学:数值方法
  2. ThreadLocal的使用场景及使用方式
  3. 抖音小店商品如何挂到精选联盟上面?带货有什么技巧方法?
  4. entity framework 新手入门篇(4)-entity framework扩展之 entityframework.extended
  5. 超越极限——2009年度DDR3内存横向测试(图)
  6. JSP WebSehll 后门脚本
  7. Portraiture 3.5.6磨皮滤镜插件适用于Photoshop磨皮美化功能
  8. 普加甘特图,项目管理解决方案。
  9. 【FPGA】Vivado综合停滞、死机(PID Not Specified)解决方法
  10. 利用 MAC 自带的 mount_ntfs 工具加载ntfs移动硬盘进行数据读写