كيف تتصرف أسواق البيتكوين؟ ما هي أسباب الارتفاع والانخفاض المفاجئ لأسعار العملات الرقمية؟ هل هناك اتصال وثيق لا ينفصل بين أسواق altcoin أم أنها مستقلة في الغالب عن بعضها البعض؟ كيف نتنبأ بما سيحدث في المستقبل؟
نهج تحليلي للمعلومات لمنطق العملة المشفرة
تكثر المقالات المخصصة للعملات المشفرة مثل Bitcoin و Ethereum في المنطق والنظريات. يجادل المئات من الخبراء الذين نصبوا أنفسهم بأنفسهم للاتجاهات التي يعتقدون أنها ستظهر أنفسهم قريبًا. ما يفتقر إليه العديد من هذه التحليلات بالتأكيد هو أساس متين في شكل بيانات وإحصاءات يمكن أن تدعم بعض العبارات.
الغرض من هذه المقالة هو تقديم مقدمة بسيطة لتحليل العملة المشفرة باستخدام Python. في ذلك ، سنلقي نظرة خطوة بخطوة على نص Python نصي بسيط لتلقي البيانات وتحليلها وتصورها على مختلف العملات المشفرة. في سياق العمل ، سوف نكتشف اتجاهًا مثيرًا للاهتمام في سلوك الأسواق المتقلبة ومعرفة التغييرات التي حدثت فيها.

لن يتم تخصيص هذه المشاركة لشرح ما هي العملات المشفرة (إذا كنت بحاجة إلى مثل هذا التفسير ، فإنني أوصيك بهذه
المراجعة الممتازة). لن تكون هناك مناقشة حول العملات المحددة التي سترتفع أو تنخفض في قيمتها. بدلاً من ذلك ، سيركز الدليل على الوصول إلى البيانات الخام الخام والعثور على التاريخ المخفي تحت طبقات من الأرقام.
المرحلة 1. نجهز مختبرنا
هذا الدليل مخصص لمجموعة واسعة من المتحمسين والمهندسين ومحترفي معالجة البيانات ، بغض النظر عن مستوى احترافهم. من المهارات ، ستحتاج فقط إلى فهم أساسي لـ Python والحد الأدنى من مهارات سطر الأوامر اللازمة لتكوين المشروع.
النسخة الكاملة للعمل المنجز وجميع نتائجه متوفرة
هنا .
1.1 تثبيت أناكوندا
أسهل طريقة لتثبيت التبعيات من الصفر لهذا المشروع هي استخدام Anaconda ، وهو نظام بيثون البيئي ومدير التبعية الذي يحتوي على جميع الحزم اللازمة للعمل مع البيانات وتحليلها.
لتثبيت أناكوندا ، أوصي باستخدام التعليمات الرسمية المتاحة
هنا .
إذا كنت مستخدمًا متقدمًا ، ولم تكن أناكوندا ترضيك ، فلا يلزم تثبيتها. في هذه الحالة ، أعتقد أنك لا تحتاج إلى مساعدة في تثبيت التبعيات اللازمة ، ويمكنك الانتقال مباشرة إلى المرحلة الثانية.1.2 إعداد بيئة المشروع في أناكوندا
بمجرد تثبيت Anaconda ، سنرغب في إنشاء بيئة جديدة لتنظيم العمل مع التبعيات.
أدخل الأمر
conda create --name cryptocurrency-analysis python=3
لإنشاء بيئة Anaconda جديدة
conda create --name cryptocurrency-analysis python=3
.
بعد ذلك ، أدخل
source activate cryptocurrency-analysis
و (على Linux / macOS) أو
activate cryptocurrency-analysis
(في Windows) لتنشيط البيئة.
وأخيرا ، فإن
conda install numpy pandas nb_conda jupyter plotly quandl
تثبيت التبعيات اللازمة في البيئة. قد تستغرق هذه العملية عدة دقائق.
لماذا نستخدم البيئة؟ إذا كنت تخطط للعمل في وقت واحد مع العديد من مشاريع Python على جهاز الكمبيوتر الخاص بك ، فمن المفيد وضع التبعيات (مكتبات البرامج والحزم) بشكل منفصل لتجنب التعارضات. ضمن كل مشروع ، تقوم أناكوندا بإنشاء دليل خاص للتبعيات في البيئة ، والذي يسمح لك بفصلها عن تبعيات المشاريع الأخرى وتنظيم العمل معها.1.3 إطلاق Jupyter Notebook Interactive Notebook
بمجرد تثبيت البيئة والتبعيات ، اكتب
jupyter notebook
في وحدة التحكم لبدء تشغيل iPython kernel وفتح الرابط
http: // localhost: 8888 / في المتصفح. أنشئ دفتر ملاحظات Python جديدًا ، للتحقق من أنه يستخدم نواة
Python [conda env:cryptocurrency-analysis]
.

