การวิเคราะห์ Market Trend ของหุ้น โดยใช้ปัจจัยพื้นฐานด้านข่าว

ผมชอบอ่านงานวิจัยของต่างประเทศ ที่เกี่ยวข้องกับ Machine Learning หรือ AI เนื่องจากเคยผ่านงานด้านนี้มาบ้างดังที่ได้เคยเขียน blog Support Vector Machine กับการวิเคราะห์มะเร็งเต้านม  ซึ่ง AI น่าจะมีบทบาทมาก ๆ ในหลายๆ  ธุรกิจในอนาคตอันใกล้นี้

ซึ่ง Machine Learning นั้นก็ต้องส่วนหนึ่งของการพัฒนา AI ในปัจจุบัน ที่พัฒนาความสามารถให้มีความฉลาดเพิ่มมากยิ่งขึ้นจากการเรียนรู้ข้อมูล ที่มีจำนวนมหาศาลในปัจจุบัน ในวงการ trading ก็เป็นวงการหนึ่งที่คิดว่า AI น่าจะมีบทบาทสำคัญมาซักพักหนึ่งแล้ว ซึ่งหลาย ๆ คนอาจจะยังไม่ทราบว่าทุกวันนี้ เราไม่ได้ trade แข่งกับมนุษย์เท่านั้น เรายังต่อสู้กับ AI อีกจำนวนมาก ซึ่งทำให้เราเสียเปรียบเป็นอย่างมาก

งานวิจัยหลาย ๆ ปีก่อนหน้านี้นั้น เน้นไปที่การนำ Technical indicator ต่าง ๆ มาประมวลผล โดยใช้ Machine learning และทำการ prediction อนาคต  ซึ่ง หลาย ๆ งาน  ก็ได้ผลที่น่าสนใจเป็นอย่างยิ่ง แต่ความแม่นยำนั้นต้องบอกว่าถ้านำไปเทียบกับอย่างอื่น ถือว่าความแม่นยำนั้นยังน้อยอยู่มาก เนื่องจาก ภาวะตลาดมีความผันผวนสูง มีผู้เล่นมากหน้าหลายตา ทั้งกองทุนต่าง ๆ รวมถึงรายย่อย ทำให้ AI ไม่สามารถสร้างความแม่นยำในการ trade ได้

แต่ช่วง 2-3 ปีมานี้ เริ่มมีการวิจัยโดยใช้ทฤษฎีใหม่ ซึ่งนำเรื่องของการวิเคราะห์ข่าวสารมาเป็นปัจจัยหลักแทน เพราะ ข่าวสารนั้นมีผลกระทบต่อจิตวิทยาการเทรดของนักลงทุน โดยตรง นัก trade หลาย ๆ คนซื้อตามข่าว ขายตามข่าว ทำให้ข่าวค่อนข้างมีปัจจัยสำคัญต่อราคาหุ้น เป็นอย่างมาก

แต่การวิเคราะห์เรื่องข่าวนั้น ไม่ได้เป็นสิ่งที่ง่ายเลย เผอิญ ผมได้ไปเจองานที่น่าสนใจ คือ Stock Trend Prediction Using News Sentiment Analysis  ซึ่งเป็นการศึกษาที่ใช้รูปแบบของ News Sentiment Analysis หรือการวิเคราะห์ข่าวเป็นปัจจัยที่จะส่งผลต่อการทำนายราคาขึ้นลงของหุ้นในวันถัดไป ซึ่งปัจจุบันนั้น นักลงทุนมีรูปแบบการทำนาย Market Trends ของตลาดในสองรูปแบบหลักคือ การวิเคราะห์ทางด้านเทคนิคอล โดยใช้ indicator ข้อมูลต่าง ๆ ส่วนอีกรูปแบบคือ การวิเคราะห์ปัจจัยพื้นฐานของหุ้น

