投资组合风险管理策略 Matlab
文章目录
- 1. functPortfolioInsurance
- CPPI
- TIPP
- syntheticPut
- 2. functWienerProcess
- 3. scriptPortfolioInsurance
1. functPortfolioInsurance
function [Wealth,Floor] = functPortfolioInsurance(wealth,multiplier,floor,strategy,returnsStocks,returnsBills,volaStocks)period = size(returnsStocks,1);
path = size(returnsStocks,2);Wealth = ones(period+1,path) * wealth;
Stocks = ones(period+1,path);
Bills = ones(period+1,path);
Cushion = ones(period+1,path);
Exposure = ones(period+1,path);
Floor = ones(period+1,path) * floor * wealth;
CPPI
Constant Proportion Portfolio Insurance
固定比例投资组合保险策略
switch strategycase 'CPPI'for t = 1:period% Adjust Asset allocationFloor(t,:) = Floor(end,:)*exp(-returnsBills*(period -(t-1)));% discounted floorCushion(t,:) = Wealth(t,:) - Floor(t,:);Exposure(t,:) = min(multiplier * (Cushion(t,:)),Wealth(t,:));Stocks(t,:) = Exposure(t,:);Bills(t,:) = Wealth(t,:) - Stocks(t,:);Wealth(t,:) = Stocks(t,:) + Bills(t,:);%Apply Asset ReturnsStocks(t+1,:) = Stocks(t,:).* exp(returnsStocks(t,:));Bills(t+1,:) = Bills(t,:).* exp(returnsBills);Wealth(t+1,:) = Stocks(t+1,:) + Bills(t+1,:);end
TIPP
Time Invariant Portfolio Protection
时间不变性投资组合保险策略
case 'TIPP'for t = 1:periodCushion(t,:) = Wealth(t,:) - Floor(t,:);Exposure(t,:) = min(multiplier * (Cushion(t,:)),Wealth(t,:));Stocks(t,:) = Exposure(t,:);Bills(t,:) = Wealth(t,:) - Stocks(t,:);Wealth(t,:) = Stocks(t,:) + Bills(t,:);Stocks(t+1,:) = Stocks(t,:) .*exp(returnsStocks(t,:)); Bills(t+1,:) = Bills(t,:) .*exp(returnsBills);Wealth(t+1,:) = Stocks(t+1,:) + Bills(t+1,:);Floor(t+1,:) = max( Wealth(t+1,:).* floor,Floor(t,:));end
syntheticPut
复制性卖权策略
case 'syntheticPut'StockPrice = ones(period+1,path) * wealth;wStock = ones(period+1,path);X = floor * wealth;sigma = volaStocks;T = period;for t=1:periodFloor(t,:) = Floor(end,:)*exp(-returnsBills*(period -(t-1)));% discounted floorCushion(t,:) = Wealth(t,:) - Floor(t,:);Exposure(t,:) = min(Cushion(t,:),Wealth(t,:));d1(t,:) = (log(StockPrice(t,:)./X)+(returnsBills+0.5*sigma^2).*(T-t))./(sigma.*sqrt(T-t));d2(t,:) = d1(t,:) - sigma.*sqrt(T-t);wStock(t,:) = (StockPrice(t,:).* normcdf(d1(t,:)))./(StockPrice(t,:).* normcdf(d1(t,:)) + X.*exp(-returnsBills.*(T-t)).*(1-normcdf(d2(t,:))));wStock(t,:) = min(wStock(t,:),1);Stocks(t,:) = wStock(t,:).* Wealth(t,:);Bills(t,:) = Wealth(t,:) - Stocks(t,:);Wealth(t,:) = Stocks(t,:) + Bills(t,:);Stocks(t+1,:) = Stocks(t,:) .*exp(returnsStocks(t,:)); Bills(t+1,:) = Bills(t,:) .*exp(returnsBills);Wealth(t+1,:) = Stocks(t+1,:) + Bills(t+1,:);StockPrice(t+1,:) = StockPrice(t,:).* exp(returnsStocks(t,:));wStock(t+1,:) = Stocks(t+1,:)./Wealth(t+1,:);end otherwiseerror('provide a portfolio insurance strategy')
end
2. functWienerProcess
function [returns] = functWienerProcess(mu,sigma,periods,paths)returns = mu + sigma.*randn(periods,paths);end
3. scriptPortfolioInsurance
clear all;close all;clc
cd('D:\学习\MMF\Introduction to Computational Finance\project')rng(2021);%% 3a load data
[DAX,~,dataRaw] = xlsread('Data.xlsx','Tabelle1');
logReturns = log(DAX(1:end-1)./DAX(2:end));
mu = mean(logReturns);
sigma = std(logReturns);
periods = 60;
paths = 100000;
simureturns = functWienerProcess(mu,sigma,periods,paths);%% 3b
%input for 3 PF insuruance strategies
wealth = 100;
m = 5;
floor = 0.9;
returnsB = 0;
returnsS = simureturns;
volaStocks = sigma;[WealthC,FloorC] = functPortfolioInsurance(wealth,m,floor,'CPPI',returnsS,returnsB,volaStocks);
[WealthT,FloorT] = functPortfolioInsurance(wealth,m,floor,'TIPP',returnsS,returnsB,volaStocks);
[WealthP,FloorP] = functPortfolioInsurance(wealth,m,floor,'syntheticPut',returnsS,returnsB,volaStocks);% input for buy and hold
mB = 1;
floorB = 0;[WealthB,FloorB] = functPortfolioInsurance(wealth,mB,floorB,'CPPI',returnsS,returnsB,volaStocks);%% 3c Plot
%end Wealth of 3 strategies
endWealth = [WealthC(end,:);WealthT(end,:);WealthP(end,:)];plot(WealthB(end,:),endWealth,'o')
legend('CPPI','TIPP','syntheticPut')
xlabel('Stock investment')
ylabel('Portfolio insurance strategy')
title('Relative Wealth at Maturity')%% 3d
endWealth = [endWealth;WealthB(end,:)];
expectedW = mean(endWealth,2);
shortfall = endWealth<floor * wealth;
sp = sum(shortfall ,2)/paths;
se = mean(max(floor*wealth - endWealth,0),2);
xlswrite('Data.xlsx',[expectedW sp se],'Shortfall','B2:D5');
投资组合风险管理策略 Matlab相关推荐
- 保本基金的投资组合保险策略运用及建议
保本基金的投资组合保险策略运用及建议 李源海 摘要:保本基金的运作核心是投资组合保险策略,我国保本基金均采用简单参数的组合保险策略.在国内零息债券缺乏.股市波动大的情况下,如何设定最低保险额度.合理的 ...
- 采用粒子群优化算法实现投资组合优化【Matlab实现】
目录 一. 粒子群算法 1.1 概念 1.1.1 粒子群优化算法思想 1.1.2 更新规则 1.1.3 惩罚项 1.2 程序框图 二.投资组合优化 三.Matlab实现 3.1 结果及可视化 ...
- 并离网切换-双机并联逆变器自适应虚拟阻抗下垂控制(Droop)策略MATLAB仿真模型
结构完整,各部分曲线完美,适合作为基础模型学习使用!!MATLAB2018b版本及以上!! 仿真整体模型: 0-1s孤岛运行,1-2s接入大电网运行,2-3s脱网运行. 自适应虚拟阻抗下垂控制模型图: ...
- 数学模型4.8例1投资组合lingo,matlab
今天学到数学模型P131 4.8节 例1 投资组合,这仍然是一个非线性规划问题,里面主要涉及两个式子. 其中第二个写起来比较复杂,在lingo中分步计算出期望,协方差后,比较好写. model: se ...
- 期货策略matlab,code 一个利用MATLAB编写的螺纹钢期货高频交易套利策略 联合开发网 - pudn.com...
code 所属分类:金融证券系统 开发工具:matlab 文件大小:506KB 下载次数:398 上传日期:2013-10-09 14:14:53 上 传 者:huangxiao 说明: 一个利用M ...
- 期货策略matlab,精选股票、期货量化投资策略系列(一)基于Matlab
原标题:精选股票.期货量化投资策略系列(一)基于Matlab 编辑部 微信公众号 关键字全网搜索最新排名 『量化投资』:排名第一 『量 化』:排名第一 『机器学习』:排名第四 我们会再接再厉 成为全网 ...
- 量化交易策略matlab交易方案,【策略分享】Matlab量化交易策略源码分享
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 策略名称:横盘突破策略 策略思路: 日内交易策略,收盘平仓: 横盘突破在过去30根K线的高低点围绕中轴上下0.5%的范围内波动时: 上轨=过去30根K线的 ...
- matlab 突破交易策略,Matlab量化交易策略之 波动率突破+简单过滤
策略基本概念是基于区间突破, 当前close突破n天前的均值+m倍的标准差,就long或short.加了一个过滤器,另外收盘价在均线之上. 然后利用移动止损, n天前的ATR,滚动式的获利方式. 策略 ...
- 量化交易策略matlab交易方案,Matlab量化交易策略之 GFTD+止损 附源码
策略思路: GFED模型,趋势跟踪策略,利用K线收盘价的涨跌进行判断,真正交易前,需经历交易启动,到交易信号发出的过程,并且买入和卖出分别当做独立的系统进行计算.当买入计数达到4,做多,当卖出计数达到 ...
最新文章
- bzoj 4921: [Lydsy六月月赛]互质序列
- Python开发入门与实战1-开发环境
- mysql服务正在启动或停止中,请稍后片刻再试一次的解决办法
- 18_使用react脚手架构建应用
- struts中如何查看配置文件中是否存在某个返回值
- MySQL Connector/Net 5.20安装后无法在VS2008中正常使用的问题
- secuteCRT的使用
- Junit单元测试/反射/注解
- python 取余_Python-基本使用
- Java web 实现视频在线播放的常用几种方法
- CentOS 7 部署开源sip信令服务器 —— 筑梦之路
- struts2框架入门(基于maven)
- 少儿编程学习(顺序结构)
- python正则匹配内网IP
- 1到100号的灯开关问题
- 3900x做服务器性能怎么样,AMD Ryzen 9 3900X评测:向消费级性能王者宝座进发
- Java final与static
- 为什么技术面过了却挂在了HR面试之”谈谈你的职业生涯规划“
- 【Fastlio2 SLAM算法实现】
- zephir-类和对象2