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…

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息