Sumber daya yang dimuat... Pemuatan...

Analisis kuantitatif pasar mata uang digital

Penulis:Kebaikan, Dibuat: 2019-08-16 10:37:23, Diperbarui: 2023-10-19 21:04:20

img

Metode analisis spekulasi mata uang digital yang didorong oleh data

Bagaimana harga Bitcoin berkinerja? Apa penyebab kenaikan dan penurunan harga mata uang digital? Apakah harga pasar dari berbagai koin yang berbeda terhubung secara tak terpisahkan atau sebagian besar independen? Bagaimana kita bisa memprediksi apa yang akan terjadi selanjutnya?

Artikel-artikel tentang mata uang digital seperti Bitcoin dan Ethereum sekarang penuh dengan spekulasi, dengan ratusan orang yang menyebut diri mereka ahli yang menganjurkan tren yang mereka harapkan; banyak dari analisis ini tidak memiliki dasar data dasar dan model statistik yang kuat.

Tujuan dari artikel ini adalah untuk memberikan pengenalan singkat tentang analisis mata uang digital menggunakan Python. Kami akan mencari, menganalisis, dan memvisualisasikan data dari berbagai mata uang digital melalui skrip Python sederhana. Dalam perjalanan, kami akan menemukan perilaku pasar yang berfluktuasi ini dan tren menarik tentang bagaimana mereka berkembang.

img

Ini bukan sebuah artikel yang menjelaskan mata uang digital, atau sebuah pandangan tentang mata uang tertentu yang akan naik dan yang akan turun. Sebaliknya, yang kita fokuskan dalam tutorial ini hanyalah mendapatkan data mentah dan menemukan cerita yang tersembunyi dalam angka.

Langkah 1: Membangun lingkungan kerja data kami

Tutorial ini dirancang untuk digunakan oleh para penggemar, insinyur, dan ilmuwan data dari semua tingkatan keterampilan. Tidak peduli apakah Anda seorang industri besar atau seorang programmer muda, satu-satunya keterampilan yang Anda butuhkan adalah pengetahuan dasar tentang bahasa pemrograman Python dan cukup pengetahuan tentang operasi baris perintah (untuk mengatur proyek ilmu data).

1.1 Menginstal Inventor Quantify Host dan Mengatur Anaconda

  • Sistem pengelola yang diukur oleh penemu

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

Semua fitur yang disebutkan di atas terbungkus ke dalam sistem yang mirip dengan Docker, dan yang harus kita lakukan adalah membeli atau menyewa layanan komputasi awan kami sendiri dan kemudian mengimplementasikan sistem Docker ini.

Dalam nama resmi platform kuantitatif penemu, sistem Docker ini disebut sistem host.

Untuk informasi lebih lanjut tentang cara mengimplementasikan administrator dan robot, lihat artikel saya sebelumnya:https://www.fmz.com/bbs-topic/4140

Untuk pembaca yang ingin membeli host yang mendistribusikan server cloud mereka sendiri, baca artikel ini:https://www.fmz.com/bbs-topic/2848

Setelah berhasil menerapkan layanan cloud dan sistem administrator, selanjutnya kita akan menginstal python terbesar saat ini: Anaconda.

Untuk menerapkan semua lingkungan program yang diperlukan untuk artikel ini (dependencies, version management, dll.), cara termudah adalah dengan menggunakan Anaconda. Ini adalah ekosistem ilmu data Python yang dikemas dan manajer repositori dependen.

Karena kami menginstal Anaconda pada layanan cloud, kami merekomendasikan server cloud untuk menginstal versi Anaconda pada sistem Linux dengan baris perintah.

Untuk cara menginstal Anaconda, lihat panduan resmi Anaconda:https://www.anaconda.com/distribution/

Jika Anda seorang programmer Python berpengalaman dan merasa tidak perlu menggunakan Anaconda, itu tidak masalah sama sekali. Saya akan berasumsi Anda tidak perlu bantuan dalam menginstal dependensi yang diperlukan, Anda bisa langsung melompat ke bagian kedua.

1.2 Membuat lingkungan proyek analisis data Anaconda

Setelah Anaconda diinstal, kita perlu membuat lingkungan baru untuk mengelola paket ketergantungan kita.

conda create --name cryptocurrency-analysis python=3

Untuk membuat lingkungan Anaconda baru untuk proyek kami.

Kemudian, masukkan

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

Untuk mengaktifkan lingkungan ini.

