पायथन के साथ क्रिप्टोक्यूरेंसी बाजारों का विश्लेषण

बिटकॉइन बाजार कैसे व्यवहार करते हैं? क्रिप्टोक्यूरेंसी की कीमतों में अचानक वृद्धि और गिरावट के कारण क्या हैं? क्या altcoin बाजारों के बीच एक करीबी अविभाज्य संबंध है या वे एक दूसरे से ज्यादातर स्वतंत्र हैं? हम कैसे भविष्यवाणी कर सकते हैं कि भविष्य में क्या होगा?

छवि

क्रिप्टोक्यूरेंसी तर्क के लिए सूचना-विश्लेषणात्मक दृष्टिकोण


बिटकॉइन और एथेरियम जैसी क्रिप्टोकरेंसी को समर्पित लेख तर्क और सिद्धांतों में लाजिमी है। सैकड़ों स्व-घोषित विशेषज्ञ रुझानों के लिए तर्क देते हैं कि उनका मानना ​​है कि जल्द ही खुद को दिखाएगा। इस तरह के कई विश्लेषणों में निश्चित रूप से कुछ बयानों का समर्थन करने वाले डेटा और आंकड़ों के रूप में एक ठोस आधार है।

इस लेख का उद्देश्य पायथन का उपयोग करके क्रिप्टोक्यूरेंसी विश्लेषण का एक सरल परिचय प्रदान करना है। इसमें, हम विभिन्न क्रिप्टोक्यूरेंसी पर डेटा प्राप्त करने, विश्लेषण करने और कल्पना करने के लिए एक साधारण पायथन स्क्रिप्ट को देखेंगे। काम के दौरान, हम अस्थिर बाजारों के व्यवहार में एक दिलचस्प प्रवृत्ति की खोज करेंगे और यह पता लगाएंगे कि उनमें क्या परिवर्तन हुए हैं।

छवि

यह पोस्ट यह बताने के लिए समर्पित नहीं होगी कि क्रिप्टोकरेंसी क्या है (यदि आपको इस तरह की व्याख्या की आवश्यकता है, तो मैं आपको इस उत्कृष्ट समीक्षा की सिफारिश करूंगा)। इस बात पर कोई चर्चा नहीं होगी कि कौन सी विशिष्ट मुद्राएं मूल्य में वृद्धि या गिरावट आएंगी। इसके बजाय, गाइड किसी न किसी, कच्चे डेटा तक पहुंच प्राप्त करने और संख्याओं की परतों के नीचे छिपे इतिहास को खोजने पर ध्यान केंद्रित करेगा।

स्टेज 1. हम अपनी प्रयोगशाला को सुसज्जित करते हैं


यह गाइड व्यावसायिकता के स्तर की परवाह किए बिना उत्साही, इंजीनियरों और डेटा प्रोसेसिंग पेशेवरों की एक विस्तृत श्रृंखला के लिए है। कौशल से आपको केवल पायथन की एक बुनियादी समझ और परियोजना को कॉन्फ़िगर करने के लिए आवश्यक न्यूनतम कमांड लाइन कौशल की आवश्यकता होगी।

किए गए कार्य का पूर्ण संस्करण और इसके सभी परिणाम यहां उपलब्ध हैं

1.1 एनाकोंडा स्थापित करें


इस परियोजना के लिए खरोंच से निर्भरता स्थापित करने का सबसे आसान तरीका एनाकोंडा, एक अजगर पारिस्थितिकी तंत्र और निर्भरता प्रबंधक का उपयोग करना है जिसमें डेटा के साथ काम करने और उनका विश्लेषण करने के लिए सभी आवश्यक पैकेज शामिल हैं।

एनाकोंडा को स्थापित करने के लिए, मैं यहां उपलब्ध आधिकारिक निर्देशों का उपयोग करने की सलाह दूंगा।

यदि आप एक उन्नत उपयोगकर्ता हैं, और एनाकोंडा आपकी पसंद के अनुसार नहीं है, तो इसे स्थापित करना आवश्यक नहीं है। इस मामले में, मुझे लगता है कि आपको आवश्यक निर्भरताएं स्थापित करने में मदद की आवश्यकता नहीं है, और आप सीधे दूसरे चरण में जा सकते हैं।

1.2 एनाकोंडा में परियोजना पर्यावरण की स्थापना


जैसे ही एनाकोंडा स्थापित होता है, हम निर्भरता के साथ काम के आयोजन के लिए एक नया वातावरण बनाना चाहेंगे।

हमारी परियोजना के लिए एक नया एनाकोंडा वातावरण conda create --name cryptocurrency-analysis python=3 लिए कमांड conda create --name cryptocurrency-analysis python=3 दर्ज करें।

