রিসোর্স লোড হচ্ছে... লোডিং...

ডিজিটাল মুদ্রা বাজারের পরিমাণগত বিশ্লেষণ

লেখক:এফএমজেড-লিডিয়া, তৈরিঃ ২০২৩-০১-০৬ ১০ঃ২৮ঃ০১, আপডেটঃ ২০২৩-০৯-২০ ১০ঃ২৭ঃ২৭

img

ডিজিটাল মুদ্রা বাজারের পরিমাণগত বিশ্লেষণ

ডিজিটাল মুদ্রার জল্পনাপ্রসূত বিশ্লেষণের জন্য একটি ডেটা-চালিত পদ্ধতি

বিটকয়েনের দাম সম্পর্কে কী? ডিজিটাল মুদ্রার দাম বাড়ার এবং হ্রাস পাওয়ার কারণগুলি কী কী? বিভিন্ন আল্টকয়েনের বাজার মূল্যগুলি কি অবিচ্ছেদ্যভাবে সংযুক্ত বা মূলত স্বাধীন? আমরা কীভাবে ভবিষ্যদ্বাণী করতে পারি যে পরবর্তী কী হবে?

ডিজিটাল মুদ্রা, যেমন বিটকয়েন এবং ইথেরিয়াম সম্পর্কিত নিবন্ধগুলি এখন জল্পনা-কল্পনাতে পূর্ণ। শত শত স্ব-ঘোষিত বিশেষজ্ঞরা তারা প্রত্যাশিত প্রবণতার পক্ষে কথা বলছেন। এই বিশ্লেষণগুলির অনেকেরই অভাব রয়েছে মৌলিক তথ্য এবং পরিসংখ্যানগত মডেলগুলির জন্য একটি শক্ত ভিত্তি।

এই নিবন্ধটির লক্ষ্য পাইথন ব্যবহার করে ডিজিটাল মুদ্রা বিশ্লেষণের একটি সংক্ষিপ্ত ভূমিকা প্রদান করা। আমরা বিভিন্ন ডিজিটাল মুদ্রার ডেটা পুনরুদ্ধার, বিশ্লেষণ এবং দৃশ্যমান করার জন্য একটি সহজ পাইথন স্ক্রিপ্ট ব্যবহার করব। এই প্রক্রিয়ায়, আমরা এই ওঠানামাগুলির বাজার আচরণ এবং কীভাবে তারা বিকাশ করে তা আকর্ষণীয় প্রবণতা খুঁজে পাব।

img

এটি ডিজিটাল মুদ্রা ব্যাখ্যা করার একটি নিবন্ধ নয়, এটি কোন নির্দিষ্ট মুদ্রা বৃদ্ধি পাবে এবং কোনটি হ্রাস পাবে সে সম্পর্কে একটি মতামতও নয়। বিপরীতে, আমরা এই টিউটোরিয়ালে মূল তথ্য পেতে এবং সংখ্যাগুলিতে লুকানো গল্পটি খুঁজে পেতে মনোনিবেশ করছি।

ধাপ ১ঃ আমাদের ডেটা ওয়ার্কিং পরিবেশ সেটআপ করুন

এই টিউটোরিয়ালটি সমস্ত দক্ষতার স্তরের উত্সাহী, প্রকৌশলী এবং ডেটা সায়েন্টিস্টদের জন্য ডিজাইন করা হয়েছে। আপনি শিল্পের নেতা বা প্রোগ্রামিং শিক্ষানবিস কিনা, আপনার একমাত্র দক্ষতা পাইথন প্রোগ্রামিং ভাষার একটি মৌলিক বোঝার এবং কমান্ড লাইন অপারেশনগুলির পর্যাপ্ত জ্ঞান (একটি ডেটা সায়েন্স প্রকল্প সেট আপ করতে সক্ষম হওয়া যথেষ্ট) ।

