blog icon indicating copy to clipboard operation
blog copied to clipboard

开源基金回测网站:让数据告诉你定投财富密码

Open SunshowerC opened this issue 4 years ago • 8 comments

技术不只是用于工作,也用于生活。
------- 沃兹基 · 梭德

前言

去年,我开始了基金定投理财。

没错,就我这兜里的几个铜崩也敢叫嚣着也"搏一搏,单车变摩托"了。

结果今年年初疫情来袭,全球股市大跌,恐慌中我疯狂低位抛售美基,裤兜里本来就不多的铜崩就更孤影形单了。

又过了几个月……

卧槽!美国这疫情爆发力他娘的美股这都能涨回来?这不科学!

那些个日子,我都这种心情:

后来仔细想想,投资肯定有涨有跌跌跌跌跌跌跌,这都是浮亏,只要我不撒手,我就永远不亏,最重要的还是理性,有自己的投资决策树,不为外物所动。

大涨行情的我:好的,我懂了,要理性。
大跌行情的我:你懂个屁!!

说起来容易,做起来难,毕竟投资交易都是反人性的。坚持自己的投资策略谈何容易。然而,投资理财不就是一堆数字游戏,低买高卖嘛。

恰好,作为一只程序员,对数据从来不陌生

那么整一个基金回测网站,模拟下投资策略收益应该不难吧?

要是不小心发现了”财富密码“,不用多久,我就会财富指数增长、一夜暴富、完成一个小目标、迎娶白富美、走上人生巅峰,想想还有点小激动。

技术方案

那么,要开发一个基金回测网站,需要几步呢?

  1. 技术选型
  2. 获取数据源
  3. 代码开发
  4. 部署上线

技术选型

要搞网站,还要很多数据图表,因为经常用支付宝投资基金,那就直接用蚂蚁家的东西 antd + g2 数据可视化 ,搞定啦!

数据源

这是难住大家的一道坎。一般大家会想到以下几个方案:

  1. 开源的 API ?这些数据源 API 基本都是收费的,偶尔有免费的也是限时限量,不给力。
  2. 爬基金网站的数据?这倒是个办法,但你得有个服务器实时去爬数据,又得写个爬虫,指不定还要和反爬虫策略斗智斗勇,太麻烦了。

那我的方法是啥呢?白嫖

偶然发现某基金网站用的是 jsonp 来处理跨域问题,用了 js script + cache 来存储大量的基金历史数据,而且有意无意地没有限制 referrer。于是就轻松解决了数据源的问题啦(需要注意的是,网站不能用 https 哦,不然数据请求就会被同源策略block 掉)。

白嫖大发,真香~

代码开发

业务代码的核心是记录每天的基金、资产快照,包括但不限于:基金净值,相对涨幅,基金资产,可用资金,仓位,收益率等等信息。

然后前端图表库 G2,将时间区间内的所有数据渲染出来,就可以啦。

部署上线

数据全白嫖,我们这就是一个静态前端网站。那就好办了,都不用 服务器,直接上 GitHub Pages。

再增加一些细节,

我们的基金定投回测网站就完成啦,此处为访问地址[目前仅支持 PC 端访问]

这里是github 开源仓库地址


使用指南与叨叨念

最近基金投资的话题越来越多,尤其是基金定投,也发现突然多出很多想要割韭菜的营销号,分辨能力差点的很容易被带到坑里去,我想说:

别弄那么多花里胡哨的了,想要知道定投靠不靠谱?能不能赚钱?有多少收益率?空口物品,直接模拟一下历史数据的定投策略,回测一下不就可以了么?

招商中证白酒定投三年收益

上面是模拟 招商中证白酒分级指数基金 定投三年的收益情况,投了多久,赚了多少,最亏的时候回撤了多少,收益率多少,一目了然。

有人质疑你,就直接把数据砸对方脸上。

PS: 提前说明下可能有异议的地方

  1. 收益率算法参考了支付宝基金和天天基金网的定投计算器,数据误差范围内基本一致。
  2. 下文的收益率都是泛指累计收益率,不是内部收益率,没有考虑资金的时间占用成本。 3. 过往收益率不等于未来收益率,过往可知,未来叵测,仅供参考。 4. 所举基金例子不作为投资建议。投资需谨慎。

虚假的基金定投?

近一年老听说人推荐理财,尤其是推荐定投指数基金。什么股神巴菲特强力推荐,微笑定投,轻轻松松年化收益率 15%,吹的花里胡哨的。

但是大部分人也就说说定投的原理,很少有人能实实在在提供数据来证明,定投指数基金到底能给你提供多少收益。

那么作为一个程序员,和数据打交道比较多,所以习惯用数据说话,于是写了个程序来模拟历史时间的定投收益率到底能达到多少?

