รายละเอียดคอร์ส AI for Investment: from AI to Fundamental Investing

Photo by Hans Eiskonen on Unsplash

คอร์สนี้เป็นคอร์ส

“ประยุกต์ใช้ศาสตร์ Artificial Intelligence ในการลงทุน”

ภายในคอร์ส เราจะเขียนโปรแกรมที่สามารถ “เลือกหุ้น” ที่จะลงทุนในระยาว ตั้งแต่ 1 ปีขึ้นไป โดยการใช้เทคนิค Machine learning เพื่อคัดแยกหุ้นที่น่าลงทุนมาให้เรา

เป้าหมายของคอร์ส

สร้างโปรเจคเพื่อ
“คัดแยกหุ้นที่น่าสนใจด้วย Machine Learning”

เราจะพาทุกท่านมาสร้าง
ตะแกรงร่อน
หุ้น

เพื่อเฟ้นหาหุ้นที่น่าสนใจท่ามกลางหุ้นนับพันตัว!!!

Photo by Yiorgos Ntrahas on Unsplash

รายละเอียดหัวข้อต่างๆ ที่เราจะได้เรียนรู้จากการเรียนคอร์สนี้

  • เรียนรู้วิธีการหาข้อมูลหุ้น ข้อมูลงบการเงิน ประเภทข้อมูล ข้อมูลสูงระดับล้านแถว
  • เรียนรู้วิธีการจัดการข้อมูลงบการเงิน และการสร้าง Financial Feature ที่ส่งผลต่อการทำนายด้วย โมเดล Machine Learning
Photo by Hakan Nural on Unsplash
  • การทำความสะอาดข้อมูล (Data Cleaning) เพื่อเตรียมพร้อมสำหรับการสร้างโมเดล AI
  • ความรู้เบื้องต้นเกี่ยวกับ Machine Learning เช่น การแบ่งข้อมูล Train-Test Set ปัญหา Overfittingการหาจุดสมดุลของโมเดล (Bias Variance Tradeoff)
  • Machine Learning โมเดลแรก “Linear Regression” พร้อมรายละเอียดครบถ้วน เช่น การวัดประสิทธิภาพ ด้วยค่า Least Squares หรือ Mean Square Error สำหรับทั้ง Simple Regression และ Multiple Regression
  • การปรับแต่งโมเดลทำนายด้วย Regularization ดังนี้ 1) Ridge Regression 2) Lasso Regression 3) Elasticnet
  • เทคนิคที่จำเป็นในการทดสอบประสิทธิภาพของโมเดล และ การปรับแต่งโมเดล เช่น Cross Validation, K-fold Validation, Grid Search
Photo by Possessed Photography on Unsplash
  • Project 1: Step-by-Step กับการสร้างโมเดล เลือกหุ้นเพื่อการลงทุนด้วย Linear Regression
  • เทคนิคการปรับข้อมูล (Feature Engineer) เพื่อเพื่อประสิทธิภาพของการทำนาย เช่น Power Transformer
  • แนะนำอัลกอริทึมในการเลือกหุ้นที่น่าจับตามอง “Stock Selection Algorithms”
  • การวัดประสิทธิภาพของโมเดล Performance Visualization, Linear Fit Line, Scatter
  • การซิมมูเลชั่นผลการทำงานของโมเดล Performance Simulation
  • หนึ่งใน Machine Learning โมเดลที่น่าสนใจอย่าง Decision Tree และการทำงานอย่างละเอียด
  • เทคนิคที่ใช้ในการสร้าง Decision tree Gini Impurity
  • การประยุกต์ใช้ Decision Tree สำหรับปัญหา Regression “Regression Tree”
  • เทคนิคการปรับแต่งต้นไม้ให้มีประสิทธิภาพสูงสุด เช่น Cost Complexity Pruning
Photo by Austin Distel on Unsplash
  • Project 2: Step-by-Step กับการสร้างโมเดล เลือกหุ้นเพื่อการลงทุนด้วย Decision tree
  • การแก้ปัญญายอดฮิตของ Decision Tree อย่าง Overfitting และ Underfitting Tree
  • ปรับโครงสร้าง Decision Tree อย่างมีหลักการ
  • รู้จักกับอีกหนึ่ง Machine Learning ยอดฮิตอย่างป่าแห่งการตัดสินใจ Random Forrest
  • เทคนิคที่น่าสนใจในการรวม Machine Learning หลายโมเดลเข้าทำงานด้วยกัน Ensemble Method
  • ปรับโครงสร้าง Random Forest
  • ปัญหา Data Leak และวิธีแก้ไข เพื่อให้ได้โมเดลที่มีประสิทธิภาพสูงสุด
  • ซิมมูเลชันโมเดลเพื่อการลงทุนอย่างยั่งยืน Multiple Simulation for Sustainable Investing
  • โปรเจคที่ 3: Step-by-Step กับการสร้างโมเดล การเลือกหุ้นเพื่อการลงทุนด้วย Random Forest
