Algorithmic Trading using Sentiment Analysis

cway investment
cw-quantlab
Published in
4 min readOct 8, 2018

Sentiment Analysis (SA) คือ การวิเคราะห์ข้อมูลที่บ่งชี้สภาวะทางอารมณ์ของคน ที่เกี่ยวข้องกับตลาด หรือสินค้า ปัจจุบันที่อินเตอร์มีบทความต่อการเชื่อมต่อและสื่อสารระหว่างบุคคล โดยเฉพาะการแสดงออกทางอารมณ์(ความคิด ความรู้สึก) รวมไปถึงการรับรู้ข้อมูล ข่าวสารที่รวดเร็วผ่าน social network ทำให้ sentiment data เป็นอีกข้อมูลที่สามารถนำมาใช้ในการวิเคราะห์เพื่อบ่งชี้ ภาวะของตลาดและการเปลี่ยนแปลงที่เกิดได้

การพัฒนาระบบสำหรับ sentiment analysis จากข้อมูลบนอินเตอร์อาศัยเทคนิค Natural Language Processing (NLP) และ Machine learning เพื่อวัดภาวะทางอารมณ์ของคนในตลาด (ลักษณะ opinion mining ) , โทนความคิดเห็นของนักวิเคราะห์ กูรู รวมถึง บุคคลสำคัญที่มีอิทธิพลต่อราคาสินค้า บนสภาวะการณ์ที่เกิดในขณะเวลาต่างๆผ่านข้อความ จากสื่อออนไลน์ เช่น เว็บข่าว(news feed) , บทวิเคราะห์/ความคิดเห็น , twitter เป็นต้น เพื่อทำการจำแนกค่าคะแนนเชิง sentimental จากนั้นทำการวิเคราะห์ความสัมพันธ์ ระหว่าง sentimental data กับข้อมูล Price , volatility และ Volume(Liquidity) ที่เกิด ณ เวลาต่างๆเพื่อใช้ในการนำไปต่อยอดพัฒนากลยุทธ์ในการเทรดต่อไป

Data Collection

ส่วนการรวบรวมข้อมูล Text จากอินเตอร์เน็ตเพื่อนำมาทำ sentiment analysis โดยในการทดลองนี้ใช้แหล่งข้อมูล 2 ประเภทคือ social network จาก twitter ซึ่งระบบจะทำการดึงข้อมูลจาก twitter ด้วยการค้นหาจาก keyword ที่สอดคล้องกับ สินค้าที่ต้องการ เช่น GOLD , Bitcoin , Us Dollar เป็นตัวแทนของ คนทั่วไปในตลาด

ตัวอย่าง twitter ที่เกี่ยวกับ bitcoin

แหล่งข้อมูลประเภทที่สอง คือข้อมูล ข่าว(News) ที่ข้องกับสินค้าที่ต้องการวิเคราะห์ จะใช้การทำ Web Scraping ด้วย Beautiful Soup ซึ่งใช้แหล่งข่าวจากสำนักข่าวการเงินที่เชื่อถือได้ เช่น Yahoo Finance , Reuters และข้อมูลจาก New York Times Archive API

ตัวอย่าง Feed ที่เกี่ยวกับสินค้า ทองคำ

แหล่งข้อมูลที่สาม เป็นข้อมูลจาก กูรู และนักวิเคราะห์ ด้านการเงิน ที่มีคนยอมรับ และติดตามจำนวนมาก โดยความคิดเห็นของคนเหล่านี้จะมีผลกระทบลูกโซ่ ต่อนักลงทุนที่ติดตาม ซึ่งจะดึงข้อมูลมากจาก twitter และ face book

ตัวอย่าง twitter account ของนักวิเคราะห์ แนะนำการลงทุนในทองคำ

ตัวอย่าง twitter ของ Daniel Moss นักวิเคราะห์คนดังด้าน global macro

แหล่งข้อมูลที่สี่ เป็นข้อมูลจากความคิดเห็นของ เทรดเดอร์ หรือ นักลงทุนรายย่อยจาก เว็บบอร์ด โดยใช้ Web Scraping ดึงข้อความเข้ามาแล้วใช้ชื่อสินค้าเป็น keyword ในการค้นหาและเลือกกรอง คำสำคัญที่ใช้วิเคราะห์ทางอารมณ์

ลำดับขั้นตอนเบื้องต้นของการทำ sentimental analysis

Data Pre-Processing

ข้อมูลที่ได้มาเป็นข้อความ(text) ที่จำเป็นต้องใช้กระบวนการเพื่อ Clean และจัดการข้อมูลให้เหมาะสมก่อนนำไปวิเคราะห์ sentiment ต่อโดยเฉพาะการจำแนกประเภทของข้อความ และการคัดกรองเรื่อง ความสัมพันธ์เกี่ยวเนื่อง โดยจะมีการจำแนก(ขจัด irrelevant characters )และให้ค่าน้ำหนักความสำคัญของ ชุดข้อความได้มาก่อนทำการประมวลผล Text Processing เช่นการทำ Tokenize ต่อไป

