当前位置:文档之家› 第14章 风险价值VaR计算

第14章 风险价值VaR计算


14.4 数据处理
为计算投资组合的风险价值,需要计算投资组合的净值序列、收益率序列等,代码如下: %数据准备 clear variables %清空变量空间 load('CSI300Prices.mat')%载入CSI300Prices.mat文件中的数据 %在前面的程序中我们已经将时间、股票名称、股票价格、自由流通股本、指数价格等 数据存储到 %CSI300Prices文件中. %% Calculate return from priceseries %根据价格序列计算收益率 returnsSecurity = tick2ret(CSI300HistPrices,[],'continuous'); %% HistoricalSimulationvisually % 历史模拟方法,计算投资组合价值 % 投资组合价值=股票价格*股票数量 pricesPortfolio = CSI300HistPrices*positionsPortfolio; % 投资组合的收益率 returnsPortfolio = tick2ret(pricesPortfolio,[],'continuous'); % 投资组合最后一日的市值 marketValuePortfolio = pricesPortfolio(end); %历史数据的Hist图 simulationResults = visualizeVar(returnsPortfolio,marketValuePortfolio);
14.3.2
数据可视化与标准化
%选定股票价格序列 mypickStockPrices = CSI300HistPrices(:,mypick); %选定股票的标准价格 mypickNormPrices = normPrices(:,mypick); %选定股票的名称 mypickCSI300Tickers = CSI300Tickers(mypick); %绘制图形 plot(mypickNormPrices,'DisplayName','mypickNormPrices','YDataSource','mypickNormPric es');figure(gcf) %添加图示 legend(mypickCSI300Tickers) %指数标准价格 normIndexPrice = ret2tick(tick2ret(PortfoliopricesIndex)); %在上图中添加指数曲线 hold all plot(normIndexPrice,'DisplayName','Index','YDataSource','normIndexPrice');figure(gcf)
Value at Risk method: Historical Simulation Value at Risk @ 99% = $82,091,887.30 Value at Risk @ 95% = $66,214,101.16
历史模拟法VaR结果(95%置信度)
14.6 参数模型法程序
MATLAB的风险价值计算使用portvrisk函数采用参数模型法计算VaR值。其语法 如下: ValueAtRisk = portvrisk(PortReturn, PortRisk, RiskThreshold, PortValue) 输入参数: PortReturn:组合收益率; PortRisk:组合风险(标准差); RiskThreshold:(可选)置信度阈值,默认为5%; PortValue:(可选)组合资产价值,默认为1。
14.3.2
数据可视化与标准化
代码如下:
%%Convert price series to return series and visualize historical returns % 将数据转为收益率序列并画出历史收益曲线 %清空变量空间,避免以前计算变量影响本次计算clearvariables % 如果数据已存储,即非第一次运行,说明当前工作文件夹中已存在CSI300Prices.mat文件 load('CSI300Prices.mat') %% Visualizepriceseries % 可视化价格序列 % 标准化价格,初始价格为1.00 normPrices = ret2tick(tick2ret(CSI300HistPrices)); % 绘制选定股票的标准化价格,万科A,潍柴动力,上海能源 %选定股票 mypick = strcmpi(CSI300Tickers,'万科A')|strcmpi(CSI300Tickers,'潍柴动力')... |strcmpi(CSI300Tickers,'上海能源');
14.4 数据处理
投资组合净值与收益率分布
14.5 历史模拟法程序
历史模拟法代码如下:
%% Historical Simulation programatically %历史模拟法程序 % 收益率在1%,5% 的置信水平
confidence = prctile(returnsPortfolio,[1 5]);
输出参数:
ValueAtRisk:风险价值。
14.6 参数模型法程序
代码如下:
%% Parametric %参数模型法 % 计算99% 与95% 水平的风险价值,假设收益率服从正态分布 %输入mean(reLeabharlann urnsPortfolio)组合收益率
%输入std(returnsPortfolio)组合风险(标准差)
14.3 数据读取
14.3.1
数据提取
MATLAB从Excel中读取数据的程序代码如下:
%% 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的PortfolioPositions中读取数据 [num,txt]=xlsread('CSI300.xlsx',2); positionsPortfolio=num;%positionsPortfolio 股票数量 % 从文件CSI300.xlsx的CSI300-Index中读取数据 [num,txt]=xlsread('CSI300.xlsx','CSI300-Index'); PortfoliopricesIndex=num;%指数价格 %将时间、股票名称、股票价格、自由流通股本、指数价格等数据存储到CSI300Prices文件中. save CSI300Prices CSI300Dates CSI300Tickers CSI300HistPrices positionsPortfolio PortfoliopricesIndex
%输入[.01 .05]置信度阈值 %输入marketValue Portfolio组合资产价值 pVar = portvrisk(mean(returnsPortfolio),std(returnsPortfolio),... [.01 .05],marketValuePortfolio); %画图 confidence=-pVar/marketValuePortfolio; hist2color(returnsPortfolio,confidence(2),'r','b'); displayVar(pVar(1),pVar(2),'p')
一步主张用VaR模型对商业银行面临的风险进行综合管理。
此外,委员会也鼓励商业银行在满足监管和审计要求的前提下, 可以自 己建立以VaR为基础的内部模型。此后,VaR模型作为一个很好的风险管理 工具开始正式在新巴塞尔协议中获得应用和推广,并逐步奠定了其在风险管 理领域的首要地位。
14.1.1
VaR模型的含义
% 历史模拟法的可视化 figure; hist2color(returnsPortfolio,confidence(2),'r','b'); %具体见hist2color程序 %历史方法99%,95% 水平的风险价值 hVar = -marketValuePortfolio*confidence; displayVar(hVar(1),hVar(2),'hs');
VaR(Value at Risk),通译为“风险价值”,是指正常情况下,在一定时期内Δt 内,一定的置信水平的1-α下某种资产组合面临的最大损失。统计学表达为 式中:Δp是指在一定的时期Δt内某种资产组合市场价值的变化,1-α为给定的
概率。即在一定的持有期Δt内,给定的置信水平1-α下,该资产组合的最大损失不会
超过VaR。用VaR进行风险衡 量时,首先要确定持有期和置信水平,巴塞尔委员会 规定的持有期标准为10天,置信水平为99%,但各个商业银行可以确定自己的标准。 如J.P.Morgan 公司在1994年的年报中,规定的持有期为1天,置信水平为95%,VaR 值为1 500万美元。
14.2 VaR计算方法
14.3.2
数据可视化与标准化
标准化股票价格序列图
14.3.3
数据简单处理与分析
计算选中股票的均值、标准差、相关性与Beta等指标,代码如下:
相关主题