1.4 استيراد التبعيات إلى أعلى دفتر الملاحظات
بمجرد أن ترى سجل Jupyter نظيفًا ، ستحتاج أولاً إلى استيراد التبعيات اللازمة.
import os import numpy as np import pandas as pd import pickle import quandl 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. الحصول على بيانات سعر البيتكوين
الآن بعد اكتمال جميع الإعدادات ، نحن جاهزون لبدء تلقي المعلومات للتحليل.
بادئ ذي بدء ، نحتاج إلى طلب بيانات سعر Bitcoin باستخدام
Bitcoin API Quandl المجاني .
2.1 تحديد وظيفة مساعد Quandl
للمساعدة في الحصول على البيانات ، سنحدد وظيفة تقوم بتنزيل مجموعات البيانات وتخزينها مؤقتًا من Quandl.
def get_quandl_data(quandl_id): '''Download and cache Quandl dataseries''' 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
لتحويل البيانات التي تم تنزيلها وحفظها في ملف ، سنستخدم
pickle
. سيؤدي ذلك إلى منع تنزيل البيانات نفسها مرة أخرى في كل مرة نقوم فيها بتشغيل البرنامج النصي. ستقوم الدالة بإرجاع البيانات كإطار بيانات
Pandas . إذا لم تكن على دراية بإطارات البيانات ، يمكنك تقديمها في شكل جداول بيانات قوية جدًا.
2.2 نأخذ بيانات الأسعار من بورصة Kraken
للبدء ، دعنا نسحب البيانات التاريخية حول سعر صرف Bitcoin من بورصة
Kraken .
# Pull Kraken BTC price exchange data btc_usd_price_kraken = get_quandl_data('BCHARTS/KRAKENUSD')
يمكننا التحقق من أول 5 صفوف من إطار البيانات باستخدام طريقة
head()
.
btc_usd_price_kraken.head()

بعد ذلك ، دعنا ننشئ رسمًا بيانيًا بسيطًا للتحقق المرئي السريع من صحة البيانات.
# Chart the BTC pricing data btc_trace = go.Scatter(x=btc_usd_price_kraken.index, y=btc_usd_price_kraken['Weighted Price']) py.iplot([btc_trace])

