资源简介
本资源包含,用matlab实现历史模拟法、蒙特卡罗法、参数模型法等三种方法求解VaR
代码片段和文件信息
close all
clear
clc
%% 数据准备
% 尝试用从tushare读取数据,如果因为版本问题读取数据失败
% 则用之前保存下来的数据进行计算
try
% 加载tushare包
addpath(genpath(pwd));
token = ‘ca928fb11765cd7c41b937459c8b611e0a97d0abf2daa1f8393c8ebc‘;
api = pro_api(token);
stockall = api.query(‘stock_basic‘);
% 读取数据参数设定
start_time = ‘20180101‘;
end_time = ‘‘;
ktype = ‘D‘;
% 取沪深300做为市场指数
indexdata = pro_bar(‘000300.SH‘ api start_time end_timektype‘I‘);
indexdata = flipud(indexdata);
% 取3支股票
nstock = 3;
% 记录用到的3支股票
stocklist = [];
stockdata = cell(nstock1);
nday = size(indexdata1);
% closeprice 第一列为指数价格,其他列为股票数据
closeprice = indexdata.close;
temp = indexdata.trade_date;
temp = char(temp);
temp = str2num(temp);
tradedate = datetime(temp‘ConvertFrom‘‘yyyymmdd‘‘format‘‘yyyy-MM-dd‘);
% 获取股票数据
m = 0;
for i = 1:size(stockall1)
temp = pro_bar(stockall.ts_code{i} api start_time end_timektype‘E‘‘qfq‘);
% 有的股票有停牌,我们得选取没有停牌的股票
if size(temp1) == nday
m = m+1;
stockdata{m} = flipud(temp);
closeprice(:m+1) = stockdata{m}.close;
stocklist = [stocklist;stockall(i:)];
end
if size(stocklist1) == nstock
break;
end
end
save(‘tempdata.mat‘);
catch
load tempdata
end
% 对所选用的股票进行绘图
plot(tradedatecloseprice(:2))
hold on
plot(tradedatecloseprice(:3))
plot(tradedatecloseprice(:4))
xlabel(‘时间‘);
ylabel(‘股价‘);
legend(stocklist.name);
title(‘投资组合成分股股价变动图‘);
saveas(gcf‘投资组合成分股股价变动图.jpg‘);
%% 历史模拟法
% 假定每只股票买N股
N = 1000;
% 假定投资组合等权重求投资组合市值
value = (closeprice(:2) + closeprice(:3) + closeprice(:4)) * N;
% 投资组合收益率
ret = price2ret(value);
figure;
subplot(211);
plot(tradedatevalue);
xlabel(‘时间‘);
ylabel(‘组合市值‘);
title(‘投资组合市值‘)
subplot(212);
plot(tradedate(2:end)ret‘*‘);
xlabel(‘时间‘);
ylabel(‘收益率‘);
title(‘投资组合日收益率‘)
saveas(gcf‘投资组合市值及收益率.jpg‘);
%绘制投资组合收益率直方图
figure;
histogram(ret20);
ylabel(‘天数‘);
xlabel(‘投资组合日收益率‘);
title(‘历史模拟法投资组合日收益率直方图‘);
saveas(gcf‘历史模拟法投资组合日收益率直方图.jpg‘)
%在5%置信度时,市值亏损的最大比率
Var = -prctile(ret5) * value(end);
disp([‘历史模拟法投资组合VaR为‘num2str(Var)]);
%% 蒙特卡罗模拟
%计算日收益率均值和方差
mu = mean(ret);
vol = std(ret);
% 年化波动率
vol = vol * sqrt(250);
%资产初始值
s0 = value(1);
% 模拟时长
T = 1;
% 模拟间隔点
nStep = 250;
% 模拟路径数
nPath = 1000;
%用蒙特卡洛模拟1000次
sPath = simulatePath(s0muvolTnStepnPath);
% 绘制蒙特卡罗法模拟路径
figure;
plot(sPath);
xlabel(‘模拟时间点‘);
ylabel(‘组合市值‘);
title(‘蒙特卡罗法模拟路径‘);
saveas(gcf‘蒙特卡罗法模拟路径.jpg‘)
% 计算每条模拟路径的var
ret_mc = price2ret(sPath);
Var = -mean(prctile(ret_mc5)) * value(end);
disp([‘蒙特卡罗法投资组合VaR为‘num2str(Var)]);
%% 参数模型法
vol = std(ret);
ValueAtRisk = portvrisk(muvol);
Var = ValueAtRisk * value(end);
disp([‘参数模型法投资组合VaR为‘num2str(Var)]);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-04-17 09:18 var计算\
文件 3254 2019-04-17 09:18 var计算\main_sc
文件 3322 2019-04-17 09:18 var计算\main_sc
文件 408 2019-04-17 09:18 var计算\simulatePath.m
文件 168246 2019-04-17 09:18 var计算\tempdata.mat
目录 0 2019-04-17 09:18 var计算\tushare_matlab_sdk\
文件 36618 2019-04-17 09:18 var计算\历史模拟法投资组合日收益率直方图.jpg
文件 69389 2019-04-17 09:18 var计算\投资组合市值及收益率.jpg
文件 43758 2019-04-17 09:18 var计算\投资组合成分股股价变动图.jpg
文件 105721 2019-04-17 09:18 var计算\蒙特卡罗法模拟路径.jpg
文件 300 2019-04-17 09:18 var计算\tushare_matlab_sdk\http_createHeader.m
文件 2139 2019-04-17 09:18 var计算\tushare_matlab_sdk\http_paramsToString.m
文件 5325 2019-04-17 09:18 var计算\tushare_matlab_sdk\pro_api.m
文件 7022 2019-04-17 09:18 var计算\tushare_matlab_sdk\pro_bar.m
文件 8433 2019-04-17 09:18 var计算\tushare_matlab_sdk\readme.txt
文件 1692 2019-04-17 09:18 var计算\tushare_matlab_sdk\tushare_pro_test.m
文件 13656 2019-04-17 09:18 var计算\tushare_matlab_sdk\urlread2.m
- 上一篇:用于彩色图像增强的CLAHE算法的MATLAB实现
- 下一篇:西勒振荡器.ms13
相关资源
- 提取图像Hu不变矩,Matlab函数~~~
- 金融风险VaR模型研究\\蒙特卡罗算法与
- 蒙特卡罗法模拟matlab源程序
- Matlab求解Var代码
- TVPVAR-新.zip
- Var与CVaR计算方法matlab程序,完全能运
- 基于蒙特卡罗法的二维随机裂隙模拟
- matlab求股票的var、cvar
- Variational Mode Decomposition 内含VMD相关
- time-vari-meshing-stiffness
- Total_variation-regularized
- VMD_2D 二维变模态分解(TWO-DIMENSIONAL
- VMD 变模式分解(Variational Mode Decompo
- Allan--variance
- PVARRAY_BATTERY_DOUBLE_DCDC 光伏并网
- power_PVarray_grid_det 光伏电池模块封装
- time_varied_stiffness 一个齿轮时变啮合刚
- 可靠性方法:蒙特卡洛法的Matlab源代
- variational inequality problem
评论
共有 条评论