สอนใช้ Big Data วิเคราะห์ Bitcoin เมื่อ Google Search บอกอนาคตได้

Vithan Minaphinant
investic
Published in
4 min readJun 13, 2018
When Picture tell a thousand words — Search term ‘bitcoin’ vs Bitcoin Price

หลายคนสงสัย อนาคตของ Bitcoin จะมีทิศทางอย่างไร บทความนี้จะสอนในระดับเบื้องต้นมากๆ ไม่มีการทำ Big Data ให้วุ่นวาย เพียงแต่ใช้ผลลัพธ์จาก Big Data เท่านั้น

เป็นการวิเคราะห์แบบไวๆ เสร็จในเวลาไม่ถึงชั่วโมงครับ โดยใช้ python (ลอกตามด้วย excel ก็ได้ครับ) จะยังไม่ทำ Model เพื่อ predict ราคา และใช้แค่ Factor เดียวก่อนครับ เพื่อยกตัวอย่างให้เห็นภาพว่า เขาใช้ Big Data ในการลงทุน/เก็งกำไร กันได้อย่างไร

ไม่ใช้ Model แล้วจะได้คำตอบเหรอ … ได้สิครับ เพราะ picture tell a thousand words

จากรูปด้านบนจะเห็นว่า ผลลัพธ์ของการค้นหาผ่าน Google นั้น มีความสัมพันธ์กับราคาอย่างมาก

ขั้นตอนที่ 0 เข้าใจ Data

Data ที่เกี่ยวข้องกับ Bitcoin มีมากมาย ขอไม่บรรยายล้านแปด เราคงไม่เอา data ทั้งหมดมาเข้า model โดยที่ยังไม่รู้จัก ยังไม่เข้าใจมัน

พูดถึง Big Data มันก็ต้องเป็น Data ที่เยอะหน่อยๆ มีข้อมูลมหาศาล ย่อยแล้วได้ Insights แน่นอน แบ่งกว้างๆเช่น

ข้อมูลตลาดเงินดิจิทัล เช่น จำนวนเหรียญ ICO, มูลค่าตลาด, Marketshare

ข้อมูลธุรกรรมของตลาดมืด ที่ส่งผลโดยตรงต่อการใช้งาน Bitcoin (แล้วจะมีไหมนี่)

ข้อมูลการพูดถึง Bitcoin ในโลก Social, ในการค้นหาผ่าน Google

มา focus กันที่ ข้อมูลการค้นหาผ่าน Google ก่อนครับ

Google Search Term “Bitcoin”
Source: https://www.coindesk.com

ชัดเจนมากครับว่า ทุกครั้งที่ Bitcoin ขึ้น การค้นหาจะเพิ่มมากขึ้น เนื่องจาก Bitcoin เป็นเรื่อง “ใหม่” สำหรับหลายๆคน

หากกด log scale ดู จะพบว่าแต่ละรอบ bitcoin ขึ้นได้ถึง 1000% เป็นเรื่องปกติ ครั้งนี้ก็เช่นกัน แปลว่าใช้ได้ และที่สำคัญที่ต้องจดไว้เลยคือ magnitude ในการ search ครั้งนี้ (Dec,17) เพิ่มกว่าครั้งก่อน (Dec,13) สูงถึงประมาณ 8 เท่า (13 → 100) ซึ่งในอดีตไม่เคยโตขนาดนี้

มาลองสร้างกราฟ Bitcoin Price vs Bitcoin Search และแกะ insights ดูดีกว่าครับ

ขั้นตอนที่ 1 เตรียม Data

ดึงข้อมูลกันก่อน สำหรับ Google Trend เข้าที่ https://trends.google.com/trends/ หรือใช้ API ก็ได้ครับ

แล้วก็พิมพ์ search เข้าไปเลยครับว่า bitcoin และเลือกช่วงเวลา

ส่วน bitcoin ก็แล้วแต่จะดึงครับ

แต่ !! ผมดึงรวมมาให้แล้ว 2 ปี เพื่อมาทำกราฟ

https://drive.google.com/open?id=1lcHhdIy9gpGiZm_Eoeijq31jKhDf_8GK

จับใส่ python เลยครับ

import library ที่จำเป็น (รวมเผื่อๆไว้ก่อนด้วย)

import pandas as pd
import datetime
import matplotlib.pyplot as plt
import numpy as np

หลังจากนั้น ก็ดึงข้อมูลเข้ามาใส่ dataframe ครับ ขอใช้ชื่อ df เพื่อความคุ้นเคยของทุกท่านครับ และที่สำคัญอย่าลืม parse date และ set เป็น index นะจ๊ะ

df = pd.read_csv('btc_data.csv',parse_dates=['Date'],index_col='Date')

ขั้นตอนที่ 2 สำรวจข้อมูล

