Analisis Kuantitatif Pasaran Mata Wang Digital

Penulis:Lydia, Dicipta pada: 2023-01-06 10:28:01, Dikemas kini pada: 2023-09-20 10:27:27

img

Analisis Kuantitatif Pasaran Mata Wang Digital

Pendekatan berasaskan data untuk analisis spekulatif mata wang digital

Bagaimana dengan harga Bitcoin? Apakah sebab harga mata wang digital meningkat dan menurun? Adakah harga pasaran Altcoin yang berbeza saling berkaitan atau sebahagian besarnya bebas? Bagaimana kita boleh meramalkan apa yang akan berlaku seterusnya?

Artikel mengenai mata wang digital, seperti Bitcoin dan Ethereum, kini penuh dengan spekulasi. Beratus-ratus pakar yang mengisytiharkan diri mereka menyokong trend yang mereka harapkan. Apa yang banyak analisis ini kekurangan adalah asas yang kukuh untuk data asas dan model statistik.

Tujuan artikel ini adalah untuk memberikan pengenalan ringkas mengenai analisis mata wang digital dengan menggunakan Python. Kami akan menggunakan skrip Python yang mudah untuk mendapatkan, menganalisis dan memvisualisasikan data mata wang digital yang berbeza. Dalam proses ini, kami akan menemui trend yang menarik dalam tingkah laku pasaran turun naik ini dan bagaimana mereka berkembang.

img

Ini bukan artikel yang menerangkan mata wang digital, juga bukan pendapat mengenai mata wang tertentu yang akan meningkat dan yang akan menurun. Sebaliknya, apa yang kami fokuskan dalam tutorial ini adalah untuk mendapatkan data asal dan mencari cerita yang tersembunyi dalam nombor.

Langkah 1: Siapkan persekitaran kerja data kami

Tutorial ini bertujuan untuk peminat, jurutera dan saintis data pada semua tahap kemahiran. Sama ada anda seorang pemimpin industri atau pemula pengaturcaraan, satu-satunya kemahiran yang anda perlukan adalah pemahaman asas bahasa pengaturcaraan Python dan pengetahuan yang mencukupi mengenai operasi baris arahan (mampu menubuhkan projek sains data sudah mencukupi).

1.1 Pasang FMZ Quant docker dan persediaan Anaconda

  • Sistem Docker platform FMZ Quant Platform FMZ QuantFMZ.COMbukan sahaja menyediakan sumber data berkualiti tinggi untuk pertukaran arus perdana utama, tetapi juga menyediakan satu set antara muka API yang kaya untuk membantu kami menjalankan transaksi automatik selepas menyelesaikan analisis data. Set antara muka ini termasuk alat praktikal, seperti menanyakan maklumat akaun, menanyakan harga yang tinggi, terbuka, rendah, penerimaan, jumlah dagangan, dan pelbagai penunjuk analisis teknikal yang biasa digunakan dari pelbagai pertukaran arus perdana. Khususnya, ia menyediakan sokongan teknikal yang kuat untuk antara muka API awam yang menghubungkan pertukaran arus perdana utama dalam proses dagangan sebenar.

Semua ciri-ciri yang disebutkan di atas dikemas dalam sistem seperti Docker. Apa yang perlu kita lakukan adalah untuk membeli atau menyewa perkhidmatan pengkomputeran awan kita sendiri dan menggunakan sistem Docker.

Dalam nama rasmi platform FMZ Quant, sistem Docker ini dipanggil sistem Docker.

Sila rujuk artikel saya sebelum ini mengenai cara menggunakan docker dan robot:https://www.fmz.com/bbs-topic/9864.

Pembaca yang ingin membeli pelayan pengkomputeran awan mereka sendiri untuk menggunakan pelabuhan boleh merujuk artikel ini:https://www.fmz.com/digest-topic/5711.

Selepas menyebarkan pelayan pengkomputeran awan dan sistem docker dengan berjaya, seterusnya kita akan memasang artifak terbesar sekarang Python: Anaconda

