Tài nguyên đang được tải lên... tải...

Phân tích định lượng thị trường tiền kỹ thuật số

Tác giả:Tốt, Tạo: 2019-08-16 10:37:23, Cập nhật: 2023-10-19 21:04:20

img

Một phương pháp phân tích tiền kỹ thuật số dựa trên dữ liệu

Giá Bitcoin hoạt động như thế nào? Lý do cho sự tăng và giảm giá của tiền kỹ thuật số là gì? Giá thị trường của các đồng tiền ảo khác nhau có liên quan chặt chẽ hay phần lớn độc lập?

Các bài viết về các loại tiền kỹ thuật số như Bitcoin và Ethereum hiện đang tràn ngập suy đoán, với hàng trăm người tự xưng là chuyên gia ủng hộ xu hướng mà họ mong đợi.

Mục tiêu của bài viết này là cung cấp một giới thiệu ngắn gọn về phân tích tiền kỹ thuật số bằng Python. Chúng tôi sẽ truy cập, phân tích và trực quan hóa dữ liệu của các loại tiền kỹ thuật số khác nhau thông qua một kịch bản Python đơn giản. Trong quá trình này, chúng tôi sẽ khám phá những hành vi thị trường biến động này và những xu hướng thú vị về cách chúng phát triển.

img

Đây không phải là một bài viết giải thích về tiền kỹ thuật số, cũng không phải là một quan điểm về những đồng tiền cụ thể nào sẽ tăng và nào sẽ giảm. Thay vào đó, trong hướng dẫn này, chúng tôi chỉ tập trung vào việc lấy dữ liệu nguyên liệu và khám phá những câu chuyện ẩn trong số.

Bước 1: Xây dựng môi trường làm việc dữ liệu của chúng tôi

Khóa học này được thiết kế cho các nghiệp dư, kỹ sư và nhà khoa học dữ liệu ở tất cả các cấp độ kỹ năng, cho dù bạn là một người lớn trong ngành hay là một lập trình viên nhỏ, những kỹ năng duy nhất bạn cần là một kiến thức cơ bản về ngôn ngữ lập trình Python và đủ kiến thức về các hoạt động trên dòng lệnh (để có thể thiết lập một dự án khoa học dữ liệu).

1.1 Cài đặt Inventor Quantify Host và thiết lập Anaconda

  • Hệ thống quản lý được định lượng bởi nhà phát minh

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

Tất cả các tính năng trên đều được đóng gói trong một hệ thống tương tự như Docker, và tất cả những gì chúng ta cần làm là mua hoặc thuê dịch vụ điện toán đám mây của riêng mình và triển khai hệ thống Docker.

Trong cái tên chính thức của nền tảng định lượng của nhà phát minh, hệ thống Docker này được gọi là hệ thống quản lý.

Để biết cách triển khai người quản lý và robot, hãy tham khảo bài viết trước của tôi:https://www.fmz.com/bbs-topic/4140

Người đọc muốn mua một nhà quản lý triển khai máy chủ điện toán đám mây của riêng họ có thể tham khảo bài viết này:https://www.fmz.com/bbs-topic/2848

Sau khi triển khai thành công các dịch vụ và hệ thống quản trị đám mây tốt, tiếp theo chúng tôi sẽ cài đặt Python lớn nhất hiện nay: Anaconda.

Để thực hiện tất cả các môi trường ứng dụng liên quan cần thiết cho bài viết này (tài liệu phụ thuộc, quản lý phiên bản, v.v.), cách đơn giản nhất là sử dụng Anaconda. Nó là một hệ sinh thái khoa học dữ liệu Python được đóng gói và quản lý thư viện phụ thuộc.

Vì chúng tôi đang cài đặt Anaconda trên dịch vụ đám mây, chúng tôi khuyên bạn nên cài đặt phiên bản Anaconda trên máy chủ đám mây với dòng lệnh trên hệ thống Linux.

Để biết cách cài đặt Anaconda, hãy xem hướng dẫn chính thức của Anaconda:https://www.anaconda.com/distribution/

Nếu bạn là một lập trình viên Python có kinh nghiệm và cảm thấy không cần phải sử dụng Anaconda, thì hoàn toàn không có vấn đề. Tôi sẽ giả sử bạn không cần sự giúp đỡ khi cài đặt môi trường phụ thuộc cần thiết, bạn có thể nhảy thẳng đến phần hai.