Setelah itu, masukkan:

conda install numpy pandas nb_conda jupyter plotly

Untuk menginstal proyek ini, Anda harus menggunakan berbagai dependen.

Catatan: Mengapa menggunakan lingkungan Anaconda? Jika Anda berencana untuk menjalankan banyak proyek Python di komputer Anda, pemisahan paket ketergantungan dari proyek yang berbeda (publikasi perangkat lunak dan paket) untuk menghindari konflik sangat membantu.

1.3 Membuat notebook Jupiter

Setelah lingkungan dan paket ketergantungan sudah diinstal, berjalan

jupyter notebook

Untuk memulai kernel iPython, gunakan browser Anda untuk mengakses http://localhost:8888/Untuk membuat notebook Python baru, pastikan untuk menggunakan:

Python [conda env:cryptocurrency-analysis]

Nuklir

img

1.4 Mengimpor paket ketergantungan

Setelah membuat notebook Jupyter yang kosong, hal pertama yang harus kita lakukan adalah mengimpor paket ketergantungan yang kita inginkan.

import os
import numpy as np
import pandas as pd
import pickle
from datetime import datetime

Kita juga perlu mengimpor Plotly dan mengaktifkan mode offline.

import plotly.offline as py
import plotly.graph_objs as go
import plotly.figure_factory as ff
py.init_notebook_mode(connected=True)

Langkah 2: Dapatkan informasi harga mata uang digital

Setelah persiapan selesai, sekarang kita bisa mulai mendapatkan data yang akan dianalisis. Pertama, kita akan mendapatkan data harga Bitcoin dengan menggunakan antarmuka API dari inventor untuk mengukur platform.

Ini akan menggunakan fungsi GetTicker, untuk detail tentang penggunaan kedua fungsi ini, lihat:https://www.fmz.com/api

2.1 Menulis fungsi Quandl untuk mengumpulkan data

Untuk memudahkan pengambilan data, kita harus menulis sebuah fungsi untuk mengunduh dan menyinkronkan data dari Quandl.quandl.comIni adalah antarmuka data keuangan gratis yang sangat terkenal di luar negeri. Platform kuantitatif penemu juga menyediakan antarmuka data serupa, terutama untuk digunakan saat perdagangan real-time, karena artikel ini terutama untuk analisis data, di sini kita menggunakan data Quandl.

Pada saat perdagangan real-time, Anda dapat langsung memanggil fungsi GetTicker dan GetRecords di Python untuk mendapatkan data harga. Untuk penggunaan mereka, lihat: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

Fungsi ini akan mengembalikan data dalam format Dataframe Panda. Jika Anda tidak begitu akrab dengan konsep dataframe, Anda dapat membayangkan itu sebagai bentuk Excel yang kuat.

2.2 Mendapatkan data harga mata uang digital dari Kraken

Jika kita menggunakan bursa Bitcoin Kraken sebagai contoh, kita akan mulai dengan harga Bitcoin yang diperolehnya.

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

Untuk melihat lima baris pertama dari kotak data, gunakan metode head ().

btc_usd_price_kraken.head()

Hasilnya adalah:

BTC Buka Tinggi Rendah Dekat Volume (BTC) Volume (Mata Uang) Harga Tertimbang
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

Selanjutnya, kita akan membuat tabel sederhana untuk memverifikasi kebenaran data dengan metode visualisasi.

# 做出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的充分交互式图表。这些图表有非常漂亮的默认设置,易于探索,而且非常方便嵌入到网页中。

Petunjuk: Anda dapat membandingkan grafik yang dihasilkan dengan grafik harga Bitcoin dari bursa utama (seperti grafik di OKEX, Binance atau Huobi) sebagai pemeriksaan integritas cepat untuk memastikan bahwa data yang diunduh secara umum konsisten.

2.3 Mendapatkan data harga dari bursa Bitcoin utama

Pembaca yang berhati-hati mungkin telah memperhatikan bahwa data di atas tidak memiliki data, terutama pada akhir 2014 dan awal 2016; terutama di Kraken. Kami tentu tidak ingin data yang hilang mempengaruhi analisis harga.

Pertukaran mata uang digital memiliki karakteristik bahwa harga mata uang ditentukan oleh hubungan pasokan dan permintaan. Oleh karena itu, tidak ada harga transaksi yang dapat menjadi harga utama pasar. Untuk mengatasi masalah ini, dan masalah hilangnya data yang baru saja disebutkan (mungkin karena gangguan teknis dan kesalahan data), kami akan men-download data dari tiga bursa bitcoin utama di dunia dan kemudian menghitung harga bitcoin rata-rata.