للتصور ،
يتم استخدام
Plotly هنا . يعد هذا نهجًا أقل تقليدية مقارنة بمكتبات التصور الأكثر موثوقية مثل
Python ، ولكن في رأيي ، يعتبر Plotly خيارًا ممتازًا ، لأنه يسمح لك بإنشاء رسومات تفاعلية بالكامل من خلال استخدام
D3.js. ونتيجة لذلك ، يمكنك الحصول على مخططات مرئية جميلة عند الإخراج بدون أي إعدادات. بالإضافة إلى ذلك ، يعتبر Plotly سهل التعلم ويمكن إدراج نتائجه بسهولة في صفحات الويب.
بالطبع ، يجب أن تتذكر دائمًا الحاجة إلى مقارنة التصورات الناتجة مع مخططات أسعار العملات المشفرة المتاحة للجمهور (على سبيل المثال ، على Coinbase) للتحقق الأساسي من موثوقية البيانات التي تم تنزيلها.2.3 طلب بيانات الأسعار من بورصات BTC الأخرى
ربما لاحظت اختلافات في هذه المجموعة: يتراجع الرسم البياني في عدة أماكن إلى الصفر ، خاصة في نهاية عام 2014 وبداية عام 2016. توجد هذه الانخفاضات في مجموعة بيانات Kraken ، ومن الواضح أننا لا نريد أن تنعكس في تحليل الأسعار النهائي.
إن طبيعة تبادلات البيتكوين هي التي تحدد الأسعار حسب العرض والطلب ، وبالتالي لا يمكن لأي من البورصات الحالية أن تدعي أن أسعارها تعكس السعر الحقيقي "المرجعي" الوحيد للبيتكوين. من أجل أخذ هذا العيب في الاعتبار ، وكذلك القضاء على تراجع السعر على الرسم البياني ، والذي يرجع على الأرجح إلى أخطاء فنية أو أخطاء في مجموعة البيانات ، سنقوم أيضًا بجمع البيانات من ثلاث تبادلات بيتكوين كبيرة أخرى لحساب مؤشر السعر الكلي لبيتكوين.
للبدء ، دعنا ننزل البيانات من كل تبادل في قاموس إطارات البيانات.
# Pull pricing data for 3 more BTC exchanges 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 الجمع بين جميع بيانات الأسعار في إطار بيانات واحد
بعد ذلك ، سنحدد وظيفة بسيطة تجمع بين الأعمدة المتشابهة لكل إطار بيانات في إطار مدمج جديد.
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)
الآن ، دعنا ندمج جميع إطارات البيانات استنادًا إلى عمود السعر المرجح.
# Merge the BTC price dataseries' into a single dataframe btc_usd_datasets = merge_dfs_on_column(list(exchange_data.values()), list(exchange_data.keys()), 'Weighted Price')
أخيرًا ، ألق نظرة على الأسطر الخمسة الأخيرة باستخدام طريقة
tail()
للتأكد من أن نتيجة عملنا تبدو طبيعية.
btc_usd_datasets.tail()

تبدو الأسعار كما هو متوقع: إنها في حدود مماثلة ، ولكن هناك اختلافات طفيفة بناءً على نسبة العرض / الطلب في كل تبادل فردي.
2.5 تصور مجموعات بيانات الأسعار
الخطوة المنطقية التالية هي تصور مقارنة مجموعات البيانات الناتجة. للقيام بذلك ، نحدد وظيفة مساعدة توفر القدرة على إنشاء رسم بياني يعتمد على إطار البيانات باستخدام أمر سطر واحد.
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' # Form Trace 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 seperate axis for 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)
من أجل الإيجاز ، لن أخوض في التفاصيل حول تشغيل وظيفة مساعدة. إذا كنت مهتمًا بمعرفة المزيد عنه ،
فراجع وثائق Pandas و
Plotly .
يمكننا بسهولة إنشاء رسم بياني لبيانات سعر البيتكوين.
# Plot all of the BTC exchange prices df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange')

2.6 تطهير ودمج بيانات الأسعار
يمكننا أن نرى أنه على الرغم من حقيقة أن جميع سلاسل البيانات الأربع تتصرف بنفس الطريقة تقريبًا ، إلا أن هناك العديد من الانحرافات عن القاعدة فيها والتي يجب التخلص منها.
دعنا نزيل جميع القيم الصفرية من الإطار ، لأننا نعلم أن سعر البيتكوين لم يكن صفرًا أبدًا خلال الفترة الزمنية التي نفكر فيها.
# Remove "0" values btc_usd_datasets.replace(0, np.nan, inplace=True)
بعد بناء الرسم البياني مرة أخرى ، نحصل على منحنى أكثر دقة ، دون أي انخفاضات حادة.
# Plot the revised dataframe 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])

