pandas+pyecharts实践笔记:比特币价格分析

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…

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息