संसाधन लोड हो रहा है... लोड करना...

डिजिटल मुद्रा बाजार का मात्रात्मक विश्लेषण

लेखक:FMZ~Lydia, बनाया गयाः 2023-01-06 10:28:01, अद्यतन किया गयाः 2023-09-20 10:27:27

img

डिजिटल मुद्रा बाजार का मात्रात्मक विश्लेषण

डिजिटल मुद्राओं के सट्टा विश्लेषण के लिए डेटा आधारित दृष्टिकोण

बिटकॉइन की कीमत के बारे में क्या? डिजिटल मुद्रा की बढ़ती और घटती कीमत के कारण क्या हैं? क्या विभिन्न Altcoins की बाजार कीमतें अविभाज्य रूप से जुड़ी हुई हैं या काफी हद तक स्वतंत्र हैं? हम भविष्यवाणी कैसे कर सकते हैं कि आगे क्या होगा?

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

इस लेख का उद्देश्य पायथन का उपयोग करके डिजिटल मुद्रा विश्लेषण के लिए एक संक्षिप्त परिचय प्रदान करना है। हम विभिन्न डिजिटल मुद्राओं के डेटा को पुनर्प्राप्त करने, विश्लेषण करने और दृश्यमान करने के लिए एक सरल पायथन स्क्रिप्ट का उपयोग करेंगे। इस प्रक्रिया में, हम इन उतार-चढ़ावों के बाजार व्यवहार में दिलचस्प रुझानों को पाएंगे और वे कैसे विकसित होते हैं।

img

यह डिजिटल मुद्रा की व्याख्या करने वाला लेख नहीं है, न ही यह इस बारे में एक राय है कि कौन सी विशिष्ट मुद्राएं बढ़ेंगी और कौन सी घटेंगी। इसके विपरीत, इस ट्यूटोरियल में हम मूल डेटा प्राप्त करने और संख्याओं में छिपी कहानी खोजने पर ध्यान केंद्रित करते हैं।

चरण 1: हमारे डेटा कार्य वातावरण को स्थापित करें

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

1.1 FMZ क्वांट डॉकर स्थापित करें और Anaconda सेट करें

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

उपरोक्त सभी सुविधाओं को डॉकर जैसी प्रणाली में शामिल किया गया है। हमें अपनी क्लाउड कंप्यूटिंग सेवाओं को खरीदने या पट्टे पर लेने और डॉकर प्रणाली को तैनात करने की आवश्यकता है।

एफएमजेड क्वांट प्लेटफॉर्म के आधिकारिक नाम में इस डॉकर सिस्टम को डॉकर सिस्टम कहा जाता है।

कृपया एक डॉकर और रोबोट तैनात करने के लिए मेरे पिछले लेख देखेंःhttps://www.fmz.com/bbs-topic/9864.

जो पाठक डॉकरों को तैनात करने के लिए अपना स्वयं का क्लाउड कंप्यूटिंग सर्वर खरीदना चाहते हैं, वे इस लेख का संदर्भ ले सकते हैंःhttps://www.fmz.com/digest-topic/5711.

बाद में क्लाउड कंप्यूटिंग सर्वर और डॉकर प्रणाली को सफलतापूर्वक तैनात करने के बाद, अगला हम पाइथन के वर्तमान सबसे बड़े कलाकृतियों को स्थापित करेंगेः एनाकोंडा

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

चूंकि हम Anaconda को क्लाउड सेवा पर स्थापित करते हैं, इसलिए हम अनुशंसा करते हैं कि क्लाउड सर्वर ने Anaconda के कमांड लाइन संस्करण के साथ लिनक्स सिस्टम को स्थापित किया हो।

Anaconda की स्थापना विधि के लिए, कृपया Anaconda की आधिकारिक गाइड देखेंःhttps://www.anaconda.com/distribution/.

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

1.2 एनाकोंडा के लिए डेटा विश्लेषण परियोजना वातावरण बनाएं

एक बार 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