Photo by Ian Schneider on Unsplash

ตัวอย่างเนื้อหาบางส่วนจากคอร์ส

Basic Machine Learning

  • เรียนรู้ว่าอะไรคือ Machine Learning และ มันทำอะไรได้บ้าง
  • อะไรคือการแบ่งข้อมูล Train Test และ ทำไปเพื่ออะไร
  • ลองวาดเส้นเพื่ออธิบายข้อมูลกัน (แนวคิดเบื้องต้นของการใช้คณิตศาสตร์อธิบายข้อมูล)
  • จากนั้นเราใช้โมเดลที่สร้างขึ้นไปเปรียบเทียบกับข้อมูล Test
  • อะไรคือ Bias Variance Tradeoff อะไรคือจุดพอดีของการทำโมเดล Machine Learning


Cross validation

  • ทำไมต้อง Cross check ด้วย Cross validation
  • ทำไมผลงานที่ยอดเยี่ยมของโมเดล Machine learning ถึงอาจจะเป็นแค่ภาพลวงตา
  • k fold cross validation
  • ลองทำงานกับดาต้าจริง
  • เราจมาเริ่มโค้ดดิ้งกันที่ดาต้าจริง แต่ยังไม่ใช่ข้อมูลลงทุน โดยเราจะเริ่มกันที่ข้อมูลราคาบ้าน เราจะนำมันมาเพื่อแสดงให้เห็นภาพของ Machine Learning ที่เรียนไป

Linear Regression

  • มาถึงโมเดลที่เราจะใช้ในการทำนายราคาหุ้นแล้วครับ ในบทนี้เราเรียนรู้โมเดลพ้นฐานของ Machine Learning อย่าง Linear Regression กันอย่างละเอียด ว่าโมเดลทำงานอย่างไร อะไรคือ “Learning” ใน Machine Learning เราจะลดค่า Error ของโมเดลลงได้อย่างไร
  • อะไรคือมาตรวัดผลงานของโมเดล
  • จากนั้นปิดท้ายด้วยโค้ดดิ้งเพื่อความเข้าใจที่เพิ่มขึ้นโดยเราจะใช้ข้อมูลง่ายๆ ก่อนเพื่อให้เห็นภาพ

เพิ่มประสิทธิภาพโมเดลด้วย Regularization กัน!

  • บางครั้งโมเดลของเราก็สามารถเรียนรู้กับข้อมูลสอนได้ ดีเกินไป โดยโมเดลไปลด error มากเกินไปจนเกิดการ Overfiting ทำให้ทำงานได้ดีเฉพาะข้อมูลสอนเท่านั้น อย่าเพิ่งหลงดีใจไป!
  • เราจึงมาดูเทคเนคการหลีกเลี่ยงการ Overfit มา 3 แบบ คือ Ridge, Lasso และ Elastic Net
  • Ridge โมเดลจะเรียนดีขึ้นเมื่อให้ความสำคัญฟีเจอร์น้อยลง
  • Lasso โมเดลจะเรียนดีขึ้นเมื่อตัดฟีเจอร์ไม่สำคัญทิ้งไป
  • Elastic (ยืดหยุ่น) Net โมเดลเรียนดีขึ้นเราก็ใช้สองโมเดลข้างบนร่วมกัน
  • โค้ดดิ้งกันอีกครั้งเพื่อความเข้าใจที่ยิ่งขึ้น

Optional พื้นฐานและการหาข้อมูลการลงทุน

รู้จักกับแหล่งข้อมูลหุ้นและข้อมูลงบการเงิน วิธีใช้ API ในการดึงข้อมูล

  • พื้นฐานโปรแกรมมิ่งกับการจัดการข้อมูลเบื้องต้น
  • สร้างเป้าหมายการทำนายด้วยการคำนวณ Return
  • รู้จั้กกับ Data Hub และการรวมงบการเงินประเภทต่างๆ ไว้ด้วยกัน
  • [Optional] การจัดการข้อมูลการลงทุน สร้างฟีเจอร์ และเป้าหมายในการทำนายให้กับหุ้นแต่ละตัว
  • เริ่มจัดการข้อมูลเพื่อสร้าง Training Set และ Testing Set ในโมเดล Machine Learning
  • สร้างอัตราส่วนทางการเงินเพื่อเป็นฟีเจอร์
  • กำหนดจุดหมายในการเริ่มทำนาย จะใช้ช่วงเวลาไหนดี
  • จัดการข้อมูลที่ผิดพลาด หรือ ดูดีเกินจริง
  • สร้างฟีเจอร์เพื่อการทำนาย X และ เป้าหมายในการทำนาย y


