量化7年1000万知与行,回测量化7年如果只每月定投5.4万到沪深300指数基金,能否实现7年1000万

博主通过Python进行回测,设定每月定投54487元于沪深300指数基金,期望7年累积至1000万。实际结果显示,7年定投累计投入468万,最终资产约为601万,未能达到目标。尽管跑赢了4%固定收益的理财产品,但距离目标仍有较大差距。博主寻求年化20%的无择时量化投资组合建议,并计划实盘操作,以实现1.67%的月收益率目标。
摘要由CSDN通过智能技术生成

给自己定的目标是量化7年建立一个1000万的投资组合,通过PMT公式计算7年1000万,每个月按1.67%收益率,7年84个月按月投入,套入公式=FMT(r,n,,FV,1)r为月收益率,n为84个月,FV为最后得到的本金加收益,1表示每个月1号投入资金,当月投入的资金也按月收益率计算收益,=FMT(0.0167,84,,10000000,1)得到初始投入资金54487元,按初始投入资金和预估月收益率制作执行表格如下

如果只每月定投沪深300指数基金能否实现这个目标呢?通过python学习,回测一下每月定投5.4万到沪深300指数基金看看能否实现这个目标。

从今天倒推7年,需要2014年8月23日到2021年8月22日沪深300指数基金数据,为了简便,直接以沪深300指数作为回撤对象,以4%固收的理财产品做对照。

回撤数据为7年定投468万,和表格457.7万有一些小差异,因为是按每个月20个工作日投的。最后的总资金为601万,虽然跑赢了理财定投,但是离一千万还是有很大的差距,所以仅仅只通过定投沪深300指数基金是无法简单实现目标。必须通过不断的学习,提高收益率才能完成目标。大家如果有好的不需要择时能实现年化20%的可定期量化投资的组合,希望能赐教。我追求是用量化自动交易,通过复利实现目标,我将实盘操作,如果能稳定的完成每个1.67%收益,必定红包感谢。

#导入所需要用到的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 设置参数,将图形格式设置为‘svg’,能够输出更加清晰的图
%config InlineBackend.figure_format = 'svg' 
#正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
#获取指数收盘价
df300 = get_market_data(['close','open','high','low','volume'], stock_code =['000300.SH'],start_time = '20140823',end_time = '20210822', period = '1d')
#按月定投,按量化7年1000万,理想状态,每30天投入54487元
trade_df = pd.DataFrame(index=df300.index,columns=['money','累计收益率','基金净值','无风险收益率','无风险收益_净值','基金份额',
                       '总基金份额','累计投入资金','理财份额','总理财份额','指数定投资金'])
trade_df['money']=0
indexes=np.arange(0,len(trade_df.index),20)
trade_df.iloc[indexes,0]=54487
logRet = np.diff(np.log(df300['close']))
trade_df['累计收益率'][1:]=logRet.cumsum()
trade_df['基金净值']=df300['close']/54487
#假设定投无风险理财产品收益率为4%
trade_df['无风险收益率']=(4.0/100+1)**(1.0/250)-1
trade_df['无风险收益_净值']=(trade_df['无风险收益率']+1).cumprod()
trade_df['基金份额']= trade_df['money']/trade_df['基金净值']
trade_df['总基金份额']=trade_df['基金份额'].cumsum()
trade_df['累计投入资金']=trade_df['money'].cumsum()
trade_df['理财份额']=trade_df['money']/trade_df['无风险收益_净值']
trade_df['总理财份额']=trade_df['理财份额'].cumsum()
trade_df['指数定投资金']=trade_df['基金净值']*trade_df['总基金份额']
trade_df['理财定投资金']=trade_df['无风险收益_净值']*trade_df['总理财份额']
# 每月定投沪深300指数及定投理财收益数据可视化
# 建立画布
fig = plt.figure(figsize = (12,4))
plt.xticks(list(range(0,len(df300),50)),list(np.array(df300.index)[list(range(0,len(df300),50))]), rotation=80)
# 绘制主坐标轴图表
plt.plot(np.arange(len(trade_df.index)), df300['close'], linestyle='dotted', label="沪深300指数")
plt.legend(loc='upper left') # 设置主坐标轴图表的图例
# 调用twinx方法
plt.twinx()
# 使用次坐标轴
plt.plot(np.arange(len(trade_df.index)), trade_df['累计投入资金'], label="累计投入资金")
plt.plot(np.arange(len(trade_df.index)), trade_df['指数定投资金'], label="指数定投资金")
plt.plot(np.arange(len(trade_df.index)), trade_df['理财定投资金'], label="理财定投资金")
plt.legend(loc='upper center') 
# 设置次坐标轴图表的图例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值