โดยในงานวิจัยนี้ จะ follow ตามรูปแบบของการวิเคราะห์ปัจจัยพื้นฐาน ในการทำนาย future trend ของหุ้นนั้น ๆ โดยจะพิจารณาจาก ข่าวที่มีผลกระทบต่อหุ้นตัวนั้น ๆ เป็นหลัก และ ใช้ computer algorithm ในการแบ่งประเภทของข่าว ว่าเป็นข่าวที่ดี หรือ ข่าวที่แย่ ต่อหุ้นนั้น ๆ โดยนำเสนอว่า หาก เป็นข่าวดี ก็จะมีโอกาสทำให้หุ้นตัวนั้นขึ้น แต่หากในทางตรงกันข้ามที่เป็นข่าวแย่ ๆ ก็จะทำให้หุ้นตัวนั้นลง ตรงนี้ฟังดูเหมือนจะง่าย แต่การทำจริงนั้นยาก ๆ มาก ๆ เพราะ ข่าวมาจากหลายแหล่งหลายข่าวสาร รวมถึง วิธีการวิเคราะห์เนื้อหาของข่าวนั้นก็เป็นปัจจัยหลักที่จะแบ่งแยกว่าเป็นข่าวดีหรือข่าวร้าย ซึ่งการใช้คนอ่านนั้น ก็อาจจะไม่ยากเท่าไหร่ แต่สำหรับ AI นั้นเราจะทำอย่างไรในการแยกข้อมูลเหล่านี้ที่มีอยู่จำนวนมหาศาล

 

System Design

งานวิจัยได้แบ่งการ design เป็น 3 phases โดยใน phase แรกนั้นจะเป็นส่วนของการวิเคราะห์ข่าว เพื่อหา Polarity Score เพื่อเป็น input ให้กับ phase 2 โดยที่ ใน phase 2 นั้นจะนำ document มา converted เป็น tf-idf vector space เพื่อให้สามารถทำการจำแนกข้อมูลได้   โดยจะใช้ เทคนิคในการทำจำแนกข้อมูล 3 แบบคือ Random Forest , Naive Bayes  และ SVM หรือ Support Vectore Machine ที่ผมเคยกล่าวถึงใน blog ก่อนหน้านั่นเอง การใช้ถึง 3 เทคนิค นั้นก็เพื่อวัด performance ว่าเทคนิคไหนจะให้ความแม่นยำสูงสุด

ส่วน phase สุดท้ายนั้น จะทำการเช็คความสัมพันธ์ระหว่าง ข่าว และ ราคาหุ้น โดยจะใช้การ plot ข้อมูลทั้งสองโดยจะใช้ภาษา R

News Collection

ผู้วิจัยได้ใช้ข้อมูลของ บริษัท Apple โดยจะเก็บข้อมูลย้อนหลัง 3 ปี ตั้งแต่ 1 กุมภาพันธ์ ปี 2013 ถึง 2 เมษายน ปี 2016  โดยข้อมูลนั้นจะรวมถึง ข่าวจาก events หลัก ๆ ทั้งหมดของ apple รวมถึงราคาหุ้นของ AAPL ในช่วงเวลาเดียวกัน  โดยข้อมูลของหุ้นนั้นจะประกอบด้วย 6 ข้อมูลหลัก คือ Open , High , Low , Close , Adjusted Close และ Volume  โดยข้อมูลของข่าวหลัก ๆ นั้นจะมาจากหลาย ๆ สื่อที่เป็นข้อมูล online เช่น  news.google.com , reuters.com finance.yahoo.com

Pre Processing

ซึ่งจากข้อมูลของข่าว ที่เป็น text data นั้นจะเป็นข้อมูลที่ไม่มีโครงสร้าง จึงไม่สามารถที่จะนำเอาข้อมูลดิบเหล่านี้ไปทำการจำแนกได้  ซึ่งข้อมูลดิบเหล่านี้นั้นจะประกอบไปด้วยข้อความขยะเป็นจำนวนมาก งานวิจัยนี้จึงต้องทำการตัดข้อความที่เป็นขยะเหล่านี้ออก เพราะจะไม่มีผลต่อการจำแนก โดยงานวิจัยจะนำเฉพาะส่วนของข้อความจากข่าวที่มีความเกี่ยวข้องกับข้อมูลทางด้านการเงิน

