除了已知文献说的创业活跃度,经济发展,产业增长,技术创新,还能有什么啊?
基于Monster 组和GPT的调写:
金融市场发展,社会保障,人口结构,人口结构,
想解决这个问题,我们可以像傻瓜一样去尝试所有方法,也可以从现实角度出发,想出尽量合理可行的投资计划再来编写相应的程序探索结果
那什么样的投资方法才是能使收益率最高(或者说最大化收益的方法呢),考虑下面的一些现实情况
所以从上面的问题出发,首先要通过试验得到一些结论:最好的定投周期、最好的定投金额
# 开始测试最好的周期(拿2019年数据测试)
def test1():
res=[]
T=[2,7,14,21]
for i in T:
a,b=invest1(data,'2019-01-05','2020-01-05',500,i)
res.append(b/a)
print(f"周期为{T}的收益率分别为:",res)
test1()
貌似两周一次定投是可以使收益率最大化的选择
# 再来试试最好的定投金额
def test2():
res=[]
money=[300,500,700,1000]
for i in money:
a,b=invest1(data,'2019-01-03','2020-01-03',i,14)
res.append(b/a)
print(f"定投金额为{money}的收益率分别为:",res)
test2()
定投金额貌似对基金的收益率影响微乎其微
现在,有了上面的两个结论,我们知道设置为两周一次定投获益最大,而且定投金额影响不大,只是700元稍稍高一点点点(多个点,表示影响真的不大)
那再来试着想想策略:
然后去知网等网站查了相关的文献,得到了一些有启发的信息。
比如卖出金额函数模型:
这部分相关的论文文献资料有很多,看了之后会很有启发的。
好,回到我们的制定策略上来。通过上面的分析还有看了这些文章的结论,都反映一个问题,跌的时候买入,设置止损,并且定投金额要随时变化
但是我们怎么做到底部买入并且还能控制定投金额变化呢,这就需要我们的定投金额与我们的收益率之间存在某种函数关系:
定投金额=固定金额∗(1+α收益率)定投金额=固定金额*(1+\alpha收益率)定投金额=固定金额∗(1+α收益率)
对于这个公式,我们收益时就可以减少买入,也就相当于限制了收益率;而亏损时会追加买入,符合底部买入的思想,现在就是找找最合适的α\alphaα是多少了
#我们制定的定投策略
def invest2(data,start,end,aip,T,alpha):
startday=datetime.strptime(start,'%Y-%m-%d').date()
endday=datetime.strptime(end,'%Y-%m-%d').date()
curr=startday
total_aip=0 #总的定投金额
total_profit=0 #总利润
total_count=0 #总的基金数
final_price=0 #最后的基金价格
while curr<endday:
while str(curr) not in data['日期'].values:
curr+=timedelta(days=1)
if curr in data['日期'].values:
break
last=float(data[data['日期']==str(curr)]['收盘价'].values[0])
count=aip/float(data[data['日期']==str(curr)]['收盘价'].values[0])
total_count+=count
total_aip+=aip
total_profit=last*total_count-total_aip
total_rate=total_profit/total_aip
#print(f"时间:{curr},拥有的基金总数:{total_count}")
curr+=timedelta(days=T)
aip=aip*(1-total_rate*alpha)
return total_aip,total_profit
# 固定金额设为700(定投金额随获益率变化),每周定投一次
total_aip21,total_profit21=invest2(data,'2018-01-02','2019-01-02',700,7,0.1)
print(f"2018年每周定投金额变动方案的总投资为:{total_aip21},总利润为:{total_profit21}")
profit_rate21=total_profit21/total_aip21
print(f"2018年每周定投金额变动方案的收益率为:{profit_rate21*100}%")
当我们满怀期待想看收益的时候,现实泼了一盆凉水,纳尼?2018-2019基金定投收益率是负的,一直亏???
我冷静了一下,又回去看了一下之前可视化的图(2002-2019历年利润变化的图),发现2018年收益率就是负的。现在就有两种选择:
第一,2018买入一直放到2020,看看结果如何。
第二,直接放弃2018买入(或者2018年部分时间买入),然后等2019年再买
同样的,试试这两种策略的结果
# 2018买入一直放到2020
total_aip,total_profit=invest2(data,'2018-01-02','2020-01-02',700,7,1)
print(f"2018年到2020每周定投金额变动方案的总投资为:{total_aip},总利润为:{total_profit}")
profit_rate=total_profit/total_aip
print(f"2018年到2020每周定投金额变动方案的收益率为:{profit_rate*100}%")
# 改变一下alpha看还能不能优化
def test3():
alpha=[0.1,0.2,0.4,0.6,0.8,0.9,1]
for i in alpha:
total_aip,total_profit=invest2(data,'2018-01-02','2020-01-02',700,7,i)
profit_rate=total_profit/total_aip
print(f"alpha为{i}时,2018年到2020每周定投金额变动方案的收益率为:{profit_rate*100}%")
test3()
最好的alpha好像是1,说明见好就收(赚了钱就跑)还是有一定道理的
# 再来试试2018部分时间买入,2019全年定投的结果
def test4():
total_aip1,total_profit1=invest2(data,'2018-02-02','2018-04-02',700,7,1)
profit_rate1=total_profit1/total_aip1
total_aip2,total_profit2=invest2(data,'2019-01-02','2020-01-02',700,7,1)
profit_rate2=total_profit2/total_aip2
profit_rate=(profit_rate1+profit_rate2)/2
print(f"alpha为1时,2018年部分时间定投2019到2020每周定投金额变动方案的收益率为:{profit_rate*100}%")
test4()
def test5():
total_aip,total_profit=invest2(data,'2019-01-02','2020-01-02',700,7,1)
profit_rate=total_profit/total_aip
print(f"alpha为{1}时,2019年到2020每周定投金额变动方案的收益率为:{profit_rate*100}%")
test5()