Untuk merealisasikan semua persekitaran program yang relevan (bibliotek ketergantungan, pengurusan versi, dan lain-lain) yang diperlukan dalam artikel ini, cara yang paling mudah adalah menggunakan Anaconda.

Oleh kerana kami memasang Anaconda pada perkhidmatan awan, kami mengesyorkan bahawa pelayan awan memasang sistem Linux ditambah versi baris arahan Anaconda.

Untuk kaedah pemasangan Anaconda, sila rujuk panduan rasmi Anaconda:https://www.anaconda.com/distribution/.

Jika anda seorang pengaturcara Python yang berpengalaman dan jika anda merasakan bahawa anda tidak perlu menggunakan Anaconda, ia tidak ada masalah sama sekali. Saya akan menganggap bahawa anda tidak memerlukan bantuan semasa memasang persekitaran bergantung yang diperlukan. Anda boleh melangkau bahagian ini secara langsung.

1.2 Buat persekitaran projek analisis data untuk Anaconda

Setelah Anaconda dipasang, kita perlu membuat persekitaran baru untuk menguruskan pakej bergantung kita.

conda create --name cryptocurrency-analysis python=3

untuk mencipta persekitaran Anaconda baru untuk projek kami.

Seterusnya, input:

source activate cryptocurrency-analysis (linux/MacOS operating system)
or
activate cryptocurrency-analysis (windows operating system)

untuk mengaktifkan persekitaran.

Seterusnya, input:

conda install numpy pandas nb_conda jupyter plotly

untuk memasang pelbagai pakej bergantung yang diperlukan untuk projek ini.

Nota: Mengapa menggunakan persekitaran Anaconda? Jika anda merancang untuk menjalankan banyak projek Python di komputer anda, adalah berguna untuk memisahkan pakej bergantung (bilik perisian dan pakej) dari projek yang berbeza untuk mengelakkan konflik. Ananconda akan membuat direktori persekitaran khas untuk pakej bergantung setiap projek, supaya semua pakej dapat dikendalikan dengan betul dan dibezakan.

1.3 Buat Buku Nota Jupyter

Selepas persekitaran dan pakej bergantung dipasang, jalankan:

jupyter notebook

untuk memulakan kernel iPython, kemudian lawatihttp://localhost:8888/dengan penyemak imbas anda, buat buku nota Python baru, pastikan ia menggunakan:

Python [conda env:cryptocurrency-analysis]

kernel

img

1.4 Pakej bergantung kepada import

Buat buku nota Jupyter kosong, dan perkara pertama yang perlu kita lakukan adalah mengimport pakej bergantung yang diperlukan.

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

Kita juga perlu mengimport Plotly dan mengaktifkan mod luar talian:

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 maklumat harga mata wang digital

Penyediaan telah selesai, dan sekarang kita boleh mula mendapatkan data yang akan dianalisis. Pertama, kita akan menggunakan antara muka API platform FMZ Quant untuk mendapatkan data harga Bitcoin.

Untuk penggunaan kedua-dua fungsi ini, sila rujuk:https://www.fmz.com/api.

2.1 Menulis fungsi pengumpulan data Quandl