Mari kita mulai dengan mengunduh data dari masing-masing bursa ke dalam kumpulan data yang terdiri dari jenis kamus.

# 下载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 Mengintegrasikan semua data ke dalam satu datapak

Selanjutnya, kita akan mendefinisikan fungsi khusus yang menggabungkan kolom yang dibagikan di setiap kolom data menjadi satu kolom data baru. Mari kita sebut fungsi ini 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)

Sekarang, selaraskan semua data yang ada di dalam satu dataset dengan harga perkalian berdasarkan dataset yang berbeda.

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

Akhirnya, kami menggunakan metode penjumlahan untuk melihat lima baris terakhir data setelah penggabungan untuk memastikan data benar dan lengkap.

btc_usd_datasets.tail()

Hasilnya adalah:

BTC BITSTAMP COINBASE ITBIT KRAKEN
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

Dari tabel di atas, Anda dapat melihat bahwa data ini sesuai dengan harapan kami, dengan rentang data yang hampir sama, hanya sedikit berbeda berdasarkan keterlambatan atau karakteristik masing-masing bursa.

2.5 Proses visualisasi data harga

Dari logika analitik, langkah selanjutnya adalah membandingkan data ini dengan visualisasi. Untuk ini, kita perlu mendefinisikan fungsi tambahan terlebih dahulu, dengan memberikan perintah satu baris untuk membuat grafik dengan data, mari kita sebut fungsi 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)

Untuk memudahkan Anda memahami, artikel ini tidak akan membahas terlalu banyak tentang prinsip-prinsip logis dari fungsi bantu ini. Untuk informasi lebih lanjut, lihat dokumen panduan resmi Pandas dan Plotly.

Sekarang, kita dapat dengan mudah membuat grafik dari data harga Bitcoin!

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

img

2.6 Menghilangkan dan menambahkan data harga total

Dari grafik di atas dapat dilihat bahwa meskipun keempat rangkaian data mengikuti jalur yang hampir sama, ada beberapa perubahan yang tidak teratur di dalamnya, dan kami akan berusaha membersihkan perubahan yang tidak teratur tersebut.

Selama periode 2012-2017, kita tahu bahwa harga Bitcoin tidak pernah sama dengan nol, jadi kita menghapus semua nol dari kotak data terlebih dahulu.

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

Setelah mengkonstruksikan kembali dataset, kita bisa melihat grafik yang lebih jelas tanpa kehilangan data.

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

img

Kami sekarang dapat menghitung kolom baru: harga rata-rata bitcoin harian di semua bursa.

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

Kolom baru adalah indeks harga Bitcoin! Kami menggambarnya lagi untuk memeriksa apakah data itu terlihat bermasalah.

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

img

Tampaknya tidak ada masalah, dan nanti kita akan terus menggunakan data deret harga yang dijumlahkan ini untuk dapat menentukan nilai tukar pertukaran antara mata uang digital lainnya dan dolar.

Langkah 3: Mengumpulkan harga altcoin

Sejauh ini, kita sudah memiliki data urutan waktu harga Bitcoin. Selanjutnya kita akan melihat beberapa data dari mata uang digital non-Bitcoin, yaitu mata uang kripto (Altcoins), tentu saja, kata kripto mungkin sedikit berlebihan, tetapi untuk perkembangan mata uang digital saat ini, selain yang berada di posisi 10 teratas (seperti Bitcoin, Ethereum, EOS, USDT, dll.), sebagian besar dapat disebut kripto tidak masalah, kita harus menjauhinya saat berdagang karena mereka terlalu membingungkan dan menipu.

3.1 Fungsi bantu didefinisikan melalui API Poloniex

Pertama, kami menggunakan API Poloniex untuk mendapatkan informasi data dari transaksi mata uang digital. Kami mendefinisikan dua fungsi tambahan untuk mendapatkan data yang terkait dengan bitcoin, yang terutama memuat dan menyimpan data JSON melalui API.

Pertama, kita mendefinisikan fungsi get_json_data, yang akan men-download dan menyimpan data JSON dari URL yang diberikan.

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

Selanjutnya, kita mendefinisikan fungsi baru yang akan menghasilkan permintaan HTTP dari API Poloniex dan memanggil fungsi get_json_data yang baru saja didefinisikan untuk menyimpan hasil data yang dipanggil.

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