अगला, पर्यावरण को सक्रिय करने के लिए source activate cryptocurrency-analysis और (लिनक्स / मैकओएस पर) दर्ज करें या activate cryptocurrency-analysis (विंडोज पर) को सक्रिय करें।

और अंत में, conda install numpy pandas nb_conda jupyter plotly quandl पर्यावरण में आवश्यक निर्भरताएं स्थापित conda install numpy pandas nb_conda jupyter plotly quandl । इस प्रक्रिया में कई मिनट लग सकते हैं।

हम पर्यावरण का उपयोग क्यों करते हैं? यदि आप अपने कंप्यूटर पर कई पायथन परियोजनाओं के साथ एक साथ काम करने की योजना बनाते हैं, तो संघर्षों से बचने के लिए निर्भरता (सॉफ़्टवेयर लाइब्रेरी और पैकेज) को अलग से रखना उपयोगी है। प्रत्येक परियोजना के भीतर, एनाकोंडा पर्यावरण में निर्भरता के लिए एक विशेष निर्देशिका बनाता है, जो आपको अन्य परियोजनाओं की निर्भरता से अलग करने और उनके साथ काम व्यवस्थित करने की अनुमति देता है।

1.3 जुपिटर नोटबुक इंटरएक्टिव नोटबुक लॉन्च करना


एक बार पर्यावरण और निर्भरताएं स्थापित हो जाने के बाद, iPython कर्नेल शुरू करने के लिए कंसोल में jupyter notebook टाइप करें और ब्राउज़र में http: // localhost: 8888 / लिंक खोलें। एक नया पायथन नोटबुक बनाएं, जो यह पुष्टि करता है कि यह Python [conda env:cryptocurrency-analysis] कर्नेल Python [conda env:cryptocurrency-analysis]

छवि

1.4 नोटबुक के शीर्ष पर निर्भरता आयात करना


जैसे ही आप एक साफ ज्यूपिटर लॉग देखते हैं, आपको पहले आवश्यक निर्भरता को आयात करना होगा।

 import os import numpy as np import pandas as pd import pickle import quandl from datetime import datetime 

इसके अलावा, आपको प्लॉटली आयात करना होगा और इसके लिए ऑफ़लाइन मोड सक्षम करना होगा।

 import plotly.offline as py import plotly.graph_objs as go import plotly.figure_factory as ff py.init_notebook_mode(connected=True) 

स्टेज 2. बिटकॉइन मूल्य डेटा प्राप्त करना


अब जबकि सभी सेटिंग्स पूरी हो चुकी हैं, हम विश्लेषण के लिए जानकारी प्राप्त करना शुरू करने के लिए तैयार हैं। सबसे पहले, हमें मुफ्त बिटकॉइन एपीआई क्वांडल का उपयोग करके बिटकॉइन मूल्य डेटा का अनुरोध करने की आवश्यकता है।

2.1 एक क्वैंडल हेल्पर फ़ंक्शन को परिभाषित करें


डेटा अधिग्रहण में मदद करने के लिए, हम एक फ़ंक्शन को परिभाषित करेंगे जो Quandl से डेटासेट डाउनलोड और कैश करता है।

 def get_quandl_data(quandl_id): '''Download and cache Quandl dataseries''' cache_path = '{}.pkl'.format(quandl_id).replace('/','-') try: f = open(cache_path, 'rb') df = pickle.load(f) print('Loaded {} from cache'.format(quandl_id)) except (OSError, IOError) as e: print('Downloading {} from Quandl'.format(quandl_id)) df = quandl.get(quandl_id, returns="pandas") df.to_pickle(cache_path) print('Cached {} at {}'.format(quandl_id, cache_path)) return df 

डाउनलोड किए गए डेटा को परिवर्तित करने और इसे एक फ़ाइल में सहेजने के लिए, हम pickle उपयोग करेंगे। यह उसी डेटा को दोबारा डाउनलोड होने से रोकेगा जब हम स्क्रिप्ट चलाते हैं। फ़ंक्शन पंडों के डेटा फ़्रेम के रूप में डेटा लौटाएगा। यदि आप डेटा फ़्रेम से अपरिचित हैं, तो आप उन्हें बहुत शक्तिशाली स्प्रैडशीट के रूप में प्रस्तुत कर सकते हैं।

2.2 हम क्रैकन एक्सचेंज से मूल्य डेटा लेते हैं


