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

लेखक:अच्छाई, बनाया गयाः 2019-08-16 10:37:23, अद्यतन किया गयाः 2023-10-19 21:04:20

img

एक डेटा-संचालित डिजिटल मुद्रा सट्टा विश्लेषण

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

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

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

img

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

पहला कदमः हमारे डेटा कार्य वातावरण का निर्माण

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

1.1 इन्वेटर क्वांटिफाइड होस्टिंग स्थापित करें और Anaconda सेट करें

  • आविष्कारक द्वारा क्वांटिफाइड ट्रस्ट सिस्टम

发明者量化平台FMZ.COM除了提供优质的各大主流交易所的数据源,还提供一套丰富的API接口以帮助我们在完成数据的分析后进行自动化交易。这套接口包括查询账户信息,查询各个主流交易所的高,开,低,收价格,成交量,各种常用技术分析指标等实用工具,特别是对于实际交易过程中连接各大主流交易所的公共API接口,提供了强大的技术支持。

इन सभी सुविधाओं को एक Docker-like system में पैक किया जाता है, जिसे हम अपने क्लाउड कंप्यूटिंग सेवाओं को खरीदने या किराए पर लेने के बाद Docker सिस्टम को तैनात कर सकते हैं।

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

यह एक बहुत ही दिलचस्प और उपयोगी लेख है, लेकिन यह एक बहुत ही दिलचस्प लेख है, और यह एक बहुत ही उपयोगी लेख है।https://www.fmz.com/bbs-topic/4140

जो लोग अपने स्वयं के क्लाउड सर्वर परिनियोजन प्रबंधक खरीदना चाहते हैं, वे इस लेख को देख सकते हैंःhttps://www.fmz.com/bbs-topic/2848

एक बार जब हम एक अच्छी क्लाउड सेवा और व्यवस्थापक प्रणाली को सफलतापूर्वक तैनात कर लेते हैं, तो अब हम पायथन के सबसे बड़े मंदिर को स्थापित करते हैं: एनाकोंडा।

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

चूंकि हम Anaconda को क्लाउड सर्विस पर इंस्टॉल करते हैं, इसलिए हम क्लाउड सर्वर को लिनक्स सिस्टम के लिए Anaconda के कमांड लाइन संस्करण को इंस्टॉल करने की सलाह देते हैं।

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

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

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

Anaconda को स्थापित करने के बाद, हमें अपने निर्भरता पैक को प्रबंधित करने के लिए एक नया वातावरण बनाने की आवश्यकता है। लिनक्स कमांड लाइन इंटरफ़ेस में, हम लिखते हैंः

conda create --name cryptocurrency-analysis python=3

हमारे प्रोजेक्ट के लिए एक नया Anaconda वातावरण बनाने के लिए।

अब, इनपुट करें

source activate cryptocurrency-analysis (linux/MacOS操作)
或者
activate cryptocurrency-analysis (windows操作系统)

इस माहौल को सक्रिय करने के लिए

अब, इनपुट करेंः

conda install numpy pandas nb_conda jupyter plotly

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

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

1.3 एक ज्यूपिटर नोटबुक बनाना

एक बार जब पर्यावरण और निर्भरता पैक स्थापित हो जाते हैं, तो चलें

jupyter notebook

आप अपने ब्राउज़र में 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 करना होगा और ऑफ़लाइन मोड को चालू करना होगा।

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

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

डेटा प्राप्त करने में आसानी के लिए, हमने एक फ़ंक्शन लिखा है जो Quandl () से डाउनलोड और सिंक्रनाइज़ करता है।quandl.com) के डेटा का उपयोग करता है. यह एक निः शुल्क वित्तीय डेटा इंटरफ़ेस है, जो विदेशों में बहुत लोकप्रिय है. आविष्कारक क्वांटिफिकेशन प्लेटफॉर्म भी एक समान डेटा इंटरफ़ेस प्रदान करता है, जो मुख्य रूप से वास्तविक समय में व्यापार करने के लिए उपयोग किया जाता है, क्योंकि यह लेख मुख्य रूप से डेटा विश्लेषण के लिए है, हम यहां क्वांडल डेटा का उपयोग करते हैं।

वास्तविक समय में, आप सीधे पायथन में GetTicker और GetRecords फ़ंक्शन को कॉल कर सकते हैं ताकि मूल्य डेटा प्राप्त किया जा सके। उनके उपयोग के बारे में देखेंःhttps://www.fmz.com/api

def get_quandl_data(quandl_id):
    # 下载和缓冲来自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 क्राकेन एक्सचेंज से डिजिटल मुद्रा मूल्य डेटा प्राप्त करें

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