Untuk memudahkan pemerolehan data, kita perlu menulis fungsi untuk memuat turun dan menyegerakkan data dari Quandl (quandl.comIni adalah antara muka data kewangan percuma, yang menikmati reputasi yang tinggi di luar negara. Platform FMZ Quant juga menyediakan antara muka data yang serupa, yang terutamanya digunakan untuk transaksi bot sebenar.

Semasa transaksi bot sebenar, anda boleh memanggil fungsi GetTicker dan GetRecords di Python secara langsung untuk mendapatkan data harga.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

Di sini, perpustakaan acar digunakan untuk mengurutkan data dan menyimpan data yang dimuat turun sebagai fail, supaya program tidak akan memuat turun data yang sama setiap kali dijalankan. Fungsi ini akan mengembalikan data dalam format Pandas Dataframe.

2.2 Akses kepada data harga mata wang digital pertukaran Kraken

Mari kita ambil Bursa Bitcoin Kraken sebagai contoh, bermula dari mendapatkan harga Bitcoin.

# Get prices on the Kraken Bitcoin exchange
btc_usd_price_kraken = get_quandl_data('BCHARTS/KRAKENUSD')

Gunakan kaedah kepala untuk melihat lima baris pertama kotak data.

btc_usd_price_kraken.head()

Hasilnya ialah:

img

Seterusnya, kita akan membuat jadual mudah untuk mengesahkan ketepatan data dengan visualisasi.

# 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

Di sini, kita menggunakan Plotly untuk melengkapkan bahagian visualisasi. Berbanding dengan menggunakan beberapa perpustakaan visualisasi data Python yang lebih matang, seperti Matplotlib, Plotly adalah pilihan yang kurang biasa, tetapi ia benar-benar pilihan yang baik, kerana ia boleh memanggil carta D3.js interaktif sepenuhnya. Carta ini mempunyai tetapan lalai yang indah, yang mudah diterokai dan sangat mudah dimasukkan ke dalam halaman web.

Petua: Carta yang dihasilkan boleh dibandingkan dengan carta harga Bitcoin bursa arus perdana (seperti carta di OKX, Binance atau Huobi) sebagai pemeriksaan integriti cepat untuk mengesahkan sama ada data yang dimuat turun secara amnya konsisten.

2.3 Dapatkan data harga dari bursa Bitcoin arus perdana

Pembaca yang teliti mungkin telah melihat bahawa terdapat data yang hilang dalam data di atas, terutamanya pada akhir tahun 2014 dan awal tahun 2016.

Ciri pertukaran mata wang digital adalah bahawa hubungan bekalan dan permintaan menentukan harga mata wang. Oleh itu, tiada harga transaksi boleh menjadi harga arus perdana pasaran. Untuk menyelesaikan masalah dan masalah kehilangan data yang baru disebutkan (mungkin disebabkan oleh gangguan kuasa teknikal dan kesilapan data), kami akan memuat turun data dari tiga pertukaran Bitcoin arus perdana di dunia, dan kemudian mengira harga Bitcoin purata.

Mari kita mulakan dengan memuat turun data setiap pertukaran ke bingkai data yang terdiri daripada jenis kamus.

# 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

2.4 Mengintegrasikan semua data ke dalam satu bingkai data

Seterusnya, kita akan menentukan fungsi khas untuk menggabungkan lajur yang biasa bagi setiap bingkai data ke dalam bingkai data baru.

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, semua bingkai data disatukan berdasarkan lajur harga berat setiap set data.

# Integrate all data frames
btc_usd_datasets = merge_dfs_on_column(list(exchange_data.values()), list(exchange_data.keys()), 'Weighted Price')

Akhirnya, kita menggunakan tail () kaedah untuk melihat lima baris terakhir data yang digabungkan untuk memastikan bahawa data adalah betul dan lengkap.

btc_usd_datasets.tail()

Hasilnya ditunjukkan sebagai berikut:

img

Dari jadual di atas, kita dapat melihat bahawa data ini selaras dengan jangkaan kita, dengan julat data yang sama, tetapi sedikit berbeza berdasarkan kelewatan atau ciri setiap pertukaran.

2.5 Proses visualisasi data harga

Dari perspektif logik analisis, langkah seterusnya adalah untuk membandingkan data ini melalui visualisasi. Untuk melakukan ini, kita perlu menentukan fungsi tambahan terlebih dahulu. Dengan menyediakan perintah satu baris untuk menggunakan data untuk membuat carta, kita memanggilnya 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'
        
    # 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)

Untuk pemahaman anda yang mudah, artikel ini tidak akan membincangkan prinsip logik fungsi tambahan ini terlalu banyak.

Sekarang, kita boleh membuat carta data harga Bitcoin dengan mudah!

# Plot all BTC transaction prices
df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange')

img

2.6 Data harga yang jelas dan agregat

Seperti yang dapat dilihat dari carta di atas, walaupun empat siri data mengikuti laluan yang sama, masih ada beberapa perubahan yang tidak teratur.

Dalam tempoh 2012-2017, kita tahu bahawa harga Bitcoin tidak pernah sama dengan sifar, jadi kita membuang semua nilai sifar dalam bingkai data terlebih dahulu.

# Clear the "0" value
btc_usd_datasets.replace(0, np.nan, inplace=True)

Selepas membina semula bingkai data, kita dapat melihat carta yang lebih jelas tanpa data yang hilang lagi.

# Plot the revised data frame
df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange')

img

Kita boleh mengira lajur baru sekarang: purata harga Bitcoin harian semua bursa.

# Calculate the average BTC price as a new column
btc_usd_datasets['avg_btc_price_usd'] = btc_usd_datasets.mean(axis=1)

Kolom baru adalah indeks harga Bitcoin! Mari kita lukis lagi untuk memeriksa sama ada data kelihatan salah.

# 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

Nampaknya tidak ada masalah. kemudiannya, kita akan terus menggunakan data siri harga agregat ini untuk menentukan kadar pertukaran antara mata wang digital lain dan USD.

Langkah 3: Kumpulkan harga Altcoin

Setakat ini, kita mempunyai data siri masa harga Bitcoin. Seterusnya, mari kita lihat beberapa data mata wang digital bukan Bitcoin, iaitu, Altcoins. Sudah tentu, istilah Altcoins mungkin agak berlebihan, tetapi sejauh perkembangan mata wang digital semasa, kecuali sepuluh teratas dalam nilai pasaran (seperti Bitcoin, Ethereum, EOS, USDT, dll.), kebanyakan dari mereka boleh dipanggil Altcoins. Kita harus cuba menjauhkan diri dari mata wang ini semasa berdagang, kerana mereka terlalu mengelirukan dan menipu.

3.1 Menentukan fungsi tambahan melalui API bursa Poloniex

Pertama, kami menggunakan API bursa Poloniex untuk mendapatkan maklumat data transaksi mata wang digital. Kami menentukan dua fungsi tambahan untuk mendapatkan data yang berkaitan dengan Altcoins. Kedua-dua fungsi ini terutamanya memuat turun dan menyimpan data JSON melalui API.

Pertama, kita tentukan fungsi get_json_data, yang akan memuat turun dan cache 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

Seterusnya, kita menentukan fungsi baru yang akan menjana permintaan HTTP API Poloniex dan memanggil fungsi get_ json_data yang baru ditakrifkan untuk menyimpan hasil data panggilan.

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

Fungsi di atas akan mengekstrak kod watak yang sepadan mata wang digital (seperti BTC_ETH) dan mengembalikan bingkai data yang mengandungi harga sejarah dua mata wang.

3.2 Muat turun data harga transaksi dari Poloniex

Kebanyakan Altcoin tidak boleh dibeli dalam USD secara langsung. Untuk mendapatkan mata wang digital ini, individu biasanya perlu membeli Bitcoin terlebih dahulu, dan kemudian menukarnya menjadi Altcoin mengikut nisbah harga mereka. Oleh itu, kita perlu memuat turun kadar pertukaran setiap mata wang digital ke Bitcoin, dan kemudian menggunakan data harga Bitcoin yang ada untuk menukarnya ke USD. Kami akan memuat turun data kadar pertukaran untuk 9 mata wang digital teratas: Ethereum, Litecoin, Ripple, EthereumClassic, Stellar, Dash, Siacoin, Monero, dan 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

Sekarang, kita mempunyai kamus yang mengandungi 9 bingkai data, yang masing-masing mengandungi data purata harga harian antara Altcoin dan Bitcoin.

Kita boleh menentukan sama ada data itu betul melalui beberapa baris terakhir jadual harga Ethereum.

altcoin_data['ETH'].tail()

img

3.3 Menggabungkan unit mata wang semua data harga kepada USD

Sekarang, kita boleh menggabungkan data kadar pertukaran BTC dan Altcoins dengan indeks harga Bitcoin kita untuk mengira harga sejarah setiap Altcoin (dalam USD) secara langsung.

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

Di sini, kita menambah lajur baru untuk setiap bingkai data Altcoin untuk menyimpan harga USD yang sepadan.

Seterusnya, kita boleh menggunakan semula fungsi merge_dfs_on_column yang telah ditakrifkan sebelum ini untuk membuat bingkai data gabungan dan mengintegrasikan harga USD setiap mata wang digital.

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

Selesai!

Sekarang mari kita tambah harga Bitcoin sebagai lajur terakhir kepada bingkai data gabungan.

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

Sekarang kita mempunyai kerangka data yang unik, yang mengandungi harga harian USD daripada sepuluh mata wang digital yang kita semak.

Kami memanggil fungsi sebelumnya df_scatter lagi, menunjukkan harga yang sepadan dari semua Altcoin dalam bentuk carta.

img

Jadual ini menunjukkan kepada kita gambaran lengkap tentang perubahan harga pertukaran untuk setiap mata wang digital dalam beberapa tahun yang lalu.

Nota: di sini kita menggunakan paksi y spesifikasi logaritma untuk membandingkan semua mata wang digital pada carta yang sama.

3.4 Mulakan analisis korelasi

Pembaca yang berhati-hati mungkin telah melihat bahawa harga mata wang digital nampaknya relevan, walaupun nilai mata wang mereka sangat berbeza dan sangat tidak menentu.

Sudah tentu, kesimpulan yang disokong oleh data lebih meyakinkan daripada intuisi berdasarkan gambar.

Kita boleh menggunakan fungsi Pandas corr() untuk mengesahkan hipotesis korelasi di atas. Kaedah ujian ini mengira pekali korelasi Pearson setiap lajur bingkai data yang sepadan dengan lajur lain.

Nota semakan pada 2017.8.22: Bahagian ini telah diubahsuai untuk menggunakan kadar pulangan harian dan bukannya nilai mutlak harga semasa mengira pekali korelasi.

Pengiraan langsung berdasarkan siri masa yang tidak kukuh (seperti data harga mentah) boleh menyebabkan penyimpangan pekali korelasi. Untuk menyelesaikan masalah ini, penyelesaian kami adalah menggunakan kaedah pct_change() untuk menukar nilai mutlak setiap harga dalam bingkai data ke kadar pulangan harian yang sepadan.

Sebagai contoh, mari kita mengira pekali korelasi pada tahun 2016.

# 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

Jadual di atas menunjukkan pekali korelasi. Apabila pekali berdekatan dengan 1 atau - 1, ini bermakna siri ini berkorelasi positif atau negatif, masing-masing. Apabila pekali korelasi berdekatan dengan 0, ini bermakna objek yang sepadan tidak berkorelasi dan turun naiknya bebas antara satu sama lain.

Untuk memvisualisasikan hasilnya dengan lebih baik, kami mencipta fungsi bantuan visual 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 wang jelas berkorelasi tinggi dengan dirinya sendiri), dan nilai biru gelap mewakili korelasi terbalik.