1.1 FMZ কোয়ান্ট ডকার ইনস্টল করুন এবং Anaconda সেটআপ করুন

  • এফএমজেড কোয়ান্ট প্ল্যাটফর্মের ডকার সিস্টেম এফএমজেড কোয়ান্ট প্ল্যাটফর্মFMZ.COMএটি কেবলমাত্র প্রধান মূলধারার এক্সচেঞ্জগুলির জন্য উচ্চমানের ডেটা উত্স সরবরাহ করে না, তবে ডেটা বিশ্লেষণ সম্পন্ন করার পরে স্বয়ংক্রিয় লেনদেন সম্পাদন করতে আমাদের সহায়তা করার জন্য সমৃদ্ধ এপিআই ইন্টারফেসের একটি সেট সরবরাহ করে। এই ইন্টারফেসের সেটে ব্যবহারিক সরঞ্জামগুলি অন্তর্ভুক্ত রয়েছে, যেমন অ্যাকাউন্টের তথ্য অনুসন্ধান করা, উচ্চ, খোলা, নিম্ন, প্রাপ্তির মূল্য, ট্রেডিং ভলিউম এবং বিভিন্ন প্রধান মূলধারার এক্সচেঞ্জগুলির বিভিন্ন সাধারণভাবে ব্যবহৃত প্রযুক্তিগত বিশ্লেষণ সূচক অনুসন্ধান করা। বিশেষত, এটি প্রকৃত ট্রেডিং প্রক্রিয়ার প্রধান প্রধান মূলধারার এক্সচেঞ্জগুলিকে সংযুক্ত করে পাবলিক এপিআই ইন্টারফেসের জন্য শক্তিশালী প্রযুক্তিগত সহায়তা সরবরাহ করে।

উপরে উল্লিখিত সমস্ত বৈশিষ্ট্য একটি Docker-like সিস্টেমে encapsulated হয়। আমাদের যা করতে হবে তা হ'ল আমাদের নিজস্ব ক্লাউড কম্পিউটিং পরিষেবাগুলি কেনা বা ভাড়া নেওয়া এবং ডকার সিস্টেমটি স্থাপন করা।

FMZ Quant প্ল্যাটফর্মের আনুষ্ঠানিক নামে এই ডকার সিস্টেমকে ডকার সিস্টেম বলা হয়।

দয়া করে আমার আগের নিবন্ধটি দেখুন কিভাবে একটি ডকার এবং রোবট স্থাপন করবেনঃhttps://www.fmz.com/bbs-topic/9864.

যারা নিজের ক্লাউড কম্পিউটিং সার্ভার ক্রয় করতে চান তারা এই নিবন্ধটি দেখতে পারেনঃhttps://www.fmz.com/digest-topic/5711.

ক্লাউড কম্পিউটিং সার্ভার এবং ডকার সিস্টেম সফলভাবে স্থাপন করার পর, পরবর্তী আমরা পাইথন বর্তমান বৃহত্তম শিল্পকর্ম ইনস্টল করা হবেঃ Anaconda

এই নিবন্ধে প্রয়োজনীয় সমস্ত প্রাসঙ্গিক প্রোগ্রাম পরিবেশ (নির্ভরতা লাইব্রেরি, সংস্করণ পরিচালনা ইত্যাদি) বাস্তবায়ন করার জন্য, সবচেয়ে সহজ উপায় হ'ল অ্যানাকোন্ডা ব্যবহার করা। এটি একটি প্যাকেজড পাইথন ডেটা সায়েন্স বাস্তুতন্ত্র এবং নির্ভরতা লাইব্রেরি ম্যানেজার।

যেহেতু আমরা ক্লাউড সার্ভিসে অ্যানাকোন্ডা ইনস্টল করছি, তাই আমরা ক্লাউড সার্ভারে লিনাক্স সিস্টেম এবং অ্যানাকোন্ডার কমান্ড লাইন সংস্করণ ইনস্টল করার পরামর্শ দিচ্ছি।

Anaconda এর ইনস্টলেশন পদ্ধতির জন্য, অনুগ্রহ করে Anaconda এর অফিসিয়াল গাইড দেখুনঃhttps://www.anaconda.com/distribution/.

আপনি যদি একজন অভিজ্ঞ পাইথন প্রোগ্রামার হন এবং আপনি যদি মনে করেন যে আপনার অ্যানাকোন্ডা ব্যবহার করার দরকার নেই, তবে এটি কোনও সমস্যা নয়। আমি ধরে নেব যে প্রয়োজনীয় নির্ভরশীল পরিবেশ ইনস্টল করার সময় আপনার সাহায্যের প্রয়োজন নেই। আপনি সরাসরি এই বিভাগটি এড়িয়ে যেতে পারেন।

