比特幣市場的行為如何?加密貨幣價值突然出現高峰和低谷的原因是什么?不同altcoins的市場是不可分割的或基本獨立的?我們如何預測接下來會發生什么?
有關加密貨幣的文章,比如比特幣和以太坊,近來充斥著猜測,有數百名自稱專家的人提倡他們期望出現的趨勢。許多這些分析所缺乏的是用于備份索賠的數據和統計數據的堅實基礎。
本文的目標是提供一個簡單介紹使用Python的加密貨幣分析。我們將通過一個簡單的Python腳本來檢索,分析和可視化不同加密貨幣上的數據。在這個過程中,我們將揭示這些波動的市場表現如何以及它們如何演變的有趣趨勢。
這不是一個解釋加密貨幣是什么的文章,也不是一個關于哪些特定貨幣會上漲,哪些會下跌的評論文章。相反,我們在本教程中關注的所有內容都是獲取原始數據并揭示隱藏在數字中的故事。
第1步-設置您的數據實驗室
本教程旨在為所有技能水平的愛好者,工程師和數據科學家提供便利。您將需要的唯一技能是對Python的基本了解以及足夠的命令行知識來設置項目。
具有所有結果的筆記本完整版本可在此處找到。
步驟1.1-安裝Anaconda
從頭開始安裝此項目的依賴關系的最簡單方法是使用Anaconda,一個預先打包的Python數據科學生態系統和依賴項管理器。
要設置Anaconda,我會建議遵循官方安裝說明-https://www.continuum.io/downloads。
如果您是高級用戶,并且您不想使用Anaconda,那完全沒問題。我假設你不需要幫助安裝所需的依賴關系。隨意跳到第2節。
步驟1.2-安裝Anaconda項目環境
一旦安裝了Anaconda,我們就需要創建一個新的環境來保持我們的依賴性。
運行
condacreate--namecryptocurrency-analysispython=3
為我們的項目創建一個新的Anaconda環境。
接下來,運行
sourceactivatecryptocurrency-analysis
或
activatecryptocurrency-analysis
來激活這個環境。
最后,運行
condainstallnumpypandasnb_condajupyterplotlyquandl
以在環境中安裝所需的依賴關系。這可能需要幾分鐘才能完成。
為什么使用環境?如果您計劃在您的計算機上開發多個Python項目,將相關性分開以避免沖突會很有幫助。Anaconda將為每個項目的依賴項創建一個特殊的環境目錄,以保持組織和分離的一切。
步驟1.3-啟動一個互動Jupyter筆記本
一旦環境和依賴關系完成設置,運行
jupyternotebook
以啟動iPython內核,并打開瀏覽器
http://localhost:8888/
。創建一個新的Python筆記本,確保使用
Python
內核。
步驟1.4-導入筆記本頂部的依賴項
一旦你打開了一個空白的Jupyter筆記本,我們要做的第一件事就是導入所需的依賴關系。
數據:7000枚ETH從未知錢包轉移到OKEx:金色財經報道,據Whale Alert數據,7000枚ETH從未知錢包轉移到OKEx。[2022/8/12 12:21:39]
importosimportnumpyasnpimportpandasaspdimportpickleimportquandlfromdatetimeimportdatetime
importplotly.offlineaspyimportplotly.graph_objsasgoimportplotly.figure_factoryasffpy.init_notebook_mode(connected=True)
第2步-檢索比特幣定價數據
現在一切都已經完成,我們已經準備好開始檢索數據進行分析。首先,我們需要使用Quandl的免費比特幣API獲取比特幣定價數據。
步驟2.1-定義Quandl輔助函數
為了協助這個數據檢索,我們將定義一個函數來從Quandl下載和緩存數據集。
defget_quandl_data(quandl_id):'''DownloadandcacheQuandldataseries'''cache_path='{}.pkl'.format(quandl_id).replace('/','-')try:f=open(cache_path,'rb')df=pickle.load(f)print('Loaded{}fromcache'.format(quandl_id))except(OSError,IOError)ase:print('Downloading{}fromQuandl'.format(quandl_id))df=quandl.get(quandl_id,returns="pandas")df.to_pickle(cache_path)print('Cached{}at{}'.format(quandl_id,cache_path))returndf
我們正在使用
pickle
序列化并將下載的數據保存為文件,這將阻止我們的腳本每次運行腳本時都重新下載相同的數據。該函數將以Pandas數據框的形式返回數據。如果您不熟悉數據框,則可以將它們視為超級供電的電子表格。
步驟2.2-拉Kraken交易所定價數據
首先我們來拉動Kraken比特幣交易所的歷史比特幣匯率。
Billions項目組CharttheBTCpricingdatabtc_trace=go.Scatter(x=btc_usd_price_kraken.index,y=btc_usd_price_kraken)py.iplot()
在這里,我們使用Plotly來生成我們的可視化。這比一些比較成熟的Python數據可視化庫更傳統,但我認為Plotly是一個不錯的選擇,因為它使用D3.js生成完全交互的圖表。這些圖表具有吸引人的視覺默認值,易于探索,并且非常易于嵌入網頁。
作為快速的完整性檢查,您應該將生成的圖表與公開可用的比特幣價格圖表進行比較,以驗證下載的數據是否合法。
第2.3步-從更多BTC交易所獲取定價數據
您可能已經注意到此數據集中存在一些問題-特別是在2014年末和2016年初,有一些明顯的下降峰值。這些峰值特定于Kraken數據集,我們顯然不希望它們反映在我們的整體定價分析。
比特幣交易所的性質在于定價取決于供求關系,因此沒有單一交易所包含真正的比特幣“主價”。為了解決這個問題,以及可能由于技術中斷和數據集故障導致的下降峰值,我們將從另外三個主要比特幣交易所獲取數據,以計算總比特幣價格指數。
數據:最近30天BNBChain上共鑄造1141 萬枚NFT資產:3月9日消息,NFTScan數據顯示,最近30天,BNBChain上共鑄造了1141 萬枚NFT資產,平均每天新增38萬枚。截止到2022.03.09,BNB Chain累計鑄造了9817.5萬枚 NFT 資產,部署了22826張NFT資產合約。[2022/3/9 13:45:54]
首先,我們將從每個交易所下載數據到數據框字典中。
Billions項目組MergetheBTCpricedataseries'intoasingledataframebtc_usd_datasets=merge_dfs_on_column(list(exchange_data.values()),list(exchange_data.keys()),'WeightedPrice')
最后,我們可以使用該
tail()
方法預覽最后五行結果,以確保它看起來不錯。
btc_usd_datasets.tail()
BITSTAMP
COINBASE
ITBIT
日期
2017年8月14日
4210.1549434213.3321064207.3666964213.257519
2017年8月15日
4101.4471554131.6068974127.0368714149.146996
2017年8月16日
4193.4267134193.4695534190.1045204187.399662
2017年8月17日
4338.6946754334.1152104334.4494404346.508031
2017年8月18日
4182.1661744169.5559484175.4407684198.277722
價格看起來像預期的那樣:它們的范圍相似,但是根據每個個人比特幣交易所的供求情況而略有變化。
步驟2.5-可視化定價數據集
下一個合乎邏輯的步驟是可視化這些定價數據集的比較方式。為此,我們將定義一個輔助函數來提供單行命令以從數據框生成圖形。
defdf_scatter(df,title,seperate_y_axis=False,y_axis_label='',scale='linear',initial_hide=False):'''Generateascatterplotoftheentiredataframe'''label_arr=list(df)series_arr=list(map(lambdacol:df,label_arr))layout=go.Layout(title=title,legend=dict(orientation="h"),xaxis=dict(type='date'),yaxis=dict(title=y_axis_label,showticklabels=notseperate_y_axis,type=scale))y_axis_config=dict(overlaying='y',showticklabels=False,type=scale)visibility='visible'ifinitial_hide:visibility='legendonly'Billions項目組Addseperateaxisfortheseriesifseperate_y_axis:trace='y{}'.format(index+1)layout=y_axis_configtrace_arr.append(trace)fig=go.Figure(data=trace_arr,layout=layout)py.iplot(fig)
數據:BTC挖礦難度達到5個月高點:11月14日消息,據Glassnode數據顯示,BTC挖礦難度達到5個月高點。[2021/11/15 21:51:08]
為了簡潔起見,我不會過多介紹這種幫助功能的工作原理。如果您想了解更多信息,請查閱Pandas和Plotly的文檔。
現在我們可以輕松生成比特幣定價數據的圖表。
Billions項目組Remove"0"valuesbtc_usd_datasets.replace(0,np.nan,inplace=True)
當我們重新繪制數據框時,我們會看到一個更清晰的圖表,沒有降低峰值。
Billions項目組CalculatetheaverageBTCpriceasanewcolumnbtc_usd_datasets=btc_usd_datasets.mean(axis=1)
這個新的專欄是我們的比特幣定價指數!讓我們繪制該列以確保它看起來不錯。
Billions項目組getdatafromthestartof2015end_date=datetime.now()Billions項目組pulldailydata(86,400secondsperday)defget_crypto_data(poloniex_pair):'''Retrievecryptocurrencydatafrompoloniex'''json_url=base_polo_url.format(poloniex_pair,start_date.timestamp(),end_date.timestamp(),pediod)data_df=get_json_data(json_url,poloniex_pair)data_df=data_df.set_index('date')returndata_df
該函數將采用加密貨幣對字符串并返回包含兩種貨幣歷史匯率的數據幀。
步驟3.2-從Poloniex下載交易數據
大多數altcoins不能用USD直接購買;為了獲得這些硬幣,個人經常購買比特幣,然后在加密貨幣交易所交易比特幣用于替代幣。出于這個原因,我們會將每個硬幣的匯率下載到BTC,然后我們將使用我們現有的BTC定價數據將此值轉換為美元。
我們將下載9個頂級加密貨幣的交換數據-以太坊,萊特幣,Ripple,EthereumClassic,Stellar,Dash,Siacoin,Monero和NEM。
altcoins=altcoin_data={}foraltcoininaltcoins:coinpair='BTC_{}'.format(altcoin)crypto_price_df=get_crypto_data(coinpair)altcoin_data=crypto_price_df
現在我們有一個包含9個數據框的字典,每個字典都包含阿爾特幣和比特幣之間的歷史日均交易價格。
我們可以預覽以太坊價格表的最后幾行,以確保它看起來不錯。
altcoin_data.tail()
關
高
低
打開
quoteVolume
卷
加權平均
日期
2017-08-1812:00:00
0.0705100.0710000.0701700.07088717364.2715291224.7626840.070533
數據:BTC盈利UTXO數創歷史新高:10月18日消息,據Glassnode數據顯示,BTC盈利UTXO數創歷史新高,7天均值數額為122,415,147.298。據悉,BTC盈利UTXO數上一次創歷史新高為2021年4月17日,數額為122,411,816.690。[2021/10/18 20:37:02]
2017-08-1816:00:00
0.0715950.0720960.0700040.07051026644.0181231893.1361540.071053
2017-08-1820:00:00
0.0713210.0729060.0704820.07160039655.1278252841.5490650.071657
2017-08-1900:00:00
0.0714470.0718550.0708680.07132116116.9228691150.3614190.071376
2017-08-1904:00:00
0.0723230.0725500.0712920.07144714425.5718941039.5960300.072066
步驟3.3-將價格轉換為美元
現在我們可以將BTC-altcoin匯率數據與我們的比特幣定價指數結合起來,直接計算每種阿爾特幣的歷史美元價值。
Billions項目組MergeUSDpriceofeachaltcoinintosingledataframecombined_df=merge_dfs_on_column(list(altcoin_data.values()),list(altcoin_data.keys()),'price_usd')
簡單。現在讓我們將比特幣價格作為組合數據框的最后一列。
Billions項目組Chartallofthealtocoinpricesdf_scatter(combined_df,'CryptocurrencyPrices(USD)',seperate_y_axis=False,y_axis
太好了!該圖提供了關于過去幾年中每種貨幣的匯率如何變化的非常穩固的“全景圖”視圖。
請注意,我們使用對數y軸比例來比較同一圖表上的所有貨幣。歡迎您在此嘗試不同的參數值以獲得對數據的不同觀點。
步驟3.4-執行相關性分析
您可能會注意到,加密貨幣匯率,盡管它們的價值和波動性大不相同,但看起來略有相關性。特別是自2017年4月上漲以來,甚至許多較小的波動似乎在整個市場中同步發生。
直到我們有數據支持它,一個直觀的預感并不比猜測好得多。
我們可以使用Pandas
corr()
方法來測試我們的相關假設,該方法計算數據幀中每列與每個列的Pearson相關系數。
修訂注意事項8/22/2017-本部分已經過修訂,以便在計算相關系數時使用日收益率百分比而不是絕對價格值。
直接在非平穩時間序列上計算相關性可以給出有偏差的相關值。我們將通過首先應用該
pct_change()
方法來解決此問題,該方法會將數據框中的每個單元格從絕對價格值轉換為每日回報百分比。
首先,我們將計算2016年的相關性。
#Calculatethepearsoncorrelationcoefficientsforcryptocurrenciesin2016combined_df_2016=combined_dfcombined_df_2016.pct_change().corr(method='pearson')
獨家 | Bakkt期貨合約數據一覽:金色財經報道,Bakkt Volume Bot數據顯示,5月5日,Bakkt比特幣月度期貨合約單日交易額為1959萬美元,同比下跌5%,未平倉合約量為1148萬美元,同比上升5%。[2020/5/6]
短跑
等等
ETH
LTC
SC
STR
XEM
XMR
XRP
BTC
短跑
1.0000000.0039920.122695-0.0121940.0266020.0580830.0145710.1215370.088657-0.014040
等等
0.0039921.000000-0.181991-0.131079-0.008066-0.102654-0.080938-0.105898-0.054095-0.170538
ETH
0.122695-0.1819911.000000-0.0646520.1696420.0350930.0432050.0872160.085630-0.006502
LTC
-0.012194-0.131079-0.0646521.0000000.0122530.1135230.1606670.1294750.0537120.750174
SC
0.026602-0.0080660.1696420.0122531.0000000.1432520.1061530.0479100.0210980.035116
STR
0.058083-0.1026540.0350930.1135230.1432521.0000000.2251320.0279980.3201160.079075
XEM
0.014571-0.0809380.0432050.1606670.1061530.2251321.0000000.0164380.1013260.227674
XMR
0.121537-0.1058980.0872160.1294750.0479100.0279980.0164381.0000000.0276490.127520
XRP
0.088657-0.0540950.0856300.0537120.0210980.3201160.1013260.0276491.0000000.044161
BTC
-0.014040-0.170538-0.0065020.7501740.0351160.0790750.2276740.1275200.0441611.000000
這些相關系數都在這個地方。接近于1或-1的系數意味著該系列分別強相關或反相關,接近于零的系數意味著這些值不相關,并且彼此獨立地波動。
為了幫助可視化這些結果,我們將創建一個輔助可視化函數。
defcorrelation_heatmap(df,title,absolute_bounds=True):'''Plotacorrelationheatmapfortheentiredataframe'''heatmap=go.Heatmap(z=df.corr(method='pearson').as_matrix(),x=df.columns,y=df.columns,colorbar=dict(title='PearsonCoefficient'),)layout=go.Layout(title=title)ifabsolute_bounds:heatmap=1.0heatmap=-1.0fig=go.Figure(data=,layout=layout)py.iplot(fig)
correlation_heatmap(combined_df_2016.pct_change(),"CryptocurrencyCorrelationsin2016")
在這里,暗紅色值表示強相關性,深藍色值表示強烈的逆相關性。所有淺藍色/橙色/灰色/棕褐色代表不同程度的弱/不存在的相關性。
這張圖表告訴我們什么?基本上,它表明,2016年不同加密電子貨幣的價格波動之間幾乎沒有統計上顯著的聯系。
現在,為了驗證我們最近幾個月加密貨幣已經變得更加相關的假設,讓我們僅使用2017年的數據重復相同的測試。
combined_df_2017=combined_dfcombined_df_2017.pct_change().corr(method='pearson')
短跑
等等
ETH
LTC
SC
STR
XEM
XMR
XRP
BTC
短跑
1.0000000.3841090.4804530.2596160.1918010.1593300.2999480.5038320.0664080.357970
等等
0.3841091.0000000.6021510.4209450.2553430.1460650.3034920.4653220.0539550.469618
ETH
0.4804530.6021511.0000000.2861210.3237160.2286480.3435300.6045720.1202270.421786
LTC
0.2596160.4209450.2861211.0000000.2962440.3331430.2505660.4392610.3213400.352713
SC
0.1918010.2553430.3237160.2962441.0000000.4171060.2879860.3747070.2483890.377045
STR
0.1593300.1460650.2286480.3331430.4171061.0000000.3965200.3418050.6215470.178706
XEM
0.2999480.3034920.3435300.2505660.2879860.3965201.0000000.3971300.2703900.366707
XMR
0.5038320.4653220.6045720.4392610.3747070.3418050.3971301.0000000.2136080.510163
XRP
0.0664080.0539550.1202270.3213400.2483890.6215470.2703900.2136081.0000000.170070
BTC
0.3579700.4696180.4217860.3527130.3770450.1787060.3667070.5101630.1700701.000000
這些是更重要的相關系數。強大到足以作為投資的唯一基礎?當然不是。
然而,值得注意的是,幾乎所有的加密貨幣已經變得更加相互關聯。
correlation_heatmap(combined_df_2017.pct_change(),"CryptocurrencyCorrelationsin2017")
呵呵。這很有趣。
這是為什么發生?
好問題。我真的不確定。
想到最直接的解釋是對沖基金最近開始在加密貨幣市場上公開交易。與平均交易者相比,這些基金的資本要多得多,所以如果一個基金在多個加密貨幣上對沖他們的投注,并且基于自變量對每個基金使用類似的交易策略,那么這可能是合理的這種相關性增加的趨勢將會出現。
深入-XRP和STR
例如,上面圖表的一個值得注意的特征是XRP是最不相關的加密貨幣。這里值得注意的例外是STR,它與XRP具有更強的相關性。
這里有趣的是,Stellar和Ripple都是非常類似的金融科技平臺,旨在減少銀行間國際資金轉移的摩擦。
可以想象的是,由于使用每個令牌的區塊鏈服務的相似性,一些大資金玩家和對沖基金可能使用類似的交易策略來投資Stellar和Ripple。這可以解釋為什么XRP與STR相比與其他加密貨幣的關聯性更強。
快速插件-我是Chipper的一名貢獻者,Chipper是一家非常早期的初創公司,其使用Stellar的目的是破壞非洲的微型匯款。
到你了
然而,這種解釋很大程度上是推測性的。也許你可以做得更好。有了我們在這里創建的基礎,有數百種不同的途徑可以繼續搜索數據中的故事。
這里有一些想法:
將更多加密貨幣的數據添加到分析中。調整相關性分析的時間框架和粒度,以獲得更精細或粗略的趨勢視圖。搜索交易量和/或區塊鏈挖掘數據集的趨勢。如果您想預測未來的價格波動,則買入/賣出交易量比率可能比原始價格數據更相關。添加有關股票,商品和法定貨幣的定價數據,以確定哪些與加密貨幣相關。使用事件注冊表,GDELT和GoogleTrends來量化圍繞特定加密貨幣的“嗡嗡聲”量。訓練數據的預測性機器學習模型以預測未來的價格。如果你更有野心,你甚至可以嘗試用循環神經網絡來做這件事。使用您的分析,在Poloniex或Coinbase等交易網站上使用各自的交易API創建自動化的“交易機器人”。小心:一個糟糕的交易機器人是一個簡單的方法來快速損失你的錢。分享您的發現!比特幣和一般加密貨幣的最佳部分是它們的分散性使它們比其他任何資產更自由和民主。開源你的分析,參與社區,也許寫一篇關于它的博客文章。
Python版本的筆記本可以在這里找到。
希望現在你有能力進行自己的分析并批判性地思考你將來可能閱讀的任何猜測性的加密貨幣文章,特別是那些沒有任何數據的文章來備份所提供的預測。
感謝您的閱讀,如果您對本教程有任何想法,建議或批評,請在下面評論。如果您發現代碼存在問題,您也可以在此處的Github存儲庫中隨意打開問題。
我已經在作品中獲得了第二個部分,這些作品很可能會沿用上面列出的一些想法,因此請在未來幾周內繼續關注。
Tags:比特幣加密貨幣BTC比特幣中國官網聯系方式40億比特幣能提現嗎比特幣最新價格行情走勢加密貨幣是什么意思啊加密貨幣市場還有未來嗎知乎全球十大加密貨幣BTCs是不是黃了btc錢包官網btc
這是一個關于北大畢業的90后高材生,如何投機取巧,成功套現20億人民幣的故事。孫宇晨現已跑到美國,人稱“幣圈賈躍亭”.
1900/1/1 0:00:00比特幣可能具有什么法律性質 趙磊 由于國情不同,以及比特幣未來發展走勢尚不明朗,無論對其全面禁止,還是允許其在一定范圍內等同于貨幣使用,都能找到足夠多的理由支持.
1900/1/1 0:00:00作者:互鏈脈搏·梁山花榮在歷經沸沸揚揚的超級節點競選后,EOS熱潮逐漸退卻,但在業界,另一個被稱為區塊鏈中拜火教的IPFS正受到越來越多人的關注.
1900/1/1 0:00:00區塊鏈兄弟社區,區塊鏈技術專業問答先行者,中國區塊鏈技術愛好者聚集地 作者:Tiny熊 來源:深入淺出區塊鏈 原文鏈接:https://learnblockchain.cn/著權歸作者所有.
1900/1/1 0:00:00『2017年度全球范圍內已攔截的WannaCry攻擊達54億起,新型勒索軟件變種增長46%。這一現象意味著黑客市場可能已圍繞勒索軟件產生相關交易,也意味著可能有更多的攻擊事件.
1900/1/1 0:00:00周末的幣市十分精彩,其中最耀眼的明星就是EOS了,有關EOS的討論太多太多,今天就不寫了,這幾天是EOS主鏈上線及超級節點競選開始的時間,在這個關鍵時刻,我們安心看戲就好.
1900/1/1 0:00:00