शुरू करने के लिए, क्रैकन एक्सचेंज से बिटकॉइन विनिमय दर पर ऐतिहासिक डेटा को खींचते हैं।

 # Pull Kraken BTC price exchange data btc_usd_price_kraken = get_quandl_data('BCHARTS/KRAKENUSD') 

हम head() विधि का उपयोग करके डेटा फ़्रेम की पहली 5 पंक्तियों की जांच कर सकते हैं।

 btc_usd_price_kraken.head() 

छवि

अगला, डेटा की शुद्धता के त्वरित दृश्य सत्यापन के लिए एक सरल ग्राफ़ उत्पन्न करते हैं।

 # Chart the BTC pricing data btc_trace = go.Scatter(x=btc_usd_price_kraken.index, y=btc_usd_price_kraken['Weighted Price']) py.iplot([btc_trace]) 

छवि

विज़ुअलाइज़ेशन के लिए, प्लॉटली का उपयोग यहां किया जाता है । यह अधिक आधिकारिक आधिकारिक अजगर विज़ुअलाइज़ेशन लाइब्रेरी जैसे कि मैटलपोटलिब की तुलना में एक कम पारंपरिक दृष्टिकोण है, लेकिन मेरी राय में, प्लॉटली एक उत्कृष्ट विकल्प है, क्योंकि यह आपको डी 3 के उपयोग के माध्यम से पूरी तरह से इंटरेक्टिव ग्राफिक्स बनाने की अनुमति देता है। नतीजतन, आप किसी भी सेटिंग्स के बिना आउटपुट पर अच्छा दृश्य आरेख प्राप्त कर सकते हैं। इसके अलावा, प्लॉटली सीखना आसान है और इसके परिणाम आसानी से वेब पेजों में डाले जाते हैं।

बेशक, आपको हमेशा डाउनलोड किए गए डेटा की विश्वसनीयता के बुनियादी सत्यापन के लिए सार्वजनिक रूप से उपलब्ध क्रिप्टोक्यूरेंसी मूल्य चार्ट (उदाहरण के लिए, कॉइनबेस) के साथ परिणामी विज़ुअलाइज़ेशन की तुलना करने की आवश्यकता को याद रखना चाहिए।

2.3 अन्य बीटीसी एक्सचेंजों से मूल्य डेटा का अनुरोध करें


आपने इस सेट में विसंगतियों को देखा होगा: ग्राफ कई स्थानों पर शून्य पर पहुंच जाता है, विशेष रूप से 2014 के अंत और 2016 की शुरुआत में। ये फॉल्स क्रैकेन डेटा सेट में पाए जाते हैं, और हम स्पष्ट रूप से नहीं चाहते हैं कि वे हमारे अंतिम मूल्य विश्लेषण में परिलक्षित हों।

बिटकॉइन एक्सचेंजों की प्रकृति ऐसी है कि कीमतें आपूर्ति और मांग से निर्धारित होती हैं, और इसलिए मौजूदा एक्सचेंजों में से कोई भी यह दावा नहीं कर सकता है कि इसके उद्धरण बिटकॉइन की एकमात्र सही, "संदर्भ" कीमत को दर्शाते हैं। इस खामी को ध्यान में रखने के लिए, साथ ही चार्ट पर मूल्य शिथिलता को समाप्त करना, जो तकनीकी या डेटा सेट त्रुटियों के कारण सबसे अधिक संभावना है, हम बिटकॉइन के लिए कुल मूल्य सूचकांक की गणना के लिए तीन अन्य बड़े बिटकॉइन एक्सचेंजों से डेटा एकत्र करेंगे।

आरंभ करने के लिए, आइए प्रत्येक एक्सचेंज से डेटा को डेटा फ़्रेम के शब्दकोश में डाउनलोड करें।

 # Pull pricing data for 3 more BTC exchanges exchanges = ['COINBASE','BITSTAMP','ITBIT'] exchange_data = {} exchange_data['KRAKEN'] = btc_usd_price_kraken for exchange in exchanges: exchange_code = 'BCHARTS/{}USD'.format(exchange) btc_exchange_df = get_quandl_data(exchange_code) exchange_data[exchange] = btc_exchange_df 

2.4 सभी मूल्य डेटा को एक डेटा फ़्रेम में संयोजित करना


अगला, हम एक साधारण फ़ंक्शन को परिभाषित करेंगे जो प्रत्येक डेटा फ्रेम के समान कॉलम को एक नए संयुक्त फ्रेम में जोड़ता है।

 def merge_dfs_on_column(dataframes, labels, col): '''Merge a single column of each dataframe into a new combined dataframe''' series_dict = {} for index in range(len(dataframes)): series_dict[labels[index]] = dataframes[index][col] return pd.DataFrame(series_dict) 

