tl;dr:眼下極有可能是本年度第二個最佳定投區(qū)間
引言
我的簽名是:
會點前端的后端開發(fā)锋恬,偏偏對區(qū)塊鏈最感興趣辰晕。
雖然上一份從事區(qū)塊鏈相關的工作無疾而終狸捅,但我還一直在關注區(qū)塊鏈行業(yè)的發(fā)展壮不。
區(qū)塊鏈行業(yè)的龍頭老大是非比特幣莫屬血淌。除了技術以外顽馋,估計大家更關心的是它的價格谓厘。
恰巧最近讀了九神《屯比特幣》的系列文章,其中的一篇尋找合適的夠買時機分享了關于定投擇時的策略寸谜,核心觀點是:
那么竟稳,具體在什么區(qū)間內(nèi)購買比特幣最劃算呢?同時滿足兩個條件:
比特幣價格低于200日定投平均成本熊痴,意味著在這個時候買幣他爸,可以跑贏定投的人。
比特幣價格低于指數(shù)增長模型的估值果善,意味著在這個時候诊笤,幣價被低估了。
我讀下來覺得遺憾的地方在于岭埠,這篇文章是成文于2018-10-07盏混,轉眼一年過去了蔚鸥,而由于文中的相關圖表是圖片,沒有持續(xù)更新许赃,那么眼下這個時間點時否滿足九神提出的兩個條件呢止喷?
正好我缺一個機會踐習python的數(shù)據(jù)分析,于是混聊,就開始邊搜邊學邊試的摸索之路弹谁。
實現(xiàn)步驟
第一步,自然是要獲取數(shù)據(jù)句喜。先是搜索了一番沒找到合適的地方直接下載预愤,只能轉換思路去爬取。目標有兩個咳胃,要么是交易所;要么是行情類網(wǎng)站植康。
我選擇了非小號這個平臺,因為有歷史數(shù)據(jù)頁面展懈。
通過瀏覽器的開發(fā)工具销睁,很容易就可以通過get請求獲得數(shù)據(jù)并解析。因為代碼過于簡單就不貼出來存崖,有興趣的朋友冻记,可以點擊btc_price_analyzer查看。
第二步来惧,是計量200日的定投平均成本(即幾何平均數(shù))及價格比例冗栗,這正是pandas所擅長的。但當時的我完全沒有經(jīng)驗供搀,磕磕絆絆才寫出了下面的代碼隅居。
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函數(shù)只有mean方法,而沒有gmean的挡闰。我是引用了scipy包實現(xiàn)的乒融。
from scipy.stats.mstats import gmean
第三步,利用指數(shù)增長模型實現(xiàn)價格預測摄悯。我不確定九神使用的指數(shù)模型具體是什么參數(shù)赞季,我搜索到文章主要來自于以下兩篇文章:
我最后是選擇了第一篇文章的方法奢驯,原因是文章寫的更嚴謹一些申钩。計算公式如下:
價格=10^(a + blog10(d))
其中a = -17.01593313,斜率 b = 5.84509376 瘪阁,d為2009年以來的天數(shù)撒遣。
第四步邮偎,畫圖。雖然有傳統(tǒng)的Matplotlib义黎,但這里我選擇了用pyecharts禾进。
無它,一是pyecharts更好看一些(外貌協(xié)會廉涕,嘻嘻~~)泻云,二是可以生成html,方便移植狐蜕。
如果對echarts不熟悉宠纯,那剛用pyecharts時,被各種配置項搞的暈頭轉向层释。
我的建議是對照著看echarts和pyecharts的文檔婆瓜,但更多的時候,大家急于看到效果湃累,面向搜索編程勃救,哪有時間細讀,不如直接找pyecharts在github中的例子邊改邊試治力。
等自己踩過一遍坑,畫出了自己想畫的圖勃黍,再回過頭看文檔宵统,真是有恍然大悟的感覺。
扯點題外話覆获,人生好像也是如此马澈,磕磕絆絆走過,再回過神來想弄息,很多道理其實很早就知道痊班,非得要經(jīng)歷過才能領悟。
這部分代碼當時寫的很辛苦摹量,寫文章時再看涤伐,好像也沒什么好貼出來的。-_-!!!
思來想去也就是畫多Y軸圖時缨称,一定要先extend_axis后再overlap凝果。
line1.extend_axis(yaxis=opts.AxisOpts())
line1.overlap(line2)
最后的成果如下:
想體驗動圖嗎?請戳這里
通過觀察可以看到睦尽,眼下這個時間點正好符合九神的兩個條件器净。
雖然相比于年初的時候要差一點,但這極有可能是本年度第二個最佳定投區(qū)間当凡。
寫在最后
心心念念想學python數(shù)據(jù)分析好久了山害,一直沒有動力纠俭。
這次終于找到了一個有意思的問題,趨動著我在十一假期生生邁出第一步浪慌。
下一步冤荆,一方面想把代碼移植到jupyter;另一面,會對九神的策略做一回測分析眷射。
比如說匙赞,100日的均線和200日均線,到底哪個更有指導價值;等額定投和加權定投妖碉,到底哪個收益更大?
目前涌庭,我只完成了價格比率的分布圖。
更多的分析欧宜,計劃在后續(xù)的文章再寫坐榆。
注1 :本文只是為了實踐數(shù)據(jù)分析,不構成任何投資建議冗茸。
注2: 本文涉及的所有代碼可在btc_price_analyzer查看席镀。
注3: 動圖體驗網(wǎng)址是https://ksloveyuan.github.io/page/btc_price_analyzer/