1.2 অ্যানাকন্ডার জন্য একটি ডেটা বিশ্লেষণ প্রকল্প পরিবেশ তৈরি করুন

একবার অ্যানাকোন্ডা ইনস্টল হয়ে গেলে, আমাদের নির্ভরশীল প্যাকেজগুলি পরিচালনা করার জন্য আমাদের একটি নতুন পরিবেশ তৈরি করতে হবে। লিনাক্স কমান্ড লাইন ইন্টারফেসে, আমরা ইনপুট করিঃ

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

এই প্রকল্পের জন্য প্রয়োজনীয় বিভিন্ন নির্ভরশীল প্যাকেজ ইনস্টল করার জন্য।

দ্রষ্টব্যঃ কেন Anaconda পরিবেশ ব্যবহার করবেন? আপনি যদি আপনার কম্পিউটারে অনেক পাইথন প্রকল্প চালানোর পরিকল্পনা করেন, তাহলে দ্বন্দ্ব এড়াতে বিভিন্ন প্রকল্পের নির্ভরশীল প্যাকেজগুলি (সফ্টওয়্যার লাইব্রেরি এবং প্যাকেজগুলি) আলাদা করা সহায়ক। Ananconda প্রতিটি প্রকল্পের নির্ভরশীল প্যাকেজগুলির জন্য একটি বিশেষ পরিবেশ ডিরেক্টরি তৈরি করবে, যাতে সমস্ত প্যাকেজগুলি সঠিকভাবে পরিচালিত এবং আলাদা করা যায়।

১.৩ একটি জুপিটার নোটবুক তৈরি করুন

পরিবেশ এবং নির্ভরশীল প্যাকেজ ইনস্টল করার পর, চালানঃ

jupyter notebook

আইপাইথন কার্নেল শুরু করতে, তারপর যানhttp://localhost:8888/আপনার ব্রাউজারের সাথে, একটি নতুন পাইথন নোটবুক তৈরি করুন, এটি ব্যবহার করে তা নিশ্চিত করুনঃ

Python [conda env:cryptocurrency-analysis]

কার্নেল

img

1.4 আমদানি নির্ভর প্যাকেজ