अब, भारित मूल्य कॉलम के आधार पर सभी डेटा फ़्रेमों को संयोजित करें।

 # Merge the BTC price dataseries' into a single dataframe btc_usd_datasets = merge_dfs_on_column(list(exchange_data.values()), list(exchange_data.keys()), 'Weighted Price') 

अंत में, यह सुनिश्चित करने के लिए कि हमारे काम का परिणाम सामान्य दिखता है, tail() विधि का उपयोग करके अंतिम पांच लाइनों पर एक नज़र डालें।

 btc_usd_datasets.tail() 

छवि

कीमतें अपेक्षित रूप से दिखती हैं: वे समान सीमाओं के भीतर हैं, लेकिन प्रत्येक व्यक्तिगत विनिमय पर आपूर्ति / मांग अनुपात के आधार पर मामूली अंतर हैं।

2.5 प्राइस डेटासेट की कल्पना करें


अगला तार्किक कदम परिणामी डेटा सेट की तुलना की कल्पना करना है। ऐसा करने के लिए, हम एक सहायक फ़ंक्शन को परिभाषित करते हैं जो सिंगल-लाइन कमांड का उपयोग करके डेटा फ्रेम के आधार पर एक ग्राफ उत्पन्न करने की क्षमता प्रदान करता है।

 def df_scatter(df, title, seperate_y_axis=False, y_axis_label='', scale='linear', initial_hide=False): '''Generate a scatter plot of the entire dataframe''' label_arr = list(df) series_arr = list(map(lambda col: df[col], label_arr)) layout = go.Layout( title=title, legend=dict(orientation="h"), xaxis=dict(type='date'), yaxis=dict( title=y_axis_label, showticklabels= not seperate_y_axis, type=scale ) ) y_axis_config = dict( overlaying='y', showticklabels=False, type=scale ) visibility = 'visible' if initial_hide: visibility = 'legendonly' # Form Trace For Each Series trace_arr = [] for index, series in enumerate(series_arr): trace = go.Scatter( x=series.index, y=series, name=label_arr[index], visible=visibility ) # Add seperate axis for the series if seperate_y_axis: trace['yaxis'] = 'y{}'.format(index + 1) layout['yaxis{}'.format(index + 1)] = y_axis_config trace_arr.append(trace) fig = go.Figure(data=trace_arr, layout=layout) py.iplot(fig) 

संक्षिप्तता के लिए, मैं एक सहायक फ़ंक्शन के संचालन के बारे में विस्तार से नहीं जाऊंगा। यदि आप इसके बारे में अधिक जानने में रुचि रखते हैं, तो पंडों और प्लॉटली प्रलेखन देखें

हम बिटकॉइन मूल्य डेटा के लिए आसानी से एक ग्राफ उत्पन्न कर सकते हैं।

 # Plot all of the BTC exchange prices df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange') 

छवि

2.6 मूल्य डेटा की सफाई और संयोजन


हम देख सकते हैं कि इस तथ्य के बावजूद कि डेटा की सभी 4 श्रृंखलाएं लगभग एक ही तरह से व्यवहार करती हैं, उनमें आदर्श से कई विचलन हैं जिन्हें समाप्त करने की आवश्यकता है।

आइए फ्रेम से सभी शून्य मान निकालें, क्योंकि हम जानते हैं कि बिटकॉइन की कीमत उस समय अवधि के भीतर शून्य नहीं रही है, जिस पर हम विचार कर रहे हैं।

 # Remove "0" values btc_usd_datasets.replace(0, np.nan, inplace=True) 

चार्ट को फिर से बनाने के बाद, हमें बिना किसी तेज डिप्स के, एक नेटर वक्र मिलता है।

 # Plot the revised dataframe df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange') 

छवि

और अब हम सभी एक्सचेंजों के डेटा के आधार पर औसत दैनिक बिटकॉइन मूल्य वाले एक नए कॉलम की गणना कर सकते हैं।

 # Calculate the average BTC price as a new column btc_usd_datasets['avg_btc_price_usd'] = btc_usd_datasets.mean(axis=1) 

यह नया कॉलम हमारा बिटकॉइन मूल्य सूचकांक है! आइए इसे सामान्य बनाने के लिए साजिश करें।

 # Plot the average BTC price btc_trace = go.Scatter(x=btc_usd_datasets.index, y=btc_usd_datasets['avg_btc_price_usd']) py.iplot([btc_trace]) 

छवि

हां, अच्छा लग रहा है। हम भविष्य में संयुक्त मूल्य श्रृंखला का उपयोग अन्य क्रिप्टोकरेंसी की विनिमय दरों को अमेरिकी डॉलर में बदलने के लिए करेंगे।