ลองดู df กันก่อนครับว่าข้างในมีอะไรบ้าง

คราวนี้ลอง plot graph กันครับ สคริปตามนี้เลย

โถ รูปไม่สวยเอาซะเลยครับ แต่ช่างความสวยงามไปก่อน มาดู data กัน จะสังเกตได้ว่า ผลลัพธ์การ Search คำว่า Bitcoin มีผลกับราคา Bitcoin มาก บางช่วงจะ Lead ด้วยซ้ำ ส่วนบาง (โดยเฉพาะปี 2018 ความสัมพันธ์เริ่มจบลง)

ส่วนใครอยากได้กราฟที่ดู profressional ขึ้นแบบรูปแรกด้านบน ผมใช้คือ ‘fivethirtyeight’ มันให้ความรู้สึกเหมือนพวกเว็ปนอกพวก The Economist กับ Wallstreet Journal ดี

จะวิเคราะห์ได้ ต้องเข้าใจจิตวิทยาการลงทุนก่อน ไม่งั้นมืดแปดด้าน ว่าทำไม บางช่วง uncorrelated

เส้นสีแดงก็คือ ราคาสินทรัพย์ นั่นเอง จะสังเกตได้ว่า ใน 1 cycle หรือ 1 รอบวัฎจักรนั้น มีหลายช่วง คือช่วง Stealth, Awareness, Mania, Blow off โดยมีจุดพีคคือ “New Paradigm” ซึ่งได้เกิดขึ้นไปแล้ว

ช่วงที่ “เม่า” จะเข้าลงทุนในหุ้น หรือสินทรัพย์ใด หรือ Bitcoin แน่นอนว่าคือช่วง Mania (และมีพวกนักลงทุน นักเก็งกำไรเก่งๆเข้ากันตั้งแต่ช่วง awareness หรือ stealth บ้าง)

ช่วงนี้นักลงทุน นักเก็งกำไร จะ search หาข้อมูลเยอะ เพราะมันเป็นเรื่องใหม่ หรือติดตามข่าวสาร ก่อนจะเริ่มลงทุน (แน่นอนมีขั้นตอน รอ เปิดบัญชีด้วย หรือเปิดแล้วกล้าๆกลัว ค่อยๆซื้อ) ทำให้ผลการ Search Google ว่า Bitcoin นั้น นำหน้าราคา ได้ดีทีเดียว (จึงเป็น leading indicator)

ส่วนช่วงหลังปี 2018 ที่ไม่ผลการ search ไม่วิ่งตามราคา แต่ search ดิ่งลงท่าเดียว เป็น lagging indicator ยืนยันว่าจบรอบแล้ว ไม่สามารถมา predict ราคาระยะสั้นได้ ส่วนราคาเด้งไปเด้งมาเพราะคนเลิก search แล้ว บ้างก็ติดดอยลบแอป บ้างก็ถือลืม จะเหลือแต่พวกเช็คข่าว ส่วน trader ก็ดันราคาไปมาได้ง่ายขึ้น

สรุป ถ้ายังไม่ทำอะไรกับข้อมูลในเชิงลึก จะสรุปได้ว่า Bitcoin นั้นจบรอบแล้ว เพียงแต่เด้งไปเด้งมา (รอบเล็กก็ 50–100% นะที่ผ่านมา) Data ที่เราใช้ + ความเข้าใจในจิตวิทยาลงทุน บอกเราว่า รอจังหวะที่เป็น ข่าวดี และ Google Search พุ่งขึ้นอีกครั้งครับ แต่ในความเป็นจริงยังมีปัจจัยอื่นๆ และการจัดการ data อีกมากครับ

ในบทความนี้เป็นแบบเบื้องต้นครับ สิ่งที่ต้องทำในระดับถัดไปสำหรับท่านที่สนใจด้านนี้คือ

  1. เลือกว่าจะใช้ Price หรือ Return ไปทำโมเดล
  2. เลือกช่วงเวลาที่จะใช้ อย่างที่บอกไป น่าจะเหมาะกับ Awareness และ Mania แต่เท่าที่ดูด้วยตาช่วง Early Blow off ก็ยัง lead นิดหน่อย
  3. ปรับ Lead lag ของข้อมูลให้เหมาะสม
  4. หา Factor อื่นๆมาประกอบในโมเดล

จบแล้วครับ ในระดับ Basic ที่เหลือเป็นเกร็ดความรู้สำหรับคนอยากเล่น data ต่อ

https://www.finnomena.com/careers/

เกร็ดความรู้ เลือกใช้ Correlation ของ Index หรือ Return ดี?

