CPPI和TIPP两种投资组合策略及python代码

本文介绍了CPPI(固定比例投资组合保险策略)和TIPP(时间不变性投资组合保险策略)的概念、公式及Python实现。通过对比分析了这两种策略在中证500指数上的应用效果,提供了实际操作示例,有助于理解投资组合保险策略的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两类投资组合策略及代码

CPPI

概念

固定比例投资组合保险策略

公式

A t = D t + E t A_t=D_t+E_t At=Dt+Et

E t = m i n {   M ∗ ( A t − F t ) , A t } E_t=min\lbrace\ M*(A_t-F_t),A_t\rbrace Et=min{  M(AtFt),At}

A t 指 t 期 总 资 产 , D t 指 无 风 险 资 产 , E t 指 风 险 资 产 , F t 指 最 低 保 险 金 额 , M 指 投 资 乘 数 A_t指t期总资产,D_t指无风险资产, E_t指风险资产,F_t指最低保险金额,M指投资乘数 AttDtEtFtM

例子

固定比例投资组合保险策略的具体操作方式与买入持有策略类似,运用此投资组合保险策略,就是投资者先决定乘数 M,并确定要保金额,再将要保金额值的现值投资于无风险资产,另将剩余的金额投资于风险资产。
为了便于说明,下面我们举一个简单的例子:设投资人的起初总资产价值为100万,某风险资产组合的总市值也为100万,最低保险金额为80万,乘数大小为2。因此,期初以40万投资在风险资产组合上,作为主动性资产,其余60万投资在无风险资产上,作为保留资产。当风险资产组合的总市值从100%跌至80%时,此时投资人在风险资产组合上的投资值变为32万。此时投资人的资产总值为92万。根据CPPI的策略,此时投资人应投资在主动性资产上的仓位为24万。这时投资人在风险资产组合中的仓位减少8万。同理,当风险资产组合的总市值从100万升到120万,投资人投资在风险资产组合中的仓位从40万升到56万。

代码

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd


def MaxDrawdown(return_list):
    '''最大回撤率'''
    i = np.argmax((np.maximum.accumulate(return_list) -
                   return_list) / np.maximum.accumulate(return_list))  # 结束位置
    if i == 0:
        return 0
    j = np.argmax(return_list[:i])  # 开始位置
    return (return_list[j] - return_list[i]) / (return_list[j])


def calc_rate(day, rate, rate_type):
    if rate_type == 0:
        return (1 + rate*day)
    elif rate_type == 1:
        return np.exp(rate*day)


def getData(filename):
    """
    处理数据,获得各年的日涨跌幅

    : param filename: 输入文件,需要包含两列,日期和日涨跌
    : return: 输出dateframe格式数据,为按年分的日期和日涨跌
    """
    raw_data = pd.read_excel(filename)[['日期', 'rate']]
    raw_data.rename(columns={
   '日期': 'day', 'rate': 'random_ret'}, inplace=True)
    raw_data['day'] = pd.to_datetime(raw_data['day'], format='%Y%m%d')
    raw_data.set_index('day', inplace=True)

    year = raw_data.resample('y')
    year.sum()  # 做一次无意义的运算  year才可以用来循环
    data = [j for i, j in year]
    return data


def outputQuantResult(Return, nav, trading_day_sum):
    """
    输入经过该策略后的时间序列结果, 绘制收益图像

    : param Return: 收益结果数据
    : param nav: 总资产
    : param trading_day_sum: 交易日总数
    : return Results: Dataframe格式的年收益,年波动性,夏普比率,最大回撤
    """
    annual_return, annual_volatility, Sharpe, Maxdrawdown = [], [], [], []
    for i in range(len(Return)):
        df_return = pd.DataFrame
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值