tl;dr:眼下极有多是本年度第二个最佳定投区间html
个人签名是:前端
会点前端的后端开发,恰恰对区块链最感兴趣。python
虽然上一份从事区块链相关的工做无疾而终,但我还一直在关注区块链行业的发展。git
区块链行业的龙头老大是非比特币莫属。除了技术之外,估计你们更关心的是它的价格。 恰巧最近读了九神《屯比特币》的系列文章,其中的一篇寻找合适的够买时机分享了关于定投择时的策略,核心观点是:github
那么,具体在什么区间内购买比特币最划算呢?同时知足两个条件:编程
比特币价格低于200日定投平均成本,意味着在这个时候买币,能够跑赢定投的人。 比特币价格低于指数增加模型的估值,意味着在这个时候,币价被低估了。后端
我读下来以为遗憾的地方在于,这篇文章是成文于2018-10-07,转眼一年过去了,而因为文中的相关图表是图片,没有持续更新,那么眼下这个时间点时否知足九神提出的两个条件呢?浏览器
正好我缺一个机会践习python的数据分析,因而,就开始边搜边学边试的摸索之路。app
第一步,天然是要获取数据。先是搜索了一番没找到合适的地方直接下载,只能转换思路去爬取。目标有两个,要么是交易所;要么是行情类网站。echarts
我选择了非小号这个平台,由于有历史数据页面。
经过浏览器的开发工具,很容易就能够经过get请求得到数据并解析。由于代码过于简单就不贴出来,有兴趣的朋友,能够点击btc_price_analyzer查看。
第二步,是计量200日的定投平均成本(即几何平均数)及价格比例,这正是pandas所擅长的。但当时的我彻底没有经验,磕磕绊绊才写出了下面的代码。
def close_ratio(close, base):
return close * 1.0 / base
ma_list = [100, 200] //不知道为何九神选择了200日均线,这里我把100日均线也打出来作对比。
for ma in ma_list:
ma_str = str(ma)
price_data['GMA_' + ma_str] = price_data['closeprice'].rolling(
window=ma, min_periods=1).apply(gmean, raw=True)
for ma in ma_list:
ma_str = str(ma)
price_data["GMA_Ratio_" + ma_str] = price_data.apply(
lambda x: close_ratio(x['closeprice'], x['GMA_' + ma_str]), axis=1)
复制代码
惟一值得说明的是,pandas的rolling函数只有mean方法,而没有gmean的。我是引用了scipy包实现的。
from scipy.stats.mstats import gmean
复制代码
第三步,利用指数增加模型实现价格预测。我不肯定九神使用的指数模型具体是什么参数,我搜索到文章主要来自于如下两篇文章:
我最后是选择了第一篇文章的方法,缘由是文章写的更严谨一些。计算公式以下:
价格=10^(a + blog10(d))
其中a = -17.01593313,斜率 b = 5.84509376 ,d为2009年以来的天数。
第四步,画图。虽然有传统的Matplotlib,但这里我选择了用pyecharts。
无它,一是pyecharts更好看一些(外貌协会,嘻嘻~~),二是能够生成html,方便移植。
若是对echarts不熟悉,那刚用pyecharts时,被各类配置项搞的晕头转向。
个人建议是对照着看echarts和pyecharts的文档,但更多的时候,你们急于看到效果,面向搜索编程,哪有时间细读,不如直接找pyecharts在github中的例子边改边试。
等本身踩过一遍坑,画出了本身想画的图,再回过头看文档,真是有恍然大悟的感受。
扯点题外话,人生好像也是如此,磕磕绊绊走过,再回过神来想,不少道理其实很早就知道,非得要经历过才能领悟。
这部分代码当时写的很辛苦,写文章时再看,好像也没什么好贴出来的。-_-!!!
思来想去也就是画多Y轴图时,必定要先extend_axis后再overlap。
line1.extend_axis(yaxis=opts.AxisOpts())
line1.overlap(line2)
复制代码
最后的成果以下:
想体验动图吗?请戳这里
经过观察能够看到,眼下这个时间点正好符合九神的两个条件。
虽然相比于年初的时候要差一点,但这极有多是本年度第二个最佳定投区间。
心心念念想学python数据分析很久了,一直没有动力。
此次终于找到了一个有意思的问题,趋动着我在十一假期生生迈出第一步。
下一步,一方面想把代码移植到jupyter;另外一面,会对九神的策略作一回测分析。
好比说,100日的均线和200日均线,到底哪一个更有指导价值;等额定投和加权定投,到底哪一个收益更大?
目前,我只完成了价格比率的分布图。
更多的分析,计划在后续的文章再写。
注1:本文只是为了实践数据分析,不构成任何投资建议。
注2: 本文涉及的全部代码可在btc_price_analyzer查看。
注3: 动图体验网址是ksloveyuan.github.io/page/btc_pr…