1.2 Tạo môi trường dự án phân tích dữ liệu Anaconda

Sau khi cài đặt Anaconda xong, chúng ta cần tạo một môi trường mới để quản lý các gói phụ thuộc của mình.

conda create --name cryptocurrency-analysis python=3

Chúng tôi đã tạo ra một môi trường Anaconda mới cho dự án của chúng tôi.

Tiếp theo, nhập

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

Để kích hoạt môi trường này

Tiếp theo, nhập:

conda install numpy pandas nb_conda jupyter plotly

Các gói phụ thuộc khác nhau cần thiết để cài đặt chương trình này.

Lưu ý: Tại sao nên sử dụng môi trường Anaconda? Nếu bạn dự định chạy nhiều dự án Python trên máy tính của mình, việc tách các gói phụ thuộc khác nhau (bộ phần mềm và gói) để tránh xung đột sẽ rất hữu ích.

1.3 Tạo một Jupiter Notebook

Một khi môi trường và các gói phụ thuộc đã được cài đặt, chạy

jupyter notebook

Để khởi động kernel của Python, hãy truy cập vào http://localhost:8888/Để tạo một notebook Python mới, hãy đảm bảo rằng nó sử dụng:

Python [conda env:cryptocurrency-analysis]

Hạt nhân

img

1.4 Nhập gói phụ thuộc

Sau đó, chúng ta sẽ tạo ra một notebook Jupyter trống, và điều đầu tiên chúng ta phải làm là nhập các gói phụ thuộc cần thiết.

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

Chúng ta cũng cần nhập Plotly và bật chế độ ngoại tuyến.

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

Bước 2: Nhận thông tin về giá của tiền kỹ thuật số

Công việc chuẩn bị đã hoàn tất và bây giờ chúng ta có thể bắt đầu lấy dữ liệu để phân tích. Đầu tiên, chúng ta sẽ lấy dữ liệu giá Bitcoin bằng giao diện API của nền tảng định lượng của nhà phát minh.

Điều này sẽ sử dụng chức năng GetTicker, xem chi tiết về cách sử dụng hai chức năng này:https://www.fmz.com/api

2.1 Viết các hàm dữ liệu tập hợp của Quandl

Để dễ dàng thu thập dữ liệu, chúng tôi đã viết một hàm để tải xuống và đồng bộ hóa từ Quandl.quandl.comMột giao diện dữ liệu tài chính miễn phí có uy tín ở nước ngoài. Nền tảng định lượng của nhà phát minh cũng cung cấp giao diện dữ liệu tương tự, chủ yếu được sử dụng trong giao dịch thực tế.

Khi giao dịch trên thực tế, các hàm GetTicker và GetRecords có thể được gọi trực tiếp trong Python để lấy dữ liệu giá.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

Đây là một thư viện dùng pickle để sắp xếp dữ liệu và lưu dữ liệu được tải xuống thành một tập tin để chương trình không phải tải lại cùng một dữ liệu mỗi lần chạy. Chức năng này sẽ trả về dữ liệu định dạng Dataframe của Panda. Nếu bạn không quen thuộc với khái niệm Dataframe, bạn có thể tưởng tượng nó như một bảng Excel mạnh mẽ.

2.2 Nhận dữ liệu giá tiền kỹ thuật số từ Kraken

Chúng ta sẽ bắt đầu với giá Bitcoin khi mua nó bằng cách sử dụng Kraken Bitcoin Exchange như một ví dụ.

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