Fungsi di atas akan mengekstrak kode karakter pasangan mata uang digital (misalnya binary BTC_ETH binary) dan mengembalikan data binary yang berisi dua harga sejarah mata uang.

3.2 Mengunduh data harga transaksi dari Poloniex

Sebagian besar Bitcoin tidak dapat dibeli secara langsung dengan dolar AS, dan individu yang ingin mendapatkan cryptocurrency ini biasanya harus membeli Bitcoin terlebih dahulu, dan kemudian menukarnya menjadi Bitcoin berdasarkan rasio harga mereka. Oleh karena itu, kita harus mengunduh nilai tukar Bitcoin untuk setiap cryptocurrency, dan kemudian mengkonversi ke dolar menggunakan data harga Bitcoin yang ada.

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

Saat ini, kami memiliki sebuah kamus yang berisi 9 data stack, masing-masing berisi data harga rata-rata harian antara Bitcoin dan Bitcoin.

Kami dapat menilai apakah data tersebut benar dengan melihat beberapa baris terakhir dari tabel harga Ethereum.

altcoin_data['ETH'].tail()
ETH Buka Tinggi Rendah Dekat Volume (BTC) Volume (Mata Uang) Harga Tertimbang
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 Menggabungkan semua data harga dalam satuan mata uang dolar AS

Saat ini, kita dapat menggabungkan data BTC dengan nilai tukar Bitcoin dengan indeks harga Bitcoin kami untuk menghitung harga historis masing-masing Bitcoin secara langsung (unit: USD).

# 将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']

Di sini, kami menambahkan kolom baru untuk setiap kotak data koin untuk menyimpan harga dolar yang sesuai.

Selanjutnya, kita dapat menggunakan kembali fungsi merge_dfs_on_column yang telah didefinisikan sebelumnya untuk membangun data stack yang tergabung, mengintegrasikan harga dolar dari setiap mata uang digital.

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

Ini sudah selesai!

Sekarang mari kita tambahkan harga Bitcoin sebagai titik akhir pada data yang digabungkan.

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

Sekarang kami memiliki dataset unik yang berisi harga dolar harian dari 10 mata uang digital yang sedang kami verifikasi.

Kami memanggil kembali fungsi df_scatter sebelumnya untuk menampilkan harga yang sesuai untuk semua koin yang beredar dalam bentuk grafik.

img

Diagram ini menunjukkan kepada kita gambaran keseluruhan tentang perubahan harga setiap mata uang digital dalam beberapa tahun terakhir.

Catatan: Di sini kita menggunakan y-axis dari spesifikasi logaritma untuk membandingkan semua mata uang digital pada gambar yang sama. Anda juga dapat mencoba nilai parameter lain yang berbeda (misalnya scale=linear) yang dapat memahami data dari perspektif yang berbeda.

3.4 Memulai analisa relevansi

Pembaca yang berhati-hati mungkin telah memperhatikan bahwa harga mata uang digital tampaknya terkait, meskipun mereka memiliki perbedaan besar dalam nilai mata uang mereka, dan mereka sangat volatile. Terutama sejak kenaikan pesat pada bulan April 2017, bahkan banyak fluktuasi kecil tampaknya terjadi bersamaan dengan fluktuasi pasar secara keseluruhan.

Tentu saja, kesimpulan yang didukung oleh data lebih meyakinkan daripada intuisi berdasarkan gambar.

Kita dapat menggunakan fungsi Pandas untuk memverifikasi asumsi korelasi di atas. Alat pengujian ini menghitung koefisien korelasi Pearson yang sesuai untuk setiap batang data lain.

2017.8.22 Modifikasi: Perubahan pada bagian ini adalah untuk menggunakan nilai absolut dari nilai pengembalian harian dan bukan harga saat menghitung faktor terkait.

Perhitungan langsung berdasarkan serangkaian waktu non-statis (misalnya data harga mentah) dapat menyebabkan deviasi koefisien korelasi. Untuk masalah ini, solusi kami adalah menggunakan metode pct_change (), yang mengubah nilai absolut dari setiap harga dalam heap data menjadi tingkat pengembalian harian yang sesuai.

Sebagai contoh, mari kita hitung koefisien yang terkait pada tahun 2016.