# 获取Kraken比特币交易所的价格
btc_usd_price_kraken = get_quandl_data('BCHARTS/KRAKENUSD')

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

btc_usd_price_kraken.head()

इसके परिणामस्वरूपः

बीटीसी खुला उच्च कम बंद करना मात्रा (बीटीसी) मात्रा (मुद्रा) भारित मूल्य
2014-01-07 874.67040 892.06753 810.00000 810.00000 15.622378 13151.472844 841.835522
2014-01-08 810.00000 899.84281 788.00000 824.98287 19.182756 16097.329584 839.156269
2014-01-09 825.56345 870.00000 807.42084 841.86934 8.158335 6784.249982 831.572913
2014-01-10 839.99000 857.34056 817.00000 857.33056 8.024510 6780.220188 844.938794
2014-01-11 858.20000 918.05471 857.16554 899.84105 18.748285 16698.566929 890.671709

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

# 做出BTC价格的表格
btc_trace = go.Scatter(x=btc_usd_price_kraken.index, y=btc_usd_price_kraken['Weighted Price'])
py.iplot([btc_trace])

img

这里,我们用Plotly来完成可视化部分。相对于使用一些更成熟的Python数据可视化库,比如Matplotlib,用Plotly是一个不那么普遍的选择,但Plotly确实是一个不错的选择,因为它可以调用D3.js的充分交互式图表。这些图表有非常漂亮的默认设置,易于探索,而且非常方便嵌入到网页中。

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

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

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

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

चलो शुरू करते हैं, पहले प्रत्येक एक्सचेंज के डेटा को डाउनलोड करते हैं और इसे शब्दकोश प्रकारों से बने डेटा पैक में डालते हैं।

# 下载COINBASE,BITSTAMP和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)

अब, विभिन्न डेटासेटों के आधार पर सभी डेटासेटों को एक साथ एकीकृत करके, मूल्यवर्गों के साथ मूल्यवर्गों को क्रमबद्ध करें।

# 整合所有数据帧
btc_usd_datasets = merge_dfs_on_column(list(exchange_data.values()), list(exchange_data.keys()), 'Weighted Price')

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

btc_usd_datasets.tail()

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

बीटीसी BITSTAMP COINBASE आईटीबीआईटी क्रैकेन
2017-08-14 4210.154943 4213.332106 4207.366696 4213.257519
2017-08-15 4101.447155 4131.606897 4127.036871 4149.146996
2017-08-16 4193.426713 4193.469553 4190.104520 4187.399662
2017-08-17 4338.694675 4334.115210 4334.449440 4346.508031
2017-08-18 4182.166174 4169.555948 4175.440768 4198.277722

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

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'
        
    # 每个系列的表格跟踪
    trace_arr = []
    for index, series in enumerate(series_arr):
        trace = go.Scatter(
            x=series.index, 
            y=series, 
            name=label_arr[index],
            visible=visibility
        )
        
        # 为系列添加单独的轴
        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)

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

अब, हम आसानी से बिटकॉइन मूल्य डेटा का ग्राफ बना सकते हैं!

# 绘制所有BTC交易价格
df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange')

img

2.6 कुल मूल्य डेटा को साफ़ और जोड़ना

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

2012-2017 के दौरान, हम जानते हैं कि बिटकॉइन की कीमत कभी भी शून्य के बराबर नहीं थी, इसलिए हमने पहले डेटा बॉक्स से सभी शून्य हटा दिए।

# 清除"0"值
btc_usd_datasets.replace(0, np.nan, inplace=True)

एक बार जब हम डेटाबेस को फिर से बनाते हैं, तो हम अधिक स्पष्ट ग्राफ देख सकते हैं, बिना किसी डेटा की कमी के।

# 绘制修订后的数据框
df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange')

img

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

# 将平均BTC价格计算为新列
btc_usd_datasets['avg_btc_price_usd'] = btc_usd_datasets.mean(axis=1)

एक नई पंक्ति बिटकॉइन मूल्य सूचकांक है! हम इसे फिर से खींचते हैं ताकि यह जांच सकें कि क्या डेटा में कोई समस्या है।

# 绘制平均BTC价格
btc_trace = go.Scatter(x=btc_usd_datasets.index, y=btc_usd_datasets['avg_btc_price_usd'])
py.iplot([btc_trace])

img

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

तीसरा चरणः Altcoins की कीमतें इकट्ठा करें

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

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

सबसे पहले, हमने Poloniex Exchange के एपीआई का उपयोग करके डिजिटल मुद्रा लेनदेन के बारे में डेटा जानकारी प्राप्त की। हमने दो सहायक कार्यों को परिभाषित किया है जो कि ज़ेनो के लिए प्रासंगिक डेटा प्राप्त करते हैं, जो मुख्य रूप से एपीआई के माध्यम से 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

