var计算
《常用算法在金融中的应用》综合实践课程论文
专业班级:数应1301
任课教师:胡桔州 学生姓名:唐攀
学 号:130350020
联系电话: [1**********]
电邮 /QQ: 912260388
2015年1月 12日
基于MATLAB 的风险管理---VAR 计算
目录
一.问题描述(引言).....................................1
1.背景介绍.............................................1
2.国际金融风险管理的发展...............................1 3.从金融风险定量管理技术来看,国际金融组织和金融机构先后发
展了如下新技
术.......................................................2
二.模型的建立及说明.....................................4
1.VaR模型基本思想....................................4
2.VaR基本模型........................................4
3.VaR模型的假设条件..................................5
4.VaR模型计算方法....................................5
5.VaR模型在金融风险管理中的应用......................7
6.VaR模型的优点......................................8
7.VaR模型应注意的问题................................9
三.MATLAB 实现.........................................10
1.数据提取...........................................10
2.数据处理...........................................11
(1).visualizeVar函数..............................13
(2).tick2ret函数..................................13
3.程序运行..........................................14
(1).历史模拟法....................................14
(2).参数模型法....................................16
(3).蒙特卡罗模拟法................................17
四.计算结果比较.......................................20
(1).var历史模拟法.................................20
(2).参数模型.......................................21
(3).蒙特卡罗模拟法.................................21
五.课程总结...........................................21
参考文献...............................................22
基于MATLAB 的风险管理---VAR 计算
一.问题描述(引言)
(1). 背景介绍
进入90年代,随着国际金融市场的日趋规范、壮大,各金融机构
之间的竞争也发生了根本性变化,特别是金融产品的创新,使金融机
构从过去的资源探索转变为内部管理与创新方式的竞争,从而导致了
各金融机构的经营管理发生了深刻的变化,发达国家的各大银行、证
券公司和其他金融机构都在积极参与金融产品(工具)的创新和交易,
使金融风险管理问题成为现代金融机构的基础和核心。随着我国加入
WTO ,国内金融机构在面对即将到来的全球金融一体化的挑战,金融
风险管理尤显其重要性。
传统的资产负债管理(Asset-Liability Management)过分依赖
于金融机构的报表分析,缺乏时效性,资产定价模型(CAPM )无法揉
合新的金融衍生品种,而用方差和β系数来度量风险只反映了市场
(或资产)的波动幅度。这些传统方法很难准确定义和度量金融机构
存在的金融风险。1993年,G30集团在研究衍生品种基础上发表了《衍
生产品的实践和规则》的报告,提出了度量市场风险的VaR
( Value-at-Risk )模型(“风险估价”模型) ,稍后由JP.Morgan
推出了计算VaR 的RiskMetrics 风险控制模型。在些基础上,又推出
了计算VaR 的CreditMetricsTM 风险控制模型,前者用来衡量市场风
险;JP.Morgan 公开的CreditmetricsTM 技术已成功地将标准VaR 模
型应用范围扩大到了信用风险的评估上,发展为“信用风险估价”
(Credit Value at Risk)模型,当然计算信用风险评估的模型要比
市场风险估值模型更为复杂。目前,基于VaR 度量金融风险已成为国
外大多数金融机构广泛采用的衡量金融风险大小的方法。
VaR 模型提供了衡量市场风险和信用风险的大小,不仅有利于金
融机构进行风险管理,而且有助于监管部门有效监管。
(2)国际金融风险管理的发展
从国际金融风险管理发展历程来看,近20年来,大致经历了以下
几个阶段:
(一)80年代初因受债务危机影响。银行普遍开始注重对信用风险
的防范与管理,其结果是《巴塞尔协议》的诞生。该协议通过对不同
类型资产规定不同权数来量化风险,是对银行风险比较笼统的一种分
析方法。
(二)90年代以后随着衍生金融工具及交易的迅猛增长,市场风险
日益突出,几起震惊世界银行和金融机构危机大案(如巴林银行、大
和银行等事件) 促使人们对市场风险的关注。一些主要国际大银行开
始建立自己的内部风险测量与资本配置模型,以弥补《巴塞尔协议》
的不足。主要进展包括:市场风险测量新方法—Value At
Risk(VaR)(风险价值方法) 。这一方法最主要代表是摩根银行的“风
险矩阵) 系统”;银行业绩衡量与资本配置方法——信孚银行的“风
险调整的资本收益率(Risk AdjustedReturnon Capital ,简称RAROC) ”
系统。
(三) 最近几年一些大银行认识到信用风险仍然是关键的金融风
险,并开始关注信用风险测量方面的问题,试图建立测量信用风险的
内部方法与模型。其中以J.P. 摩根的Credit Metrics和Credit
Suisse Financial Products(CSFP)的Credit Risk+两套信用风险管
理系统最为引入注目。
1997年亚洲金融危机爆发以来,世界金融业风险(如1998年美国
长期资本管理公司损失的事件) 出现了新特点,即损失不再是由单一
风险所造成,而是由信用风险和市场风险等联合造成。金融危机促使
人们更加重视市场风险与信用风险的综合模型以及操作风险的量化
问题,由此全面风险管理模式引起人们的重视。
经过多年努力,风险管理技术已达到可以主动控制风险的水平。
目前有关研究侧重于对已有技术的完整和补充,以及将风险计值法推
广到市场风险以外(包括信用风险、结算风险、操作风险) 等其他风险
领域的尝试。
(3)从金融风险定量管理技术来看,国际金融组织和金融机构先后
发展了如下新技术
(1)新资本协议
1999年6月3日,巴塞尔银行委员会发布关于修改1988年《巴
塞尔协议》的征求意见稿,该协议对银行风险管理新方法给予充分的
关注,具体表现在:对银行进行信用风险管理提供更为现实的选择,
方法有三种:①对现有方法进行修改,将其作为大多数银行计算资本
的标准方法,在这种情况下,外部信用评估(指标准普尔和穆迪公司
等的评级) 可用来细致区分某些信用风险。②对于复杂程度较高的银
行,巴塞尔银行委员会认为可将其内部评级作为确定资本标准的基
础,并且对于某些高风险的资产,允许采用高于100%的权重。③新
协议明确指出:“一些利用内部评级的、复杂程度更高的银行还建立
了以评级结果(以及其它因素) 为基础的信用风险模型。这种模型旨在
涵盖整个资产组合的风险这一特点,在仅仅依靠外部信用评级或内部
信用评级中是不存在的。但是由于一系列困难的存在,包括数据的可
获得性以及模型的有效性,很显然信用风险模型目前还不能在最低资
本的制定中发挥明显作用。”委员会希望在经过进一步的研究和实验
后,使用信用风险模型将成为可能,并将汁划关注这方面的进展。这
说明,巴塞尔银行委员会在一定程度上肯定了目前摩根等国际大银行
使用的计量信用风险模型。
对市场风险管理方面进展给予肯定,并突出了利率风险和操作风
险的管理。此外还肯定了一些新的金融创新工具。如新协议就资产证
券化问题提出了新风险权重计量方案,对某几种短期承诺采用20%的
信用风险转换权数。并明确指出:“降低信用风险的技术如信用衍生
产品的近期发展使银行风险管理的水平大幅度提高。”
(2)风险价值法(VaR)
在风险管理的各种方法中,VaR 方法最为引人瞩目。尤其是在过
去的几年里,许多银行和法规制定者开始把这种方法当作全行业衡量
风险的一种标准来看待。VaR 之所以具有吸引力是因为它把银行的全
部资产组合风险概括为一个简单的数字,并以美元计量单位来表示风
险管理的核心——潜在亏损。VaR 实际上是要回答在概率给定情况下,
银行投资组合价值在下一阶段最多可能损失多少。
(3)风险调整的资本收益法
风险调整的资本收益是收益与潜在亏损或VaR 值的比值。使用这
种方法的银行在对其资金使用进行决策的时候,不是以盈利的绝对水
平作为评判基础,而是以该资金投资风险基础上的盈利贴现值作为依
据。
每家银行都清楚风险与收益的关系。在进行一项投资时,风险越
大,其预期的收益或亏损也越大,投资如果产生亏损,将会使银行资
本受侵蚀,最严重的情况可能导致银行倒闭。虽然银行对投资亏损而
导致的资本侵蚀十分敏感,但银行必须认识到,承担这些风险是为了
盈利,问题的关键在于,银行应在风险与收益之间寻找一个恰当的平
衡点,这也是RAROC 的宗旨所在。决定RAROC 的关键是潜在亏损即风
险值的大小,该风险值或潜在亏损越大,投资报酬贴现就越多。
RAROC 可用于业绩评估,如果交易员从事高风险的投资项目,那
么即使利润再高,由于VaR 值较高,RAROC 值也不会很高,其业绩评
价也就不会很高。实际上近几年出现的巴林银行倒闭、大和银行亏损
和百富勤倒闭等事件中,都是由于对某一个人业绩评价不合理所致,
即只考虑到某人的盈利水平,没有考虑到他在获得盈利的同时承担的
风险对其进一步重用的结果。RAROC 方法用于业绩评估,可以较真实
地反映交易人员的经营业绩,并对其过度投机行为进行限制,有助于
避免大额亏损现象的发生。
(4)信贷矩阵(Credit Metrics)
1997年4月初,美国J .P 摩根财团与其他几个国际银行——德
意志摩根建富、美国银行、瑞士银行、瑞士联合银行和BZW 共同研究,
推出了世界上第一个评估银行信贷风险的证券组合模型(Credit
Metrics) 。该模型以信用评级为基础,计算某项贷款或某组贷款违约
的概率,然后计算上述贷款同时转变为坏账的概率。该模型通过VaR
数值的计算力图反映出:银行某个或整个信贷组合一旦面临信用级别
变化或拖欠风险时所应准备的资本金数值。该模型覆盖了几乎所有的
信贷产品,包括传统的商业贷款;信用证和承付书;固定收入证券;
商业合同如贸易信贷和应收账款;以及由市场驱动的信贷产品如掉期
合同、期货合同和其他衍生产品等。具体计算步骤是首先对信贷组合
中的每个产品确定敞口分布;其次,计算出每项产品的价值变动率(由
信用等级上升、下降或拖欠引起) ;再次将单项信贷产品的变动率汇
总得出一个信贷组合的变动率值(加总时应考虑各产品之间的相互关
系) 。由此可见,在假定各类资产相互独立的情况下,每类资产信用
风险组合的风险值等于该类资产的敞口分布与其信用等级变动或拖
欠的变动率。即等于信用等级变动或拖欠变动率x 贷款额。
(5)最近,美国华盛顿国际金融研究所针对当前的主要信用风险
模型以及资产组合模型进行了分析测试,旨在找出衡量信用风险的最
好方法,为计量信用风险确定一种比较规范的模型,并用于确定资本
金的分配,从而为国际银行业的发展及其风险监管创造条件,并计划
与巴塞尔银行委员会合作进行这方面的工作。
二.模型的建立及说明
一.VaR 模型基本思想
VaR 按字面的解释就是“处于风险状态的价值”,即在一定置信
水平和一定持有期内,某一金融工具或其组合在未来资产价格波动下
所面临的最大损失额。JP.Morgan 定义为:VaR 是在既定头寸被冲销
(be neutraliged)或重估前可能发生的市场价值最大损失的估计
值;而Jorion 则把VaR 定义为:“给定置信区间的一个持有期内的
最坏的预期损失”。
二.VaR 基本模型
根据Jorion (1996),VaR 可定义为:
VAR =E (ω) -ω*①
式中E (ω) 为资产组合的预期价值;ω为资产组合的期末价值;ω*
为置信水平∂下投资组合的最低期末价值。
又设ω=ω0(1+R ) ②
式中ω0为持有期初资产组合价值,R 为设定持有期内(通常一年)
资产组合的收益率。
ω*=ω0(1+R *) ③
R *为资产组合在置信水平α下的最低收益率。
根据数学期望值的基本性质,将②、③式代入①式,有
VAR =E [ω0(1+R )]-ω0(1+R *)
=E ω0+E ω0(R ) -ω0-ω0R *
=ω0+ω0E (R ) -ω0-ω0R *
=ω0[E (R ) -R *]
∴VAR =ω0[E (R ) -R *] ④
上式公式中④即为该资产组合的VaR 值,根据公式④,如果能求
出置信水平∂下的R*,即可求出该资产组合的VaR 值。
三.VaR 模型的假设条件
VaR 模型通常假设如下:
第 10 页 共 45 页
⒈市场有效性假设;
⒉市场波动是随机的,不存在自相关。
一般来说,利用数学模型定量分析社会经济现象,都必须遵循其
假设条件,特别是对于我国金融业来说,由于市场尚需规范,政府干
预行为较为严重,不能完全满足强有效性和市场波动的随机性,在利
用VAR 模型时,只能近似地正态处理。
四.VaR 模型计算方法
从前面①、④两式可看出,计算VAR 相当于计算E (ω)和ω*或
者E (R )和R*的数值。从目前来看,主要采用三种方法计算VAR 值。
⒈历史模拟法(historical simulation method)
⒉参数模拟法
⒊蒙特卡罗模拟法(Monte Carlosimulation)
(1).历史模拟法
“历史模拟法”是借助于计算过去一段时间内的资产组合风险收
益的频度分布,通过找到历史上一段时间内的平均收益,以及在既定
置信水平α下的最低收益率,计算资产组合的VAR 值。
“历史模拟法”假定收益随时间独立同分布,以收益的历史数据
样本的直方图作为对收益真实分布的估计,分布形式完全由数据决
第 11 页 共 45 页
定,不会丢失和扭曲信息,然后用历史数据样本直方图的P —分位数
据作为对收益分布的P —分位数—波动的估计。
一般地,在频度分布图中(图1,见例1)横轴衡量某机构某日收
入的大小,纵轴衡量一年内出现相应收入组的天数,以此反映该机构
过去一年内资产组合收益的频度分布。
首先,计算平均每日收入E (ω)
其次,确定ω*的大小,相当于图中左端每日收入为负数的区间内,
给定置信水平 α,寻找和确定相应最低的每日收益值。
设置信水平为α,由于观测日为T ,则意味差在图的左端让出
t=T×α,即可得到α概率水平下的最低值ω*。由此可得:
VaR=E(ω)-ω*
(2). 参数模拟法
“参数模拟法”法同样是运用历史资料,计算资产组合的VaR 值。
其基本思路为:
首先,利用历史数据计算资产组合的收益的方差、标准差、协方
差;
其次,假定资产组合收益是正态分布,可求出在一定置信水平下,
反映了分布偏离均值程度的临界值;
第 12 页 共 45 页
第三,建立与风险损失的联系,推导VaR 值。
设某一资产组合在单位时间内的均值为μ,数准差为σ,R*~μ
(μ、σ),又设α为置信水平α下的临界值,根据正态分布的性质,
在α概率水平下,可能发生的偏离均值的最大距离为μ-ασ,
即R*=μ-ασ。
∵E (R )=μ
根据VaR=ω0[E(R )-R*] 有
VaR=ω0[μ-(μ-ασ)]=ω0ασ
假设持有期为 △t ,则均值和数准差分别为μ△t 和 ,这时上式
则变为:
VaR=ω0·α·
因此,我们只要能计算出某种组合的标准差σ,则可求出其VaR
的值,一般情况下,某种组合的数准差σ可通过如下公式来计算
其中,n 为资产组合的金融工具种类,Pi 为第i 种金融工具的市
场价值,σi 第i 种金融工具的标准差,σij 为金融工具i 、j 的相
关系数。
(3).蒙特卡罗模拟法
第 13 页 共 45 页
它是基于历史数据和既定分布假定的参数特征,借助随机产生的
方法模拟出大量的资产组合收益的数值,再计算VaR 值。
步骤HSMVaR —Cov Monte—Carlo
⒈确认头寸 找到受市场风险影响的各种金融工具的全部头寸
⒉确认风险因素 确认影响资产组合中金融工具的各种风险因素
⒊获得持有期内风险因素的收益分布 计算过去年份里的历史上
的频度分布 计算过去年份里风险因素的标准差和相关系数 假定特
定的参数分布或从历史资料中按自助法随机产生
⒋将风险因素的收益与金融工具头寸相联系 将头寸的盯住市场
价值(mark to market value)表示为风险因素的函数 按照风险因
素分解头寸(risk mapping ) 将头寸的盯住市场价值(mark to market
value )表示为风险因素的函数
⒌计算资产组合的可变性 利用从步骤3和步骤4得到的结果模拟
资产组合收益的频度分布 假定风险因素是呈正态分布,计算资产组
合的标准差 利用从步骤3和步骤4得到的结果模拟资产组合收益的
频度分布
⒍给定置信区间推导VAR
排列资产组合顺序,选择刚好在1%或5%概率下刚≥1的那一损失
第 14 页 共 45 页
用2.33(1%)或1.65(5%)乘以资产组合标准差 排列资产组合
顺序,选择刚好在1%或5%概率下刚≥1的那一损失
五.VaR 模型在金融风险管理中的应用
VaR 的应用主要体现在:
第一,用于风险控制。目前已有超过1000家的银行、保险公司、
投资基金、养老金基金及非金融公司采用VaR 方法作为金融衍生工具
风险管理的手段。利用VaR 方法进行风险控制,可以使每个交易员或
交易单位都能确切地明了他们在进行有多大风险的金融交易,并可以
为每个交易员或交易单位设置VaR 限额,以防止过度投机行为的出
现。如果执行严格的VaR 管理,一些金融交易的重大亏损也许就可以
完全避免。
第二,用于业绩评估。在金融投资中,高收益总是伴随着高风险,
交易员可能不惜冒巨大的风险去追逐巨额利润。公司出于稳健经营的
需要,必须对交易员可能的过度投机行为进行限制。所以,有必要引
入考虑风险因素的业绩评价指标。
第三,估算风险性资本(Risk -based capital )。以VaR 来估算
投资者面临市场风险时所需的适量资本,风险资本的要求是BIS 对于
金融监管的基本要求。下图说明适足的风险性资本与 VaR值之间的
关系,其中VaR 值被视为投资者所面临的最大可接受(可承担)的损
第 15 页 共 45 页
失金额,若发生时须以自有资本来支付,防止公司发生无法支付的情
况。
六.VaR 模型的优点
1、 VaR模型测量风险简洁明了,统一了风险计量标准,管理者
和投资者较容易理解掌握。
风险的测量是建立在概率论与数理统计的基础之上,既具有很强
的科学性,又表现出方法操作上的简便性。同时,VaR 改变了在不同
金融市场缺乏表示风险统一度量, 使不同术语(例如基点现值、现有
头寸等) 有统一比较标准, 使不同行业的人在探讨其市场风险时有
共同的语言。
另外,有了统一标准后,金融机构可以定期测算VaR 值并予以公
布,增强了市场透明度,有助于提高投资者对市场的把握程度,增强
投资者的投资信心,稳定金融市场。
2、可以事前计算, 降低市场风险。
不像以往风险管理的方法都是在事后衡量风险大小,不仅能计算
单个金融工具的风险, 还能计算由多个金融工具组成的投资组合风
险。综合考虑风险与收益因素, 选择承担相同的风险能带来最大收益
的组合,具有较高的经营业绩。
3、确定必要资本及提供监管依据。
第 16 页 共 45 页
VaR 为确定抵御市场风险的必要资本量确定了科学的依据, 使金
融机构资本安排建立在精确的风险价值基础上, 也为金融监管机构
监控银行的资本充足率提供了科学、统一、公平的标准。VaR 适用于
综合衡量包括利率风险、汇率风险、股票风险以及商品价格风险和衍
生金融工具风险在内的各种市场风险。因此, 这使得金融机构可以用
一个具体的指标数值(VaR) 就可以概括地反映整个金融机构或投资
组合的风险状况, 大大方便了金融机构各业务部门对有关风险信息
的交流, 也方便了机构最高管理层随时掌握机构的整体风险状况,
因而非常有利于金融机构对风险的统一管理。同时, 监管部门也得以
对该金融机构的市场风险资本充足率提出统一要求。
七.VaR 模型应注意的问题
尽管VaR 模型有其自身的优点,但在具体应用时应注意以下几方面的
问题。
1、数据问题。运用数理统计方法计量分析、利用模型进行分析和
预测时要有足够的历史数据, 如果数据库整体上不能满足风险计量的
数据要求, 则很难得到正确的结论。另外数据的有效性也是一个重要
问题, 而且由于市场的发展不成熟, 使一些数据不具有代表性, 而市场
炒作、消息面的引导等原因, 使数据非正常变化较大, 缺乏可信性。
2、VaR 在其原理和统计估计方法上存在一定缺陷。
第 17 页 共 45 页
VaR 对金融资产或投资组合的风险计算方法是依据过去的收益特征进
行统计分析来预测其价格的波动性和相关性, 从而估计可能的最大
损失。所以单纯依据风险可能造成损失的客观概率, 只关注风险的统
计特征, 并不是系统的风险管理的全部。因为概率不能反映经济主体
本身对于面临的风险的意愿或态度, 它不能决定经济主体在面临一定
量的风险时愿意承受和应该规避的风险的份额。
3、在应用Var 模型时隐含了前提假设。
即金融资产组合的未来走势与过去相似,但金融市场的一些突发
事件表明,有时未来的变化与过去没有太多的联系,因此VaR 方法并
不能全面地度量金融资产的市场风险,必须结合敏感性分析,压力测
试等方法进行分析。
4、VaR 主要使用于正常市场条件下对市场风险的测量。
如果市场出现极端情况,历史数据变得稀少,资产价格的关联性
被切断,或是因为金融市场不够规范,金融市场的风险来自人为因素、
市场外因素的情况下,这时便无法测量此时的市场风险。
总之, VaR是一种一种既能处理非线性问题又能概括证券组合市
场风险的工具,它解决了传统风险定量化工具对于非线性的金融衍生
工具适用性差、难以概括证券组合的市场风险的缺点,有利于测量风
险、将风险定量化,进而为金融风险管理奠定了良好的基础。随着我
国利率市场化、资本项目开放以及衍生金融工具的发展等,金融机构
第 18 页 共 45 页
所面临的风险日益复杂,综合考虑、衡量信用风险和包括利率风险、
汇率风险等在内的市场风险的必要性越来越大,这为VaR 应用提供了
广阔的发展空间。但是VaR 本身仍存在一定的局限性,而且我国金融
市场现阶段与VaR 所要求的有关应用条件也还有一定距离。因此VaR
的使用应当与其他风险衡量和管理技术、方法相结合。要认识到风险
管理一方面需要科学技术方法,另一方面也需要经验性和艺术性的管
理思想,在风险管理实践中要将两者有效结合起来,既重科学,又重
经验,有效发挥VaR 在金融风险管理中的作用。
我国对VaR 模型的引介始于近年,具有较多的研究成果,但VaR
模型的应用现在确处于起步阶段,各金融机构已经充分认识到VaR 的
优点,正在研究适合于自身经营特点的VaR 模型。
三.MATLAB 实现
采用课本例题:以2011年11月1日到2012年3月22日期间的沪深
300指数成分股价格序列为分析目标, 采用三种方法计算投资组合的
风险价值(Var )值,并比对分析。
1. 数据提取
从excel 中读取沪深300指数成分股相关数据,文件CSI300.xlsx 中
储存有三个Sheet 数据,分别为成分股价格序列CSI300、成分股自
由流通股本[1]、沪深300指数价格序列
CSI300-Index 。成分股价格序列格式如下表:
第 19 页 共 45 页
表1:沪深300指数成分股价格序列(片段) Matlab 从Excel 中读取数据的程序如下: %% 计算投资组合风险价值(VaR)-1
% 本程序用历史模拟法的方法计算投资组合风险价值 %% Import data from Excel % 从Excel 中读取数据
% 文件CSI300.xlsx ,中有三个表,分别为沪深300指数成分股价格序列,
% 沪深300指数成分股权重(股数)、沪深300指数价格。 % 从文件CSI300.xlsx 的CSI300中读取数据 [num,txt]=xlsread('CSI300.xlsx','CSI300');
CSI300Dates=txt(4:end,1);%时间 CSI300Tickers=txt(2,2:end);%股票名称 CSI300HistPrices=num;%成分股历史价格
% 从文件CSI300.xlsx 的Portfolio Positions中读取数据 [num,txt]=xlsread('CSI300.xlsx','Portfolio Positions'); positionsPortfolio=num;%positionsPortfolio 股票数量 % 从文件CSI300.xlsx 的CSI300-Index 中读取数据 [num,txt]=xlsread('CSI300.xlsx','CSI300-Index'); pricesIndex=num;%指数价格
%将时间、股票名称、股票价格、自由流通股本、指数价格等数据存储到CSI300Prices 文件中.
save CSI300Prices CSI300Dates CSI300Tickers CSI300HistPrices positionsPortfolio pricesIndex 2. 数据处理
将沪深300指数成分股作为投资组合, 投资组合中股票数量为自由流通股本(positionsPortfolio),为计算投资组合的风险价值, 需要计算投资组合的净值序列、收益率序列等为后期的var 计算做准备
%数据准备
clear variables %清空变量空间
load('CSI300Prices.mat')%载入CSI300Prices.mat 文件中的数据 %在前面的程序中我们已经将时间、股票名称、股票价格、自由流通股本、指数价格等数据存储到CSI300Prices 文件中. %% Calculate return from price series %根据价格序列计算收益率 returnsSecurity =
tick2ret(CSI300HistPrices,[],'Continuous');
%% Historical Simulation visually % 历史模拟方法,计算投资组合价值 % 投资组合价值=股票价格*股票数量
pricesPortfolio = CSI300HistPrices*positionsPortfolio; % 投资组合的收益率
returnsPortfolio = tick2ret(pricesPortfolio, [], 'continuous');
(1)程序中调用visualizeVar 函数,其具体代码如下:
function simulationResults = visualizeVar(returnsPortfolio, marketValuePortfolio)
% Create a single variable and plot with subplots to allow for data
% brushing to select returns and see dollar amount losses. %
% Copyright 2008-2009 The MathWorks, Inc. % Edited: Jeremy Barry 02/10/2009 pricesPortfolioSimulated=
returnsPortfolio*marketValuePortfolio; simulationResults returnsPortfolio];
subplot(2,1,1)
plot(simulationResults(:,1))
title('Simulated Portfolio Returns') xlabel('Time (days)') ylabel('Amount ($)') subplot(2,1,2)
hist(simulationResults(:,2), 100)
title('Distribution of Portfolio Returns') (2)程序中调用tick2ret 函数,其具体代码如下:
= [pricesPortfolioSimulated
[RetSeries, RetIntervals] = tick2ret(TickSeries,
TickTimes,Method) 输入参数:
TickSeries:价格序列 TickTimes :时间序列 Method :计算方法
'Continuous' 表示收益率的计算方式为 log(x)-log(y); 'Simple' 表示收益率的计算方式为(x-y )/y. 输出参数:
RetSeries :收益率序列
RetIntervals :收益率对应的时间间隔
3. 程序运行 (1)历史模拟法: 历史模拟法程序
%% Historical Simulation programatically %历史模拟
% 收益率在 1% 与 5% 的置信水平
confidence = prctile(returnsPortfolio, [1 5]); % 历史模拟法的可视化 figure;
hist2color(returnsPortfolio, confidence(2), 'r', 'b'); %具体见hist2color 程序
%历史方法 99% 与 95% 水平的风险价值 hVar = -marketValuePortfolio*confidence; displayVar(hVar(1), hVar(2), 'hs'); 计算结果如下:
Value at Risk method: Historical Simulation %置信度为99%的Var 值
Value at Risk @ 99% = $82,091,887.30 %置信度为95%的Var 值
Value at Risk @ 95% = $66,214,101.16
历史模拟法Var 结果图
函数解释及代码
(1)hist2color 函数代码如下:
function hist2color(Y,cutoff,left_color,right_color) % Highlight a specific set of bins in a histogram. %
% Copyright 2008-2009 The MathWorks, Inc. % Edited: Jeremy Barry 02/10/2009 % Organize Returns into historgram bins [count,bins] = hist(Y,100);
% Create 2nd data set that is zero above cutoff point count_cutoff = count.*(bins
bar(bins,count,right_color); hold on;
% Plot cutoff data set
bar(bins,count_cutoff,left_color); grid on; hold off;
(2)displayVar 函数如下:
function displayVar(onePercent, fivePercent, method) % Display the Value at Risk as with a percentage and dollar amount. %
% Copyright 2008-2009 The MathWorks, Inc. % Edited: Jeremy Barry 02/10/2009
switch method case 'hs'
methodString = 'Historical Simulation'; case 'p'
methodString = 'Parametric';
case 'mcp'
methodString = 'Monte Carlo Simulation
(portsim)';
case 'mcg'
methodString = 'Monte Carlo Simulation
(GBM)';
case 'mcs'
methodString = 'Monte Carlo Simulation
(SDE)';
case 'mcsec'
methodString = 'Monte Carlo Simulation (by
security)';
end
outString = sprintf('Value at Risk method: %s \n',
methodString);
outString = [outString sprintf('Value at Risk @ 99%% = %s
\n', ...
formatCurrency(onePercent))];
outString = [outString sprintf('Value at Risk @ 95%% = %s
\n', ...
formatCurrency(fivePercent))];
disp(outString) (3)prctile 函数
Y=prctile(X,p) ,给定一个向量 X 与一组分位数 p,prctile 函
数返回分位数对应向量中的值。
例:Y=prctile(X,P)
当X 为向量时,Y 返回X 的P%上分位数
当X 为矩阵时,分别求各列上分位数
(2)参数模型法 参数模型法程序
%% Parametric
%参数模型法
% 计算 99% 与 95% 水平的风险价值,假设收益率服从正态
分布。
%输入mean(returnsPortfolio)组合收益率
%输入std(returnsPortfolio) 组合风险(标准差)
%输入[.01 .05] 置信度阈值
%输入marketValuePortfolio 组合资产价值
pVar = portvrisk(mean(returnsPortfolio),
std(returnsPortfolio), [.01 .05],...
marketValuePortfolio);
%画图
confidence=-pVar/marketValuePortfolio;
hist2color(returnsPortfolio, confidence(2), 'r', 'b');
displayVar(pVar(1), pVar(2), 'p')
计算结果如下:
Value at Risk method: Parametric
%置信度为99%的Var 值
Value at Risk @ 99% = $90,981,251.06
%置信度为95%的Var 值
Value at Risk @ 95% = $64,856,171.58
参数模型法Var 结果图
(1)portvrisk 函数如下
ValueAtRisk = portvrisk(PortReturn, PortRisk,
RiskThreshold, PortValue)
输入参数:
PortReturn :组合收益率
PortRisk :组合风险(标准差)
RiskThreshold:(可选)置信度阈值,默认为5%
PortValue :(可选)组合资产价值,默认为1
输出参数:
ValueAtRisk :风险价值
(3)蒙特卡罗模拟法
蒙特卡罗模拟法程序
%% Monte Carlo using portsim
%蒙特卡罗方法
%根据组合中股票价格与股票数量,计算组合资产价值与权重
[marketValuePortfolio, weightsPortfolio]
getPortfolioWeights(...
CSI300HistPrices, positionsPortfolio);
%具体参见getPortfolioWeights 程序。
numObs = 1; % 样本个数
numSim = 10000; % 模拟次数
% 预期期望与方差
expReturn = mean(returnsSecurity);
expCov = cov(returnsSecurity);
%rng Control the random number generator
%随机生成数种子设置,数值越大越好
=
rng(12345)
%生成资产收益率矩阵
simulatedAssetReturns
portsim(expReturn,expCov,numObs,1,numSim, 'Exact');
%具体参见portsim 程序。
% 计算每个随机序列的收益率
simulatedAssetReturns
exp(squeeze(simulatedAssetReturns))-1;
% 模拟次数numSim = 10000个投资组合收益率
mVals = weightsPortfolio*simulatedAssetReturns;
% 计算99%与95%分位数的收益率
mVar = -prctile(mVals*marketValuePortfolio, [1 5]);
% 可视化模拟组合
plotMonteCarlo(mVals)
% 风险价值
= =
displayVar(mVar(1), mVar(2), 'mcp')
计算结果如下:
Value at Risk method: Monte Carlo Simulation (portsim)
%置信度为99%的Var 值
Value at Risk @ 99% = $91,176,882.64
%置信度为95%的Var 值
Value at Risk @ 95% = $64,618,603.59
蒙特卡罗模拟方法结果图
Simulated Returns
350
300
N u m b e r o f O b s e r v e d R e t u r n s [1**********]0
50
0Simulated Return
图 4
函数解释及代码
(1)getPortfolioWeights 函数代码如下:
function [portfolioMarketValue portfolioWeights
securityMarketValue lastPrice] = getPortfolioWeights(prices,
positions)
% Compute the portfolio market value, the security market value,
the weight
% for each security in the portfolio and the last price of the
security.
% Copyright 2008-2009 The MathWorks, Inc.
% Edited: Jeremy Barry 02/10/2009
% 根据股票最后的价格,计算投资组合最终的资产价值
portfolioMarketValue = prices(end,:)*positions;
% 根据股票最后的价
格,计算投资组合中每个股票的价值
securityMarketValue = prices(end,:) .* positions';
% 计算每个股票的权重
portfolioWeights = securityMarketValue /
portfolioMarketValue;
lastPrice = prices(end,:);
(2)portsim 函数功能根据随机过程
生成随机收益率序列。
RetSeries = portsim(ExpReturn, ExpCovariance, NumObs,
RetIntervals,NumSim, Method)
输入参数:
ExpReturn :预期收益率
ExpCovariance :预期协方差矩阵
NumObs :样本个数
RetIntervals :收益率间隔,一般为1(每日)
NumSim :模拟次数
Method:模拟方法,默认为'Expected'
'Exact' :生成均值,方差等于ExpReturn 、
ExpCovariance 的随机收益率
'Expected' :生成均值,方差统计意义上等于
ExpReturn 、ExpCovariance 的随 机收益率序列
输出参数:
RetSeries :收益率序列
(3)plotMonteCarlo 函数代码如下:
function plotMonteCarlo(returnSeries)
% Plot all of the simulation returns from the Monte Carlo
simulation.
%
% Copyright 2008-2009 The MathWorks, Inc.
% Edited: Jeremy Barry 02/10/2009
percentiles = prctile(returnSeries, [1 5]) ;
hist(returnSeries,100)
%Var线
var1 = line([percentiles(2) percentiles(2)], ylim,
'color','g','linewidth',2, 'displayname', 'VaR @ 5%');
%Var线
var2=line([percentiles(1) percentiles(1)], ylim, 'linestyle',
'--', 'color', 'g', 'linewidth', 2 , 'displayname', 'VaR @
1%');
title('Simulated Returns')
xlabel('Simulated Return')
ylabel('Number of Observed Returns')
legend([var1 var2])
四. 计算结果比较
从以上结果分许来看三种方法的计算结果还是有一定区别的,下面我
们就来一一介绍三种方法的优缺点:
(1)VaR 历史模拟法
优点:
第一, 该方法直观、简单、便于理解, 计算过程也便于为人们掌握;
第二, 该方法为一种非参数的完全估值法, 不需要设定模型和对参数
进行估计, 可以避免模型的设定误差;
第三, 因为不需要对模型进行设定, 因此可以处理非线性、非对称和厚
尾数据;
第四, 该方法很容易与其他计算值的方法相结合, 如极值理论、模型
等。
但其缺点在于:
第一, 风险因子未来的变化不可能完全和过去的历史数据一致, 因为
市场环境处在不断变化中, 风险因子也会随时在改变, 如果过去的历
史数据包含的极端情况较少, 则预测的值就可能会偏低, 如果过去的
历史数据包含的极端情况较多而未来时间内发生的极端情况较少, 则
测得的值就会偏高;
第二, 在该方法的运用过程中通常假定历史数据在未来时间段内是以
等概率出现的, 这与实际情况往往不符, 因为一般而言, 过去在特定情
况下发生的波动和产生的极端值, 在将来再次重复出现这样的情况的
可能性很小;
第三, 该模型在运用时, 往往需要大量的历史数据, 这将花费大量时
间、劳力和物力, 特别对于新兴市场或行业, 数据的获取更难;
第四, 利用历史模拟法计算的值波动性较大, 对应不同的时间段、不同
的时间长度会有不同的取值, 稳健性较差。
(2)参数模型法
优点:
1、 VaR模型测量风险简洁明了,统一了风险计量标准,管理者和投
资者较容易理解掌握。
2、可以事前计算, 降低市场风险。
3、确定必要资本及提供监管依据。
缺点:
1、数据问题。运用数理统计方法计量分析、利用模型进行分析和预
测时要有足够的历史数据, 如果数据库整体上不能满足风险计量的数
据要求, 则很难得到正确的结论。
2、其原理和统计估计方法上存在一定缺陷。
3、在应用参数模型时隐含了前提假设。
(3)蒙特卡罗模拟
优点:
1. 可以处理非线性,大幅波动及”肥尾”问题。
2. 产生大量路径模拟情景,比历史模拟方法更精准可靠。
3. 可以通过设置消减因子,使得模拟结果对近期市场的变化更快的作
出反应。
缺点:
1. 由于对基础风险因素的一些假设,使得存在模型风险
2. 如果计算机模拟产生的是伪随机数,那么可能导数导致错误结果
五. 课程总结
(1)采用小组形式学习后从被动形式转为主动,这样提高了我们解
决问题和思考问题的能力。
(2)定期交实验报告,虽然有点不情愿想偷懒。但是通过实验报告
组员之间能够相互学习,小组之间能够相互借鉴,取长补短。而且通
过动手巩固了所学的知识点,也在慢慢的摸索中学到很多课本上没有
的。
(3)小组讲课这个挺新鲜的,以我自己的感觉,在自己前期的备课
中不管是查资料还是检验程序的运行,在这一点点的积累中我们也慢
慢弄明白很多看似很难的程序,至少我们知道那是怎么个回事该怎么
运用解决哪类问题。
(4)这门课程给我的感觉是第一次将数学,计算机,金融三者结合
在一起。感觉终于高大上了一回,也渐渐明白学科的运用。相信通过
这门课程的学习对我们后期的学习是挺有帮助的。
参考文献
[1]李洋&郑志勇. 量化投资:以 MATLAB 为工具.[A].2015 年 1 月第
一
版
[2]人大经济论坛
[3]董立娟 - 《内蒙古大学》 - 2008 版
[4]杨世娟,卢维学 - 《黄山学院学报》 - 2015
[5]袁玉洁,杜灵基 - 《当代经理人》 - 2006