स्टेज 3. altcoin मूल्य डेटा प्राप्त करना


अब जब हमारे पास बिटकॉइन के लिए कीमतों की एक विश्वसनीय श्रृंखला है, तो चलिए गैर-बिटकॉइन क्रिप्टोकरेंसी के लिए कुछ डेटा का अनुरोध करते हैं, जिन्हें अक्सर altcoins कहा जाता है।

3.1 पॉलीनीक्स एपीआई के साथ काम करने के लिए सहायक कार्यों को परिभाषित करना


Altcoin डेटा प्राप्त करने के लिए, हम Poloniex API का उपयोग करेंगे। इस एपीआई से जुड़े JSON डेटा को डाउनलोड करने और कैश करने वाले दो सहायक कार्यों से हमें मदद मिलेगी।

सबसे पहले, हम get_json_data को परिभाषित get_json_data , जो प्रदान किए गए URL पर JSON डेटा डाउनलोड और कैश करेगा।

 def get_json_data(json_url, cache_path): '''Download and cache JSON data, return as a dataframe.''' try: f = open(cache_path, 'rb') df = pickle.load(f) print('Loaded {} from cache'.format(json_url)) except (OSError, IOError) as e: print('Downloading {}'.format(json_url)) df = pd.read_json(json_url) df.to_pickle(cache_path) print('Cached {} at {}'.format(json_url, cache_path)) return df 

अगला, हम एक फ़ंक्शन को परिभाषित करते हैं जो पोलोनीक्स एपीआई के लिए HTTP अनुरोध उत्पन्न करता है, और फिर get_json_data कॉल get_json_data , जो बदले में, अनुरोधित डेटा को संग्रहीत करता है।

 base_polo_url = 'https://poloniex.com/public?command=returnChartData&currencyPair={}&start={}&end={}&period={}' start_date = datetime.strptime('2015-01-01', '%Y-%m-%d') # get data from the start of 2015 end_date = datetime.now() # up until today pediod = 86400 # pull daily data (86,400 seconds per day) def get_crypto_data(poloniex_pair): '''Retrieve cryptocurrency data from poloniex''' 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') return data_df 

वह क्रिप्टोक्यूरेंसी जोड़ी (उदाहरण के लिए, BTC_ETH) को इंगित करने वाली एक स्ट्रिंग लेता है और अपनी विनिमय दर पर ऐतिहासिक डेटा युक्त डेटा फ़्रेम देता है।

3.2 Poloniex के साथ व्यापार डेटा डाउनलोड करना


अधिकांश altcoins सीधे अमेरिकी डॉलर के लिए नहीं खरीदे जा सकते। उन्हें अधिग्रहित करने के लिए, लोग अक्सर बिटकॉइन खरीदते हैं और एक्सचेंजों पर altcoins के लिए उन्हें एक्सचेंज करते हैं। इसलिए, हम प्रत्येक सिक्के के लिए BTC विनिमय दर डाउनलोड करते हैं और USD में altcoins की लागत की गणना करने के लिए BTC मूल्य पर डेटा का उपयोग करते हैं।

हम नौ सबसे लोकप्रिय क्रिप्टोकरेंसी के लिए स्टॉक डेटा डाउनलोड करते हैं - एथेरियम , लिटॉइकोन , रिपल , एथेरियम क्लासिक , स्टेलर , डैशकोइन , सियाकोइन , मोनेरो और एनईएम

 altcoins = ['ETH','LTC','XRP','ETC','STR','DASH','SC','XMR','XEM'] altcoin_data = {} for altcoin in altcoins: coinpair = 'BTC_{}'.format(altcoin) crypto_price_df = get_crypto_data(coinpair) altcoin_data[altcoin] = crypto_price_df 

अब हमारे पास 9 डेटा फ़्रेमों का एक शब्दकोश है, जिनमें से प्रत्येक में औसत डेटा एक्सचेंजों और बिटकॉइन के औसत दैनिक मूल्य जोड़े पर हैं।
फिर, हम यह सुनिश्चित करने के लिए कि उसके साथ सब कुछ क्रम में है, Ethereum मूल्य तालिका की अंतिम पाँच पंक्तियों की जाँच करेंगे।

 altcoin_data['ETH'].tail() 

छवि

3.3 अमेरिकी डॉलर में कीमतों का रूपांतरण