โดยใช้ข้อมูลอ้างอิงจาก  McDonald’s research  ซึ่งได้ทำการวิจัยข้อมูลที่เกี่ยวข้องกับ finance ไว้เป็นทีเรียบร้อยแล้ว ซึ่งจะตัดเหลือข้อมูลที่เกี่ยวข้องกับหุ้นจริง ๆ เช่น  วันที่ ตัวเลข ต่าง ๆ รวมถึง สกุลเงิน  และเพื่อหลีกเลี่ยง คำบางคำ ที่มีความหมายเดียวแต่ใช้ในหลายเหตุการณ์ เช่น คำว่า ‘developed’ , ‘development’ , ‘developing’ นั้นจะถูกทำให้กลายเป็นคำ ๆ เดียวคือ ‘develop’

Sentiment Detection Algorithm

สำหรับการวิเคราะห์ว่าข่าวใดจะเป็นข่าวดี หรือ ข่าวร้าย ให้ได้แบบอัตโนมัติ หรือ sentiment detection นั้น ทางงานวิจัยนั้นใช้ dictionary จากงานวิจัยของ J.Bean ที่เคยทำการวิเคราะห์โดยนำข้อมูลจาก twitter มาใช้ในการวิเคราะห์ทรรศนะคติที่มีต่อสายการบินผ่านข้อมูลจาก feed ใน twitter

ซึ่งการที่จะวิเคราะห์ว่าข่าวจาก article ไหนเป็นข่าวดีหรือข่าวร้ายนั้น ต้องแบ่งคำเป็น 2 ประเภท คือ positive words และ negative words  และทำการนับรวมคำทั้งสองประเภท เพื่อทำการคำนวณ score จากข่าวนั้น ๆ ซึ่งจากข้อมูลของ McDonald’s research ทางผู้วิจัยได้สร้าง dictionary ที่มีคำที่เป็น positive words จำนวน 2360 คำ และ คำที่เป็น negative words จำนวน 7383 คำ โดยการคำนวน score นั้นก็จะนำเอา ผลรวมของ positive words ลบด้วย ผลรวมของ negatives words ในข่าวนั้น ๆ ซึ่ง หาก score มากกว่า 0 นั้น ก็สามารถ assume ได้ว่าข่าวนั้นเป็นข่าวดี  แต่หาก score น้อยกว่า 0 ก็สามารถ assume ได้ว่า ข่าวนั้น ๆ เป็นข่าวร้ายหุ้นที่เราทดสอบ (AAPL)

Classifier Learning

งานวิจัยนี้ได้ใช้ 3 เทคนิค ตามที่ได้กล่าวข้างต้นคือ Support Vector Machine , Random Forest และ Naive Bayes เป็นเทคนิคในการใช้จำแนก ซึ่ง การใช้ 3 เทคนิค ก็เพื่อทำการวัด performance ว่าเทคนิคไหนได้ความแม่นยำสูงที่สุด เมื่อทำการทดสอบกับข้อมูลใหม่

EVALUATION

งานวิจัยนี้ได้ทำการทดสอบ model ด้วยเทคนิคการทดสอบหลาย ๆ แบบ และในหลายเงื่อนไข เพื่อเปรียบเทียบผล โดยประกอบไปด้วย

  • 5-fold cross validation
  • 10-fold cross validation
  • 15-fold cross validation
  • 70% Data split
  • 80% Data split
  • New testing data

 

Figure1 three classifiers against different test options

Figure2 result with new data

 

Figure3 news sentiment score vs stock price

CONCLUSION

