文章目录

  • 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相关推荐

  1. 保本基金的投资组合保险策略运用及建议

    保本基金的投资组合保险策略运用及建议 李源海 摘要:保本基金的运作核心是投资组合保险策略,我国保本基金均采用简单参数的组合保险策略.在国内零息债券缺乏.股市波动大的情况下,如何设定最低保险额度.合理的 ...

  2. 采用粒子群优化算法实现投资组合优化【Matlab实现】

    目录 一. 粒子群算法  1.1 概念 1.1.1 粒子群优化算法思想 1.1.2 更新规则  1.1.3 惩罚项 1.2 程序框图 二.投资组合优化  三.Matlab实现  3.1 结果及可视化 ...

  3. 并离网切换-双机并联逆变器自适应虚拟阻抗下垂控制(Droop)策略MATLAB仿真模型

    结构完整,各部分曲线完美,适合作为基础模型学习使用!!MATLAB2018b版本及以上!! 仿真整体模型: 0-1s孤岛运行,1-2s接入大电网运行,2-3s脱网运行. 自适应虚拟阻抗下垂控制模型图: ...

  4. 数学模型4.8例1投资组合lingo,matlab

    今天学到数学模型P131 4.8节 例1 投资组合,这仍然是一个非线性规划问题,里面主要涉及两个式子. 其中第二个写起来比较复杂,在lingo中分步计算出期望,协方差后,比较好写. model: se ...

  5. 期货策略matlab,code 一个利用MATLAB编写的螺纹钢期货高频交易套利策略 联合开发网 - pudn.com...

    code 所属分类:金融证券系统 开发工具:matlab 文件大小:506KB 下载次数:398 上传日期:2013-10-09 14:14:53 上 传 者:huangxiao 说明:  一个利用M ...

  6. 期货策略matlab,精选股票、期货量化投资策略系列(一)基于Matlab

    原标题:精选股票.期货量化投资策略系列(一)基于Matlab 编辑部 微信公众号 关键字全网搜索最新排名 『量化投资』:排名第一 『量 化』:排名第一 『机器学习』:排名第四 我们会再接再厉 成为全网 ...

  7. 量化交易策略matlab交易方案,【策略分享】Matlab量化交易策略源码分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 策略名称:横盘突破策略 策略思路: 日内交易策略,收盘平仓: 横盘突破在过去30根K线的高低点围绕中轴上下0.5%的范围内波动时: 上轨=过去30根K线的 ...

  8. matlab 突破交易策略,Matlab量化交易策略之 波动率突破+简单过滤

    策略基本概念是基于区间突破, 当前close突破n天前的均值+m倍的标准差,就long或short.加了一个过滤器,另外收盘价在均线之上. 然后利用移动止损, n天前的ATR,滚动式的获利方式. 策略 ...

  9. 量化交易策略matlab交易方案,Matlab量化交易策略之 GFTD+止损 附源码

    策略思路: GFED模型,趋势跟踪策略,利用K线收盘价的涨跌进行判断,真正交易前,需经历交易启动,到交易信号发出的过程,并且买入和卖出分别当做独立的系统进行计算.当买入计数达到4,做多,当卖出计数达到 ...

最新文章

  1. bzoj 4921: [Lydsy六月月赛]互质序列
  2. Python开发入门与实战1-开发环境
  3. mysql服务正在启动或停止中,请稍后片刻再试一次的解决办法
  4. 18_使用react脚手架构建应用
  5. struts中如何查看配置文件中是否存在某个返回值
  6. MySQL Connector/Net 5.20安装后无法在VS2008中正常使用的问题
  7. secuteCRT的使用
  8. Junit单元测试/反射/注解
  9. python 取余_Python-基本使用
  10. Java web 实现视频在线播放的常用几种方法
  11. CentOS 7 部署开源sip信令服务器 —— 筑梦之路
  12. struts2框架入门(基于maven)
  13. 少儿编程学习(顺序结构)
  14. python正则匹配内网IP
  15. 1到100号的灯开关问题
  16. 3900x做服务器性能怎么样,AMD Ryzen 9 3900X评测:向消费级性能王者宝座进发
  17. Java final与static
  18. 为什么技术面过了却挂在了HR面试之”谈谈你的职业生涯规划“
  19. 【Fastlio2 SLAM算法实现】
  20. zephir-类和对象2

热门文章

  1. 黑马Java热门面试题线程(三)
  2. 工作站的数据处理比微型计算机,高效液相色谱分析-数据处理系统
  3. 电脑重启bootmgr_电脑开机出现bootmgr is missing怎么办
  4. Verilog自制NIOS2外设,Avalon总线上的HelloWorld
  5. 微软邮箱服务器和端口,发送邮件的服务器的ip和端口
  6. Tosca:定义元宇宙世界的时尚生活方式
  7. File对象和IO流
  8. 【Git】手把手教你使用git管理代码 (上)
  9. CCF-CSP题解 第一题(Java)
  10. SRPG游戏开发(六)第三章 绘制地图 - 三 创建自己的SrpgTile