# 计算2016年数字货币的皮尔森相关系数
combined_df_2016 = combined_df[combined_df.index.year == 2016]
combined_df_2016.pct_change().corr(method='pearson')
Nama DASH ETC ETH LTC SC STR XEM XMR XRP BTC
DASH 1.000000 0.003992 0.122695 -0.012194 0.026602 0.058083 0.014571 0.121537 0.088657 -0.014040
ETC 0.003992 1.000000 -0.181991 -0.131079 -0.008066 -0.102654 -0.080938 -0.105898 -0.054095 -0.170538
ETH 0.122695 -0.181991 1.000000 -0.064652 0.169642 0.035093 0.043205 0.087216 0.085630 -0.006502
LTC -0.012194 -0.131079 -0.064652 1.000000 0.012253 0.113523 0.160667 0.129475 0.053712 0.750174
SC 0.026602 -0.008066 0.169642 0.012253 1.000000 0.143252 0.106153 0.047910 0.021098 0.035116
STR 0.058083 -0.102654 0.035093 0.113523 0.143252 1.000000 0.225132 0.027998 0.320116 0.079075
XEM 0.014571 -0.080938 0.043205 0.160667 0.106153 0.225132 1.000000 0.016438 0.101326 0.227674
XMR 0.121537 -0.105898 0.087216 0.129475 0.047910 0.027998 0.016438 1.000000 0.027649 0.127520
XRP 0.088657 -0.054095 0.085630 0.053712 0.021098 0.320116 0.101326 0.027649 1.000000 0.044161
BTC -0.014040 -0.170538 -0.006502 0.750174 0.035116 0.079075 0.227674 0.127520 0.044161 1.000000

Gambar di atas menunjukkan semua koefisien yang terkait. Koefisien yang mendekati 1 atau-1, masing-masing, berarti bahwa urutan ini terkait positif atau terbalik, dan koefisien yang terkait mendekati 0 menunjukkan bahwa objek yang terkait tidak terkait, dan fluktuasi mereka independen satu sama lain.

Untuk menampilkan hasil visualisasi yang lebih baik, kami membuat fitur bantuan visualisasi baru.

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

Di sini, nilai merah gelap mewakili korelasi yang kuat (setiap mata uang jelas terkait dengan ketinggian mereka sendiri), dan nilai biru gelap menunjukkan korelasi terbalik. Semua warna di antara - biru muda / ungu / abu-abu / coklat - memiliki nilai yang berbeda yang mewakili korelasi lemah atau tidak terkait.

Pada dasarnya, ini menunjukkan bahwa harga berbagai mata uang digital mengalami fluktuasi selama tahun 2016 dengan hampir tidak ada hubungan yang signifikan secara statistik.

Sekarang, untuk memverifikasi hipotesis kami tentang peningkatan relevansi mata uang digital dalam beberapa bulan terakhir, selanjutnya kami akan mengulangi tes yang sama menggunakan data yang dimulai pada tahun 2017.

combined_df_2017 = combined_df[combined_df.index.year == 2017]
combined_df_2017.pct_change().corr(method='pearson')
Nama DASH ETC ETH LTC SC STR XEM XMR XRP BTC
DASH 1.000000 0.384109 0.480453 0.259616 0.191801 0.159330 0.299948 0.503832 0.066408 0.357970
ETC 0.384109 1.000000 0.602151 0.420945 0.255343 0.146065 0.303492 0.465322 0.053955 0.469618
ETH 0.480453 0.602151 1.000000 0.286121 0.323716 0.228648 0.343530 0.604572 0.120227 0.421786
LTC 0.259616 0.420945 0.286121 1.000000 0.296244 0.333143 0.250566 0.439261 0.321340 0.352713
SC 0.191801 0.255343 0.323716 0.296244 1.000000 0.417106 0.287986 0.374707 0.248389 0.377045
STR 0.159330 0.146065 0.228648 0.333143 0.417106 1.000000 0.396520 0.341805 0.621547 0.178706
XEM 0.299948 0.303492 0.343530 0.250566 0.287986 0.396520 1.000000 0.397130 0.270390 0.366707
XMR 0.503832 0.465322 0.604572 0.439261 0.374707 0.341805 0.397130 1.000000 0.213608 0.510163
XRP 0.066408 0.053955 0.120227 0.321340 0.248389 0.621547 0.270390 0.213608 1.000000 0.170070
BTC 0.357970 0.469618 0.421786 0.352713 0.377045 0.178706 0.366707 0.510163 0.170070 1.000000

