เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Bitcoin และ Ethereum มี Cointegration หรือไม่?

การวิเคราะห์ cointegration มีสองขั้นตอน ได้แก่ การถดถอย (regression) time series หนึ่งกับอีก time series หนึ่งเพื่อหา cointegration vector จากนั้นจึงทดสอบ ADF บน residuals ของการถดถอย ในตัวอย่างที่ผ่านมา ไม่จำเป็นต้องทำขั้นตอนแรก เนื่องจากเราสมมติโดยนัยว่า cointegration vector คือ \(\small (1,-1)\) กล่าวคือ เราคำนวณผลต่างระหว่าง time series ทั้งสอง (หลังปรับหน่วยแล้ว) แต่ในแบบฝึกหัดนี้ คุณจะต้องทำทั้งสองขั้นตอน

ให้ถดถอยราคาของ cryptocurrency หนึ่ง คือ bitcoin (BTC) กับอีกตัวหนึ่ง คือ ethereum (ETH) หากกำหนดให้ค่าสัมประสิทธิ์การถดถอยคือ \(\small b\) แล้ว cointegration vector ก็คือ \(\small (1,-b)\) จากนั้นให้รัน ADF test บน BTC \(\small - b \) ETH โดยราคา Bitcoin และ Ethereum ถูกโหลดไว้ล่วงหน้าใน DataFrame BTC และ ETH แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์อนุกรมเวลาด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • นำเข้าโมดูล statsmodels สำหรับ regression และฟังก์ชัน adfuller
  • เพิ่มค่าคงที่ให้กับ DataFrame ETH โดยใช้ sm.add_constant()
  • ถดถอย BTC กับ ETH โดยใช้ sm.OLS(y,x).fit() โดยที่ y คือตัวแปรตาม และ x คือตัวแปรอิสระ แล้วบันทึกผลลัพธ์ไว้ในตัวแปร result
    • ค่า intercept อยู่ใน result.params[0] และค่า slope อยู่ใน result.params[1]
  • รัน ADF test บน BTC \(\small - b \) ETH

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Import the statsmodels module for regression and the adfuller function
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller

# Regress BTC on ETH
ETH = sm.___(ETH)
result = sm.OLS(___,___).fit()

# Compute ADF
b = result.params[1]
adf_stats = adfuller(___['Price'] - b*___['Price'])
print("The p-value for the ADF test is ", adf_stats[1])
แก้ไขและรันโค้ด