首先,定投的基本操作是:

  1. 耐心,定投时间够长

  2. 笑脸指数曲线

所以,我们选择过去 3 年作为历史测试数据,过去三年刚好通过了一个小熊市和小牛市,符合微笑特征,时间也够长。

真实的基金定投收益

我们打开过去 3 年【2017/01/29 ~ 2020/01/29】的指数基金排行榜。

第一名,招商中证白酒指数分级[161725],过去三年累计收益率高达 135%,够牛逼吧,这指数基金。

那么我们回到过去,对这个基金定投 3 年看看效果:

【2017/01/29 ~ 2020/01/29】定投招商中证白酒

定投3年累计收益率 44.19%,折算年化收益率是 12.97%

看起来是挺不错接近 15% 了是吧,但是要知道这是指数基金收益排行第一名,定投都达不到 15%。

那么我们再看看很多人推荐的宽基指数,如 上证50,沪深300 之类的。

通过排行榜,宽基指数表现最好的是 易方达上证 50指数[110003],定投结果:

哦豁,平均年化收益率 8%,别说 15%,10% 都不到哦。

那是不是这说明定投宽基指数的收益率还不如 P2P 呢?

并非如此。假如累计定投指数基金 10w 和投资 P2P 累计 10w,最后收益虽然都一样是 1w,但两者的资金占用时间成本是不一样的。P2P 是 10w 被占用了一年,定投是有 1w 被占用 1 年,有 1w 被占用 11 个月,......,上个月才定投的 1w 才被占用了 1 个月。收益差不多定投基金是明显优于 P2P 的。

定投收益高的基金特征

那么,是不是定投就没有能达到 15% 收益率的呢?

也不能这么说,这次,我们打开下定投排行榜。 选择第一名,银河创新成长混合[519674]

【2017/01/29 ~ 2020/01/29】定投 银河创新成长混合

很牛逼,定投年化收益率高达 24%。

高是高了,但是通过基金曲线发现没,这个基金是在 一年前表现平平无奇,在最近一年才一飞冲天。

也就是说,这个基金是在不被看好的时候,开始定投,在低价位积攒了很多筹码,然后在最近一年厚积薄发,才有了如此之高的定投收益率。

这毫无疑问存在一个悖论。

如果我有这个实力,有这个眼光,能看到目前低估值将来牛逼的基金,那完全没必要定投,直接择时分批建仓就行。

定投指数基金,本身就是对市场缺乏深刻的理解,只能通过佛系定投来分摊风险,要让人判断一只基金的未来趋势,就太强人所难了。

换句话说,就 银河创新成长混合 3 年前的平平无奇的业绩,你敢坚持定投3年不放手?

结论: 那些吹嘘定投指数基金就能轻轻松松年化收益率 15% 的人,纯属吹牛逼,不是蠢就是坏。定投指数基金,甚至年化收益率上 10% 都不容易。

重新认识基金理财

那么是不是说定投就是错的呢?

并非如此,上面只是说明定投没有你想象中那么美好而已。

该定投还是得定投的。

定投的根本原因是,咱目前没那么多小钱钱,只好每个月拿工资的一部分来投资。

要是咱有好几百万要投基金,那还定投个啥,逢低买入,逐渐建仓就好了。

基金理财的灵魂拷问

那么定投也要有定投的学问,不能瞎几把定投,每个人其实开始准备定投时,都会有一大堆疑问 :

  1. 每月定投还是每周定投? 2. 每次定投多少?拿工资的多少定投? 3. 定投多久? 4. 定投什么基金? 5. 要不要止盈?什么时候止盈? 6. 要不要手动补仓?什么时候补仓? 7. 预计收益率能有多少?

上面的这些问题,开始我也没有一个明确答案

所以我写了一个 网页程序 来分析,不同策略下的定投,对最终收益率的影响。

定投策略

首先是基本操作,选基金,和选定投时间:

  • 基金名称/编号
  • 时间范围

然后,制定定投策略选项:

  • 初始本金: 开始有多少流动资金
  • 月工资: 每个月增量的流动资金*
  • 初始持有基金:是否已经有持有一定的基金了(有的人是先建仓,再定投的)
  • 每次定投的金额
  • 定投周期:每月几号,或者每周周几

定投策略选择项

通过这些参数,我们就能得到区间时间内基金定投的各种曲线了:

止盈策略

会买的是徒弟,会卖的才是师傅。

很多人基金定投最大的一个问题是:什么时候止盈?止盈多少?

很多大佬也给出成熟的意见了,

  • 持有收益达到百分之多少就止盈,
  • 上证指数到达多少点就止盈
  • 持仓达到多少层就止盈

