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…