अब हम अपने बिटकॉइन मूल्य सूचकांक के साथ मूल्य जोड़े पर डेटा की तुलना सीधे अमेरिकी डॉलर में altcoins के मूल्य पर ऐतिहासिक डेटा प्राप्त करने के लिए कर सकते हैं।

 # Calculate USD Price as a new column in each altcoin dataframe for altcoin in altcoin_data.keys(): altcoin_data[altcoin]['price_usd'] = altcoin_data[altcoin]['weightedAverage'] * btc_usd_datasets['avg_btc_price_usd'] 

इस कोड का उपयोग करते हुए, हमने डॉलर के सिक्के की कीमतों के साथ प्रत्येक altcoin के डेटा फ्रेम में एक नया कॉलम बनाया।

इसके अलावा, हम प्रत्येक क्रिप्टोक्यूरेंसी के लिए डॉलर की कीमतों वाले डेटा फ्रेम बनाने के लिए पहले से परिभाषित फ़ंक्शन merge_dfs_on_column का पुन: उपयोग कर सकते हैं।

 # Merge USD price of each altcoin into single dataframe combined_df = merge_dfs_on_column(list(altcoin_data.values()), list(altcoin_data.keys()), 'price_usd') 

बस ऐसे ही। अब, संयुक्त डेटा फ्रेम के अंतिम कॉलम में बिटकॉइन की कीमतों को भी जोड़ते हैं।

 # Add BTC price to the dataframe combined_df['BTC'] = btc_usd_datasets['avg_btc_price_usd'] 

और अब हमारे पास अध्ययन करने वाले दस क्रिप्टोकरेंसी के लिए दैनिक डॉलर की कीमतों वाला एक एकल फ्रेम है।

क्रिप्टोक्यूरेंसी मूल्य परिवर्तनों का तुलनात्मक ग्राफ खींचने के लिए पहले से निर्धारित df_scatter फ़ंक्शन का पुनः उपयोग करें।

 # Chart all of the altocoin prices df_scatter(combined_df, 'Cryptocurrency Prices (USD)', seperate_y_axis=False, y_axis_label='Coin Value (USD)', scale='log') 

छवि

बहुत बढ़िया! चार्ट आपको पिछले कुछ वर्षों में प्रत्येक क्रिप्टोकरेंसी की विनिमय दरों की गतिशीलता का स्पष्ट रूप से मूल्यांकन करने की अनुमति देता है।

कृपया ध्यान दें कि हम लॉगरिदमिक ऑर्डिनेट स्केल का उपयोग करते हैं, क्योंकि यह हमें एक चार्ट पर सभी मुद्राओं को फिट करने की अनुमति देता है। लेकिन यदि आप चाहें, तो डेटा को एक अलग दृष्टिकोण से देखने के लिए आप अलग-अलग पैरामीटर मान (जैसे scale='linear' ) आज़मा सकते हैं।

३.४ सहसंबंध विश्लेषण


आपने देखा होगा कि क्रिप्टोक्यूरेंसी विनिमय दर, उनके पूरी तरह से अलग मूल्यों और अस्थिरता के बावजूद, ऐसा लगता है कि उनके बीच कुछ सहसंबंध है। खासकर यदि आप अगस्त उछाल के बाद अंतराल को देखते हैं, तो भी छोटे उतार-चढ़ाव विभिन्न टोकन के साथ होते हैं जैसे कि सिंक्रोनस।

लेकिन बाहरी समानता पर आधारित एक प्रीमियर एक सरल अनुमान से बेहतर नहीं है जब तक कि हम इसे सांख्यिकीय डेटा के साथ वापस नहीं कर सकते।

हम एक दूसरे के संबंध में फ्रेम के सभी स्तंभों के पियर्सन सहसंबंध गुणांक की गणना करने के लिए पंडों के संग्रह से corr() विधि का उपयोग करके हमारी सहसंबंध परिकल्पना का परीक्षण कर सकते हैं।

सुधार दिनांक 8/22/2017 - कार्य के इस भाग को संशोधित किया गया है। अब, सहसंबंध गुणांक की गणना करने के लिए, पूर्ण मूल्य मूल्यों के बजाय, उनके दैनिक परिवर्तनों के प्रतिशत मूल्यों का उपयोग किया जाता है।

गैर-स्थिर समय श्रृंखला (जैसे कच्चे मूल्य डेटा) के बीच सीधे सहसंबंधों की गणना से पक्षपातपूर्ण परिणाम हो सकते हैं। हम इस दोष को pct_change() विधि को लागू करके ठीक करेंगे, जो प्रत्येक फ्रेम सेल के मूल्य को निरपेक्ष मान से उसके दैनिक परिवर्तन के प्रतिशत में परिवर्तित करता है।

