বিটকয়েনের দাম সম্পর্কে কী? ডিজিটাল মুদ্রার দাম বাড়ার এবং হ্রাস পাওয়ার কারণগুলি কী কী? বিভিন্ন আল্টকয়েনের বাজার মূল্যগুলি কি অবিচ্ছেদ্যভাবে সংযুক্ত বা মূলত স্বাধীন? আমরা কীভাবে ভবিষ্যদ্বাণী করতে পারি যে পরবর্তী কী হবে?
ডিজিটাল মুদ্রা, যেমন বিটকয়েন এবং ইথেরিয়াম সম্পর্কিত নিবন্ধগুলি এখন জল্পনা-কল্পনাতে পূর্ণ। শত শত স্ব-ঘোষিত বিশেষজ্ঞরা তারা প্রত্যাশিত প্রবণতার পক্ষে কথা বলছেন। এই বিশ্লেষণগুলির অনেকেরই অভাব রয়েছে মৌলিক তথ্য এবং পরিসংখ্যানগত মডেলগুলির জন্য একটি শক্ত ভিত্তি।
এই নিবন্ধটির লক্ষ্য পাইথন ব্যবহার করে ডিজিটাল মুদ্রা বিশ্লেষণের একটি সংক্ষিপ্ত ভূমিকা প্রদান করা। আমরা বিভিন্ন ডিজিটাল মুদ্রার ডেটা পুনরুদ্ধার, বিশ্লেষণ এবং দৃশ্যমান করার জন্য একটি সহজ পাইথন স্ক্রিপ্ট ব্যবহার করব। এই প্রক্রিয়ায়, আমরা এই ওঠানামাগুলির বাজার আচরণ এবং কীভাবে তারা বিকাশ করে তা আকর্ষণীয় প্রবণতা খুঁজে পাব।
এটি ডিজিটাল মুদ্রা ব্যাখ্যা করার একটি নিবন্ধ নয়, এটি কোন নির্দিষ্ট মুদ্রা বৃদ্ধি পাবে এবং কোনটি হ্রাস পাবে সে সম্পর্কে একটি মতামতও নয়। বিপরীতে, আমরা এই টিউটোরিয়ালে মূল তথ্য পেতে এবং সংখ্যাগুলিতে লুকানো গল্পটি খুঁজে পেতে মনোনিবেশ করছি।
এই টিউটোরিয়ালটি সমস্ত দক্ষতার স্তরের উত্সাহী, প্রকৌশলী এবং ডেটা সায়েন্টিস্টদের জন্য ডিজাইন করা হয়েছে। আপনি শিল্পের নেতা বা প্রোগ্রামিং শিক্ষানবিস কিনা, আপনার একমাত্র দক্ষতা পাইথন প্রোগ্রামিং ভাষার একটি মৌলিক বোঝার এবং কমান্ড লাইন অপারেশনগুলির পর্যাপ্ত জ্ঞান (একটি ডেটা সায়েন্স প্রকল্প সেট আপ করতে সক্ষম হওয়া যথেষ্ট) ।
উপরে উল্লিখিত সমস্ত বৈশিষ্ট্য একটি 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/.
আপনি যদি একজন অভিজ্ঞ পাইথন প্রোগ্রামার হন এবং আপনি যদি মনে করেন যে আপনার অ্যানাকোন্ডা ব্যবহার করার দরকার নেই, তবে এটি কোনও সমস্যা নয়। আমি ধরে নেব যে প্রয়োজনীয় নির্ভরশীল পরিবেশ ইনস্টল করার সময় আপনার সাহায্যের প্রয়োজন নেই। আপনি সরাসরি এই বিভাগটি এড়িয়ে যেতে পারেন।
একবার অ্যানাকোন্ডা ইনস্টল হয়ে গেলে, আমাদের নির্ভরশীল প্যাকেজগুলি পরিচালনা করার জন্য আমাদের একটি নতুন পরিবেশ তৈরি করতে হবে। লিনাক্স কমান্ড লাইন ইন্টারফেসে, আমরা ইনপুট করিঃ
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]
কার্নেল
একটি খালি জুপিটার নোটবুক তৈরি করুন, এবং আমাদের প্রথম কাজটি করতে হবে প্রয়োজনীয় নির্ভরশীল প্যাকেজগুলি আমদানি করা।
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
টিপসঃ উত্পন্ন চার্টটি ডাউনলোড করা ডেটা সাধারণভাবে সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করার জন্য দ্রুত অখণ্ডতা পরীক্ষা হিসাবে মূলধারার এক্সচেঞ্জগুলির বিটকয়েন মূল্য চার্টের সাথে তুলনা করা যেতে পারে (যেমন 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)
এখন, সমস্ত ডেটা ফ্রেম প্রতিটি ডেটা সেটের
# 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')
উপরের চার্ট থেকে দেখা যাচ্ছে যে, যদিও চারটি তথ্য সিরিজ প্রায় একই পথ অনুসরণ করে, তবুও কিছু অনিয়মিত পরিবর্তন রয়েছে। আমরা এই অনিয়মিত পরিবর্তনগুলি দূর করার চেষ্টা করব।
২০১২ থেকে ২০১৭ সালের মধ্যে, আমরা জানি যে বিটকয়েনের দাম কখনোই শূন্যের সমান ছিল না, তাই আমরা প্রথমে ডাটা ফ্রেমের সমস্ত শূন্য মান মুছে ফেলি।
# 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])
মনে হচ্ছে কোন সমস্যা নেই। পরে, আমরা অন্যান্য ডিজিটাল মুদ্রা এবং ইউএসডি মধ্যে বিনিময় হার নির্ধারণ করার জন্য এই সমষ্টিগত মূল্য সিরিজ তথ্য ব্যবহার করা চালিয়ে যাবে।
এখন পর্যন্ত, আমরা বিটকয়েন মূল্যের সময় সিরিজ তথ্য আছে। এরপরে, আসুন বিটকয়েন নন-ডিজিটাল মুদ্রা, অর্থাৎ, 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¤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
উপরের ফাংশনটি ডিজিটাল মুদ্রার ম্যাচিং অক্ষর কোড (যেমন
বেশিরভাগ আল্টকয়েন সরাসরি ইউএসডিতে কেনা যায় না। এই ডিজিটাল মুদ্রাগুলি পাওয়ার জন্য, ব্যক্তিদের সাধারণত প্রথমে বিটকয়েন কিনতে হয়, এবং তারপরে তাদের মূল্য অনুপাত অনুযায়ী এগুলিকে আল্টকয়েনে রূপান্তর করতে হয়। অতএব, আমাদের প্রতিটি ডিজিটাল মুদ্রার বিনিময় হার বিটকয়েনে ডাউনলোড করতে হবে, এবং তারপরে বিদ্যমান বিটকয়েন মূল্যের ডেটা ব্যবহার করে এটি ইউএসডিতে রূপান্তর করতে হবে। আমরা শীর্ষ 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()
এখন, আমরা বিটিসি এবং অল্টকয়েনের বিনিময় হারের তথ্যকে আমাদের বিটকয়েন মূল্য সূচকের সাথে একত্রিত করতে পারি প্রতিটি আল্টকয়েনের ঐতিহাসিক মূল্য (মার্কিন ডলারে) সরাসরি গণনা করতে।
# 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 এর মূল্য দেখায়।
এই চার্টটি আমাদের গত কয়েক বছরে প্রতিটি ডিজিটাল মুদ্রার বিনিময় মূল্যের পরিবর্তনের সম্পূর্ণ চিত্র দেখায়।
দ্রষ্টব্যঃ এখানে আমরা একই চার্টে সমস্ত ডিজিটাল মুদ্রার তুলনা করতে লগারিদমিক স্পেসিফিকেশন এর 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')
উপরের চার্টটি সম্পর্কিত সহগ দেখায়। যখন সহগটি 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")
এখানে, গা dark় লাল মানটি শক্তিশালী সম্পর্ককে উপস্থাপন করে (প্রতিটি মুদ্রা স্পষ্টতই নিজের সাথে অত্যন্ত সম্পর্কিত), এবং গা dark় নীল মানটি বিপরীত সম্পর্ককে উপস্থাপন করে। মাঝের সমস্ত রঙ - হালকা নীল / কমলা / ধূসর / টাউনি - এর মান রয়েছে যা দুর্বল সম্পর্ক বা অ-সংযুক্তির বিভিন্ন ডিগ্রি উপস্থাপন করে।
এই চার্টটি আমাদের কী বলে? মূলত, এটি ২০১৬ সালে বিভিন্ন ডিজিটাল মুদ্রার দামের ওঠানামা দেখায়, সামান্য পরিসংখ্যানগতভাবে উল্লেখযোগ্য সম্পর্ক সহ।
এখন, আমাদের অনুমান যাচাই করার জন্য যে
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")
উপরের চার্ট থেকে আমরা দেখতে পাচ্ছি যে, বিষয়গুলো আরো বেশি আকর্ষণীয় হয়ে উঠছে।
ভাল প্রশ্ন, কিন্তু সত্যটা হলো, আমি নিশ্চিত নই...
আমার প্রথম প্রতিক্রিয়া হ'ল হেজ ফান্ডগুলি সম্প্রতি ডিজিটাল মুদ্রা বাজারে প্রকাশ্যে ট্রেডিং শুরু করেছে। এই তহবিলগুলি সাধারণ ব্যবসায়ীদের তুলনায় অনেক বেশি মূলধন ধারণ করে। যখন কোনও তহবিল একাধিক ডিজিটাল মুদ্রার মধ্যে তার বিনিয়োগকৃত মূলধনকে হেজ করে, তখন এটি স্বতন্ত্র পরিবর্তনশীল (যেমন স্টক মার্কেট) অনুযায়ী প্রতিটি মুদ্রার জন্য অনুরূপ ট্রেডিং কৌশল ব্যবহার করে। এই দৃষ্টিকোণ থেকে, এই প্রবণতা বাড়ানোর প্রবণতা ঘটবে তা বোধগম্য।
এক্সআরপি এবং এসটিআর সম্পর্কে গভীরতর বোঝা
উদাহরণস্বরূপ, উপরের চার্ট থেকে এটা স্পষ্ট যে এক্সআরপি (রিপল টোকন) অন্যান্য ডিজিটাল মুদ্রার সাথে সবচেয়ে কম সম্পর্কযুক্ত। তবে একটি উল্লেখযোগ্য ব্যতিক্রম হল এসটিআর (স্টেলার টোকন, আনুষ্ঠানিকভাবে
মজার বিষয় হল, স্টেলার এবং রিপল খুব অনুরূপ আর্থিক প্রযুক্তি প্ল্যাটফর্ম, যার লক্ষ্য উভয়ই ব্যাংকগুলির মধ্যে সীমান্ত-আন্তর্জাতিক স্থানান্তরের ক্লান্তিকর পদক্ষেপগুলি হ্রাস করা। এটি কল্পনাযোগ্য যে কিছু বড় খেলোয়াড় এবং হেজ ফান্ডগুলি স্টেলার এবং রিপলে তাদের বিনিয়োগের জন্য অনুরূপ ট্রেডিং কৌশল ব্যবহার করতে পারে, ব্লকচেইন পরিষেবাদি দ্বারা ব্যবহৃত টোকেনগুলির সাদৃশ্য বিবেচনা করে। সম্ভবত এই কারণেই এক্সআরপি অন্যান্য ডিজিটাল মুদ্রার তুলনায় এসটিআরের সাথে আরও প্রাসঙ্গিক।
উপরের ব্যাখ্যাগুলো মূলত অনুমানমূলক, এবং আপনি আরও ভাল করতে পারেন। আমরা যে ভিত্তি স্থাপন করেছি তার উপর ভিত্তি করে, আপনার কাছে ডেটাতে থাকা গল্পগুলি অন্বেষণ চালিয়ে যাওয়ার শত শত ভিন্ন উপায় রয়েছে।
আমার কিছু পরামর্শ নিচে দেওয়া হল। পাঠকরা এই দিকগুলোতে গবেষণাটি দেখতে পারেন:
বিটকয়েন এবং সাধারণভাবে ডিজিটাল মুদ্রার সর্বোত্তম অংশ হ'ল তাদের বিকেন্দ্রীভূত প্রকৃতি, যা এটিকে অন্য যে কোনও সম্পদের তুলনায় আরও মুক্ত এবং গণতান্ত্রিক করে তোলে। আপনি আপনার বিশ্লেষণটি ওপেন সোর্স ভাগ করতে পারেন, সম্প্রদায়টিতে অংশ নিতে পারেন বা একটি ব্লগ লিখতে পারেন! আমি আশা করি আপনি ভবিষ্যতে কোনও জল্পনাপ্রসূত ডিজিটাল মুদ্রার নিবন্ধ পড়ার সময় স্ব-বিশ্লেষণের জন্য প্রয়োজনীয় দক্ষতা এবং ডায়ালেকটিকভাবে চিন্তা করার ক্ষমতা অর্জন করেছেন, বিশেষত ডেটা সমর্থন ছাড়াই সেই ভবিষ্যদ্বাণীগুলি। পড়ার জন্য ধন্যবাদ। যদি আপনার এই টিউটোরিয়াল সম্পর্কে কোনও মন্তব্য, পরামর্শ বা সমালোচনা থাকে তবে দয়া করে একটি বার্তা ছেড়ে দিনhttps://www.fmz.com/bbs.