इस परियोजना के लिए आवश्यक विभिन्न आश्रित पैकेजों को स्थापित करने के लिए।

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

1.3 एक जुपिटर नोटबुक बनाएँ

पर्यावरण और आश्रित पैकेज स्थापित होने के बाद, चलाएँः

jupyter notebook

iPython कर्नेल प्रारंभ करने के लिए, फिर जाएँhttp://localhost:8888/अपने ब्राउज़र के साथ, एक नई पायथन नोटबुक बनाएँ, यह सुनिश्चित करें कि यह का उपयोग करता हैः

Python [conda env:cryptocurrency-analysis]

कर्नेल

img

1.4 आयात पर निर्भर पैकेज

एक खाली 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)

चरण 2: डिजिटल मुद्रा की कीमत की जानकारी प्राप्त करें

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

यह GetTicker फ़ंक्शन का उपयोग करेगा. इन दो कार्यों के उपयोग के लिए, कृपया देखेंःhttps://www.fmz.com/api.

2.1 Quandl डेटा संग्रह फ़ंक्शन लिखें

डेटा अधिग्रहण की सुविधा के लिए, हमें 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

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

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

आइए एक उदाहरण के रूप में क्रैकन बिटकॉइन एक्सचेंज लेते हैं, इसकी बिटकॉइन कीमत प्राप्त करने से शुरू करते हैं।

# Get prices on the Kraken Bitcoin exchange
btc_usd_price_kraken = get_quandl_data('BCHARTS/KRAKENUSD')

डेटा बॉक्स की पहली पांच पंक्तियों को देखने के लिए head() विधि का प्रयोग करें।

btc_usd_price_kraken.head()

परिणाम यह है:

img

अगला, हम एक सरल तालिका बनाने के लिए जा रहे हैं ताकि विज़ुअलाइज़ेशन द्वारा डेटा की सटीकता की पुष्टि की जा सके।

# 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])

img

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

सुझावः उत्पन्न चार्ट की तुलना मुख्यधारा के एक्सचेंजों के बिटकॉइन मूल्य चार्ट (जैसे कि ओकेएक्स, बिनेंस या हुओबी पर चार्ट) के साथ की जा सकती है ताकि यह पुष्टि हो सके कि डाउनलोड किए गए डेटा आम तौर पर सुसंगत हैं या नहीं।

2.3 मुख्यधारा के बिटकॉइन एक्सचेंजों से मूल्य डेटा प्राप्त करें

सावधान पाठकों ने देखा होगा कि उपरोक्त आंकड़ों में डेटा की कमी है, विशेष रूप से 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

2.4 सभी डेटा को एक डेटा फ्रेम में एकीकृत करें

इसके बाद, हम एक विशेष फ़ंक्शन को परिभाषित करेंगे जो प्रत्येक डेटा फ्रेम के लिए सामान्य स्तंभों को एक नए डेटा फ्रेम में विलय करने के लिए है। चलो इसे 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')

अंत में, हम tail () विधि का उपयोग करते हैं ताकि यह सुनिश्चित किया जा सके कि डेटा सही और पूर्ण है।

btc_usd_datasets.tail()

परिणाम इस प्रकार हैं:

img

उपरोक्त तालिका से हम देख सकते हैं कि ये आंकड़े हमारी अपेक्षाओं के अनुरूप हैं, लगभग एक ही डेटा रेंज के साथ, लेकिन प्रत्येक विनिमय की देरी या विशेषताओं के आधार पर थोड़ा अलग है।

2.5 मूल्य डेटा की दृश्यता प्रक्रिया

विश्लेषण तर्क के दृष्टिकोण से, अगला कदम विज़ुअलाइज़ेशन के माध्यम से इन डेटा की तुलना करना है। ऐसा करने के लिए, हमें पहले एक सहायक फ़ंक्शन को परिभाषित करने की आवश्यकता है। चार्ट बनाने के लिए डेटा का उपयोग करने के लिए एक एकल लाइन कमांड प्रदान करके, हम इसे 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')

img

2.6 स्पष्ट और समग्र मूल्य डेटा