نعم ، إنها تبدو جيدة. سنستخدم سلسلة الأسعار المجمعة في المستقبل لتحويل أسعار صرف العملات المشفرة الأخرى إلى الدولار الأمريكي.
المرحلة 3. الحصول على بيانات سعر عملة بديلة
الآن بعد أن أصبح لدينا سلسلة زمنية موثوقة لأسعار البيتكوين ، دعنا نطلب بعض البيانات للعملات المشفرة غير البيتكوين ، والتي تسمى غالبًا العملات البديلة.
3.1 تحديد الوظائف المساعدة للعمل مع Poloniex API
للحصول على بيانات altcoin ، سنستخدم
Poloniex API . ستساعدنا وظيفتان إضافيتان لتنزيل بيانات JSON وتخزينها التي تم تمريرها إلى واجهة برمجة التطبيقات هذه في التخزين المؤقت.
أولاً ، نحدد
get_json_data
، والذي سيؤدي إلى تنزيل بيانات JSON
get_json_data
مؤقتًا على عنوان URL المقدم.
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 إلى Poloniex API ، ثم تستدعي
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') # get data from the start of 2015 end_date = datetime.now() # up 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 تنزيل البيانات التجارية مع Poloniex
لا يمكن شراء معظم العملات البديلة مباشرة مقابل الدولار الأمريكي. للحصول عليها ، غالبًا ما يشتري الناس عملات البيتكوين ويتبادلونها مقابل العملات البديلة في البورصات. لذلك ، نقوم بتنزيل أسعار صرف BTC لكل عملة ونستخدم البيانات بسعر BTC لحساب تكلفة العملات البديلة بالدولار الأمريكي.
نقوم بتنزيل بيانات الأسهم لتسع
العملات المشفرة الأكثر شيوعًا -
Ethereum و
Litecoin و
Ripple و
Ethereum Classic و
Stellar و
Dashcoin و
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 و bitcoin.
مرة أخرى ، سوف نتحقق من الأسطر الخمسة الأخيرة من جدول أسعار Ethereum للتأكد من أن كل شيء على ما يرام.
altcoin_data['ETH'].tail()

3.3 تحويل الأسعار إلى الدولار الأمريكي
يمكننا الآن مقارنة البيانات المتعلقة بأزواج الأسعار مع مؤشر أسعار البيتكوين الخاص بنا للحصول مباشرة على البيانات التاريخية حول قيمة العملات البديلة بالدولار الأمريكي.
# Calculate USD Price as a new column in each altcoin dataframe for altcoin in altcoin_data.keys(): altcoin_data[altcoin]['price_usd'] = altcoin_data[altcoin]['weightedAverage'] * btc_usd_datasets['avg_btc_price_usd']
باستخدام هذا الرمز ، أنشأنا عمودًا جديدًا في إطار البيانات لكل altcoin مع أسعار العملات بالدولار.
علاوة على ذلك ، يمكننا إعادة استخدام الدالة
merge_dfs_on_column
المحددة سابقًا لإنشاء إطار بيانات يحتوي على أسعار الدولار لكل
merge_dfs_on_column
.
# Merge USD price of each altcoin into single dataframe combined_df = merge_dfs_on_column(list(altcoin_data.values()), list(altcoin_data.keys()), 'price_usd')
فقط هكذا. الآن ، دعنا نضيف أيضًا أسعار البيتكوين إلى العمود الأخير من إطار البيانات المدمج.
# Add BTC price to the dataframe combined_df['BTC'] = btc_usd_datasets['avg_btc_price_usd']
والآن لدينا إطار واحد يحتوي على أسعار الدولار اليومية للعملات المشفرة العشرة التي ندرسها.
دعنا
df_scatter
وظيفة
df_scatter
المحددة سابقًا لرسم رسم بياني مقارن لتغييرات أسعار
df_scatter
.
# Chart all of the altocoin prices df_scatter(combined_df, 'Cryptocurrency Prices (USD)', seperate_y_axis=False, y_axis_label='Coin Value (USD)', scale='log')

