TIPP策略(时间不变性投资组合保险策略,TimeInvariantPortfolioProtection,TIPP),当股价上升时,投资者大多关心当前资产价值的保障,希望能够保存住浮动的盈利,而非仅仅考虑投资本金。

因此,Estep和Kritzman对CPPI策略做了一些修正,提出TIPP策略,把保险额度从固定改为可变,将保险额度和资产净值挂钩,保险额度为某一时点资产净值最高的一个固定比例。当资产净值变动时,即可求出新的保险额度,将新的保险额度与原来的保险额度相比较,取其中较大的作为资产净值变动后的保险额度。因此,在市场走向多头时,TIPP策略这种只上不下的保险额度调整方式,充分反映了投资成本的不断更新,而非任意过去时间的历史成本。(这和trailing stop很像。)

优缺点暂时不太懂。求解答。

TIPP与CPPI虽然可以通过几个简单的参数设定来进行动态的调整资产配置达到保险的目的,不需要像复制期权一样对波动率进行精确的估算,但也有其本身的缺点。
第一,复制性卖权可以将要保比例设为100%或更高,但TIPP与CPPI不能将要保比例设为100%;
第二,其助涨杀跌的本质可能会造成市场波动性的增加;
第三是交易成本的问题,这和复制期权相同。
一般而言,要使CPPI策略能够精准的达到投资组合保险的目的,必需将投资组合中的风险性资产与固定收益资产两者进行连续不断的调整;此时,在交易成本存在的现实环境下, 如何在策略的精准度与交易成本中做进行取舍是很复杂的问题

加强版

CPPI和TIPP策略没有考虑到连续调整风险资产和无风险资产的头寸,会带来很大的交易成本,故此后来的学者提出了三种交易原则,既有用,又不至于影响CPPI和TIPP保险的有效性:
定时间段调整法(Time Discipline)是指选择一个时段,在每隔这样一个时段就调整积极性资产和保守性资产。
市场走向调整法(Market Move Discipline)是指首先确定一个市场走向的范围,当风险资产的市场值突破该范围的临界点时,则调整组合的风险资产和无风险资产的头寸。

乘数调整法(Multiplier Discipline)是指对乘数设定一个范围,而不象原来那样固定不变,利用乘数计算出风险资产组合价值的范围,当市场波动使风险资产值的变动超过了设定的范围时,就调整组合的部位。

Main

%% Time Invariant Portfolio Protection
clear;
close all;
clc%%n_iter = 1e6;
exp_total_ret = 0.2; % 预期年化收益
exp_yearly_std = 0.15; % 预期年化标准差
rf = 0.055;
risk_multipler = 5;
adj_period = 35; % 调整周期tipp_ret_arr = zeros(n_iter,1);
idx_ret_arr = zeros(n_iter,1);parfor k = 1:n_iter[tipp_ret_arr(k),idx_ret_arr(k)] = calc_ret_tipp_tp(exp_total_ret,exp_yearly_std,rf, risk_multipler, adj_period);
end%% 看看策略的平均收益率,平均收益率加减k倍标准差
k = 1;
[mean(tipp_ret_arr), mean(tipp_ret_arr)- k * std(tipp_ret_arr), mean(tipp_ret_arr)+ k *std(tipp_ret_arr)]%%nbins = [1000 1000];
[N,Xedges,Yedges] = histcounts2(idx_ret_arr,tipp_ret_arr,nbins,'normalization','probability');
imagesc(Yedges,Xedges,N);
colorbar;
ylabel('Index');
xlabel('TIPP');
title('TIPP vesus Index')%%
% Set up fittype and options.
ft = fittype( 'poly1' );
opts = fitoptions( ft );
opts.Lower = [-Inf -Inf];
opts.Upper = [Inf Inf];% Fit model to data.
[fitresult, gof] = fit( idx_ret_arr, tipp_ret_arr, ft, opts );% Plot fit with data.
figure( 'Name', 'Relation');
h = plot( fitresult, idx_ret_arr, tipp_ret_arr );
grid on;
xlabel('Index')
ylabel('TIPP')
title('TIPP vesus Index')%%
nbins = 100;
figure(3);
subplot(211)
h1 = histogram(idx_ret_arr,nbins);
h1.Normalization = 'probability';
grid on;
xlabel('Yearly Return Rate')
ylabel('Probability')
title('Index')subplot(212)
h2 = histogram(tipp_ret_arr,nbins);
h2.Normalization = 'probability';
grid on;
xlabel('Yearly Return Rate')
ylabel('Probability')
title('TIPP')

calc_ret_tipp_tp

