阈值再投资法

所谓的阈值再平衡法就是指设置一个目标股票资产和债券资产比例,每个季度对各类资产进行调整。当股票上涨时,卖出股票资产,买入债券资产以维持目标资产百分比。当股票资产下跌时,卖出债券资产买入股票。常见的股债比例可以为二八、三七、四六。

from WindPy import *
import pandas as pd
import numpy as np
from datetime import datetime
from WindCharts import *  
import matplotlib.pyplot as plt
from scipy.stats.mstats import winsorize

w.start()

firm_list=["H11001.CSI","399006.SZ"]
e,df_data=w.wsd(firm_list, "close", "2017-01-17", "2022-02-16", "Period=Q;Fill=Previous", usedf=True)
df_data
#28
a=list(df_data.index)
asset_vs=[]

asset_v=1
stock_rate=0.2

stock_v=asset_v*stock_rate
bond_v=asset_v*(1-stock_rate)

stock_price=df_data.loc[a[0]][1]
bond_price=df_data.loc[a[0]][0]

stock_number=stock_v/stock_price
bond_number=bond_v/bond_price


for i in range(0,len(a)):
    stock_price=df_data.loc[a[i]][1]
    bond_price=df_data.loc[a[i]][0]
    
    stock_v=stock_price*stock_number
    bond_v=bond_price*bond_number
    
    #阙值再平衡
    delta_m=bond_v*stock_rate-stock_v*(1-stock_rate)
    bond_number=bond_number-delta_m/bond_price
    stock_number=stock_number+delta_m/stock_price
    asset_v=stock_price*stock_number+bond_price*bond_number
    
    asset_vs.append(asset_v)
asset_vs28=asset_vs
#37
a=list(df_data.index)
asset_vs=[]

asset_v=1
stock_rate=0.3

stock_v=asset_v*stock_rate
bond_v=asset_v*(1-stock_rate)

stock_price=df_data.loc[a[0]][1]
bond_price=df_data.loc[a[0]][0]

stock_number=stock_v/stock_price
bond_number=bond_v/bond_price


for i in range(0,len(a)):
    stock_price=df_data.loc[a[i]][1]
    bond_price=df_data.loc[a[i]][0]
    
    stock_v=stock_price*stock_number
    bond_v=bond_price*bond_number
    
    #阙值再平衡
    delta_m=bond_v*stock_rate-stock_v*(1-stock_rate)
    bond_number=bond_number-delta_m/bond_price
    stock_number=stock_number+delta_m/stock_price
    asset_v=stock_price*stock_number+bond_price*bond_number
    
    asset_vs.append(asset_v)
asset_vs37=asset_vs

#46
a=list(df_data.index)
asset_vs=[]

asset_v=1
stock_rate=0.4

stock_v=asset_v*stock_rate
bond_v=asset_v*(1-stock_rate)

stock_price=df_data.loc[a[0]][1]
bond_price=df_data.loc[a[0]][0]

stock_number=stock_v/stock_price
bond_number=bond_v/bond_price


for i in range(0,len(a)):
    stock_price=df_data.loc[a[i]][1]
    bond_price=df_data.loc[a[i]][0]
    
    stock_v=stock_price*stock_number
    bond_v=bond_price*bond_number
    
    #阙值再平衡
    delta_m=bond_v*stock_rate-stock_v*(1-stock_rate)
    bond_number=bond_number-delta_m/bond_price
    stock_number=stock_number+delta_m/stock_price
    asset_v=stock_price*stock_number+bond_price*bond_number
    
    asset_vs.append(asset_v)
asset_vs46=asset_vs

bench_mark_s=df_data['399006.SZ']/df_data.loc[a[0]][1]
bench_mark_b=df_data['H11001.CSI']/df_data.loc[a[0]][0]


plt.plot(df_data.index,asset_vs28,'r',label='股债二八')
plt.plot(df_data.index,asset_vs37,'b',label='股债三七')
plt.plot(df_data.index,asset_vs46,'y',label='股债四六')
plt.plot(df_data.index,bench_mark_s,'g',label='股基收益')
plt.plot(df_data.index,bench_mark_b,'k',label='债基收益')
plt.legend()
plt.show()

days_n=(df_data.index[-1]-df_data.index[0]).days
#输入行
bench_mark=df_data['399006.SZ']

print('股债二八策略'+'-'*20)
print('年化收益率:',(asset_vs28[-1]/asset_vs28[0])**(365/days_n)-1)
#print('最大回撤:')
print('股债三七策略'+'-'*20)
print('年化收益率:',(asset_vs37[-1]/asset_vs37[0])**(365/days_n)-1)
#print('最大回撤:')
print('股债四六策略'+'-'*20)
print('年化收益率:',(asset_vs46[-1]/asset_vs46[0])**(365/days_n)-1)
#print('最大回撤:')



print('基准'+'-'*20)
print('年化收益率:',(bench_mark_s[-1]/bench_mark_s[0])**(365/days_n)-1)
print('年化收益率:',(bench_mark_b[-1]/bench_mark_b[0])**(365/days_n)-1)
#print('最大回撤')

想了解更多基金投资知识,欢迎关注我的微信公众号 ourwechat-271828

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ourwechat-271828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值