عظيم! يتيح لك الرسم البياني تقييم ديناميكيات أسعار الصرف لكل عملة مشفرة على مدى السنوات القليلة الماضية.
يرجى ملاحظة أننا نستخدم مقياس الإحداثي اللوغاريتمي ، لأنه يسمح لنا بتناسب جميع العملات على مخطط واحد. ولكن إذا كنت ترغب في ذلك ، يمكنك تجربة قيم معلمات مختلفة (مثل scale='linear'
) للنظر في البيانات من منظور مختلف.3.4 تحليل الارتباط
ربما لاحظت أن أسعار صرف العملات المشفرة ، على الرغم من قيمها وتقلباتها المختلفة تمامًا ، تبدو وكأن هناك بعض الارتباط بينهما. خاصة إذا نظرت إلى الفاصل الزمني بعد طفرة أغسطس ، حتى التقلبات الصغيرة تحدث مع رموز مختلفة كما لو كان متزامنًا.
لكن الهجاء القائم على التشابه الخارجي ليس أفضل من مجرد تخمين بسيط حتى نتمكن من دعمه بالبيانات الإحصائية.
يمكننا اختبار فرضية الارتباط الخاصة بنا باستخدام طريقة
corr()
من مجموعة Pandas ، باستخدامها لحساب معامل ارتباط Pearson لجميع أعمدة الإطار فيما يتعلق ببعضها البعض.
تصحيح بتاريخ 8/22/2017 - تم تعديل هذا الجزء من العمل. الآن ، لحساب معاملات الارتباط ، بدلاً من قيم السعر المطلقة ، يتم استخدام قيم النسبة المئوية للتغيرات اليومية.يمكن أن يؤدي حساب الارتباطات مباشرة بين السلاسل الزمنية غير الثابتة (مثل بيانات الأسعار الأولية) إلى نتائج متحيزة. سنقوم بتصحيح هذا العيب من خلال تطبيق طريقة
pct_change()
، التي تحول قيمة كل خلية إطار من قيمة مطلقة إلى نسبة مئوية من التغيير اليومي.
بادئ ذي بدء ، نحسب الارتباط في عام 2016.
# Calculate the pearson correlation coefficients for cryptocurrencies in 2016 combined_df_2016 = combined_df[combined_df.index.year == 2016] combined_df_2016.pct_change().corr(method='pearson')

الآن لدينا احتمالات في كل مكان. تشير القيم القريبة من 1 أو -1 إلى أنه يوجد بين السلاسل الزمنية ارتباط قوي إلى الأمام أو عكس ، على التوالي. تعني المعاملات القريبة من الصفر أن القيم لا ترتبط وتتغير بشكل مستقل عن بعضها البعض.
لتصور النتائج ، نحتاج إلى إنشاء وظيفة تصور مساعدة أخرى.
def correlation_heatmap(df, title, absolute_bounds=True): '''Plot a correlation heatmap for the entire dataframe''' heatmap = go.Heatmap( z=df.corr(method='pearson').as_matrix(), x=df.columns, y=df.columns, colorbar=dict(title='Pearson Coefficient'), ) layout = go.Layout(title=title) if absolute_bounds: heatmap['zmax'] = 1.0 heatmap['zmin'] = -1.0 fig = go.Figure(data=[heatmap], layout=layout) py.iplot(fig)
correlation_heatmap(combined_df_2016.pct_change(), "Cryptocurrency Correlations in 2016")

تشير الخلايا الحمراء الداكنة على الرسم البياني إلى وجود علاقة قوية (ومن الواضح أن كل من العملات ترتبط بنفسها قدر الإمكان) ، الأزرق الداكن - ارتباط عكسي قوي. تشير جميع الألوان الزرقاء والبرتقالية والرمادية والرملية بينهما إلى درجات مختلفة من الارتباط الضعيف أو غيابه.
ماذا يقول لنا هذا الرسم البياني؟ في الواقع ، يظهر أن العلاقة ذات الدلالة الإحصائية بين تقلبات الأسعار لمختلف العملات المشفرة في عام 2016 علاقة صغيرة.
والآن ، لاختبار فرضيتنا بأن العملات المشفرة أصبحت أكثر ارتباطًا في الأشهر الأخيرة ، دعنا نكرر نفس الاختبار باستخدام البيانات بالفعل لعام 2017.
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")

