揭秘”智能定投“

 

数量技术宅团队在CSDN学院推出了量化投资系列课程

欢迎有兴趣系统学习量化投资的同学,点击下方链接报名:

量化投资速成营(入门课程)

Python股票量化投资

Python期货量化投资

Python数字货币量化投资

C++语言CTP期货交易系统开发

数字货币JavaScript语言量化交易系统开发


什么是智能定投

大家如果打开某某宝的基金理财界面,选择某一个基金标的的定投,往往会在选择定投方式时出现两个选项,一是普通定投、二是智能定投。而且往往智能定投的收益率会高于普通定投,那么,究竟什么是智能定投,它是怎么个智能法,使得收益率高于普通定投?我们将通过这篇文章来揭开智能定投的面纱。

揭秘”智能定投“_第1张图片

在介绍智能定投前,我们先简要回顾普通定投,普通定投,用一句话解释,即以固定金额、固定间隔时间,定期、定额投资于基金或其他想要投资标的。普通定投有如下几个优点:一是定期投资,积少成多,二是不需要进行择时,避免了低买高卖,三是平均投资,分散风险,四是复利效果,长期可观。

而智能定投,其实是普通定投的一种改进方式,其核心逻辑是在定投标的的价格低位、价值低估区域尽可能多投资,而在定投标的价格高位、价值高估区域少投资或不投资,从而使得其平均成本低于普通定投、收益率高于普通定投。

于是,智能定投的关键点聚焦在了如何判断价格的高低位,对于这个问题,某宝也给出了它自己的判断方式,其设置了一个参考指数的多日均线,当价格低于均线,且距离位置越远,定投金额越大,即低位多买。

揭秘”智能定投“_第2张图片

反过来,当价格高于均线,且距离位置越远,定投金额越小,即高位少买。这样的低位多买、高位少买逻辑,使得智能定投的收益率,比普通定投高了约3%以上的年化收益率。

揭秘”智能定投“_第3张图片 

Python实现智能定投策略

我们参考某宝的智能定投逻辑,并加以改进,同样实现的是低位多买、高位少买的大逻辑。并根据投资标的的历史波动,将标的划分为4个区域,分别是:价格低位区域、价格中等偏低区域、价格中等偏高区域、价格高位区域,并依次减小这4个区域的定投金额,即价格低位区域定投金额最大,价格高位区域定投金额最小。

数据准备

为实现这样的定投策略,我们首先需要准备好定投标的的历史数据,以BTC为例,我们准备好了BTC从2017年到最新的日K数据。

揭秘”智能定投“_第4张图片 

这里需要说明的是,我们的定投程序支持所有金融标的的历史回溯测试,只需要将数据格式准备的与上述BTC数据样例的字段一样,即可运行程序得到相应的测试结果。

逻辑实现

读入数据后,我们逐日依次判断,当前日期的最新价格,位于价格低位区域、价格中等偏低区域、价格中等偏高区域、价格高位区域的哪个位置,并且根据价格所在的区域位置,设定投资金额的大小。

首先通过两个参数adj_1、adj_2,调整定投金额的比例,参数可以按需修改。

adj_1 = 0.4
adj_2 = 0.8

 然后,通过确定价格定投区域的哪个位置,确定定投金额的大小。如果价格位于价格低位区域,则定投金额为正常金额的(1+adj_2)倍,如果价格位于价格中等偏低区域,则定投金额为正常金额的(1+adj_1)倍,其他依次类推。

condition1 = XXX
df.loc[condition1, 'invest_val'] = base_invest_fun * (1 - adj_1)

condition2 = XXX
df.loc[condition2, 'invest_val'] = base_invest_fun * (1 - adj_2)

condition3 = XXX
df.loc[condition3, 'invest_val'] = base_invest_fun * (1 + adj_1)

condition4 = XXX
df.loc[condition4, 'invest_val'] = base_invest_fun * (1 + adj_2)

结果可视化

通过每期定投金额,我们可以计算出总投资金额、以及总投资市值、盈利情况、盈利比例等结果,并将其中关键的结果,采用可视化的形式呈现出来,回测结果呈现于下一小节。

fig, ax1 = plt.subplots()
ax1.plot(df['date'], df['net_value'], 'r-', label='Market Value')
ax1.plot(df['date'], df['total_invest_val'], 'y-', label='My Total Cost')
ax1.set_xlabel("year")
ax1.set_title("BTC 定投")
plt.legend(loc='best')
plt.show()

完整代码

整个智能定投Python实现的完整代码,包括文章中用到的配套历史数据,我们将独家发布在知识星球。

典型标的智能定投效果

在完成了智能定投的逻辑构建,以及相应Python代码的实现后,我们挑选了一些典型标的,包括BTC、沪深300指数、标准普尔500指数、黄金,来进行测试。

这些标的可以说是典型的定投代表,因为很多投资者会选择上述4个标的的其中之一,进行某个市场的定投。一起来看这些标的的测试结果。

BTC

揭秘”智能定投“_第5张图片

沪深300指数

揭秘”智能定投“_第6张图片 

标准普尔500指数

揭秘”智能定投“_第7张图片 

黄金

揭秘”智能定投“_第8张图片 

上述结果My Total Cost标签表示定投成本,Market Value标签表示最新持有的市场价值,两条线的差值就是盈利部分。从定投结果的稳定性来看,标准普尔500指数无疑是最好的,说明智能定投策略最适合长期温和上涨、偶尔暴跌的标的。

但是不论是BTC、股票指数还是黄金,只要该标的是长期上涨的,定投足够长的时间,都能产生不错的盈利。而智能定投因其低位多买、高位少买的逻辑,使得其相比较普通定投,能够产生更多的盈利。

     往期干货分享推荐阅读

数字货币中短线策略(数据+回测+实盘)

你可能感兴趣的