function [ tipp_ret ,idx_ret ] = calc_ret_tipp_tp(exp_total_ret, exp_yearly_std, rf, risk_multipler, adj_period )%% 定义市场参数,生成随机价格曲线
trading_year = 1;
trading_day_per_year = 252;
% days_per_calendar_year = 360;
% rf = 0.04; % 无风险一年(日历年)收益率
rf_daily = rf / trading_day_per_year;
trading_day_sim = trading_year * trading_day_per_year;exp_daily_ret = (1+exp_total_ret)^(1/trading_day_per_year) - 1;
exp_daily_std = exp_yearly_std / sqrt(trading_day_per_year);mu = exp_daily_ret;
sigma = exp_daily_std;% seed = 7;
% rng(seed);random_ret = normrnd(mu,sigma,trading_day_sim,1); % 随机收益曲线
random_idx = cumprod(1+random_ret);
random_idx = [1 ; random_idx]; % idx的初始为1% figure(1)
% subplot(211);
% plot(random_idx,'b');
% grid on;
% text(trading_day_sim,1,['收益' num2str((random_idx(end)-1)*100) '%'])
% title('标的')%% 定义TIPP参数
init_nav = 2e4; % 初始本金
% adj_period = 10; % 调整周期
guarantee_rate = 1; % 保本比例
% risk_multipler = 2; % 风险乘数
risk_trading_fee_rate = 6 / 1000; % 风险资产交易手续费率
gaurant_adj_thresh = 0.03; % 一旦收益超过上一个保本率的 1+百分之几
gaurant_inc = 0.02; % 就进一步提高保本率
gaurant_inc_counter = 0;risk_asset = zeros(trading_day_sim+1,1); % 风险资产
rf_asset = zeros(trading_day_sim+1,1); % 无风险资产
min_pv_asset = zeros(trading_day_sim+1,1); % 价值底线
nav = zeros(trading_day_sim+1,1); % 总资产
nav(1) = init_nav;take_profit_thresh = 0.12;
is_take_profit = 0;%% TIPP策略% 第1天
min_pv_asset(1) = guarantee_rate * init_nav / (1+rf_daily*trading_day_sim); % 第1天的价值底线
risk_asset(1) = max(0,risk_multipler * (nav(1) - min_pv_asset(1))); % 风险资产 w/o fee
rf_asset(1) = (nav(1) - risk_asset(1)); % 无风险资产
risk_asset(1) = risk_asset(1) * (1 - risk_trading_fee_rate);  % 扣去手续费% 第2天到最后1天
for t = (2:trading_day_sim+1)% 未止盈if is_take_profit == 0% 检查是否已经可以止盈fv = nav(t-1) * (1+rf_daily * (trading_day_sim - t)) - risk_trading_fee_rate * risk_asset(t-1);if fv/init_nav - 1 > take_profit_thresh % 止盈risk_asset(t) = 0;rf_asset(t) = rf_asset(t-1) * (1+rf_daily) + (1-risk_trading_fee_rate) * risk_asset(t-1);is_take_profit = 1;nav(t) = rf_asset(t);else % 没有止盈% 如果已实现收益,提高保本额度if nav(t-1) / init_nav > guarantee_rate * (gaurant_adj_thresh+1)guarantee_rate = guarantee_rate + gaurant_inc;gaurant_inc_counter = gaurant_inc_counter + 1;endmin_pv_asset(t) = guarantee_rate * init_nav / (1+rf_daily*(trading_day_sim-t+1)); % 价值底线risk_asset(t) = (1+random_ret(t-1)) * risk_asset(t-1);rf_asset(t) = (1+rf_daily) * rf_asset(t-1);nav(t) = risk_asset(t) + rf_asset(t);% 定期调整if mod(t-1, adj_period) == 0risk_asset_b4_adj = risk_asset(t);risk_asset(t) = max(0,risk_multipler * (nav(t) - min_pv_asset(t))); % 风险资产rf_asset(t) = nav(t) - risk_asset(t); % 无风险资产trade_value = risk_asset_b4_adj - risk_asset(t);risk_asset(t) = risk_asset(t) - abs(trade_value) * risk_trading_fee_rate; % 手续费end% 检查是否被强制平仓if risk_asset(t) <= 0rf_asset(t) = nav(t) - risk_asset(t) * risk_trading_fee_rate;risk_asset(t) = 0;endendelse% 止盈rf_asset(t) = rf_asset(t-1) *(1+rf_daily);nav(t) = rf_asset(t);end
endtipp_ret = nav(end) / init_nav - 1;
idx_ret = random_idx(end) - 1;% %%
% figure(1)
% subplot(212);
% plot(nav/init_nav,'b');hold on;grid on;
% % plot(rf_asset,'r');
% % plot(risk_asset,'g');
% % legend('nav','rf','risk');
% % % title([num2str((nav(end)/init_nav-1)*100)])
% text(trading_day_sim,1,['收益 ' num2str((nav(end)/init_nav-1)*100) '%'])
% title('净值')end

几点说明。

calc_ret_tipp_tp函数里面,设置了一条止盈线。即一年12%的收益率。

gaurant_adj_thresh和gaurant_inc是2个逐渐增加的变量,是为了锁定已赚取的收益。

risk_multipler是风险资产的杠杆比率。杠杆越大,预期收益越大,但风险资产被强制平仓的概率越大,即刚好保本的概率也越大。