शुरुआत करने के लिए, हम 2016 में सहसंबंध की गणना करते हैं।

 # Calculate the pearson correlation coefficients for cryptocurrencies in 2016 combined_df_2016 = combined_df[combined_df.index.year == 2016] combined_df_2016.pct_change().corr(method='pearson') 

छवि

अब हम हर जगह बाधाओं है। 1 या -1 के करीब मूल्यों का कहना है कि समय श्रृंखला के बीच क्रमशः एक मजबूत आगे या रिवर्स सहसंबंध है। शून्य के करीब गुणांक का मतलब है कि मूल्य सहसंबंधित नहीं हैं, और एक-दूसरे से स्वतंत्र रूप से भिन्न होते हैं।

परिणामों की कल्पना करने के लिए, हमें एक और सहायक विज़ुअलाइज़ेशन फ़ंक्शन बनाने की आवश्यकता है।

 def correlation_heatmap(df, title, absolute_bounds=True): '''Plot a correlation heatmap for the entire dataframe''' heatmap = go.Heatmap( z=df.corr(method='pearson').as_matrix(), x=df.columns, y=df.columns, colorbar=dict(title='Pearson Coefficient'), ) layout = go.Layout(title=title) if absolute_bounds: heatmap['zmax'] = 1.0 heatmap['zmin'] = -1.0 fig = go.Figure(data=[heatmap], layout=layout) py.iplot(fig) 

 correlation_heatmap(combined_df_2016.pct_change(), "Cryptocurrency Correlations in 2016") 

छवि

चार्ट पर गहरे लाल सेल एक मजबूत सहसंबंध को इंगित करते हैं (और मुद्राओं में से प्रत्येक स्पष्ट रूप से जितना संभव हो उतना ही सहसंबंधित होगा), गहरा नीला - एक मजबूत उलटा सहसंबंध। उनके बीच के सभी नीले, नारंगी, ग्रे, रेत रंग कमजोर सहसंबंध या इसकी अनुपस्थिति के विभिन्न डिग्री का संकेत देते हैं।

यह चार्ट हमें क्या बताता है? वास्तव में, यह दर्शाता है कि 2016 में विभिन्न क्रिप्टोकरेंसी के मूल्य में उतार-चढ़ाव के बीच सांख्यिकीय रूप से महत्वपूर्ण संबंध छोटा है।

और अब, हमारी परिकल्पना का परीक्षण करने के लिए कि हाल के महीनों में क्रिप्टोकरेंसी अधिक सहसंबद्ध हो गई है, चलो 2017 के लिए पहले से ही डेटा का उपयोग करके एक ही परीक्षण दोहराएं।

 combined_df_2017 = combined_df[combined_df.index.year == 2017] combined_df_2017.pct_change().corr(method='pearson') 

छवि

प्राप्त गुणांक एक अधिक महत्वपूर्ण सहसंबंध की उपस्थिति का संकेत देते हैं। क्या वह निवेश के लिए इस तथ्य का लाभ उठाने के लिए पर्याप्त मजबूत है? निश्चित रूप से नहीं।

लेकिन, हमें इस तथ्य पर ध्यान देना चाहिए कि एक पूरे के रूप में लगभग सभी क्रिप्टोकरेंसी एक दूसरे के साथ अधिक सहसंबद्ध हो गई हैं।

 correlation_heatmap(combined_df_2017.pct_change(), "Cryptocurrency Correlations in 2017") 

छवि

और यह एक दिलचस्प अवलोकन है।

ऐसा क्यों हो रहा है?


अच्छा सवाल है। मैं पक्का नहीं कह सकता।

पहला विचार जो मन में आता है: इसका कारण यह है कि हेज फंड ने हाल ही में क्रिप्टोक्यूरेंसी बाजारों में खुले तौर पर व्यापार करना शुरू कर दिया है। [ ] [ ] इस तरह के फंडों में औसत-हाथ वाले व्यापारियों की तुलना में बहुत बड़ी मात्रा में पूंजी होती है, और अगर वे कई क्रिप्टोकरेंसी में अपने फंड का छिड़काव करके जोखिमों से खुद को बचाते हैं और स्वतंत्र चर के आधार पर उनमें से प्रत्येक के लिए समान ट्रेडिंग रणनीतियों का उपयोग करते हैं (जैसा कि वे करते हैं) , उदाहरण के लिए, शेयर बाजार में), तो इस दृष्टिकोण का एक तार्किक परिणाम बढ़ती सहसंबंधों के लिए एक प्रवृत्ति का उदय हो सकता है।

गहराई से विश्लेषण: एक्सआरपी और एसटीआर