การที่จะทำนาย Market Trend ของราคาหุ้นนั้น เป็นสิ่งที่ยากมาก ๆ เพราะขึ้นอยู่กับหลายปัจจัย ซึ่งงานวิจัยนี้ได้สำเสนอในส่วนของปัจจัยพื้นฐานด้านข่าวที่มีผลกระทบต่อราคาหุ้น  ซึ่งจากผลการทดสอบนั้นจะพบว่าปัจจัยเรื่องข่าวนั้นเป็นปัจจัยที่สำคัญอย่างนึง ในการขึ้นลงของหุ้น  ซึ่งข่าวที่ดี หรือ แย่ นั้น การใช้ AI ในการแยกแบบ Automatic นั้นสามารถทำได้ โดยใช้เทคนิค ตามที่กล่าวข้างต้น  ข่าวที่ดีนั้นมีโอกาสสูงที่จะทำให้หุ้นราคาขึ้น ซึ่งตรงข้ามหากเป็นข่าวที่แย่ นั้นก็มีโอกาสสูงเช่นกันที่จะทำให้หุ้นราคาตก

สิ่งสำคัญอีกอย่างนึงที่จะวัดว่าเป็นข่าวดีหรือข่าวแย่ นั้น ข้อมูลจาก dictionary ตามงานวิจัยข้างต้นนั้นก็เป็นสิ่งสำคัญ การใช้ reference ของงานวิจัยที่ผ่านการทดสอบมาแล้วนั้น ทำให้ผลการทดสอบนี้มีประสิทธิภาพมากยิ่งขึ้น รวมถึงการลบข้อความที่เป็นขยะ ออกจากข่าว ซึ่ง มีผลกระทบต่อความแม่นยำในการจำแนกให้มีประสิทธิภาพ เพราะฉะนั้น ต้องใช้หลาย ๆ งานวิจัยที่เกี่ยวข้องร่วมกันเพื่อให้ผลการจำแนกดีที่สุด และผลจากการทดลองการจำแนกโดยใช้ 3 เทคนิค นั้น เทคนิค Random Forest สามารถจำแนกได้ผลแม่นยำสูงสุดในทุก test case โดยมีความแม่นยำสูงถึงระดับ 88% – 92%  โดยอันดับ 2 คือ Support Vector Machine ที่ให้ความแม่นยำประมาณ 86%  ส่วนเทคนิค Naive Bayes นั้นให้ความแม่นยำอยู่ที่ประมาณ 83%

แต่พอมาลอง test กับข้อมูลชุดใหม่นั้น จะพบว่า Support Vector Machine นั้นให้ความแม่นยำสูงถึง 90%  ตามมาด้วย Random Forest ที่ 80% และรั้งท้ายที่ Naive Bayes ที่ 75%  ซึ่ง โดยสรุปนั้นเราก็สามารถสรุปได้ว่า ข่าว เป็นปัจจัยหลัก ปัจจัยนึง ที่มีผลกระทบต่อราคาหุ้น อย่างแน่นอน ซึ่งเราสามารถนำข้อมูลเหล่านี้มาทำการวิเคราะห์และทำนาย Trend ที่จะเกิดขึ้นกับราคาหุ้น ๆ ที่เราสนใจได้ ซึ่งหากเราจะนำมาปรับใช้กับหุ้นไทยนั้น ก็คงจะต้องปรับกันพอสมควรโดยเฉพาะหากข่าวที่เป็นภาษาไทย ซึ่งไม่สามารถที่จะใช้การทดลองแบบนี้ได้แน่นอน แต่หากข่าวที่เป็นภาษาอังกฤษ นั้น คิดว่าผลน่าจะได้ใกล้ ๆ เคียงกัน ซึ่งก็เป็นสิ่งที่น่าสนใจที่จะมาทดสอบกับหุ้นไทยเหมือนกัน เพราะ เทคนิคต่าง ๆ ที่กล่าวในงานวิจัยนั้น สามารถนำมาใช้ได้ เพราะมีการ open ทั้งหมด ทั้ง เทคนิคการจำแนกอย่าง Support Vector Machine ก็สามารถโหลดมาใช้ได้ รวมถึง การใช้ Sentiment Detection Algorithm นั้นเราก็สามารถนำมันมา implement กับหุ้นไทยเพื่อทดสอบ model ข้างต้นได้

 

References :   arxiv.orgmotherboard.vice.com