数量金融学(5):CPPI策略
来源:互联网 发布:汉朝皇帝知乎 编辑:程序博客网 时间:2024/05/17 04:44
保本基金于20世纪80年代中期起源于美国,其核心是用投资组合保险策略进行基金的操作。保本基金是本金100%的保证(或者本金的一定比例的保证)。如果最终的收益大于等于保本金额,则担保人无需赔偿,否则,损失由担保人承担。
国际上比较流行的投资组合保险策略主要有对冲保险策略和固定比例投资组合保险策略(constant proportion portfolio insurance,CPPI)。
对冲保险策略主要依赖金融衍生品,实现投资组合价值的保本与增值。国际成熟市场的保本策略目前较多使用金融衍生品进行操作。目前国内缺乏这些金融工具,所以国内的保本基金主采取CPPI策略作为投资的保本策略。
Black and Jones (1987)提出了固定比例投资组合保险策略,让投资者根据个人对资产报酬的要求和对风险的承受能力设定适合于自己的投资组合保险。整个投资组合包括主动性资产(Active Asset)和保留性资产(Reserved Asset)。两类资产中较高风险并且预期回报较高的为主动性资产,较低风险低回报的则为保留性资产,因此一种资产可能在某些情况下是主动性资产,但在某些情况下则变成保留性资产。在股票和无风险资产的例子中,主动性资产指的就是股票,而保留性资产则是无风险资产。
%% CPPIclear;close all;clc%% 定义市场参数,生成随机价格曲线trading_year = 1;trading_day_per_year = 252;days_per_calendar_year = 360;rf = 0.05;rf_daily = rf / days_per_calendar_year;trading_day_sim = trading_year * trading_day_per_year;exp_total_ret = 0.2; % 预期年化收益exp_yearly_std = 0.3; % 预期年化标准差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 = 1;% rng(seed);random_ret = normrnd(mu,sigma,trading_day_sim,1); % 随机收益曲线random_idx = cumprod(1+random_ret);random_idx = [1 ; random_idx]; % idx的初始为1figure(1)subplot(211);plot(random_idx,'b');grid on;text(trading_day_sim,1,['收益' num2str((random_idx(end)-1)*100) '%'])title('标的')%% 定义CPPI参数init_nav = 1e4; % 初始本金adj_period = 30; % 调整周期guarantee_rate = 1; % 保本比例risk_multipler = 5; % 风险乘数risk_trading_fee_rate = 6 / 1000; % 风险资产交易费率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;%% CPPI策略% 第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 feerf_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) min_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) == 0 risk_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); % 无风险资产 risk_asset(t) = risk_asset(t) - abs(risk_asset_b4_adj - risk_asset(t)) * risk_trading_fee_rate; % 手续费 end % 检查是否被强制平仓 if risk_asset(t) <= 0 rf_asset(t) = nav(t) - risk_asset(t) * risk_trading_fee_rate; risk_asset(t) = 0; end end%%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('净值')
熊市基本能保本,甚至有些收益。牛市收益不高。
这和经济周期有关。经济大环境不好,CPPI也许比较行销。
当然,在实际中,CPPI也不会像仿真的曲线这样这么神,还要考虑到更多的因素。
比如,rf是否可以达到这么多,流动性是否可以满足,资金量较小时是否能达到预期的目标仓位等。
另外,有人在算PV的时候,用的是 exp(-rt) 这种算法,即把时间连续化了……
然而目前我并不是很清楚为什么要这样做……
2017年8月13日23:43:05发现了一个错误。
检查强制平仓的动作,应该每天都进行。
但是,强制平仓的条件,应该不是risk资产<=0才平仓。
可以算一个target_risk_asset,如果target_risk_asset==0就平仓。
target_risk_asset = max(nav(t) - pv(t), 0)
第75行后面,应该加上 target_risk_asset = max(nav(t) - pv(t), 0)
然后如果target_risk_asset==0,就强平了。
- 数量金融学(5):CPPI策略
- 数量金融学(6):TIPP策略
- 数量金融学(2):货币时间价值
- 数量金融学(7):连续复利
- 数量金融学(8):Markowitz均值-方差模型(2)
- 数量金融学(1):金融市场与金融产品
- 数量金融学(3):Markowitz均值-方差模型
- 数量金融学(4):投资风险的测量和业绩评价
- 金融学
- 金融学
- 可汗学院金融学(一)
- 可汗学院金融学(二)
- (未完成)上课笔记--金融学(二)
- 零基础读懂金融学(一)名词
- [金融数学] 经济学、金融学博士书目(上)
- [金融数学] 经济学、金融学博士书目(下)
- 计量金融学
- 金融学基本概念
- C/C++编译器内存泄漏检测工具(vld)
- IDL(ENVI/IDL) 简(jian)明(lou)教程:二、ENVI/IDL批处理入门(以投影转换为例)
- C++ 重载、覆盖与多态性
- POJ 3617 Best Cow Line [贪心] 《挑战程序设计竞赛》2.2
- JS常用方法
- 数量金融学(5):CPPI策略
- android QMI机制---概论
- DMMS工具介绍-更改Android虚拟机默认安装位置
- 23种设计模式+六大基本原则
- OriginPro2017绘制四维散点图(三维散点+一维颜色)
- View的滑动冲突处理
- eclipse从svn导入项目遇到的坑?
- 从MySQL Bug#67718浅谈B+树索引的分裂优化
- mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz 安装