इसके बाद, हम एक नया फ़ंक्शन परिभाषित करते हैं जो Polonix API से 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') # 从2015年开始获取数据
end_date = datetime.now() # 直到今天
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 से लेनदेन मूल्य डेटा डाउनलोड करें

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

हम एथेरियम की कीमत तालिका के अंतिम पंक्तियों को देख सकते हैं कि डेटा सही है या नहीं।

altcoin_data['ETH'].tail()
ईटीएच खुला उच्च कम बंद करना मात्रा (बीटीसी) मात्रा (मुद्रा) भारित मूल्य
2017-08-18 0.070510 0.071000 0.070170 0.070887 17364.271529 1224.762684 0.070533
2017-08-18 0.071595 0.072096 0.070004 0.070510 26644.018123 1893.136154 0.071053
2017-08-18 0.071321 0.072906 0.070482 0.071600 39655.127825 2841.549065 0.071657
2017-08-19 0.071447 0.071855 0.070868 0.071321 16116.922869 1150.361419 0.071376
2017-08-19 0.072323 0.072550 0.071292 0.071447 14425.571894 1039.596030 0.072066

3.3 सभी मूल्य डेटा को डॉलर में एकीकृत करें

अब, हम बीटीसी और सिक्का विनिमय दर डेटा को हमारे बिटकॉइन मूल्य सूचकांक के साथ जोड़ सकते हैं ताकि प्रत्येक सिक्का की ऐतिहासिक कीमत (यूनिटः डॉलर) को सीधे गणना की जा सके।

# 将USD Price计算为每个altcoin数据帧中的新列
for altcoin in altcoin_data.keys():
    altcoin_data[altcoin]['price_usd'] =  altcoin_data[altcoin]['weightedAverage'] * btc_usd_datasets['avg_btc_price_usd']

यहां, हम प्रत्येक सिक्के के लिए डेटाबेस में एक नई कॉलम जोड़ते हैं, जो इसके संबंधित डॉलर मूल्य को संग्रहीत करता है।

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

# 将每个山寨币的美元价格合并为单个数据帧
combined_df = merge_dfs_on_column(list(altcoin_data.values()), list(altcoin_data.keys()), 'price_usd')

ठीक है!

अब हम एक साथ बिटकॉइन की कीमत को एक अंतिम टोकरी के रूप में जोड़ते हैं।

# 将BTC价格添加到数据帧
combined_df['BTC'] = btc_usd_datasets['avg_btc_price_usd']

अब हमारे पास एक अद्वितीय डेटा पैक है, जिसमें उन 10 डिजिटल मुद्राओं के दैनिक डॉलर मूल्य शामिल हैं जिन्हें हम सत्यापित कर रहे हैं।

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

img

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

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

3.4 प्रासंगिकता विश्लेषण शुरू करें

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

बेशक, आंकड़ों के आधार पर निष्कर्ष चित्रों के आधार पर अंतर्दृष्टि की तुलना में अधिक ठोस हैं।

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

2017.8.22 संशोधन नोटः इस भाग में संशोधन किया गया है ताकि संबंधित गुणांक की गणना में मूल्य के बजाय दैनिक रिटर्न दर का उपयोग किया जा सके।

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

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

# 计算2016年数字货币的皮尔森相关系数
combined_df_2016 = combined_df[combined_df.index.year == 2016]
combined_df_2016.pct_change().corr(method='pearson')
नाम डैश आदि ईटीएच एलटीसी एससी एसटीआर एक्सईएम एक्सएमआर एक्सआरपी बीटीसी
डैश 1.000000 0.003992 0.122695 -0.012194 0.026602 0.058083 0.014571 0.121537 0.088657 -0.014040
आदि 0.003992 1.000000 -0.181991 -0.131079 -0.008066 -0.102654 -0.080938 -0.105898 -0.054095 -0.170538
ईटीएच 0.122695 -0.181991 1.000000 -0.064652 0.169642 0.035093 0.043205 0.087216 0.085630 -0.006502
एलटीसी -0.012194 -0.131079 -0.064652 1.000000 0.012253 0.113523 0.160667 0.129475 0.053712 0.750174
एससी 0.026602 -0.008066 0.169642 0.012253 1.000000 0.143252 0.106153 0.047910 0.021098 0.035116
एसटीआर 0.058083 -0.102654 0.035093 0.113523 0.143252 1.000000 0.225132 0.027998 0.320116 0.079075
एक्सईएम 0.014571 -0.080938 0.043205 0.160667 0.106153 0.225132 1.000000 0.016438 0.101326 0.227674
एक्सएमआर 0.121537 -0.105898 0.087216 0.129475 0.047910 0.027998 0.016438 1.000000 0.027649 0.127520
एक्सआरपी 0.088657 -0.054095 0.085630 0.053712 0.021098 0.320116 0.101326 0.027649 1.000000 0.044161
बीटीसी -0.014040 -0.170538 -0.006502 0.750174 0.035116 0.079075 0.227674 0.127520 0.044161 1.000000