ก่อนอื่นต้องเข้าใจ Data ครับว่า

  1. Bitcoin Search ถูก normalize มาให้จาก Google ครับ และมีการ ปัดเศษ ทำให้มันหายไป อีกทั้งบางช่วง
  2. data แต่ละช่วงมี lead lag ที่ไม่เท่ากันเพราะ environment มันต่างกัน ตามที่เล่าไปแล้ว

เอาล่ะ มาฝืนกันดู เพื่อหา Correlation ของ Return

เริ่มจากสร้าง time series return ขึ้นมาก่อนครับ โดยใช้ shift()หรือใช้ pct_change()

#shift method
df2 = df.copy()
df2['Bitcoin Search Chg'] = df2['Bitcoin Search'] / df2['Bitcoin Search'].shift(1) -1
df2['Bitcoin Weekly Return'] = df2['Bitcoin Price'] / df2['Bitcoin Price'].shift(1) - 1
#pct_change method
df3 = df.copy()
df3['Bitcoin Search Chg'] = df3['Bitcoin Search'].pct_change(1)
df3['Bitcoin Weekly Return'] = df3['Bitcoin Price'].pct_change(1)

ลองเช็คดูจะพบว่าเท่ากันครับ

มาดูความสัมพันธ์กันเลยดีกว่า ผมชอบเริ่มแบบง่ายๆกว้างๆ คือ

จะเห็นว่าในระดับ Index นั้น Bitcoin Search vs Bitcoin Price มี Correlation สูงถึง 82% ใน 2 ปีที่ผ่านมา แต่ พอเป็น Bitcoin Search Chg vs Bitcoin Weekly Return เหลือ 23% ส่วน hybrid นี่ไม่รอดเหลือ 14.4%

ที่การเทียบ correlation จาก return ออกมาน้อยแบบนี้ เป็นเพราะช่วงเวลารึเปล่า? งั้นลองซูมดู

ปี 2018 correlation ติดลบ
ก่อนปี 2018 correlation เป็นบวก

คราวนี้ correlation ติดลบ ถ้าย้อนไปดูจะเห็นว่ามีจังหวะ ผลการค้นหา ‘bitcoin’ spike ขึ้นในบางเวลาพร้อมราคา bitcoin ถล่ม (น่าจะมีข่าวร้าย)

งั้นลองดูแบบละเอียดยิบ

ตัดที่จุดพีค วันที่ 2017–12–18 แบบไม่สน outlier เลย

เรียกได้ว่า กระจายตัวแทบจะไร้ซึ่งทิศทางครับ …. ไม่แปลกที่ Correlation จะต่ำขนาดนั้น

แต่ถ้าเพ่งดีๆ ตัด outlier ออก จะเห็นว่า before peak เส้น ทแยง / ในขณะที่ after peak เส้นทแยง \ … ก็เป็นไปตามค่า Correlation ที่ได้ในตอนแรกครับ

หลายท่านที่เป็น Data Science เสพย์ติด ค่า Correlation สูงๆ predict แม่นๆ ผมขอเตือนก่อนเลยโลกของการลงทุนไม่ใช่แบบนั้น บางที 30 40% ก็เอาไปเขียน research paper กันแล้วครับ เพราะอย่างน้อยมันก็วิ่งทางเดียวกัน

เกร็ดความรู้ ดู Correlation อย่าดูแต่ snapshot ให้ดูเป็น Time Series ด้วย

ในรูปมันมีช่วงที่ฉีกออกจากกัน ทำให้เรามองไม่เห็นว่ามันสัมพันธ์กันอย่างไร

งั้นทำ rolling correlation ดูก่อน

แล้ว rolling window เท่าไหร่ดี? มาลองที่ 26 สัปดาห์หรือ 6 เดือนก่อนครับ

มาส่องผลลัพธ์ที่ได้กัน

ก็จะสังเกตได้ว่า มันสูงตลอดเวลา(ดูเหมือนแกว่งเยอะ แต่จริงๆอยู่ที่ 70%-90% ขยายสเกลไว้ เพื่อให้เห็นรายละเอียด) เฉลี่ยๆดูด้วยตานี่ 83–84% ส่วนช่วงปี 2018 มันสวนลงมายาวๆเพราะ มันวิ่งสวนกันพักหนึ่ง ในเดือนตุลา 2017 ก็เช่นกัน

Correlation breakdown เกิดขึ้น ตั้งแต่เดือน มกรา ถึง เมษายน หากดูแต่เลขผิวๆเราคงสรุปไม่ได้ครับ เพราะมันแกว่งตัวมากกว่าอดีตเยอะ แต่หากเราเข้าใจจิตวิทยาลงทุน ตรงนี้จะช่วยได้

ช่วงนี้ FINNOMENA ก็ยังรับคนอยู่เช่นเคยครับ

เบื่องาน อยากเรียนรู้ อยากทำ Startup ดูรายละเอียดได้ที่ https://www.finnomena.com/careers/

--

--