Project 1: สร้างโมเดลทำนายหุ้นแบบครบวงจร

  • สร้างโมเดลทำนายราคาหุ้น เตรียมข้อมูลยังไง แค่ไหนถึงจะดีพอ จะใช้อะไรมากำหนดเกณฑ์ เช่น RMSE, R2 เชื่อได้ไหม cross validation ใช้ได้จริงหรือไม่
  • สร้างฟังก์ชันมาตรวัดเพื่อวัดผลการทำงานของการทำนาย จากนั้นวัดผลข้อมูลว่าได้ผลดีที่ดีหรือไม่
  • มาวิเคราะห์กันว่า ผลได้มาแบบนี้ หรือว่าข้อมูลเราไม่เหมาะกันนะ? ถ้าไม่เหมาะแล้วทำยังไงให้เหมาะ? ด้วยการ Transform ข้อมูลให้เหมาะยิ่งขึ้น
  • วิเคราะห์อย่างละเอียดถึงขนาด ของชุดข้อมูล Train และ Test มีผลกับโมเดลหรือไม่ แค่ไหนอย่างไร เราจะมาพิสูจน์กัน
  • มาเริ่มทำนายหุ้นกันต่อ เราจะเริ่มสร้างฟังก์ชันเพื่อแสดงผลการทำนายให้เราตีความได้ง่ายขึ้น พร้อมทั้ง วาดมันออกมาให้เราดูรู้เรื่อง พร้อมทั้งอธิบายการตีความ
  • เริ่มเอาโมเดลที่ได้มาเลือกหุ้นที่เรา (โมเดล) คิดว่า จะมีผลงานดีที่สุด
  • สร้างอัลกอริทึ่มในการเลือกหุ้นจากผลทำนายด้านบน
  • สร้างอีกฟังก์ชันมาทำนายข้อมูลทดสอบ Testing Data ดูเพื่อวัดผลว่าโมเดลเราใช้งานได้ดีจริงไหม
  • เรามาทดสอบกับข้อมูลที่โมเดลไม่เคยรู้จักเลย (ไม่ใช่ Testing Data)


Project 1: พัฒนาประสิทธิาพโมเดล

  • สร้าง Basedline เพื่อเอามาเป็นตัวเปรียบเทียบประสิทธิภาพของโมเดล
  • ลองใช้ Regularization หลายๆ แบบมาดูว่าช่วยให้ผลดีขึ้นจริงหรือไม่
  • ทดสอบให้เรามั่นใจว่าผลลัพธ์ไม่ได้โชคช่วย!
  • เราลองเอาโมเดลใหม่ไปใช้งานจริงดู
  • เรามาเทสแบบ Simulation รายปีกันดีกว่า
  • แล้วมันดีจริงหรือ?

ผลงานเว่อวังด้านบนมันฟลุ๊คหรือไม่ เราจะทดสอบมันอย่างไร

Decision Tree

  • มารู้จักกับโมเดล ต้นไม้ตัดสินใจ หรือ Decision Tree กันว่า ทำงานอย่างไรอย่างละเอียดในแยกประเภทข้อมูล
  • วิเคราะห์ฟีจอร์ทีละตัว เพื่อสร้างโมเดลต้นไม้ด้วยมือเราเอง โดยไม่ใช้ Function สำเร็จรูปช่วยเพื่อความเข้าใจอย่าลึกซึ้ง
  • คำนวณค่า Gini impurity ของต้นไม้ step by step อย่างละเอียด
  • วิเคราะห์โครงสร้างต้นไม้ที่ได้
  • ทดลองด้วยข้อมูลโรคหัวใจ (เอามาเพื่อให้เห็นภาพง่ายกว่าข้อมูลหุ้น)

เราจะตีความกราฟด้านบนอย่างไร?

ดูผลกระทบของการเปลี่ยนแปลง parameter ตอนสร้าง Tree