Sử dụng phương pháp head (() để xem năm dòng đầu tiên của khung dữ liệu.

btc_usd_price_kraken.head()

Kết quả là:

BTC Mở Cao Mức thấp Gắn lại Khối lượng (BTC) Số lượng (Tiền tệ) Giá cân nhắc
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

Bước tiếp theo, chúng ta sẽ làm một bảng đơn giản để xác minh tính chính xác của dữ liệu bằng phương pháp trực quan.

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

Mẹo nhỏ: Bạn có thể so sánh biểu đồ được tạo ra với biểu đồ giá Bitcoin của các sàn giao dịch chính (như biểu đồ trên OKEX, Binance hoặc Huobi) như một kiểm tra tính toàn vẹn nhanh chóng để xác nhận dữ liệu được tải xuống có phù hợp với nhau không.

2.3 Thu thập dữ liệu giá từ các sàn giao dịch Bitcoin chính

Người đọc cẩn thận có thể đã nhận thấy rằng có một số dữ liệu bị thiếu trong số dữ liệu trên, đặc biệt là vào cuối năm 2014 và đầu năm 2016.

Các sàn giao dịch tiền kỹ thuật số đặc trưng là mối quan hệ cung cầu quyết định giá của đồng tiền. Do đó, không có giá của bất kỳ giao dịch nào có thể trở thành giá chủ đạo của thị trường. Để giải quyết vấn đề này, và vấn đề thiếu dữ liệu vừa được đề cập (có thể là do mất điện và lỗi dữ liệu), chúng tôi sẽ tải xuống dữ liệu từ ba sàn giao dịch Bitcoin chính trên thế giới và sau đó tính toán giá trung bình của Bitcoin.

Hãy bắt đầu bằng cách tải dữ liệu của các sàn giao dịch vào một bộ dữ liệu gồm các loại từ điển.

# 下载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 Kết hợp tất cả dữ liệu vào một bộ dữ liệu

Tiếp theo, chúng ta sẽ định nghĩa một hàm đặc biệt để kết hợp các cột dữ liệu được chia sẻ trong các cột dữ liệu khác nhau thành một cột dữ liệu mới.

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)

Bây giờ, dựa trên các tập dữ liệu, xếp hạng giá trị gia tăng và tích hợp tất cả các tập dữ liệu lại với nhau.

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

Cuối cùng, chúng tôi sử dụng phương pháp tail để xem năm hàng cuối cùng của dữ liệu sau khi hợp nhất để đảm bảo dữ liệu là chính xác và hoàn chỉnh.

btc_usd_datasets.tail()

Kết quả cho thấy:

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

Từ biểu đồ trên, bạn có thể thấy rằng số liệu này phù hợp với mong đợi của chúng tôi, với phạm vi dữ liệu gần như giống nhau, chỉ có một chút khác nhau dựa trên sự chậm trễ của các sàn giao dịch hoặc các đặc điểm riêng của mỗi sàn giao dịch.

2.5 Quá trình hiển thị dữ liệu giá

Từ logic phân tích, bước tiếp theo là so sánh dữ liệu này bằng cách hình dung. Để làm điều này, chúng ta cần xác định một hàm phụ trợ trước, bằng cách cung cấp một lệnh đơn để tạo biểu đồ dữ liệu, chúng ta sẽ gọi nó là hàmdf_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)

Để dễ hiểu hơn, bài viết này sẽ không đi sâu vào các nguyên tắc logic của chức năng phụ trợ này. Để biết thêm, hãy xem tài liệu hướng dẫn chính thức của Pandas và Plotly.

Bây giờ, chúng ta có thể dễ dàng tạo ra một biểu đồ dữ liệu giá Bitcoin!

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

img

2.6 Dọn dẹp và thêm dữ liệu tổng giá

Từ biểu đồ trên, bạn có thể thấy rằng mặc dù bốn chuỗi dữ liệu này đi theo con đường tương tự, nhưng vẫn có một số thay đổi bất thường trong đó, và chúng tôi sẽ cố gắng xóa những thay đổi bất thường này.

Trong khoảng thời gian 2012-2017, chúng ta biết rằng giá Bitcoin không bao giờ bằng 0, vì vậy chúng ta đã loại bỏ tất cả các số không trong khung dữ liệu.

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

Sau khi xây dựng lại các khối dữ liệu, chúng ta có thể nhìn thấy các đồ họa rõ ràng hơn mà không mất dữ liệu.

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

img

Bây giờ chúng ta có thể tính toán một cột mới: giá trung bình mỗi ngày của Bitcoin trên tất cả các sàn giao dịch.

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

Một cột mới là chỉ số giá Bitcoin! Chúng tôi vẽ nó lại để kiểm tra xem liệu dữ liệu có trông có vấn đề hay không.

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

img

Có vẻ như không có vấn đề gì, và sau đó, chúng ta sẽ tiếp tục sử dụng dữ liệu chuỗi giá tổng hợp này để xác định tỷ lệ hối đoái giữa các đồng tiền kỹ thuật số khác và đô la Mỹ.

Bước 3: Thu thập giá của các đồng Altcoin

