tl;dr:眼下極有可能是本年度第二個最佳定投區間
我的簽名是:
會點前端的後端開發,偏偏對區塊鏈最感興趣。
雖然上一份從事區塊鏈相關的工作無疾而終,但我還一直在關注區塊鏈行業的發展。
區塊鏈行業的龍頭老大是非比特幣莫屬。除了技術以外,估計大家更關心的是它的價格。
恰巧最近讀了九神《屯比特幣》的系列文章,其中的一篇尋找合適的夠買時機分享了關於定投擇時的策略,核心觀點是:
那麼,具體在什麼區間內購買比特幣最划算呢?同時滿足兩個條件:
比特幣價格低於200日定投平均成本,意味著在這個時候買幣,可以跑贏定投的人。
比特幣價格低於指數增長模型的估值,意味著在這個時候,幣價被低估了。
我讀下來覺得遺憾的地方在於,這篇文章是成文於2018-10-07,轉眼一年過去了,而由於文中的相關圖表是圖片,沒有持續更新,那麼眼下這個時間點時否滿足九神提出的兩個條件呢?
正好我缺一個機會踐習python的資料分析,於是,就開始邊搜邊學邊試的摸索之路。
第一步,自然是要獲取資料。先是搜尋了一番沒找到合適的地方直接下載,只能轉換思路去爬取。目標有兩個,要麼是交易所;要麼是行情類網站。
我選擇了非小號這個平臺,因為有歷史資料頁面。
透過瀏覽器的開發工具,很容易就可以透過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: 動圖體驗網址是https://ksloveyuan.github.io/page/btc_pric...
本作品採用《CC 協議》,轉載必須註明作者和本文連結