Pada asasnya, ia menunjukkan turun naik harga mata wang digital yang berbeza pada tahun 2016, dengan sedikit korelasi yang signifikan secara statistik.

Sekarang, untuk mengesahkan hipotesis kami bahawa korrelasi mata wang digital telah meningkat dalam beberapa bulan terakhir, kami akan menggunakan data dari 2017 untuk mengulangi ujian yang sama.

combined_df_2017 = combined_df[combined_df.index.year == 2017]
combined_df_2017.pct_change().corr(method='pearson')

img

Adakah data di atas lebih relevan? Adakah mereka mencukupi untuk digunakan sebagai standard penilaian pelaburan? Jawapannya tidak.

Walau bagaimanapun, perlu diperhatikan bahawa hampir semua mata wang digital semakin saling berkaitan.

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

img

Seperti yang kita lihat dari carta di atas, perkara-perkara menjadi lebih menarik.

Kenapa ini berlaku?

Persoalan yang baik, tapi sebenarnya, saya tidak pasti...

Fungsi pertama saya adalah bahawa dana lindung nilai baru-baru ini mula berdagang secara terbuka di pasaran mata wang digital. Dana-dana ini memegang modal yang jauh lebih banyak daripada pedagang biasa. Apabila dana lindung nilai modal yang dilaburkan di antara pelbagai mata wang digital, ia menggunakan strategi perdagangan yang sama untuk setiap mata wang mengikut pembolehubah bebas (seperti pasaran saham). Dari perspektif ini, masuk akal bahawa trend peningkatan korelasi ini akan berlaku.