Apakah data-data di atas lebih relevan? Apakah cukup untuk menjadi kriteria penilaian investasi?

Namun, perlu dicatat bahwa hampir semua mata uang digital telah menjadi semakin saling terkait.

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

img

Seperti yang bisa dilihat dari gambar di atas, hal-hal menjadi semakin menarik.

Mengapa hal ini terjadi?

Tapi kenyataannya, saya juga tidak yakin...

Tanggapan pertama saya adalah bahwa hedge fund baru-baru ini mulai terbuka untuk berdagang di pasar mata uang digital. Dana-dana ini memiliki modal yang jauh lebih besar daripada pedagang biasa, ketika dana yang hedge modal masukan mereka di antara beberapa mata uang digital, kemudian menggunakan strategi perdagangan yang sama untuk setiap mata uang berdasarkan variabel independen (misalnya, pasar saham).

Memahami lebih dalam tentang XRP dan STR

Sebagai contoh, dari grafik di atas dapat dilihat dengan jelas bahwa XRP (token Ripple) memiliki hubungan paling rendah dengan mata uang digital lainnya. Namun, satu pengecualian yang patut diperhatikan adalah STR (token Stellar, yang nama resminya adalah "Lumens"), yang memiliki hubungan yang kuat dengan XRP (koefisien hubungan: 0.62).

Menariknya, Stellar dan Ripple adalah platform fintech yang sangat mirip, keduanya bertujuan untuk mengurangi langkah-langkah yang rumit saat melakukan transfer lintas negara antar bank. Diharapkan, mengingat kemiripan layanan blockchain menggunakan token, beberapa pemain besar dan hedge fund mungkin menggunakan strategi perdagangan yang sama untuk investasi mereka di Stellar dan Ripple. Mungkin itulah mengapa XRP memiliki hubungan yang lebih kuat dengan STR dibandingkan mata uang digital lainnya.

Baiklah, giliranmu!

Hal-hal di atas sebagian besar bersifat spekulatif, dan mungkin Anda akan melakukannya dengan lebih baik. Berdasarkan dasar yang telah kita buat, Anda memiliki ratusan atau ribuan cara berbeda untuk terus mengeksplorasi cerita yang tersembunyi dalam data.

Di bawah ini adalah beberapa saran saya yang dapat digunakan oleh pembaca untuk melakukan penelitian lebih lanjut ke arah ini:

  • Tambahkan data lebih banyak mata uang digital untuk analisis keseluruhan
  • Menyesuaikan rentang waktu dan partikel dari analisis korelasi untuk mendapatkan pandangan tren yang dioptimalkan atau partikel kasar.
  • Menggali data dari volume transaksi atau blockchain untuk mencari tren. Jika Anda ingin memprediksi fluktuasi harga di masa depan, Anda mungkin lebih membutuhkan data rasio beli/jual dibandingkan data harga mentah.
  • Menambahkan data harga pada saham, komoditas, dan mata uang hukum untuk menentukan mana yang terkait dengan mata uang digital (tapi jangan lupa bahwa ada pepatah yang mengatakan bahwa hubungan tidak ada hubungannya)
  • Menggunakan Event Registry, GDELT, dan Google Trends untuk mengukur jumlah kata kunci yang beredar di sekitar mata uang digital tertentu.
  • Menggunakan data untuk melatih model pembelajaran mesin prediktif untuk memprediksi harga besok. Jika Anda memiliki ambisi yang lebih besar, Anda bahkan dapat mempertimbangkan untuk mencoba pelatihan di atas dengan jaringan saraf sirkulasi (RNN).
  • Menggunakan analisis Anda untuk membuat robot perdagangan otomatis, melalui antarmuka pemrograman aplikasi (API) yang sesuai, yang diterapkan pada situs pertukaran seperti Bitcoin Polonix atau Bitcoin Coinbase.这里推荐使用发明者量化平台FMZ.COM

Bagian terbaik tentang Bitcoin, dan tentang mata uang digital pada umumnya, adalah sifat desentralisasi mereka, yang membuatnya lebih bebas, demokratis daripada aset lain. Anda dapat berbagi analisis Anda dengan sumber terbuka, berpartisipasi dalam komunitas, atau menulis blog!https://www.fmz.com/bbsPerhatikan komentarnya.


Berkaitan

Lebih banyak

ruixiao1989Artikel yang sangat berharga, saya belajar, terima kasih.

KebaikanTerima kasih atas suka Anda! Bersama-sama!