একটি খালি জুপিটার নোটবুক তৈরি করুন, এবং আমাদের প্রথম কাজটি করতে হবে প্রয়োজনীয় নির্ভরশীল প্যাকেজগুলি আমদানি করা।

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 থেকে তথ্য ডাউনলোড এবং সিঙ্ক্রোনাইজ করার জন্য একটি ফাংশন লিখতে হবে (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()

ফলাফল হল:

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 সম্পূর্ণ ইন্টারেক্টিভ চার্টগুলি কল করতে পারে। এই চার্টগুলিতে সুন্দর ডিফল্ট সেটিংস রয়েছে, যা অন্বেষণ করা সহজ এবং ওয়েব পৃষ্ঠায় এম্বেড করা খুব সহজ।

টিপসঃ উত্পন্ন চার্টটি ডাউনলোড করা ডেটা সাধারণভাবে সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করার জন্য দ্রুত অখণ্ডতা পরীক্ষা হিসাবে মূলধারার এক্সচেঞ্জগুলির বিটকয়েন মূল্য চার্টের সাথে তুলনা করা যেতে পারে (যেমন OKX, Binance বা Huobi এর চার্ট) ।

২.৩ প্রধানধারার বিটকয়েন এক্সচেঞ্জ থেকে মূল্যের তথ্য পান

সাবধান পাঠকরা হয়তো লক্ষ্য করেছেন যে উপরের ডেটাতে ডেটা অনুপস্থিত রয়েছে, বিশেষ করে ২০১৪ সালের শেষ এবং ২০১৬ সালের শুরুতে। বিশেষ করে ক্রাকেন এক্সচেঞ্জে, এই ধরণের ডেটা ক্ষতি বিশেষত সুস্পষ্ট। আমরা অবশ্যই আশা করি না যে এই অনুপস্থিত ডেটা মূল্য বিশ্লেষণকে প্রভাবিত করবে।

ডিজিটাল মুদ্রা বিনিময় বৈশিষ্ট্য হল যে সরবরাহ এবং চাহিদা সম্পর্ক মুদ্রা মূল্য নির্ধারণ করে। অতএব, কোন লেনদেনের মূল্য বাজারের মূলধারার মূল্য হতে পারে না। সমস্যা এবং তথ্য ক্ষতির সমস্যা সমাধানের জন্য সবেমাত্র উল্লিখিত (সম্ভবত প্রযুক্তিগত বিদ্যুৎ বিভ্রাট এবং ডেটা ত্রুটির কারণে) আমরা বিশ্বের তিনটি প্রধানধারার বিটকয়েন এক্সচেঞ্জ থেকে ডেটা ডাউনলোড করব এবং তারপরে গড় বিটকয়েন মূল্য গণনা করব।

আসুন প্রতিটি এক্সচেঞ্জের ডেটা ডাউনলোড করে শুরু করা যাক অভিধান টাইপগুলির সমন্বয়ে গঠিত ডেটা ফ্রেমে।

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

এখন, সমস্ত ডেটা ফ্রেম প্রতিটি ডেটা সেটের weighted price কলামের ভিত্তিতে একীভূত করা হয়।

# 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

উপরের টেবিল থেকে আমরা দেখতে পাচ্ছি যে এই তথ্যগুলি আমাদের প্রত্যাশার সাথে সামঞ্জস্যপূর্ণ, প্রায় একই ডেটা ব্যাপ্তির সাথে, তবে প্রতিটি বিনিময় বিলম্ব বা বৈশিষ্ট্যগুলির উপর ভিত্তি করে সামান্য ভিন্ন।

২.৫ দামের তথ্যের দৃশ্যমানতা প্রক্রিয়া

বিশ্লেষণ লজিকের দৃষ্টিকোণ থেকে, পরবর্তী পদক্ষেপটি হল ভিজ্যুয়ালাইজেশনের মাধ্যমে এই ডেটা তুলনা করা। এটি করার জন্য, আমাদের প্রথমে একটি সহায়ক ফাংশন সংজ্ঞায়িত করতে হবে। একটি চার্ট তৈরি করতে ডেটা ব্যবহার করার জন্য একটি একক লাইন কমান্ড সরবরাহ করে, আমরা এটিকে 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

২.৬ স্পষ্ট এবং সমষ্টিগত মূল্যের তথ্য

উপরের চার্ট থেকে দেখা যাচ্ছে যে, যদিও চারটি তথ্য সিরিজ প্রায় একই পথ অনুসরণ করে, তবুও কিছু অনিয়মিত পরিবর্তন রয়েছে। আমরা এই অনিয়মিত পরিবর্তনগুলি দূর করার চেষ্টা করব।

২০১২ থেকে ২০১৭ সালের মধ্যে, আমরা জানি যে বিটকয়েনের দাম কখনোই শূন্যের সমান ছিল না, তাই আমরা প্রথমে ডাটা ফ্রেমের সমস্ত শূন্য মান মুছে ফেলি।

# 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

মনে হচ্ছে কোন সমস্যা নেই। পরে, আমরা অন্যান্য ডিজিটাল মুদ্রা এবং ইউএসডি মধ্যে বিনিময় হার নির্ধারণ করার জন্য এই সমষ্টিগত মূল্য সিরিজ তথ্য ব্যবহার করা চালিয়ে যাবে।

ধাপ ৩ঃ আল্টকয়েনের দাম সংগ্রহ করুন

এখন পর্যন্ত, আমরা বিটকয়েন মূল্যের সময় সিরিজ তথ্য আছে। এরপরে, আসুন বিটকয়েন নন-ডিজিটাল মুদ্রা, অর্থাৎ, Altcoins এর কিছু তথ্য দেখুন। অবশ্যই, Altcoins শব্দটি কিছুটা হাইপারবল হতে পারে, তবে যতদূর বর্তমান ডিজিটাল মুদ্রার বিকাশের বিষয়ে, বাজার মূল্যের শীর্ষ দশটি (যেমন বিটকয়েন, ইথেরিয়াম, ইওএস, ইউএসডিটি ইত্যাদি) ব্যতীত, তাদের বেশিরভাগকে Altcoins বলা যেতে পারে। আমাদের ট্রেডিংয়ের সময় এই মুদ্রাগুলি থেকে দূরে থাকার চেষ্টা করা উচিত, কারণ তারা খুব বিভ্রান্তিকর এবং প্রতারণামূলক।

৩.১ পোলোনিক্স এক্সচেঞ্জের এপিআই এর মাধ্যমে সহায়ক ফাংশনগুলি সংজ্ঞায়িত করুন

প্রথমত, আমরা ডিজিটাল মুদ্রা লেনদেনের ডেটা তথ্য পেতে পোলোনিক্স এক্সচেঞ্জের এপিআই ব্যবহার করি। আমরা আল্টকয়েন সম্পর্কিত ডেটা পেতে দুটি সহায়ক ফাংশন সংজ্ঞায়িত করি। এই দুটি ফাংশন প্রধানত এপিআইগুলির মাধ্যমে জেএসওএন ডেটা ডাউনলোড এবং ক্যাশে করে।

প্রথমে, আমরা 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) বের করবে এবং দুটি মুদ্রার ঐতিহাসিক মূল্য ধারণকারী ডেটা ফ্রেমটি ফিরিয়ে দেবে।

