Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
SunshowerC opened this issue May 13, 2020 · 8 comments
Open

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

SunshowerC opened this issue May 13, 2020 · 8 comments

Comments

@SunshowerC
Copy link
Owner

SunshowerC commented May 13, 2020

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

前言

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

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

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

又过了几个月……

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

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

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

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

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

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

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

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

技术方案

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

  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

@qiutu270
Copy link

qiutu270 commented Jun 9, 2020

点赞

1 similar comment
@chiyanking
Copy link

点赞

@yishionq
Copy link

yishionq commented Dec 7, 2020

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

@SunshowerC
Copy link
Owner Author

SunshowerC commented Dec 7, 2020

参考指数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 时间内都是下跌的,所以正确的操作应该是在 红柱峰值卖出止盈,但由于我们没有办法判断当前点是否是峰值,所以只能通过判断从峰值回撤了多少,就执行止盈。

@yishionq
Copy link

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

@zhushenje
Copy link

感谢作者!!!

@zhushenje
Copy link

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

同求

@SmallPiedPiper
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants