बिटकॉइन की कीमत के बारे में क्या? डिजिटल मुद्रा की बढ़ती और घटती कीमत के कारण क्या हैं? क्या विभिन्न Altcoins की बाजार कीमतें अविभाज्य रूप से जुड़ी हुई हैं या काफी हद तक स्वतंत्र हैं? हम भविष्यवाणी कैसे कर सकते हैं कि आगे क्या होगा?
बिटकॉइन और एथेरियम जैसे डिजिटल मुद्राओं के बारे में लेख अब अटकलों से भरे हुए हैं। सैकड़ों स्व-घोषित विशेषज्ञ उस प्रवृत्ति की वकालत कर रहे हैं जिसकी वे उम्मीद करते हैं। इनमें से कई विश्लेषणों में बुनियादी डेटा और सांख्यिकीय मॉडल के लिए एक ठोस आधार की कमी है।
इस लेख का उद्देश्य पायथन का उपयोग करके डिजिटल मुद्रा विश्लेषण के लिए एक संक्षिप्त परिचय प्रदान करना है। हम विभिन्न डिजिटल मुद्राओं के डेटा को पुनर्प्राप्त करने, विश्लेषण करने और दृश्यमान करने के लिए एक सरल पायथन स्क्रिप्ट का उपयोग करेंगे। इस प्रक्रिया में, हम इन उतार-चढ़ावों के बाजार व्यवहार में दिलचस्प रुझानों को पाएंगे और वे कैसे विकसित होते हैं।
यह डिजिटल मुद्रा की व्याख्या करने वाला लेख नहीं है, न ही यह इस बारे में एक राय है कि कौन सी विशिष्ट मुद्राएं बढ़ेंगी और कौन सी घटेंगी। इसके विपरीत, इस ट्यूटोरियल में हम मूल डेटा प्राप्त करने और संख्याओं में छिपी कहानी खोजने पर ध्यान केंद्रित करते हैं।
यह ट्यूटोरियल सभी कौशल स्तरों के उत्साही, इंजीनियरों और डेटा वैज्ञानिकों के लिए है। चाहे आप एक उद्योग के नेता हों या प्रोग्रामिंग नौसिखिया, आपको केवल पायथन प्रोग्रामिंग भाषा की बुनियादी समझ और कमांड लाइन संचालन के पर्याप्त ज्ञान की आवश्यकता है (डेटा साइंस परियोजना स्थापित करने में सक्षम होना पर्याप्त है) ।
उपरोक्त सभी सुविधाओं को डॉकर जैसी प्रणाली में शामिल किया गया है। हमें अपनी क्लाउड कंप्यूटिंग सेवाओं को खरीदने या पट्टे पर लेने और डॉकर प्रणाली को तैनात करने की आवश्यकता है।
एफएमजेड क्वांट प्लेटफॉर्म के आधिकारिक नाम में इस डॉकर सिस्टम को डॉकर सिस्टम कहा जाता है।
कृपया एक डॉकर और रोबोट तैनात करने के लिए मेरे पिछले लेख देखेंःhttps://www.fmz.com/bbs-topic/9864.
जो पाठक डॉकरों को तैनात करने के लिए अपना स्वयं का क्लाउड कंप्यूटिंग सर्वर खरीदना चाहते हैं, वे इस लेख का संदर्भ ले सकते हैंःhttps://www.fmz.com/digest-topic/5711.
बाद में क्लाउड कंप्यूटिंग सर्वर और डॉकर प्रणाली को सफलतापूर्वक तैनात करने के बाद, अगला हम पाइथन के वर्तमान सबसे बड़े कलाकृतियों को स्थापित करेंगेः एनाकोंडा
इस लेख में आवश्यक सभी प्रासंगिक प्रोग्राम वातावरण (निर्भरता पुस्तकालय, संस्करण प्रबंधन, आदि) को महसूस करने के लिए, सबसे सरल तरीका एनाकोंडा का उपयोग करना है। यह एक पैक किया गया पायथन डेटा विज्ञान पारिस्थितिकी तंत्र और निर्भरता पुस्तकालय प्रबंधक है।
चूंकि हम Anaconda को क्लाउड सेवा पर स्थापित करते हैं, इसलिए हम अनुशंसा करते हैं कि क्लाउड सर्वर ने Anaconda के कमांड लाइन संस्करण के साथ लिनक्स सिस्टम को स्थापित किया हो।
Anaconda की स्थापना विधि के लिए, कृपया Anaconda की आधिकारिक गाइड देखेंःhttps://www.anaconda.com/distribution/.
यदि आप एक अनुभवी पायथन प्रोग्रामर हैं और यदि आपको लगता है कि आपको एनाकोंडा का उपयोग करने की आवश्यकता नहीं है, तो यह कोई समस्या नहीं है। मैं मानूंगा कि आपको आवश्यक निर्भर वातावरण स्थापित करने में मदद की आवश्यकता नहीं है। आप इस अनुभाग को सीधे छोड़ सकते हैं।
एक बार Anaconda स्थापित हो जाने के बाद, हमें अपने आश्रित पैकेजों को प्रबंधित करने के लिए एक नया वातावरण बनाने की आवश्यकता है। लिनक्स कमांड लाइन इंटरफ़ेस में, हम इनपुट करते हैंः
conda create --name cryptocurrency-analysis python=3
हमारी परियोजना के लिए एक नया एनाकोंडा वातावरण बनाने के लिए।
अगला, इनपुटः
source activate cryptocurrency-analysis (linux/MacOS operating system)
or
activate cryptocurrency-analysis (windows operating system)
पर्यावरण को सक्रिय करने के लिए।
अगला, इनपुटः
conda install numpy pandas nb_conda jupyter plotly
इस परियोजना के लिए आवश्यक विभिन्न आश्रित पैकेजों को स्थापित करने के लिए।
नोट: एनाकोंडा वातावरण का उपयोग क्यों करें? यदि आप अपने कंप्यूटर पर कई पायथन परियोजनाओं को चलाने की योजना बनाते हैं, तो संघर्षों से बचने के लिए विभिन्न परियोजनाओं के आश्रित पैकेज (सॉफ्टवेयर लाइब्रेरी और पैकेज) को अलग करना उपयोगी है। एनाकोंडा प्रत्येक परियोजना के आश्रित पैकेज के लिए एक विशेष वातावरण निर्देशिका बनाएगा, ताकि सभी पैकेज को ठीक से प्रबंधित और प्रतिष्ठित किया जा सके।
पर्यावरण और आश्रित पैकेज स्थापित होने के बाद, चलाएँः
jupyter notebook
iPython कर्नेल प्रारंभ करने के लिए, फिर जाएँhttp://localhost:8888/अपने ब्राउज़र के साथ, एक नई पायथन नोटबुक बनाएँ, यह सुनिश्चित करें कि यह का उपयोग करता हैः
Python [conda env:cryptocurrency-analysis]
कर्नेल
एक खाली Jupyter नोटबुक बनाएँ, और पहली बात हमें करने की जरूरत है आवश्यक निर्भर पैकेज आयात है.
import os
import numpy as np
import pandas as pd
import pickle
from datetime import datetime
हमें Plotly आयात करने और ऑफ़लाइन मोड सक्षम करने की भी आवश्यकता हैः
import plotly.offline as py
import plotly.graph_objs as go
import plotly.figure_factory as ff
py.init_notebook_mode(connected=True)
तैयारी पूरी हो गई है, और अब हम विश्लेषण करने के लिए डेटा प्राप्त करना शुरू कर सकते हैं। सबसे पहले, हम बिटकॉइन के मूल्य डेटा प्राप्त करने के लिए एफएमजेड क्वांट प्लेटफॉर्म के एपीआई इंटरफ़ेस का उपयोग करेंगे।
यह GetTicker फ़ंक्शन का उपयोग करेगा. इन दो कार्यों के उपयोग के लिए, कृपया देखेंःhttps://www.fmz.com/api.
डेटा अधिग्रहण की सुविधा के लिए, हमें Quandl से डेटा डाउनलोड और सिंक्रनाइज़ करने के लिए एक फ़ंक्शन लिखने की आवश्यकता है (quandl.com) यह एक निः शुल्क वित्तीय डेटा इंटरफ़ेस है, जो विदेशों में उच्च प्रतिष्ठा का आनंद लेता है। एफएमजेड क्वांट प्लेटफॉर्म भी एक समान डेटा इंटरफ़ेस प्रदान करता है, जिसका उपयोग मुख्य रूप से वास्तविक बॉट लेनदेन के लिए किया जाता है। चूंकि लेख मुख्य रूप से डेटा विश्लेषण पर केंद्रित है, इसलिए हम अभी भी यहां क्वांडल डेटा का उपयोग करते हैं।
वास्तविक बॉट लेनदेन के दौरान, आप मूल्य डेटा प्राप्त करने के लिए सीधे पायथन में GetTicker और GetRecords कार्यों को कॉल कर सकते हैं। उनके उपयोग के लिए, कृपया देखेंःhttps://www.fmz.com/api.
def get_quandl_data(quandl_id):
# Download and cache data columns from Quandl
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
यहाँ, अचार पुस्तकालय का उपयोग डेटा को सीरियल करने और डाउनलोड किए गए डेटा को फ़ाइल के रूप में सहेजने के लिए किया जाता है, ताकि प्रोग्राम हर बार चलाए जाने पर एक ही डेटा डाउनलोड न करे। यह फ़ंक्शन पांडा डेटाफ्रेम प्रारूप में डेटा लौटाएगा। यदि आप डेटा फ्रेम की अवधारणा से परिचित नहीं हैं, तो आप इसे एक शक्तिशाली एक्सेल के रूप में कल्पना कर सकते हैं।
आइए एक उदाहरण के रूप में क्रैकन बिटकॉइन एक्सचेंज लेते हैं, इसकी बिटकॉइन कीमत प्राप्त करने से शुरू करते हैं।
# Get prices on the Kraken Bitcoin exchange
btc_usd_price_kraken = get_quandl_data('BCHARTS/KRAKENUSD')
डेटा बॉक्स की पहली पांच पंक्तियों को देखने के लिए head() विधि का प्रयोग करें।
btc_usd_price_kraken.head()
परिणाम यह है:
अगला, हम एक सरल तालिका बनाने के लिए जा रहे हैं ताकि विज़ुअलाइज़ेशन द्वारा डेटा की सटीकता की पुष्टि की जा सके।
# Make a table of BTC prices
btc_trace = go.Scatter(x=btc_usd_price_kraken.index, y=btc_usd_price_kraken['Weighted Price'])
py.iplot([btc_trace])
यहाँ, हम विज़ुअलाइज़ेशन भाग को पूरा करने के लिए प्लॉटली का उपयोग करते हैं। कुछ अधिक परिपक्व पायथन डेटा विज़ुअलाइज़ेशन लाइब्रेरी का उपयोग करने की तुलना में, जैसे कि मैटप्लोटलिब, प्लॉटली एक कम आम विकल्प है, लेकिन यह वास्तव में एक अच्छा विकल्प है, क्योंकि यह D3.js
सुझावः उत्पन्न चार्ट की तुलना मुख्यधारा के एक्सचेंजों के बिटकॉइन मूल्य चार्ट (जैसे कि ओकेएक्स, बिनेंस या हुओबी पर चार्ट) के साथ की जा सकती है ताकि यह पुष्टि हो सके कि डाउनलोड किए गए डेटा आम तौर पर सुसंगत हैं या नहीं।
सावधान पाठकों ने देखा होगा कि उपरोक्त आंकड़ों में डेटा की कमी है, विशेष रूप से 2014 के अंत और 2016 की शुरुआत में। विशेष रूप से क्रैकन एक्सचेंज में, इस प्रकार का डेटा नुकसान विशेष रूप से स्पष्ट है। हमें निश्चित रूप से उम्मीद नहीं है कि ये गायब डेटा मूल्य विश्लेषण को प्रभावित करेंगे।
डिजिटल मुद्रा विनिमय की विशेषता यह है कि आपूर्ति और मांग संबंध मुद्रा मूल्य को निर्धारित करता है। इसलिए, कोई लेनदेन मूल्य बाजार की
आइए प्रत्येक एक्सचेंज के डेटा को शब्दकोश प्रकारों से मिलकर डेटा फ्रेम में डाउनलोड करके शुरू करें।
# Download price data from COINBASE, BITSTAMP and ITBIT
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
इसके बाद, हम एक विशेष फ़ंक्शन को परिभाषित करेंगे जो प्रत्येक डेटा फ्रेम के लिए सामान्य स्तंभों को एक नए डेटा फ्रेम में विलय करने के लिए है। चलो इसे merge_dfs_on_column फ़ंक्शन कहते हैं।
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)
अब, सभी डेटा फ्रेम प्रत्येक डेटा सेट के
# Integrate all data frames
btc_usd_datasets = merge_dfs_on_column(list(exchange_data.values()), list(exchange_data.keys()), 'Weighted Price')
अंत में, हम
btc_usd_datasets.tail()
परिणाम इस प्रकार हैं:
उपरोक्त तालिका से हम देख सकते हैं कि ये आंकड़े हमारी अपेक्षाओं के अनुरूप हैं, लगभग एक ही डेटा रेंज के साथ, लेकिन प्रत्येक विनिमय की देरी या विशेषताओं के आधार पर थोड़ा अलग है।
विश्लेषण तर्क के दृष्टिकोण से, अगला कदम विज़ुअलाइज़ेशन के माध्यम से इन डेटा की तुलना करना है। ऐसा करने के लिए, हमें पहले एक सहायक फ़ंक्शन को परिभाषित करने की आवश्यकता है। चार्ट बनाने के लिए डेटा का उपयोग करने के लिए एक एकल लाइन कमांड प्रदान करके, हम इसे df_scatter फ़ंक्शन कहते हैं।
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'
# Table tracking 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 a separate axis to 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 BTC transaction prices
df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange')
जैसा कि ऊपर दिए गए चार्ट से देखा जा सकता है, यद्यपि चार डेटा श्रृंखलाएं लगभग एक ही पथ का अनुसरण करती हैं, फिर भी कुछ अनियमित परिवर्तन हैं। हम इन अनियमित परिवर्तनों को समाप्त करने का प्रयास करेंगे।
2012-2017 की अवधि में, हम जानते हैं कि बिटकॉइन की कीमत कभी भी शून्य के बराबर नहीं रही है, इसलिए हम पहले डेटा फ्रेम में सभी शून्य मानों को हटा देते हैं।
# Clear the "0" value
btc_usd_datasets.replace(0, np.nan, inplace=True)
डेटा फ्रेम को फिर से तैयार करने के बाद, हम एक स्पष्ट चार्ट देख सकते हैं जिसमें अब कोई भी डेटा गायब नहीं है।
# Plot the revised data frame
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])
ऐसा लगता है कि कोई समस्या नहीं है। बाद में, हम अन्य डिजिटल मुद्राओं और USD के बीच विनिमय दर निर्धारित करने के लिए इस एकत्रित मूल्य श्रृंखला डेटा का उपयोग करना जारी रखेंगे।
अब तक, हमारे पास बिटकॉइन मूल्य के समय श्रृंखला डेटा हैं। अगला, आइए बिटकॉइन-नॉन-डिजिटल मुद्राओं, यानी, अल्टकोइन्स के कुछ डेटा पर एक नज़र डालें। बेशक, शब्द
सबसे पहले, हम डिजिटल मुद्रा लेनदेन की डेटा जानकारी प्राप्त करने के लिए पोलोनीक्स एक्सचेंज के एपीआई का उपयोग करते हैं। हम Altcoins से संबंधित डेटा प्राप्त करने के लिए दो सहायक कार्यों को परिभाषित करते हैं। ये दो कार्य मुख्य रूप से एपीआई के माध्यम से JSON डेटा डाउनलोड और कैश करते हैं।
सबसे पहले, हम फ़ंक्शन 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 फ़ंक्शन को कॉल करेगा.
base_polo_url = 'https://poloniex.com/public?command=returnChartData¤cyPair={}&start={}&end={}&period={}'
start_date = datetime.strptime('2015-01-01', '%Y-%m-%d') # Data acquisition since 2015
end_date = datetime.now() # 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
उपरोक्त फ़ंक्शन डिजिटल मुद्रा के मिलान वर्ण कोड (जैसे
अधिकांश अल्टकोइन को सीधे USD में नहीं खरीदा जा सकता है। इन डिजिटल मुद्राओं को प्राप्त करने के लिए, व्यक्तियों को आमतौर पर पहले Bitcoin खरीदना पड़ता है, और फिर उन्हें उनके मूल्य अनुपात के अनुसार Altcoins में परिवर्तित करना पड़ता है। इसलिए, हमें प्रत्येक डिजिटल मुद्रा की विनिमय दर को Bitcoin में डाउनलोड करना पड़ता है, और फिर इसे USD में परिवर्तित करने के लिए मौजूदा Bitcoin मूल्य डेटा का उपयोग करना पड़ता है। हम शीर्ष 9 डिजिटल मुद्राओं के लिए विनिमय दर डेटा डाउनलोड करेंगेः Ethereum, Litecoin, Ripple, EthereumClassic, Stellar, Dash, Siacoin, Monero, और NEM।
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 डेटा फ्रेम हैं, जिनमें से प्रत्येक में Altcoins और Bitcoin के बीच ऐतिहासिक दैनिक औसत मूल्य डेटा है।
हम यह निर्धारित कर सकते हैं कि क्या डेटा एथेरियम मूल्य तालिका की अंतिम कुछ पंक्तियों के माध्यम से सही है।
altcoin_data['ETH'].tail()
अब, हम अपने बिटकॉइन मूल्य सूचकांक के साथ बीटीसी और Altcoins विनिमय दर डेटा को जोड़ सकते हैं प्रत्येक Altcoin की ऐतिहासिक कीमत की गणना करने के लिए (USD में) सीधे।
# Calculate USD Price as a new column in each altcoin data frame
for altcoin in altcoin_data.keys():
altcoin_data[altcoin]['price_usd'] = altcoin_data[altcoin]['weightedAverage'] * btc_usd_datasets['avg_btc_price_usd']
यहाँ, हम प्रत्येक Altcoin डेटा फ्रेम के लिए एक नया कॉलम जोड़ते हैं इसके संबंधित USD मूल्य को स्टोर करने के लिए।
इसके बाद, हम एक संयुक्त डेटा फ्रेम बनाने और प्रत्येक डिजिटल मुद्रा के USD मूल्य को एकीकृत करने के लिए पहले परिभाषित merge_dfs_on_column फ़ंक्शन का पुनः उपयोग कर सकते हैं।
# Combine the USD price of each Altcoin into a single data frame
combined_df = merge_dfs_on_column(list(altcoin_data.values()), list(altcoin_data.keys()), 'price_usd')
किया!
अब हम Bitcoin की कीमत को मिलाया गया डेटा फ्रेम के अंतिम स्तंभ के रूप में जोड़ते हैं।
# Add BTC price to data frame
combined_df['BTC'] = btc_usd_datasets['avg_btc_price_usd']
अब हमारे पास एक अनूठा डेटा फ्रेम है, जिसमें दस डिजिटल मुद्राओं के दैनिक USD मूल्य हैं जिन्हें हम सत्यापित कर रहे हैं।
हम पिछले फ़ंक्शन df_scatter फिर से कहते हैं, एक चार्ट के रूप में सभी Altcoins के अनुरूप कीमतों को दिखा।
ऐसा लगता है कि चार्ट में कोई समस्या नहीं है। यह चार्ट हमें पिछले कुछ वर्षों में प्रत्येक डिजिटल मुद्रा के लिए विनिमय मूल्य के परिवर्तन की एक पूरी तस्वीर दिखाता है।
नोटः यहाँ हम एक ही चार्ट पर सभी डिजिटल मुद्राओं की तुलना करने के लिए लघुगणक विनिर्देश के वाई-अक्ष का उपयोग करते हैं। आप विभिन्न दृष्टिकोणों से डेटा को समझने के लिए विभिन्न मापदंडों (जैसे पैमाने =
सावधान पाठकों ने देखा होगा कि डिजिटल मुद्राओं की कीमतें प्रासंगिक प्रतीत होती हैं, हालांकि उनके मुद्रा मूल्य व्यापक रूप से भिन्न होते हैं और अत्यधिक अस्थिर होते हैं। विशेष रूप से अप्रैल 2017 में तेजी से बढ़ने के बाद से, यहां तक कि कई छोटे उतार-चढ़ाव पूरे बाजार के उतार-चढ़ाव के साथ एक साथ होने लगते हैं।
बेशक, आंकड़ों के आधार पर निष्कर्ष चित्रों पर आधारित अंतर्ज्ञान की तुलना में अधिक आश्वस्त हैं।
हम उपरोक्त सहसंबंध परिकल्पना को सत्यापित करने के लिए पांडास कोर () फ़ंक्शन का उपयोग कर सकते हैं। यह परीक्षण विधि दूसरे कॉलम के अनुरूप डेटा फ्रेम के प्रत्येक कॉलम के पीयरसन सहसंबंध गुणांक की गणना करती है।
संशोधन नोट, 2017.8.22: इस खंड को संशोधित किया गया है ताकि सहसंबंध गुणांक की गणना करते समय मूल्य के पूर्ण मूल्य के बजाय दैनिक प्रतिफल दर का उपयोग किया जा सके।
एक गैर-ठोस समय श्रृंखला (जैसे कच्चे मूल्य डेटा) पर आधारित प्रत्यक्ष गणना से सहसंबंध गुणांक का विचलन हो सकता है। इस समस्या को हल करने के लिए, हमारा समाधान डेटा फ्रेम में प्रत्येक मूल्य के पूर्ण मूल्य को संबंधित दैनिक रिटर्न दर में परिवर्तित करने के लिए pct_change))) विधि का उपयोग करना है।
उदाहरण के लिए, चलो 2016 में सहसंबंध गुणांक की गणना करते हैं।
# Calculating the Pearson correlation coefficient for digital currencies in 2016
combined_df_2016 = combined_df[combined_df.index.year == 2016]
combined_df_2016.pct_change().corr(method='pearson')
उपरोक्त चार्ट में सहसंबंध गुणांक दिखाया गया है। जब गुणांक 1 या -1 के करीब होता है, तो इसका मतलब है कि यह श्रृंखला क्रमशः सकारात्मक या नकारात्मक रूप से सहसंबंधित है। जब सहसंबंध गुणांक 0 के करीब होता है, तो इसका मतलब है कि संबंधित वस्तुएं सहसंबंधित नहीं हैं और उनके उतार-चढ़ाव एक-दूसरे से स्वतंत्र हैं।
परिणामों को बेहतर ढंग से देखने के लिए, हम एक नया दृश्य सहायता कार्य बनाते हैं।
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 में विभिन्न डिजिटल मुद्राओं की कीमतों के उतार-चढ़ाव को दर्शाता है, बहुत कम सांख्यिकीय रूप से महत्वपूर्ण सहसंबंध के साथ।
अब, हमारे परिकल्पना की पुष्टि करने के लिए कि
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 (रिपल
दिलचस्प बात यह है कि स्टेलर और रिपल बहुत समान वित्तीय प्रौद्योगिकी प्लेटफॉर्म हैं, जिनका उद्देश्य बैंकों के बीच सीमा पार हस्तांतरण के थकाऊ चरणों को कम करना है। यह कल्पना की जा सकती है कि कुछ बड़े खिलाड़ी और हेज फंड स्टेलर और रिपल में अपने निवेश के लिए समान ट्रेडिंग रणनीतियों का उपयोग कर सकते हैं, ब्लॉकचेन सेवाओं द्वारा उपयोग किए जाने वाले टोकन की समानता को देखते हुए। यह हो सकता है कि एक्सआरपी अन्य डिजिटल मुद्राओं की तुलना में एसटीआर के लिए अधिक प्रासंगिक क्यों है।
उपरोक्त स्पष्टीकरण काफी हद तक अटकलें हैं, और आप बेहतर कर सकते हैं। हमारे द्वारा रखी गई नींव के आधार पर, आपके पास डेटा में निहित कहानियों की खोज जारी रखने के सैकड़ों अलग-अलग तरीके हैं।
मेरे कुछ सुझाव निम्नलिखित हैं। पाठक इन दिशाओं में अनुसंधान का संदर्भ ले सकते हैंः
बिटकॉइन और सामान्य रूप से डिजिटल मुद्रा के बारे में सबसे अच्छी बात उनकी विकेंद्रीकृत प्रकृति है, जो इसे किसी भी अन्य संपत्ति की तुलना में अधिक स्वतंत्र और लोकतांत्रिक बनाती है। आप अपने विश्लेषण को ओपन-सोर्स साझा कर सकते हैं, समुदाय में भाग ले सकते हैं, या एक ब्लॉग लिख सकते हैं! मुझे आशा है कि आपने भविष्य में किसी भी सट्टा डिजिटल मुद्रा लेखों को पढ़ने के लिए आवश्यक कौशल और डायलेक्टिक रूप से सोचने की क्षमता में महारत हासिल की है, खासकर उन भविष्यवाणियों को डेटा समर्थन के बिना। पढ़ने के लिए धन्यवाद। यदि आपके पास इस ट्यूटोरियल के बारे में कोई टिप्पणी, सुझाव या आलोचना है, तो कृपया एक संदेश छोड़ दें।https://www.fmz.com/bbs.