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