৩.২ পোলোনিক্স থেকে লেনদেনের মূল্যের তথ্য ডাউনলোড করুন

বেশিরভাগ আল্টকয়েন সরাসরি ইউএসডিতে কেনা যায় না। এই ডিজিটাল মুদ্রাগুলি পাওয়ার জন্য, ব্যক্তিদের সাধারণত প্রথমে বিটকয়েন কিনতে হয়, এবং তারপরে তাদের মূল্য অনুপাত অনুযায়ী এগুলিকে আল্টকয়েনে রূপান্তর করতে হয়। অতএব, আমাদের প্রতিটি ডিজিটাল মুদ্রার বিনিময় হার বিটকয়েনে ডাউনলোড করতে হবে, এবং তারপরে বিদ্যমান বিটকয়েন মূল্যের ডেটা ব্যবহার করে এটি ইউএসডিতে রূপান্তর করতে হবে। আমরা শীর্ষ 9 ডিজিটাল মুদ্রার বিনিময় হার ডেটা ডাউনলোড করবঃ ইথেরিয়াম, লাইটকয়েন, রিপল, ইথেরিয়ামক্লাসিক, স্টেলার, ড্যাশ, সিয়াকয়েন, মোনেরো এবং এনইএম।

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

এখন, আমাদের কাছে একটি অভিধান রয়েছে যা ৯টি ডেটা ফ্রেম ধারণ করে, যার প্রত্যেকটিতে Altcoins এবং Bitcoin এর মধ্যে দৈনিক গড় মূল্যের ঐতিহাসিক তথ্য রয়েছে।

আমরা ইথেরিয়াম মূল্য টেবিলের শেষ কয়েকটা সারির মাধ্যমে তথ্য সঠিক কিনা তা নির্ধারণ করতে পারি।

altcoin_data['ETH'].tail()

img

৩.৩ সমস্ত মূল্যের তথ্যের মুদ্রা একক ইউএসডিতে একীভূত করা

এখন, আমরা বিটিসি এবং অল্টকয়েনের বিনিময় হারের তথ্যকে আমাদের বিটকয়েন মূল্য সূচকের সাথে একত্রিত করতে পারি প্রতিটি আল্টকয়েনের ঐতিহাসিক মূল্য (মার্কিন ডলারে) সরাসরি গণনা করতে।

# 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 মূল্য সংরক্ষণ করা যায়।

এরপরে, আমরা একটি সমন্বিত ডেটা ফ্রেম তৈরি করতে এবং প্রতিটি ডিজিটাল মুদ্রার ইউএসডি মূল্যকে সংহত করতে পূর্বে সংজ্ঞায়িত 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')

কাজ শেষ!

এখন আসুন বিটকয়েনের দাম যোগ করা যাক একত্রিত ডাটা ফ্রেমের শেষ কলাম হিসেবে।