都挺有道理的,问题是哪个策略最优呢?

咱可以将这些策略参数化,选择不同的止盈策略,不同策略下的收益:

止盈策略

补仓策略

除了单调地定投之外,想要提高收益率,那么就应该逢低买入,按需补仓。

问题是什么时候补仓?大跌补仓?低估值补仓?这里简单地列出了 macd 位置补仓策略,其他的策略我还没写,懒。有人看再说吧。

策略比较

综合止盈和补仓策略,很多人总结出来了 macd 金叉死叉交易法,网格交易法等等之类的投资策略,但是很少能准确说出收益数据比正常定投高多少了的。

所以我也实现了多个策略的收益数据比较功能

能比较什么东西呢?不同策略下的不同基金投资效果曲线比较图。

能看哪些数据曲线呢?目前暂定有以下这些数据可选:

基金策略比较选项

通过对比定投策略,大家很快地就能得出这种投资策略的盈亏,仓位,收益率等数据曲线图。从而找到更合适自己的投资策略了。

举个栗子,定投招商中证白酒3年,止盈和不止盈的差别是什么?请看数据:

累计收益率 = 总收益/总投入(止盈VS不止盈)

明显看出,止盈策略比不止盈高 3.4%

不高嘛,是不是觉得止盈和不止盈没啥区别?

错!

我们再看看定投期间的仓位比较:

持有仓位 = 在投基金资产/当前总资产

大概 止盈策略比不止盈仓位低 15%,投资要控制仓位这是基本投资素养,仓位太高一波动你就心态崩。

累计盈亏

仓位高是不是不好呢?也不是,看个人可承受风险能力。累计收益率虽然止盈比不止盈高,但是实际上的 累计收益是”不止盈策略“高出一筹的

这是因为高仓位,高风险高收益,近三年整体白酒都是在涨的。要是换一个整体下行的基金,那高仓位收益就崩咯。有兴趣的可以自行在网站上测下相关基金,这里就不再赘述了。


以上投资策略的模拟,来自于我个人依靠兴趣写的网页:http://sunshowerc.github.io/fund/,仅支持 PC 端,没兼容移动端访问,懒。

后面可能会更新更全的止盈策略和补仓策略

github 开源地址: https://github.com/SunshowerC/fund-strategy

佛系求 star

.

.

  • "慢着,你给我站住!"

  • "财富密码呢?标题说的财富密码呢?把财富密码交出来!"

  • "哦?那个啊,想要依靠理财发家致富?小富可以,暴富?不存在的。
    资本的原始积累晓得吧?本金太少,收益率再高也没用,还是老老实实回去搬砖吧!"

image

SunshowerC avatar May 13 '20 17:05 SunshowerC

点赞

qiutu270 avatar Jun 09 '20 03:06 qiutu270

点赞

chiyanking avatar Aug 27 '20 01:08 chiyanking

参考指数1.000001的MACD绿柱接近 4% 临界位置,或者且参考指数1.000001的MACD红柱接近 35% 临界位置,MACD红柱接近 35%,这个百分比怎么算的?请指教!

yishionq avatar Dec 07 '20 01:12 yishionq

参考指数1.000001的MACD绿柱接近 4% 临界位置,或者且参考指数1.000001的MACD红柱接近 35% 临界位置,MACD红柱接近 35%,这个百分比怎么算的?请指教!

@yishionq 这个红柱 35% 是指 红柱经过一段峰值后,下调突破 35% 的位置。 假如,T0 时间点 macd 值【红柱】是 0,一般认为是金叉点,较大概率开启一波上涨趋势。 T5 macd 到达了峰值 200, T8 macd 下调到了 红柱峰值的 80%,即 160 。 T15 macd 下调到了 0,这是死叉,一般认为较大概率开启一波下跌趋势。 T30 macd 继续下调到了 -100,绿柱峰值

但一般情况下,T5~T30 时间内都是下跌的,所以正确的操作应该是在 红柱峰值卖出止盈,但由于我们没有办法判断当前点是否是峰值,所以只能通过判断从峰值回撤了多少,就执行止盈。

SunshowerC avatar Dec 07 '20 03:12 SunshowerC

看你在写fund-premium-compare,能够留个联系方式,研究学习一下,或者邮箱

yishionq avatar Dec 11 '20 06:12 yishionq

感谢作者!!!

zhushenje avatar Feb 26 '21 00:02 zhushenje

看你在写fund-premium-compare,能够留个联系方式,研究学习一下,或者邮箱

同求

zhushenje avatar Feb 26 '21 00:02 zhushenje

可以留个联系方式交流下吗

SmallPiedPiper avatar Mar 17 '21 07:03 SmallPiedPiper