Pruning Tree

  • ต้นไม้ที่เราสร้างมามันดีที่สุดแล้ว แน่ใจรึเปล่าว่ามันจะไม่ Overfit
  • ถ้าเกิด Overfit ขึ้น เราจะแก้ปัญหาได้อย่างไร
  • เรียนรู้การปรับแต่งโครงสร้างของต้นไม้ แบบไม่ใช้การคาดเดาด้วยการใช้ Cost Complexity Pruning
  • ปรับค่า Alpha อย่างไรถึงจะดี เพื่อต้นไม้ที่มีประสิทธิภาพสูงสุด
  • ลองโมเดลที่ปรับแต่งแล้วกับข้อมูลเดิมดูสิ ว่ามันช่วยให้ผลดีขึ้นหรือไม่

Regression Tree

  • ใช้ต้นไม้ตัดสินใจมาทำนายค่า Continuous อย่าง Return หุ้นกันบ้าง เราจะสอนอย่างละเอียดเช่นเคย โดยใช้แค่กระดาษกับปากกาก็พอ มันจะปรับโครงสร้างอย่างไร มาเรียนรู้อย่างไร
  • ลองทดลองทำนายราคาบ้านกันต่อ

Project 2: ใช้ต้นไม้ลงทุน!

  • สร้างโมเดลทำนายหุ้นด้วย Decision Tree
  • เขียนฟังก์ชั่นอธิบายต้นไม้ จากนั้นเลือกหุ้นด้วยต้นไม้อย่างมีหลักการ
  • พยายามปรับแต่งต้นไม้ด้วยวิธีการ Manual search, Grid search
  • ลองใช้ Cost Complexity Pruning มาปรับแต่งต้นไม้ จากนั้นวัดผล พร้อมวัดผลให้เชื่อได้ว่าไม่ได้ฟลุ๊ค!
  • วิเคราะห์การแจงแจงของผลลัพธ์
  • ทดสอบโมเดลกับข้อมูลที่ไม่เคยเห็น
  • ปัญหาของการใช้ต้นไม้มาทำนายราคาหุ้น ที่อาจจะมีปัญหากับอัลกอริทึ่มในการเลือกหุ้นของเรา เราจะแก้มันอย่างไร มีหลายทาง!!!
  • เอาต้นไม้ที่แก้อัลกอรทึ่มในการเลือกหุ้นมาทดสอบอีกครั้ง

กราฟการทำนายอย่างสมบูรณ์แบบอย่างด้านบนมันเข้าท่าหรือไม่? (สปอย ไม่!!!)

Random Forest

  • ถ้าต้นไม้ 1 ต้นมันเก่งนัก ทำไมเราไม่ใช้หลายๆต้น!!! ข้อดีข้อเสียของ Decision Tree และ Random Forest
  • เรียนรู้โมเดล Random Forest กันอย่างละเอียดเช่นเคย ว่ามันทำงานอย่างไร ต้นไม้แต่ละต้นช่วยกันยังไง step by step เช่นเดิม
  • Bootstrap คืออะไร มีประโยชน์อย่างไร
  • ทำนายราคาบ้านกันต่อ ว่าช่วยให้ผลดีขึ้นหรือไม่

Project 3: ใช้กองทัพต้นไม้ Random Forest มาเลือกเลือกหุ้นกัน

  • ส่วนนี้เราจะทดลองใช้ Random Forest มาเลือกหุ้นกันเช่นเดิม
  • เราจะจัดลำดับความสำคัญของ Feature ได้อย่างไร
  • วัดผลของโครงสร้างหุ้นด้วย Result Distribution
  • ปัญหาของการทดสอบที่มี Data Leak คืออะไร แก้ยังไง
  • ทดสอบโมเดลหลังแก้ปัญหาเลือกหุ้น ทำ Simulation เพื่อเปรียบเทียบกับโปรเจ็คอื่นๆ

กราฟแบบนี้ ต่างจากกราฟ Pefect Fit ด้านบนอย่างไร จริงๆแล้วมันแทบจะเป็น Nature ของ Random Forest เลยที่จะหลีกหนีการ Overfit ให้เรา

นี่ก็เป็นเนื้อหาบางส่วนจากคอร์ส “AI for Investment: from AI to value investing” คิดว่าน่าจะเป็นประโยชน์แก่ผู้ที่กำลังตัดสินใจลงทะเบียนเรียนนะครับ ถ้าตัดสินใจว่าคอร์สนี้ใช่ พร้อมร่วมเดินทางไปกับเราแล้วก็ พบกันในคอร์สครับ Enjoy Leaning and Investing!!

Photo by Clark Tibbs on Unsplash

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s