# Add BTC price to data frame
combined_df['BTC'] = btc_usd_datasets['avg_btc_price_usd']

এখন আমাদের কাছে একটি অনন্য ডাটা ফ্রেম রয়েছে, যেটিতে আমরা যাচাই করা ১০টি ডিজিটাল মুদ্রার দৈনিক ডলার মূল্য রয়েছে।

আমরা আগের ফাংশনটিকে আবার df_scatter বলি, যা একটি চার্টের আকারে সমস্ত Altcoins এর মূল্য দেখায়।

img

এই চার্টটি আমাদের গত কয়েক বছরে প্রতিটি ডিজিটাল মুদ্রার বিনিময় মূল্যের পরিবর্তনের সম্পূর্ণ চিত্র দেখায়।

দ্রষ্টব্যঃ এখানে আমরা একই চার্টে সমস্ত ডিজিটাল মুদ্রার তুলনা করতে লগারিদমিক স্পেসিফিকেশন এর y-অক্ষ ব্যবহার করি। আপনি বিভিন্ন দৃষ্টিকোণ থেকে ডেটা বোঝার জন্য বিভিন্ন পরামিতি (যেমন স্কেল=রৈখিক) চেষ্টা করতে পারেন।

৩.৪ কোলেশন বিশ্লেষণ শুরু করুন

সতর্ক পাঠকরা হয়তো লক্ষ্য করেছেন যে ডিজিটাল মুদ্রার দামগুলি প্রাসঙ্গিক বলে মনে হচ্ছে, যদিও তাদের মুদ্রার মান ব্যাপকভাবে পরিবর্তিত হয় এবং অত্যন্ত অস্থির। বিশেষত ২০১৭ সালের এপ্রিল মাসে দ্রুত উত্থানের পর থেকে, এমনকি অনেক ছোট ওঠানামা সমান্তরালভাবে পুরো বাজারের ওঠানামা ঘটে বলে মনে হয়।

অবশ্যই, তথ্য দ্বারা সমর্থিত সিদ্ধান্তগুলি চিত্রের উপর ভিত্তি করে অন্তর্দৃষ্টিগুলির চেয়ে বেশি বিশ্বাসযোগ্য।

আমরা উপরের সংশ্লিষ্টতা অনুমানটি যাচাই করতে পান্ডাস corr (()) ফাংশন ব্যবহার করতে পারি। এই পরীক্ষার পদ্ধতিটি অন্য কলামের সাথে সম্পর্কিত ডেটা ফ্রেমের প্রতিটি কলামের পিয়ারসন সংশ্লিষ্টতা সহগ গণনা করে।

সংশোধনী নোট ২০১৭-৮-২২ঃ এই বিভাগটি সংশোধন করা হয়েছে যাতে সংশ্লিষ্ট কোয়ালিটি গণনা করার সময় মূল্যের পরম মূল্যের পরিবর্তে দৈনিক রিটার্ন রেট ব্যবহার করা হয়।

