陈辉民 余 博 周 澳
(湖南工程学院 经济学院,湖南 湘潭 411104)
现代资产组合理论也称证券投资组合理论、投资分散理论,是马科维茨(Harry Markowitz)1952年在其论文《证券组合选择》(Portfolio Selection)首创[1],是现代金融学的基础。该理论的主要观点为:(1)投资者的投资效用函数(U)取决于投资者拥有的资产组合的均值和方差(μσ2);(3)使用方差—协方差衡量证券组合的风险,以最小方差为决策依据确定证券的最优组合。
此理论首次引入数理统计的均值-方差思想,而成为现代金融学的基础,金融类专业课程多次出现现代资产组合理论知识点。如投资学课程—滋维·博迪著的《投资学》第7章最优风险资产组合介绍了组合投资理论[2];弗兰克 J.法博齐等著的《金融经济学》—第13章 均值方差组合选择介绍了资产组合理论[3];证券投资学课程—李英著的《证券投资学》—第13章证券投资的收益和风险与第14章 投资组合的选择介绍了证券组合理论[4];数理金融课程—张元萍主编的《数理金融基础》第四章—投资组合理论与资产定价模型有两节内容进行介绍[5]。多门课程重复出现资产组合理论就表明该理论在整个本科金融类专业教学是非常重要的。
传统教学投资组合理论存在两个不足:(1)侧重理论介绍,忽视数理推导和过程重现;(2)使用EXCEL的VBA技术处理高度理想化数据呈现证券组合投资的结论[6]。传统教学受制商业软件的授权及学生主观能动性,鉴于证券组合理论的重要性及R软件开源及扩展包丰富性,进行实验设计,引入量化金融思想来提升学生创新性能力和学习的积极性。
R软件开源,是用来进行统计计算和图形展示的自由软件环境,可以在UNIX平台、Windows和MacOS上编译和运行。R软件最初是由奥克兰大学统计系的Robert Gentleman和Ross ihaka(“R & R”)编写的,由全球R爱好者协作维护。R提供了广泛的统计方法和图形技术,轻松编写数学符号和公式,且高度可扩展的。
R软件包含一个“Finance”模块,具体包括标准回归模型(Standard regression models)、时间序列分析(Time series)、金融(Finance)、风险管理(Risk management)、金融书籍命令(Books:NMOF,FRAPO)、数据及日期管理(Data and date management)6个模块154个核心包,用来处理资产组合的核心扩展包包括:PerformanceAnalytics、portfolio、fPortfolio、quantmod、TTR等[7]。
1.实验用R包简单介绍
(1)时间序列分析基础扩展基础包
“zoo” 是个S3类的包,主要用来处理:(1)不规则的时间序列数值向量、矩阵和因子;(2)保持一个特定的索引/日期/时间类的独立性;(3)扩展时间序列和基本R保持一致标准类[8];“TTR”(技术交易规则)提供包括CCI, ADX, TDI, VHF, GMMA等44个函数[9];“xts”是用来扩展“zoo”,最大限度保持原始格式信息,用户定制与扩展,简化跨类互操作的包,对R的不同时间序列数据类进行统一处理[10];“fBasics”是金融数据处理与管理的包,主要用来处理财务回报率及相关数量指标、对数据进行探索性分析和推断[11];“fAssets”是一个“计算金融和金融工程”教学R包,主要用来对金融资产数据进行探索性分析、可视化、资产选择、方差-协方差估计等[12]。
(2)证券组合分析专业扩展包
“quantmod”专注处理量化金融建模与交易的R扩展包,需要“xts”和“TTR”包支撑,包含ETL类、分析类、展现类三大函数,可以用来获取数据和指导量化投资、算法交易、统计套利和高频交易等投资行为[13];“lpSolve”是用来处理线性规划、积分、混合整数规划问题的扩展包[14];“fPortfolio”用来处理证券组合优化,有效前沿的扩展包[15]。
2.安装所需的R扩展包及载入内存
编制一段R代码,可以一次性安装和载入所需的时间序列分析基础扩展基础包和证券组合分析专业扩展包;也可以利用install.packages()和library()两个命令逐次单个安装和载入,具体的R教学代码如下。
依据金融工程专业教学需要,选择深圳证券交易所(http://www.szse.cn/)的J金融业6支包含“银行”关键词的A股股票作为研究对象进行教学设计,即平安银行(000001)、宁波银行(002142)、江阴银行(002807)、郑州银行(002936)、青岛银行(002948)、苏州银行(002966)。也可以在上海证券交易所(http://www.sse.com.cn/)选择所需上市公司股票进行教学设计。考虑整理数据的简便性,这里使用“quantmod”包下载深圳证券交易所6支金融类银行股票实时价格时间序列,同时计算其每月收益率,并转化为时间序列对象,相应的教学R代码如下。
1.计算均值—方差
马科维茨投资组合理论((Harry M. Markowitz,1952)把证券的收益和风险用数理统计的方法定义为均值与方差,可以运用“fPortfolio::covEstimator”命令计算6支金融类A股股票的日均值和协方差矩阵,结果见表1、表2,具体的教学代码如下。
表1 6支A股股票收益率均值
表2 6支A股股票方差—协方差数据
2.计算证券组合均值—方差组合的有效边界及最小方差
设置好组合的类型(portfolioSpec)、求解方法(setSolver)及约束条件(constraints),使用“fPortfolio::portfolioFrontier”命令测算数据后,利用“frontierPlot”“monteCarloPoints”命令画出有效边界图及模拟的均值—方差数据点;最后是“minvariancePoints”命令标识最小方差点,见图1,具体的R教学代码如下。
图1 6支A股(银行类)的有效边界图
3. 证券组合投资比重分析
使用slot函数提取“minvariancePortfolio”命令测算的最小方差条件下的各证券投资比例,见表3。使用barplot绘制投资比例条形图,见图2,具体的R教学代码如下。
表3 最小方差条件下各证券的投资
(1)提取投资比例并输出
minVarC <- minvariancePortfolio(ts.df.StockReturnDaily) ##最小方差
图2 最小方差条件下证券组合中证券的投资比例
4.有效边界上的证券组合的投资比例及风险验证
有效边界上,证券组合的预期收入mu=0.005时,使用“efficientPortfolio”进行估测,并使用slot函数提取S4类的投资比例、均值与风险数据,得到投资比例表4和收益与风险数据表5。具体的R教学代码如下:
表4 证券组合各证券的投资比例
表5 证券组合的收益与风险
在有效边界已经确定的情况下,引入无风险资产,构建风险资产与无风险资产的资产组合,通过资本市场线理论和基金分离定理,确定最优的风险组合,即资本市场线与有效边界的切点。如果无风险资产的收益率为0.0005(教学示意用),使用“fPortfolio::tangencyPortfolio”命令测算得到最优市场组合MarketC,并使用“fPortfolio::tangencyLInes”命令做出资本市场线示意图3,具体的R教学代码如下。
图3 资本市场线示意
《金融工程学》《金融经济学》《数理金融》和《投资学》等课程都涉及资产组合理论,是教学的重点,因为其数学推导比较抽象,故也是教学的难点。使用少量证券资产确定有效的组合对于本科生来说还具有一定的难度,如何帮助学生克服学习困难,掌握该理论并进行运用,需要教师根据学生特点和大数据时代统计工具的开源性设计实验,促使学生通过使用计算机仿真和重现资产组合理论,引导学生进行创新性思考。把程序设计思维和金融理论结合可以较好地提升学生的学习积极性和创新性,更好地引导学生进行探索性学习。