उपरोक्त चित्र में सभी संबंधित गुणक दिखाए गए हैं। 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')
नाम डैश आदि ईटीएच एलटीसी एससी एसटीआर एक्सईएम एक्सएमआर एक्सआरपी बीटीसी
डैश 1.000000 0.384109 0.480453 0.259616 0.191801 0.159330 0.299948 0.503832 0.066408 0.357970
आदि 0.384109 1.000000 0.602151 0.420945 0.255343 0.146065 0.303492 0.465322 0.053955 0.469618
ईटीएच 0.480453 0.602151 1.000000 0.286121 0.323716 0.228648 0.343530 0.604572 0.120227 0.421786
एलटीसी 0.259616 0.420945 0.286121 1.000000 0.296244 0.333143 0.250566 0.439261 0.321340 0.352713
एससी 0.191801 0.255343 0.323716 0.296244 1.000000 0.417106 0.287986 0.374707 0.248389 0.377045
एसटीआर 0.159330 0.146065 0.228648 0.333143 0.417106 1.000000 0.396520 0.341805 0.621547 0.178706
एक्सईएम 0.299948 0.303492 0.343530 0.250566 0.287986 0.396520 1.000000 0.397130 0.270390 0.366707
एक्सएमआर 0.503832 0.465322 0.604572 0.439261 0.374707 0.341805 0.397130 1.000000 0.213608 0.510163
एक्सआरपी 0.066408 0.053955 0.120227 0.321340 0.248389 0.621547 0.270390 0.213608 1.000000 0.170070
बीटीसी 0.357970 0.469618 0.421786 0.352713 0.377045 0.178706 0.366707 0.510163 0.170070 1.000000

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

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

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

img

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

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

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

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

एक्सआरपी और एसटीआर को गहराई से समझें

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

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

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

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

यहां कुछ सुझाव दिए गए हैं, जो पाठक इन दिशाओं में आगे की खोज के लिए देख सकते हैंः

  • पूरे विश्लेषण के लिए अधिक डिजिटल मुद्राओं के डेटा को जोड़ना
  • अनुकूलित या मोटे कणों के लिए रुझान दृश्य प्राप्त करने के लिए सहसंबंध विश्लेषण के समय सीमा और कणों को समायोजित करें।
  • ट्रेडिंग वॉल्यूम या ब्लॉकचेन डेटा से खनन करने के लिए रुझानों की तलाश करना। यदि आप मूल मूल्य डेटा की तुलना में भविष्य के मूल्य उतार-चढ़ाव का अनुमान लगाना चाहते हैं, तो आपको अधिक खरीद / बिक्री अनुपात डेटा की आवश्यकता हो सकती है।
  • शेयरों, वस्तुओं और कानूनी मुद्राओं पर मूल्य डेटा जोड़कर यह तय करें कि उनमें से कौन डिजिटल मुद्राओं से संबंधित है ((लेकिन, यह मत भूलो कि कहावत है कि यह संबंधित नहीं है)
  • ईवेंट रजिस्ट्री, जीडीईएलटी, और गूगल ट्रेंड्स का उपयोग करके किसी विशेष डिजिटल मुद्रा के बारे में गर्म शब्दों की संख्या को मापें।
  • डेटा का उपयोग करके भविष्यवाणी करने वाले मशीन लर्निंग मॉडल को कल की कीमतों का अनुमान लगाने के लिए प्रशिक्षित करें। यदि आप अधिक महत्वाकांक्षी हैं, तो आप यहां तक कि रीसाइक्लिंग न्यूरल नेटवर्क (RNN) के साथ उपरोक्त प्रशिक्षण का प्रयास करने पर विचार कर सकते हैं।
  • आपके विश्लेषण का उपयोग करके एक स्वचालित ट्रेडिंग रोबोट बनाया जाता है, जो एक उपयुक्त एपीआई (API) के माध्यम से, उदाहरण के लिए, Polonix या Coinbase जैसे एक्सचेंजों पर लागू होता है।这里推荐使用发明者量化平台FMZ.COM

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


संबंधित

अधिक

रुक्सियाओ1989बहुत उपयोगी लेख, मैंने सीखा, धन्यवाद।

अच्छाईआपके प्यार के लिए धन्यवाद!