जैसा कि ऊपर दिए गए चार्ट से देखा जा सकता है, यद्यपि चार डेटा श्रृंखलाएं लगभग एक ही पथ का अनुसरण करती हैं, फिर भी कुछ अनियमित परिवर्तन हैं। हम इन अनियमित परिवर्तनों को समाप्त करने का प्रयास करेंगे।

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')

img

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

# 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])

img

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

चरण 3: Altcoins की कीमत एकत्र करें

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

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

सबसे पहले, हम डिजिटल मुद्रा लेनदेन की डेटा जानकारी प्राप्त करने के लिए पोलोनीक्स एक्सचेंज के एपीआई का उपयोग करते हैं। हम 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&currencyPair={}&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

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

3.2 पोलोनीक्स से लेनदेन मूल्य डेटा डाउनलोड करें

अधिकांश अल्टकोइन को सीधे 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()

img

3.3 सभी मूल्य डेटा की मुद्रा इकाई को अमरीकी डालर में एकीकृत करें

अब, हम अपने बिटकॉइन मूल्य सूचकांक के साथ बीटीसी और 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 के अनुरूप कीमतों को दिखा।

img

ऐसा लगता है कि चार्ट में कोई समस्या नहीं है। यह चार्ट हमें पिछले कुछ वर्षों में प्रत्येक डिजिटल मुद्रा के लिए विनिमय मूल्य के परिवर्तन की एक पूरी तस्वीर दिखाता है।

नोटः यहाँ हम एक ही चार्ट पर सभी डिजिटल मुद्राओं की तुलना करने के लिए लघुगणक विनिर्देश के वाई-अक्ष का उपयोग करते हैं। आप विभिन्न दृष्टिकोणों से डेटा को समझने के लिए विभिन्न मापदंडों (जैसे पैमाने = रैखिक ) का भी प्रयास कर सकते हैं।

3.4 सहसंबंध विश्लेषण शुरू करें

सावधान पाठकों ने देखा होगा कि डिजिटल मुद्राओं की कीमतें प्रासंगिक प्रतीत होती हैं, हालांकि उनके मुद्रा मूल्य व्यापक रूप से भिन्न होते हैं और अत्यधिक अस्थिर होते हैं। विशेष रूप से अप्रैल 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')

img

उपरोक्त चार्ट में सहसंबंध गुणांक दिखाया गया है। जब गुणांक 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")

img

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

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

अब, हमारे परिकल्पना की पुष्टि करने के लिए कि डिजिटल मुद्रा का सहसंबंध हाल के महीनों में बढ़ गया है, हम 2017 के आंकड़ों का उपयोग एक ही परीक्षण को दोहराने के लिए करेंगे।

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

img

क्या उपरोक्त आंकड़े अधिक प्रासंगिक हैं? क्या वे निवेश के लिए एक निर्णय मानक के रूप में उपयोग करने के लिए पर्याप्त हैं? उत्तर नहीं है।

हालांकि, यह ध्यान देने योग्य है कि लगभग सभी डिजिटल मुद्राएं तेजी से आपस में जुड़ी हुई हैं।

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

img

जैसा कि हम ऊपर दिए गए चार्ट से देख सकते हैं, चीजें अधिक से अधिक दिलचस्प हो रही हैं।

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

अच्छा सवाल है, लेकिन सच्चाई यह है, मुझे यकीन नहीं है...

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

एक्सआरपी और एसटीआर की गहरी समझ

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

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

ठीक है, यह आपकी बारी है!

उपरोक्त स्पष्टीकरण काफी हद तक अटकलें हैं, और आप बेहतर कर सकते हैं। हमारे द्वारा रखी गई नींव के आधार पर, आपके पास डेटा में निहित कहानियों की खोज जारी रखने के सैकड़ों अलग-अलग तरीके हैं।

मेरे कुछ सुझाव निम्नलिखित हैं। पाठक इन दिशाओं में अनुसंधान का संदर्भ ले सकते हैंः

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

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


संबंधित

अधिक