وهذه ملاحظة مثيرة للاهتمام إلى حد ما.
لماذا يحدث هذا؟
سؤال جيد. لا استطيع ان اقول بالتأكيد.
الفكرة الأولى التي تتبادر إلى الذهن: السبب هو أن صناديق التحوط قد بدأت مؤخراً في التداول علانية في أسواق العملات المشفرة. [
1 ] [
2 ] تمتلك هذه الصناديق مبالغ رأسمالية أكبر بكثير من المتداولين العاديين ، وإذا كانت تحمي نفسها من المخاطر عن طريق رش أموالها عبر العديد من العملات المشفرة واستخدام استراتيجيات تداول مماثلة لكل منها ، بناءً على المتغيرات المستقلة (كما تفعل ، على سبيل المثال ، في سوق الأسهم) ، فإن النتيجة المنطقية لهذا النهج قد تكون ظهور اتجاه لزيادة الارتباطات.
تحليل متعمق: XRP و STR
على سبيل المثال ، يؤكد أحد الاتجاهات بشكل غير مباشر على المنطق أعلاه. XRP (رمز Ripple المميز) هو الأقل ارتباطًا مع العملات البديلة الأخرى. ولكن هناك استثناء واحد ملحوظ - STR (رمز Stellar ، والرمز الرسمي يسمى "Lumens") ، والذي يبلغ معامل ارتباطه بـ XRP 0.62.
ومن المثير للاهتمام أن كل من Stellar و Ripple هما منصتان متماثلتان إلى حد ما في مجال التكنولوجيا المالية تهدف أنشطتهما إلى تبسيط عملية المدفوعات الدولية بين البنوك.
أرى وضعًا حقيقيًا جدًا حيث يستخدم بعض اللاعبين الأثرياء وصناديق التحوط استراتيجيات مماثلة لتداول الصناديق المستثمرة في Stellar و Ripple ، نظرًا لأن الخدمتين الكائنين خلف هذه الرموز متشابهتان جدًا في الطبيعة. قد يفسر هذا الافتراض سبب ارتباط XRP مع STR أكثر بكثير من العملات المشفرة الأخرى.
دورك
ومع ذلك ، هذا التفسير هو إلى حد كبير استنتاج المضاربة. ولكن ربما يمكنك القيام بعمل أفضل؟ يتيح لنا الأساس الذي وضعناه في هذا العمل مواصلة دراسة البيانات في مجموعة متنوعة من الاتجاهات.
إليك بعض الأفكار للتحقق:
- أضف بيانات لمزيد من العملات المشفرة للتحليل.
- تصحيح الإطار الزمني ودرجة تفاصيل تحليل الارتباط ، مع مراعاة الاتجاهات بمزيد من التفصيل ، أو العكس ، بعبارات أكثر عمومية.
- اتجاهات البحث في أحجام التداول و / أو مجموعات البيانات لتعدين blockchain. تعتبر نسب المبيعات / الشراء أكثر ملاءمة للتنبؤ بتقلبات الأسعار من بيانات الأسعار الأولية.
- أضف بيانات أسعار الأسهم والسلع والمواد الخام والعملات الورقية لمعرفة أي من هذه الأصول ترتبط بالعملات المشفرة. (ولكن تذكر دائمًا المثل القديم الجيد ، "الارتباط لا يعني السببية بعد").
- حدد مقدار الضجيج حول العملات الرقمية الفردية باستخدام Event Registry و GDELT و Google Trends .
- باستخدام التعلم الآلي ، قم بتدريب برنامج لتحليل البيانات للتنبؤ باتجاهات الأسعار. إذا سمح الطموح ، يمكنك حتى محاولة القيام بذلك مع شبكة عصبية متكررة.
- استخدم تحليلك لإنشاء متداول بوت آلي في مواقع مثل Poloniex و Coinbase باستخدام واجهات برمجة التطبيقات المناسبة. ولكن كن حذرًا: يمكن أن يحرمك روبوت التداول المحسن بشكل سريع من جميع الأموال المتاحة.
- شارك اكتشافاتك! أفضل ميزة للبيتكوين والعملات الرقمية الأخرى بشكل عام هي أن طبيعتها اللامركزية تجعلها أكثر حرية وديمقراطية ، مقارنة بأي أصول أخرى تقريبًا. , , , -.
HTML- python-
.
, , - , , , .
, , , - , . - ,
Github- .
, , , . , , , .