একটি অ-শক্ত সময় সিরিজের উপর ভিত্তি করে সরাসরি গণনা (যেমন অপরিশোধিত মূল্যের ডেটা) সংশ্লিষ্টতা সহগের বিচ্যুতি হতে পারে। এই সমস্যা সমাধানের জন্য, আমাদের সমাধানটি ডেটা ফ্রেমের প্রতিটি দামের পরম মানকে সংশ্লিষ্ট দৈনিক রিটার্ন রেটে রূপান্তর করতে pct_change (() পদ্ধতি ব্যবহার করা।

উদাহরণস্বরূপ, আসুন ২০১৬ সালে কেরলেশন কোয়ালিফিকেশন গণনা করি।

# 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

এখানে, গা dark় লাল মানটি শক্তিশালী সম্পর্ককে উপস্থাপন করে (প্রতিটি মুদ্রা স্পষ্টতই নিজের সাথে অত্যন্ত সম্পর্কিত), এবং গা dark় নীল মানটি বিপরীত সম্পর্ককে উপস্থাপন করে। মাঝের সমস্ত রঙ - হালকা নীল / কমলা / ধূসর / টাউনি - এর মান রয়েছে যা দুর্বল সম্পর্ক বা অ-সংযুক্তির বিভিন্ন ডিগ্রি উপস্থাপন করে।

এই চার্টটি আমাদের কী বলে? মূলত, এটি ২০১৬ সালে বিভিন্ন ডিজিটাল মুদ্রার দামের ওঠানামা দেখায়, সামান্য পরিসংখ্যানগতভাবে উল্লেখযোগ্য সম্পর্ক সহ।

এখন, আমাদের অনুমান যাচাই করার জন্য যে সাম্প্রতিক মাসগুলিতে ডিজিটাল মুদ্রার সম্পর্ক বৃদ্ধি পেয়েছে, আমরা একই পরীক্ষা পুনরাবৃত্তি করতে ২০১৭ সালের তথ্য ব্যবহার করব।

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

উপরের চার্ট থেকে আমরা দেখতে পাচ্ছি যে, বিষয়গুলো আরো বেশি আকর্ষণীয় হয়ে উঠছে।

কেন এমন হয়?

ভাল প্রশ্ন, কিন্তু সত্যটা হলো, আমি নিশ্চিত নই...

আমার প্রথম প্রতিক্রিয়া হ'ল হেজ ফান্ডগুলি সম্প্রতি ডিজিটাল মুদ্রা বাজারে প্রকাশ্যে ট্রেডিং শুরু করেছে। এই তহবিলগুলি সাধারণ ব্যবসায়ীদের তুলনায় অনেক বেশি মূলধন ধারণ করে। যখন কোনও তহবিল একাধিক ডিজিটাল মুদ্রার মধ্যে তার বিনিয়োগকৃত মূলধনকে হেজ করে, তখন এটি স্বতন্ত্র পরিবর্তনশীল (যেমন স্টক মার্কেট) অনুযায়ী প্রতিটি মুদ্রার জন্য অনুরূপ ট্রেডিং কৌশল ব্যবহার করে। এই দৃষ্টিকোণ থেকে, এই প্রবণতা বাড়ানোর প্রবণতা ঘটবে তা বোধগম্য।

এক্সআরপি এবং এসটিআর সম্পর্কে গভীরতর বোঝা

উদাহরণস্বরূপ, উপরের চার্ট থেকে এটা স্পষ্ট যে এক্সআরপি (রিপল টোকন) অন্যান্য ডিজিটাল মুদ্রার সাথে সবচেয়ে কম সম্পর্কযুক্ত। তবে একটি উল্লেখযোগ্য ব্যতিক্রম হল এসটিআর (স্টেলার টোকন, আনুষ্ঠানিকভাবে লুমেনস নামে পরিচিত), যার এক্সআরপি (করেলেশন সহগঃ 0.62) এর সাথে শক্তিশালী সম্পর্ক রয়েছে।

মজার বিষয় হল, স্টেলার এবং রিপল খুব অনুরূপ আর্থিক প্রযুক্তি প্ল্যাটফর্ম, যার লক্ষ্য উভয়ই ব্যাংকগুলির মধ্যে সীমান্ত-আন্তর্জাতিক স্থানান্তরের ক্লান্তিকর পদক্ষেপগুলি হ্রাস করা। এটি কল্পনাযোগ্য যে কিছু বড় খেলোয়াড় এবং হেজ ফান্ডগুলি স্টেলার এবং রিপলে তাদের বিনিয়োগের জন্য অনুরূপ ট্রেডিং কৌশল ব্যবহার করতে পারে, ব্লকচেইন পরিষেবাদি দ্বারা ব্যবহৃত টোকেনগুলির সাদৃশ্য বিবেচনা করে। সম্ভবত এই কারণেই এক্সআরপি অন্যান্য ডিজিটাল মুদ্রার তুলনায় এসটিআরের সাথে আরও প্রাসঙ্গিক।

আচ্ছা, তোমার পালা!

উপরের ব্যাখ্যাগুলো মূলত অনুমানমূলক, এবং আপনি আরও ভাল করতে পারেন। আমরা যে ভিত্তি স্থাপন করেছি তার উপর ভিত্তি করে, আপনার কাছে ডেটাতে থাকা গল্পগুলি অন্বেষণ চালিয়ে যাওয়ার শত শত ভিন্ন উপায় রয়েছে।

আমার কিছু পরামর্শ নিচে দেওয়া হল। পাঠকরা এই দিকগুলোতে গবেষণাটি দেখতে পারেন:

  • পুরো বিশ্লেষণে আরো ডিজিটাল মুদ্রার তথ্য যোগ করুন।
  • অপ্টিমাইজড বা রুক্ষ-ধানযুক্ত ট্রেন্ড ভিউ পাওয়ার জন্য সংশ্লিষ্টতা বিশ্লেষণের সময়সীমা এবং গ্রানুলারিটি সামঞ্জস্য করুন।
  • ট্রেডিং পরিমাণ বা ব্লকচেইন ডেটা মাইনিং থেকে প্রবণতা খুঁজুন। মূল মূল্যের ডেটার তুলনায়, আপনি যদি ভবিষ্যতের দামের ওঠানামা পূর্বাভাস দিতে চান তবে আপনার কেনা / বিক্রয় পরিমাণ অনুপাতের ডেটা আরও প্রয়োজন হতে পারে।
  • ডিজিটাল মুদ্রার জন্য কোনটি প্রাসঙ্গিক তা নির্ধারণ করতে স্টক, পণ্য এবং ফিয়াট মুদ্রার দামের তথ্য যুক্ত করুন (কিন্তু পুরানো প্রবাদটি ভুলে যাবেন না করলেশন কারণ বোঝায় না) ।
  • একটি নির্দিষ্ট ডিজিটাল মুদ্রার আশেপাশে হট শব্দ এর সংখ্যা পরিমাপ করতে ইভেন্ট রেজিস্ট্রি, জিডিইএলটি এবং গুগল ট্রেন্ডস ব্যবহার করুন।
  • যদি আপনি আরো উচ্চাভিলাষী হন, তাহলে আপনি উপরের প্রশিক্ষণের জন্য পুনরাবৃত্ত নিউরাল নেটওয়ার্ক (আরএনএন) ব্যবহার করার কথাও বিবেচনা করতে পারেন।
  • আপনার বিশ্লেষণ ব্যবহার করে একটি স্বয়ংক্রিয় ট্রেডিং রোবট তৈরি করুন, যা সংশ্লিষ্ট অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (এপিআই) এর মাধ্যমে Poloniex বা Coinbase এর এক্সচেঞ্জ ওয়েবসাইটে প্রয়োগ করা যেতে পারে। দয়া করে সতর্ক থাকুনঃ দুর্বল পারফরম্যান্সের একটি রোবট সহজেই আপনার সম্পদ তাত্ক্ষণিকভাবে ধ্বংস করতে পারে। FMZ Quant প্ল্যাটফর্ম (FMZ.COM) এখানে সুপারিশ করা হয়।

বিটকয়েন এবং সাধারণভাবে ডিজিটাল মুদ্রার সর্বোত্তম অংশ হ'ল তাদের বিকেন্দ্রীভূত প্রকৃতি, যা এটিকে অন্য যে কোনও সম্পদের তুলনায় আরও মুক্ত এবং গণতান্ত্রিক করে তোলে। আপনি আপনার বিশ্লেষণটি ওপেন সোর্স ভাগ করতে পারেন, সম্প্রদায়টিতে অংশ নিতে পারেন বা একটি ব্লগ লিখতে পারেন! আমি আশা করি আপনি ভবিষ্যতে কোনও জল্পনাপ্রসূত ডিজিটাল মুদ্রার নিবন্ধ পড়ার সময় স্ব-বিশ্লেষণের জন্য প্রয়োজনীয় দক্ষতা এবং ডায়ালেকটিকভাবে চিন্তা করার ক্ষমতা অর্জন করেছেন, বিশেষত ডেটা সমর্থন ছাড়াই সেই ভবিষ্যদ্বাণীগুলি। পড়ার জন্য ধন্যবাদ। যদি আপনার এই টিউটোরিয়াল সম্পর্কে কোনও মন্তব্য, পরামর্শ বা সমালোচনা থাকে তবে দয়া করে একটি বার্তা ছেড়ে দিনhttps://www.fmz.com/bbs.


সম্পর্কিত

আরো