Cho đến nay, chúng ta đã có dữ liệu chuỗi thời gian về giá Bitcoin. Tiếp theo, chúng ta sẽ xem một số dữ liệu về các loại tiền kỹ thuật số không phải Bitcoin, đó là các loại tiền ảo (Altcoins), tất nhiên, từ "Altcoin" có thể hơi nặng nề, nhưng về tình hình hiện tại của các loại tiền kỹ thuật số, ngoại trừ 10 loại có giá trị thị trường hàng đầu (Bitcoin, Ethereum, EOS, USDT, v.v.), phần lớn có thể được gọi là tiền ảo là không có vấn đề, chúng ta nên tránh xa chúng khi giao dịch vì chúng quá khó hiểu và lừa đảo.

3.1 Định nghĩa phụ kiện qua API Poloniex Exchange

Đầu tiên, chúng tôi sử dụng API của sàn giao dịch Poloniex để thu thập thông tin dữ liệu về giao dịch tiền kỹ thuật số. Chúng tôi đã xác định hai chức năng phụ trợ để thu thập dữ liệu liên quan đến tiền mã hóa, hai chức năng này chủ yếu là tải xuống và lưu trữ dữ liệu JSON thông qua API.

Đầu tiên, chúng ta định nghĩa hàm get_json_data, nó sẽ tải xuống và lưu trữ dữ liệu JSON từ URL đã cho.

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

Tiếp theo, chúng ta xác định một hàm mới sẽ tạo các yêu cầu HTTP của Polonix API và gọi hàm get_json_data vừa được xác định để lưu kết quả dữ liệu được gọi.

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

Chức năng trên sẽ lấy mã ký tự của cặp tiền kỹ thuật số (ví dụ: mã số BTC_ETH) và trả về một mảng dữ liệu chứa giá lịch sử của hai loại tiền tệ.

3.2 Tải xuống dữ liệu giá giao dịch từ Poloniex

Hầu hết các đồng tiền ảo không thể được mua trực tiếp bằng đô la Mỹ, và các cá nhân thường phải mua Bitcoin trước để có được các đồng tiền kỹ thuật số này, sau đó đổi thành đồng tiền ảo theo tỷ lệ giá giữa chúng. Vì vậy, chúng tôi phải tải xuống tỷ lệ hối đoái của mỗi đồng tiền kỹ thuật số để đổi Bitcoin, và sau đó chuyển đổi thành đô la bằng dữ liệu giá Bitcoin hiện có. Chúng tôi sẽ tải xuống dữ liệu giao dịch 9 loại tiền kỹ thuật số hàng đầu: Ethereum, Litecoin, Ripple, EthereumClassic, Stellar, Dash, Siacoin, Monero, và 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

Hiện nay, chúng tôi có một từ điển gồm 9 mảng dữ liệu, mỗi mảng chứa dữ liệu giá trung bình trong ngày lịch sử giữa đồng xu và Bitcoin.

Chúng ta có thể xem xét những dòng cuối cùng của bảng giá Ethereum để xác định liệu dữ liệu có đúng hay không.

altcoin_data['ETH'].tail()
ETH Mở Cao Mức thấp Gắn lại Khối lượng (BTC) Số lượng (Tiền tệ) Giá cân nhắc
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 Thống nhất tất cả dữ liệu giá thành thành đô la