Pemahaman yang lebih mendalam tentang XRP dan STR

Sebagai contoh, jelas dari carta di atas bahawa XRP (token Ripple) mempunyai korelasi paling sedikit dengan mata wang digital lain.

Menariknya, Stellar dan Ripple adalah platform teknologi kewangan yang sangat serupa, yang kedua-duanya bertujuan untuk mengurangkan langkah-langkah yang membosankan pemindahan rentas sempadan antara bank. Adalah dapat dibayangkan bahawa beberapa pemain besar dan dana lindung nilai mungkin menggunakan strategi perdagangan yang sama untuk pelaburan mereka di Stellar dan Ripple, memandangkan persamaan token yang digunakan oleh perkhidmatan blockchain. Ini mungkin mengapa XRP lebih relevan dengan STR daripada mata wang digital lain.

Sekarang giliran awak!

Penjelasan di atas adalah sebahagian besarnya spekulatif, dan anda mungkin melakukan lebih baik. Berdasarkan asas yang telah kami letakkan, anda mempunyai beratus-ratus cara yang berbeza untuk terus meneroka cerita yang terkandung dalam data.

Berikut adalah beberapa cadangan saya.Pembaca boleh merujuk kepada penyelidikan dalam arah berikut:

  • Tambah lebih banyak data mata wang digital untuk keseluruhan analisis.
  • Sesuaikan julat masa dan granulariti analisis korelasi untuk mendapatkan pandangan trend yang dioptimumkan atau kasar.
  • Cari trend dari kuantiti perdagangan atau perlombongan data blockchain. Berbanding dengan data harga asal, jika anda ingin meramalkan turun naik harga masa depan, anda mungkin memerlukan data nisbah kuantiti beli / jual lebih banyak.
  • Tambah data harga kepada saham, komoditi dan mata wang fiat untuk menentukan mana yang relevan dengan mata wang digital (tetapi jangan lupa pepatah lama korrelasi tidak menunjukkan sebab).
  • Gunakan Pendaftaran Acara, GDELT, dan Google Trends untuk mengukur jumlah kata-kata panas yang mengelilingi mata wang digital tertentu.
  • Gunakan data untuk melatih model pembelajaran mesin ramalan untuk meramalkan harga esok. Jika anda lebih bercita-cita tinggi, anda juga boleh mempertimbangkan menggunakan rangkaian saraf berulang (RNN) untuk latihan di atas.
  • Gunakan analisis anda untuk membuat robot perdagangan automatik, yang boleh digunakan ke laman web pertukaran Poloniex atau Coinbase melalui antara muka pengaturcaraan aplikasi (API) yang sesuai.FMZ.COM) adalah disyorkan di sini.

Bahagian terbaik mengenai Bitcoin dan mata wang digital pada umumnya adalah sifatnya yang terdesentralisasi, yang menjadikannya lebih bebas dan demokratik daripada aset lain. Anda boleh berkongsi analisis anda sumber terbuka, menyertai komuniti, atau menulis blog! Saya harap anda telah menguasai kemahiran yang diperlukan untuk analisis diri dan keupayaan untuk berfikir secara dialektik ketika membaca mana-mana artikel mata wang digital spekulatif pada masa akan datang, terutamanya ramalan tanpa sokongan data. Terima kasih kerana membaca. Jika anda mempunyai sebarang komen, cadangan atau kritikan mengenai tutorial ini, sila tinggalkan mesej dihttps://www.fmz.com/bbs.


Berkaitan

Lebih lanjut