ตัวอย่างข้อมูลจาก กูรู และนักวิเคราะห์ ด้านการเงินโดยข้อความที่ได้จาก twitter feed ของ Daniel Moss ซึ่งจะนำข้อมูลเหล่านี้มาทำการวิเคราะห์ทางสถิติ ก่อนคัดกรองจำแนกประเภท และให้น้ำหนักความสำคัญ เพื่อนำไปวิเคราะห์ต่อไป

ข้อมูลดิบทั้งข่าว ความคิดเห็น ที่เกี่ยวข้องกับเศรษฐกิจโลก จาก twitter feed ของ กูรูคนดัง

จำแนก keyword ตามจำนวนความถี่ที่เกิดในช่วงเวลา

วิเคราะห์จำนวน activity ที่เกิดในแต่ละช่วงเวลาของวันบน twitter acciunt

ตัวอย่างของการใช้ Keyword คำสำคัญในการค้นหา ข้อความแสดงความคิดเห็นของนักลงทุน นักเก็งกำไรที่เกี่ยวข้องกับ สินค้าที่เราต้องการวิเคราะห์ อย่างในภาพการรวบรวมข้อมูลจาก twitter โดยกรองจากคำสำคัญ เช่น Bitcoin เพื่อทำการเก็บข้อมูลในช่วงเวลาต่างๆ

ตัวอย่างการ track เฉพาะ keyword จาก account ของผู้ใช้ต่างๆที่มีการทวิตข้อความที่เกี่ยวข้อง

เปรียบเทียบจำนวนการทวิตที่เกี่ยวข้องกับ keyword ชื่อสินค้า เช่น gold , bitcoin จากผู้ใช้ต่างๆในช่วงเวลาเดียวกัน

Sentiment Analysis

กระบวนการนำข้อความที่ได้จาก News Feed , Twitter และ Web Scraping เข้าสู่กระบวนการตัดคำแล้วทำการวิเคราะห์ อารมณ์จากชุดข้อมูล โดยเริ่มจากการทำ Tokenization ปรับแต่งการจำแนกด้วยการทำ Tf-idf และการ removing stop words ก่อนเข้าสู่กระบวนการทำ sentiment analysis โดยใช้ machine learning บน training corpora ของ Natural Language Toolkit ซึ่งจะมี corpus ทั้งประเภทข่าว ข้อความเว็บ และ social media เพื่อจำแนก negative / positive sentiment

การทดลองทำการเปรียบเทียบ Classification Model ระหว่าง Support Vector Machines (SVM), Neural Network (MLP) และ Naive Bayes

ผลการทดสอบเบื้องต้นแบบไม่ได้มีการทำ optimization ใน machine learning กับข้อมูลข้อความที่ได้จากสำหรับการทดสอบจากการรวบรวมจำนวน 5000 set ผลการจำแนกด้วย Neural Network (MLP) ได้ผลการจำแนกที่มี accuracy ดีที่สุด แต่เป็นวิธีการใช้เวลาในการประมวลผลมากที่สุดเช่นกัน

เป้าหมายของการทำ sentiment analysis ด้วยการใช้ NLP กับข้อมูลที่ได้จาก Web และ Social Media เพื่อจะหาค่า sentiment จาก ความคิดเห็นและข้อมูลข่าว ที่เกี่ยวข้องกับ สินค้า ในตลาด เพื่อประเมินผลกระทบเชิงอารมณ์เบื้องต้น โดยนำ sentiment data นี้ไปใช้ในการวิเคราะห์พฤติกรรมตลาด หรือมองหาภาวะไม่ปกติที่เกิดต่อไป ในตัวอย่างภาพด้านล่าง ทำการ plot ค่า sentiment value รวมรายชั่วโมง เพื่อวิเคราะห์ความสัมพันธ์ กับ ราคาสินค้า

ตัวอย่างค่า sentiment value ที่ได้จากการคำนวณด้วยโมเดลทางสถิติแบบถ่วงน้ำหนัก แสดงผลแยกข้อมูลตามสัปดาห์

ข้อมูล sentiment ที่ได้จากการจำแนกด้วย machine learning ถูกนำไปเข้าโมเดลสถิติเพื่อคิดค่าคะแนนรวมรายชั่วโมง และสร้างเป็น time series data เพื่อใช้ในการวิเคราะห์ในระบบเทรด ต่อไป ตัวอย่างดังภาพด้านล่าง

ปล. ขอแชร์เป็นไอเดียเบื้องต้น รายละเอียดเชิงลึกคงไม่ได้เปิดเผยทั้งหมดเพราะเป็นงานวิจัยเฉพาะสำหรับระบบ AI ที่พัฒนาขึ้นมาใช้งานจริงในตลาด

ศึกษาเพิ่มเติม

https://www.kdnuggets.com/2015/12/sentiment-analysis-101.html

https://www.sciencedirect.com/science/article/pii/S187705091503207X

http://www.ijcsit.com/docs/Volume%205/vol5issue03/ijcsit20140503208.pdf

https://www.kdnuggets.com/2016/01/data-awakens-star-wars-sentiment-analysis.html

https://www.brandwatch.com/blog/understanding-sentiment-analysis/

https://www.analyticsvidhya.com/blog/2015/10/6-practices-enhance-performance-text-classification-model/

--

--