Bây giờ, chúng ta có thể kết hợp dữ liệu tỷ giá Bitcoin với Bitcoin Price Index của chúng tôi để tính toán trực tiếp giá lịch sử của mỗi đồng xu (đơn vị: 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']

Ở đây, chúng tôi đã thêm một cột mới cho mỗi khoá dữ liệu để lưu trữ giá đô la tương ứng.

Sau đó, chúng ta có thể sử dụng lại hàm merge_dfs_on_column được định nghĩa trước đó để tạo ra một hàng dữ liệu hợp nhất, tích hợp giá đô la của mỗi loại tiền kỹ thuật số.

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

Được rồi!

Bây giờ, hãy cùng nhau thêm giá Bitcoin vào mảng dữ liệu sau khi kết hợp.

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

Bây giờ chúng tôi có một data stack duy nhất, nó chứa giá đô la hàng ngày của 10 loại tiền kỹ thuật số mà chúng tôi đang xác minh.

Chúng tôi đã gọi lại chức năng df_scatter trước đây để hiển thị giá tương ứng của tất cả các đồng xu trong hình thức biểu đồ.

img

Trong khi đó, các nhà đầu tư khác cũng có thể sử dụng các loại tiền điện tử khác nhau, trong đó có các loại tiền điện tử khác nhau.

Lưu ý: Ở đây chúng ta sử dụng trục y của các thông số toán học để so sánh tất cả các đồng tiền kỹ thuật số trên cùng một biểu đồ. Bạn cũng có thể thử các giá trị tham số khác nhau (ví dụ: scale=linear) để hiểu dữ liệu từ các góc độ khác nhau.

3.4 Bắt đầu phân tích liên quan

Người đọc cẩn thận có thể nhận thấy rằng giá của các đồng tiền kỹ thuật số dường như có liên quan, mặc dù giá trị của chúng rất khác nhau và rất biến động. Đặc biệt là kể từ sự gia tăng mạnh mẽ vào tháng 4 năm 2017, thậm chí nhiều biến động nhỏ dường như xuất hiện đồng thời với biến động của thị trường nói chung.

Dĩ nhiên, kết luận dựa trên dữ liệu sẽ thuyết phục hơn so với trực giác dựa trên hình ảnh.

Chúng ta có thể sử dụng hàm Pandas corr () để kiểm chứng giả thuyết tương quan trên. Công cụ kiểm tra này tính toán hệ số tương quan Pearson tương ứng với mỗi khối dữ liệu khác.

Đánh giá sửa đổi: Phần này đã được sửa đổi để sử dụng tỷ lệ lợi nhuận hàng ngày thay vì giá trị tuyệt đối khi tính toán các yếu tố liên quan.

Tính toán trực tiếp dựa trên một chuỗi thời gian không cố định (ví dụ như dữ liệu giá nguyên bản) có thể dẫn đến sự sai lệch của hệ số tương quan. Giải pháp cho vấn đề này là sử dụng phương pháp pct_change (), chuyển giá trị tuyệt đối của mỗi giá trong mảng dữ liệu thành tỷ lệ trả lại hàng ngày tương ứng.

Ví dụ, chúng ta tính các hệ số liên quan đến năm 2016.

# 计算2016年数字货币的皮尔森相关系数
combined_df_2016 = combined_df[combined_df.index.year == 2016]
combined_df_2016.pct_change().corr(method='pearson')
Tên 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

Hình trên cho thấy tất cả các hệ số có liên quan. Các hệ số gần 1 hoặc -1, tương ứng, có nghĩa là chuỗi có liên quan tích cực hoặc ngược lại, và các hệ số gần 0 cho thấy các đối tượng tương ứng không liên quan và biến động của chúng là độc lập với nhau.

Để hiển thị hình ảnh tốt hơn, chúng tôi đã tạo ra một chức năng trợ giúp hình ảnh mới.

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

Ở đây, các giá trị màu đỏ đậm đại diện cho sự tương quan mạnh (mỗi loại tiền tệ rõ ràng liên quan đến độ cao của chính nó), và các giá trị màu xanh đậm đại diện cho sự tương quan ngược lại. Tất cả các màu ở giữa - xanh nhạt / sơn / màu xám / nâu - các giá trị của chúng đại diện cho mức độ tương quan yếu hoặc không liên quan.

Về cơ bản, nó cho thấy sự biến động về giá của các loại tiền kỹ thuật số khác nhau trong năm 2016 với hầu như không có sự liên quan đáng kể về mặt thống kê.

Bây giờ, để xác minh giả thuyết của chúng tôi về việc tăng cường sự liên quan của tiền kỹ thuật số trong những tháng gần đây, chúng tôi sẽ lặp lại các bài kiểm tra tương tự với dữ liệu bắt đầu từ năm 2017.

combined_df_2017 = combined_df[combined_df.index.year == 2017]
combined_df_2017.pct_change().corr(method='pearson')
Tên 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

Những con số trên có liên quan hơn không? Có đủ để đánh giá đầu tư không?

Tuy nhiên, đáng chú ý là hầu hết các loại tiền kỹ thuật số đã trở nên liên kết với nhau.

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

img

Như bạn có thể thấy từ hình trên, mọi thứ đang trở nên thú vị hơn.

Tại sao điều này lại xảy ra?

Nhưng thực tế là, tôi cũng không chắc...

Phản ứng đầu tiên của tôi là các quỹ đầu cơ gần đây đã bắt đầu giao dịch công khai trên thị trường tiền kỹ thuật số. Các quỹ này nắm giữ một lượng vốn lớn hơn nhiều so với các nhà giao dịch thông thường, và nếu một quỹ đầu tư đầu tư của mình trên nhiều loại tiền kỹ thuật số, thì sử dụng chiến lược giao dịch tương tự cho mỗi loại tiền tệ dựa trên các biến độc lập (ví dụ như thị trường chứng khoán).

Hiểu sâu hơn về XRP và STR

Ví dụ, từ biểu đồ trên, bạn có thể thấy rõ rằng XRP (đối tượng của Ripple) có mối quan hệ ít nhất với các loại tiền kỹ thuật số khác. Nhưng có một ngoại lệ đáng chú ý là STR (đối tượng của Stellar, tên chính thức là "Lumens"), có mối quan hệ mạnh mẽ với XRP (tỷ lệ liên quan: 0.62).

Điều thú vị là Stellar và Ripple là hai nền tảng Fintech rất giống nhau, và cả hai đều nhằm giảm các bước phức tạp khi chuyển tiền xuyên quốc gia giữa các ngân hàng. Có thể hiểu được, với sự tương đồng giữa các dịch vụ blockchain sử dụng token, một số người chơi lớn và quỹ đầu cơ có thể sử dụng chiến lược giao dịch tương tự cho các khoản đầu tư của họ trên Stellar và Ripple. Đây có thể là lý do tại sao XRP có mối liên hệ mạnh mẽ hơn với STR so với các loại tiền kỹ thuật số khác.

Được rồi, đến lượt bạn!

Những lời giải thích trên phần lớn là phỏng đoán, có lẽ bạn sẽ làm tốt hơn. Dựa trên nền tảng mà chúng tôi đã đặt ra, bạn có hàng trăm cách khác nhau để tiếp tục khám phá những câu chuyện ẩn trong dữ liệu.

Dưới đây là một số lời khuyên của tôi để người đọc có thể tham khảo để tiến hành nghiên cứu về các hướng này:

  • Thêm thêm dữ liệu về tiền kỹ thuật số cho toàn bộ phân tích
  • Điều chỉnh phạm vi thời gian và độ hạt của phân tích liên quan để có được cái nhìn về xu hướng tối ưu hoặc độ hạt mỏng.
  • Tìm kiếm xu hướng từ khối lượng giao dịch hoặc khai thác dữ liệu blockchain. Nếu bạn muốn dự đoán biến động giá trong tương lai, bạn có thể cần nhiều dữ liệu tỷ lệ mua / bán hơn so với dữ liệu giá nguyên bản.
  • Thêm dữ liệu giá trên cổ phiếu, hàng hóa, tiền tệ hợp pháp để quyết định những gì trong số đó có liên quan đến tiền kỹ thuật số ((nhưng, đừng quên câu nói liên quan không có mối liên hệ nhân quả))
  • Sử dụng Event Registry, GDELT, và Google Trends để định lượng số lượng các từ nổi tiếng xung quanh một loại tiền kỹ thuật số cụ thể.
  • Sử dụng dữ liệu để đào tạo một mô hình học máy dự đoán để dự đoán giá cả ngày mai. Nếu bạn có tham vọng lớn hơn, bạn thậm chí có thể xem xét thử đào tạo trên với mạng thần kinh tuần hoàn (RNN).
  • Sử dụng phân tích của bạn để tạo ra một robot giao dịch tự động, thông qua các giao diện lập trình ứng dụng tương ứng (API), được áp dụng trên các trang web giao dịch, chẳng hạn như các sàn giao dịch như Polonix hoặc Coinbase. Xin lưu ý: một robot kém hiệu suất có thể dễ dàng làm cho tài sản của bạn biến mất ngay lập tức.这里推荐使用发明者量化平台FMZ.COM

Phần tốt nhất về Bitcoin, và về tiền kỹ thuật số nói chung, là bản chất phi tập trung của chúng, điều này làm cho nó tự do hơn bất kỳ tài sản nào khác. Bạn có thể chia sẻ phân tích của mình bằng nguồn mở, tham gia vào cộng đồng, hoặc viết một blog! Hy vọng rằng bạn đã nắm vững kỹ năng cần thiết để tự phân tích và khả năng suy luận trong tương lai khi đọc bất kỳ bài viết về tiền kỹ thuật số suy đoán nào, đặc biệt là những dự đoán không được hỗ trợ bởi dữ liệu.https://www.fmz.com/bbsCác bạn có thể tham khảo thêm.


Có liên quan

Thêm nữa

ruixiao1989Bài viết rất có giá trị, tôi đã học được, cảm ơn.

TốtCảm ơn vì đã yêu thích!