วิเคราะห์ Sentiment ตลาด Crypto ด้วย Python

Investic
investic
Published in
2 min readMay 26, 2022

การวิเคราะห์ความรู้สึกและอารมณ์จากข้อความ ตัวอย่างเช่นการรีวิวหนัง ร้านอาหาร ทวิตเตอร์ ว่าออกมาในโทนเป็นบวกหรือลบ ซึ่งในรูปแบบของการลงทุนในช่วงหลังเริ่มมีการใช้สิ่งที่เรียกว่า Sentiment Analysis

Sentiment Analysis เราสามารถประยุกต์ใช้กับเรื่องของการลงทุนเพื่อดู mood & tone ของนักลงทุนในเวลานั้นว่าเป็นบวกหรือเป็นลบต่อสินทรัพย์นั้นๆ ซึ่งถ้าออกมาเป็นบวกก็อาจจะเป็นผลดีกับสินทรัพย์ทำให้ราคาอาจไปต่อ แต่ถ้าออกมาในเชิงลบก็อาจจะไม่ค่อยดีและก็อาจส่งผลกับราคาในทางลบเหมือนกัน

ซึ่งการจะใช้ Sentiment Analysis นั้นไม่ใช่เรื่องง่ายเพราะเราต้องเข้าใจเนื้อหา NLP (Natural Language Processing) เป็น AI แขนงนึงที่ช่วยให้คอมพิวเตอร์เข้าใจและตีความภาษาคนได้

ข้อมูลที่เป็นตัวอักษรที่เห็นได้ในปัจจุบันก็มีพวกข่าว หรือจะเป็นการ Tweet ของ Elon ที่ทำให้ราคาเหรียญพุ่งขึ้นได้ เราจะสามารถเอาข้อความเหล่านั้นมาตีความได้ว่าโทนของสินทรัพย์ที่จะลงทุนเป็นบวกหรือลบ และจะเป็นอีกหนึ่งข้อมูลที่เอามาทำให้เราใช้เข้า Model ทำ ML หรือ DL เพื่อทำนายราคาได้

ในโลก Crypto มีความอ่อนไหวกับข่าวอยู่พอสมควรทำให้การตีความว่าข่าวนั้นเป็นบวกหรือลบก็เป็นส่วนนึงที่ทำให้ราคาเหรียญเพิ่มขึ้นหรือลดลง เราได้ไปเจอแหล่งข้อมูลที่น่าสนใจมาคือ Crypto News ซึ่งตัวเว็บไซต์จะรวบรวมข่าวในโลก Cryptocurrency เอาไว้และเราสามารถใช้ API เพื่อดึงข่าว มาเพื่อวิเคราะห์ได้ แต่ที่ดีไปกว่านั้นเว็บไซต์ยัง Provide ตัวข้อมูลที่เป็น Sentiment ต่อข่าวนั้นมากให้เราด้วยมีทั้ง Positive Negative และ Neutral ซึ่งเราสามารถเอามาใช้เป็นข้อมูลเพื่อนำมาวิเคราะห์ตัวเหรียญต่อได้อีกด้วย บอกเลยว่าเป็นการเริ่มต้นในการวิเคราะห์ Sentiment ได้ดีมาก

แต่เราจะต้องใช้ requests เพื่อไปดึงมา

import requests
import pandas as pd

หลังจากนั้นก็ get data จาก url https://cryptonews-api.com/api/v1?tickers=BTC&items=50&token=yourtoken

#เฉพาะ BTC
resp = requests.get('https://cryptonews-api.com/api/v1?tickers=BTC&items=50&token=yourtoken')
# ทุกเหรียญ
alltic = requests.get('https://cryptonews-api.com/api/v1/stat?&section=alltickers&date=last30days&token=yourtoken')

print text ออกมาดู

print(resp.text)

โดยตัวข้อมูลที่ได้มาก็จะเป็นข่าว มี source มาจากไหน เกี่ยวกับเหรียญอะไร แล้ว sentiment เป็นอย่างไร

แล้วก็มาจัดข้อมูลให้อยู่ในรูปแบบ DataFrame

df = pd.DataFrame(resp.json()['data'])

แล้วก็มา plot ดูภาพรวมว่าตอนนี้เป็น Positive Negative หรือ Nuetral

หรือ filter เอาเฉพาะบางหัวข้อเช่น title, date, sentiment, tickers

พอได้ข้อมูลมาก็แล้วแต่เราว่าอยากเก็บในรูปแบบไหนจะ text หรือ json ก็ได้ แต่ json จะเอาไปใช้ต่อง่ายกว่า เราเลยเก็บเป็น json แล้วก็เอามาใส่ dataframe แล้วแสดงออกมาเป็นรูปให้ดูนะก็จะเห็นว่ามันเป็นข่าว แล้วก็จะมี sentiment บอกรวมถึงยังบอกด้วยว่าเหรียญไหนใครไม่ลองถือว่าพลาด

แต่ที่น่าเสียดายคือข้อมูลพวกนี้ไม่ฟรีนะ แต่มีให้ลองเล่นเเบบ freetrial แค่ 14 วันเท่านั้น ใครอยากลองเล่นก็เอาไปใช้ได้ หรือใครสามารถก็เอาข้อมูลไปต่อยอดทำ ML ได้นะ

สร้างกลยุทธ์เทรด Cryptocurrency ด้วย Python ง่ายๆได้แล้ววันนี้ สนใจรายละเอียดคลิ๊กดูรายละเอียดเพิ่มเติมได้ที่
https://bottomliner.co/investic-course-bundle/

Investic

--

--