牛市表现很一般……,熊市极小概率不能保本(1. 极端情况,rf都没了。 2. 调整期到来之前,亏得太多了)

手续费设置得有点高。可能没有这么高。买入卖出各千分之6。实际上应该少一些。

以下运行结果的参数设置和代码贴出来的代码中的设置好像有点不一样。但是大致的关系应该差不太多了。

图像倒是很好看。

牛市。

熊市。

和CPPI一样,强制平仓的条件似乎写地不对……

应该每天检查当天的 risk + rf 的资产(即nav),是否已经小于了保本的 pv。

数量金融学(6):TIPP策略相关推荐

  1. 数量金融学(8):Markowitz均值-方差模型(2)

    之前写过一篇.那个时候不是很懂-- Review:数量金融学(3):Markowitz均值-方差模型 现在重新整理一下. 第一部分,生成各个资产组合的风险-收益特征. 先上效果图. 再上代码. # - ...

  2. 数量金融学(5):CPPI策略

    保本基金于20世纪80年代中期起源于美国,其核心是用投资组合保险策略进行基金的操作.保本基金是本金100%的保证(或者本金的一定比例的保证).如果最终的收益大于等于保本金额,则担保人无需赔偿,否则,损 ...

  3. 数量金融学(2):货币时间价值

    引言 资产估值与定价.投资组合管理.风险测量与管理构成了金融理论的三个主要部分. 货币时间价值 基本定义 一定金额的资金必须注明其发生时间,才能确切地表达其准确的价值. 货币时间价值.通俗地说,明天的 ...

  4. 数量金融学(3):Markowitz均值-方差模型

    上个世纪50年代(1952年),Markowitz发表一篇论文,标志着证券投资组合理论的正式诞生. 简单来说,Markowitz投资组合模型是根据每种证券的预期收益率.方差及证券之间的协方差矩阵,计算 ...

  5. 数量金融学(7):连续复利

    看了很多篇解释"连续复利"的文章,精选了一篇终于把我讲懂了的文章. 来自知乎. 有另一个概念叫 名义利率(nominal interest rate),此处的名义利率对应实际利率( ...

  6. 数量金融学(1):金融市场与金融产品

    本篇文章总结一些关于金融市场和金融产品的基本问题. 问题答案请自行探索. 金融市场框架 金融市场是什么? 金融市场的分类. 货币市场. 资本市场. 商品市场(单列出来). 金融机构有哪些? 存款性金融 ...

  7. Cassandra使用的各种策略

    1. 背景介绍 Cassandra 使用分布式哈希表(DHT)来确定存储某一个数据对象的节点.在 DHT 里面,负责存储的节点以及数据对象都被分配一个 token.token 只能在一定的范围内取值, ...

  8. 策略模式原来这么简单!

    前言 只有光头才能变强 回顾前面: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 单例模式你会几种写法? 工厂模式理解了没有? 无论是面试还是个人的提升,设计模式是必学的.今天来讲解策略模式~ ...

  9. Strategy Pattern(策略模式)

    意图 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化. 适用性 1. 许多相关的类仅仅是行为有异."策略"提供了一种用多个 ...

最新文章

  1. 野指针与内存泄漏那些事
  2. ios 性能优化(一)
  3. Python 存储模型
  4. 如何修改IE的默认标题
  5. 小工匠聊架构-超高并发秒杀系统设计 01_总体原则和架构演进
  6. 【小题目】写JAVA程序时可以创建一个名为123.java的源文件吗
  7. python opencv立体测距 立体匹配BM算法
  8. 于变局中开新局!《2021中国SaaS市场研究报告》报告发布
  9. mysql视图实验心得_Mysql学习经验总结【3】
  10. 从数组到 HashMap 之算法解释
  11. UI设计图标素材|如何应用合适图标
  12. Html前端基础(form表单、img标签、a href标签、id的作用)
  13. 女生适合做程序员吗?
  14. Spark standalone 模式下的集群部署
  15. vue组件内数值做watch监听,首次监听不到的问题
  16. php 判断来访客户端是否移动设备
  17. 网狐荣耀代码通读一----登录服务器
  18. 三轴加速度传感器原理及应用
  19. CBR,VBR,ABR介绍
  20. 微信小程序—火车票查询

热门文章

  1. PairProject 总结
  2. mysql 中 使用truncate table XXXX 的时候出现 DROP command denied to user 'xxx' for table ' YYY的问题解决
  3. 常用spaceclaim脚本(三)
  4. iphone字体大小使用的像素
  5. 迪杰斯特拉算法-(.c)
  6. mysql 事务 for update,mysql事务锁_详解mysql 锁表 for update
  7. 大家来找茬辅助工具实现
  8. 台式机1080ti最低多少起_gtx1080ti_GTX1080ti配置的台式机
  9. dw 复选框 php输出,Dreamweaver CS3的复选框使用方法
  10. 股票质押式回购交易和约定购回式证券交易的异同是什么?