उदाहरण के लिए, रुझानों में से एक अप्रत्यक्ष रूप से उपरोक्त तर्क की पुष्टि करता है। XRP (रिपल टोकन) अन्य altcoins के साथ कम से कम सहसंबद्ध है। लेकिन एक उल्लेखनीय अपवाद है - एसटीआर (स्टेलर टोकन, आधिकारिक एक को "ल्यूमेंस" कहा जाता है), जिसका एक्सआरपी के साथ सहसंबंध गुणांक 0.62 है।

दिलचस्प बात यह है कि स्टेलर और रिपल दोनों ही काफी समान फिनटेक प्लेटफॉर्म हैं, जिनकी गतिविधियों का उद्देश्य अंतरराष्ट्रीय इंटरबैंक भुगतान की प्रक्रिया को सरल बनाना है।

मैं एक बहुत ही वास्तविक स्थिति देखता हूं जिसमें कुछ धनी खिलाड़ी और हेज फंड स्टेलर और रिपल में निवेश किए गए ट्रेडिंग फंडों के लिए समान रणनीतियों का उपयोग करते हैं, क्योंकि इन टोकन के पीछे दोनों सेवाएं प्रकृति में बहुत समान हैं। यह धारणा समझा सकती है कि अन्य क्रिप्टोकरेंसी की तुलना में एक्सआरपी एसटीआर के साथ बहुत अधिक सहसंबद्ध क्यों है।

आपकी बारी है


हालांकि, यह स्पष्टीकरण काफी हद तक एक सट्टा निष्कर्ष है। लेकिन शायद आप बेहतर कर सकते हैं? इस काम में हमने जो नींव रखी, वह हमें विभिन्न दिशाओं में डेटा के अध्ययन को जारी रखने की अनुमति देती है।

जांच करने के लिए यहां कुछ विचार दिए गए हैं:

  • विश्लेषण के लिए अधिक क्रिप्टोकरेंसी के लिए डेटा जोड़ें।
  • अधिक सामान्य शब्दों में, अधिक विस्तार से रुझानों पर विचार, या इसके विपरीत में, सहसंबंध विश्लेषण के विस्तार की समय सीमा और डिग्री को ठीक करें।
  • ब्लॉकचेन माइनिंग के लिए ट्रेडिंग वॉल्यूम और / या डेटा सेट में रुझान खोजें। बिक्री / खरीद अनुपात कच्चे मूल्य डेटा की तुलना में मूल्य में उतार-चढ़ाव की भविष्यवाणी करने के लिए अधिक उपयुक्त हैं।
  • स्टॉक, कमोडिटी और कच्चे माल के लिए मूल्य डेटा जोड़ें, फिएट मुद्राएं यह पता लगाने के लिए कि इनमें से कौन सी संपत्ति क्रिप्टोकरेंसी के साथ संबंधित है। (लेकिन हमेशा अच्छी पुरानी कहावत को याद रखें, "सहसंबंध का अभी तक कोई मतलब नहीं है।")
  • इवेंट रजिस्ट्री , GDELT और Google रुझान का उपयोग करके व्यक्तिगत क्रिप्टोकरेंसी के आसपास प्रचार की मात्रा निर्धारित करें
  • मशीन लर्निंग का उपयोग करना, मूल्य रुझानों की भविष्यवाणी करने के लिए डेटा का विश्लेषण करने के लिए एक कार्यक्रम को प्रशिक्षित करना। यदि महत्वाकांक्षा अनुमति देती है, तो आप इसे पुनरावृत्ति तंत्रिका नेटवर्क के साथ करने की कोशिश भी कर सकते हैं।
  • उपयुक्त एपीआई का उपयोग करके पॉलीनीक्स और कॉइनबेस जैसी साइटों पर स्वचालित बॉट ट्रेडर ट्रेडिंग बनाने के लिए अपने विश्लेषण का उपयोग करें। लेकिन सावधान रहें: एक खराब रूप से अनुकूलित ट्रेडिंग बॉट आपको सभी उपलब्ध फंडों से जल्दी से वंचित कर सकता है।
  • अपना पता साझा करें! बिटकॉइन और सामान्य रूप से अन्य क्रिप्टोकरेंसी की सबसे अच्छी विशेषता यह है कि उनकी विकेंद्रीकृत प्रकृति उन्हें लगभग किसी भी अन्य संपत्ति की तुलना में अधिक स्वतंत्र और लोकतांत्रिक बनाती है। , , , -.

HTML- python- .

, , - , , , .

, , , - , . - , Github- .

, , , . , , , .

छवि

Source: https://habr.com/ru/post/hi406363/


All Articles