บทความนี้เป็นบทความที่ 3 ในบทความชุด “สอนวิเคราะห์ข้อมูล [ฉบับจับมือทำ] ตั้งแต่เบื้องต้น ถึงการสร้างโมเดล Machine Learning ผ่านข้อมูล การ ซื้อ-ขาย ผลไม้เพื่อสุขภาพยอดฮิตอย่าง Avocado” ก่อนที่จะเริมบทความความนี้ ขออนุญาติรวบรวมลิงก์บทความทั้งชุดนี้ให้ก่อนนะคะ เผื่อใครยังไม่ได้อ่าน 2 บทความแรก จะได้ไปติดตามได้ เนื่องจากบทความทั้ง 3 เป็นบทความที่ต่อเนื่องกัน จึงแนะนำให้อ่านเรียงตามลำดับ ดังนี้ 1. สอนวิเคราะห์ข้อมูล [ฉบับจับมือทำ] ตั้งแต่เบื้องต้น ถึงการสร้างโมเดล Machine Learning ผ่านข้อมูล การ ซื้อ-ขาย ผลไม้เพื่อสุขภาพยอดฮิตอย่าง Avocado {Part 1: Descriptive Analysis} 2. สอนวิเคราะห์ข้อมูล [ฉบับจับมือทำ] ตั้งแต่เบื้องต้น ถึงการสร้างโมเดล Machine Learning ผ่านข้อมูล การ ซื้อ-ขาย ผลไม้เพื่อสุขภาพยอดฮิตอย่าง Avocado {Part 2:…
Category: Statistics
ผลกระทบของการไม่ Rebalance พร้อม (Python code)
“การลงทุนที่ดีที่การลงทุนที่กำไรมากที่สุด” นั่นมันสำหรับมือใหม่เค้าว่ากันครับ การลงทุนที่ได้กำไรมากๆ อาจจะเป็นการลงทุนที่ห่วยแตกก็ได้ และเราไปสนใจกับแค่ช่วงเวลาหนึ่งๆ (one point in time) แล้วพบว่าระบบลงทุนของเรานี่มันดี เพราะทำกำไรได้มาก แต่จริงๆ อาจจจะฟลุ๊กก็ได้ ในการลงทุนที่ดี สิ่งที่ต้องสนใจไม่แพ้ผลกำไร ก็คือ “ความเสี่ยง” ครับ portfolio ที่ดีจะต้องให้น้ำหนักกับเรื่องนี้ให้มาก วันนี้เราเลยจะมาดูเรื่องผลกระทบของการ “Rebalance Portfolio” กันครับ โดยตัวอย่างที่ผมเลือกมาเพื่อให้เราเห็นว่า การลงทุนที่ดีที่สุดไม่จำเป็นต้องทำกำไรมากที่สุด และทำไมต้อง Rebalanced Portfolio กันครับ ก่อนอื่นดึง library ที่ต้องใช้มาก่อน ก็ตัวเดิมๆทั้งนั้น ดึงข้อมูลหุ้น สองตัว Google และ 3M อันนี้เราจะเลือกสุ่มๆนะครับ และเพื่อความเรียบง่าย ผมจะใช้แค่หุ้น 2 ตัวในพอร์ตเป็นตัวอย่าง เราจะสมมุติว่าการถือหุ้นสองตัวนี้จะแบบ equal weight จะดีกับ risk profile ก็แล้วกันครับ หา return ของหุ้นทั้ง 2…
จัดการข้อมูลอย่าง Quants [Part2: จัดการ Missing Value และ คำนวณ Statistics สำหรับข้อมูลทั้งตลาด]
บทความชุดนี้เราจะมาเอาใจสายลงทุนกัน ด้วยบทความชุด “จัดการข้อมูลอย่าง Quants” ซึ่งจะประกอบไปด้วย 3 บทความด้วยกัน ดังนี้ 1.จัดการข้อมูลอย่าง Quants [Part 1: ดึงข้อมูลหุ้น S&P500 ทั้ง 500 ตัว] 2. หลากหลายวิธีกับการจัดการกับ “Missing Value” 3. จัดการข้อมูลอย่าง Quant [Part2: จัดการ Missing Value และ คำนวณ Statistics สำหรับข้อมูลทั้งตลาด บทความทั้งหมดจะเป็น Tutorial สำหรับผู้ที่สนใจการดึงข้อมูลหุ้นเพื่อการลงทุนแบบไม่เสียค่าใช้จ่าย! อ่านไปด้วย Coding ไปด้วยได้เลยครับ บทความที่ 3 นี้ นี้เป็นตัวต่อจากบทความที่แล้ว ฉะนั้นเราคาดหวังว่าผู้อ่านจะมีไฟล์ “sp500_data.xlsx” ที่เราทำกันมาในบทความที่ 1 กันแล้วนะครับ ถ้าท่านใดยังไม่มีไฟล์ สามารถอ่านวิธีการจัดการดาวน์โหลดข้อมูล และสร้างไฟล์ได้ที่ บทความที่ 1 “จัดการข้อมูลอย่าง Quants [Part…
หลากหลายวิธีกับการจัดการกับ “Missing Value”
หลายวันก่อนผมไมได้รับคำถามจากผู้เรียนในคอร์สมาว่า “ถ้ามีข้อมูลที่ Missing Value แล้วเราสามารถทำอะไรได้บ้างนอกจากลบวันที่มีค่า Drop มันทิ้งไป เราสามารถ Forward Fill (เติม Missing Value ด้วยค่าล่าสุดที่เรารู้) ได้ไหม” โดยปกติ Tutorial ทั้งไทย และต่างประเทศส่วนใหญ่ มักจะนำเสนอก็คือ การดึงข้อมูลมาจากผู้ให้บริการซักเจ้า จากชั้น Check ว่ามี Missing Value aka N.A. อยู่ในข้อมูลนั้นไหม ถ้ามี ก็ Drop มันทิ้ง ซึ่งใช่ครับในคอร์ส Python for Finance เราก็สอนแค่นั้น เพราะนั่นคือ คอร์สเบื้องต้นสอนความรู้กว้างๆ ถ้าในคอร์ส AI for Investment เราสอนอีกแบบโดยการใช้ Forward Fill ซึ่งก็เป็นอีกวิธีในการจัดการกับข้อมูล Missing Value เหล่านั้นเพื่องานเฉพาะสำหรับ Project ในคอร์สนั้นๆ แต่คำถามนั้นทำให้ผมคิดได้ ว่ามันเราลืมพูดถึงเรื่องนี้ไปสนิทเลย…
สอนวิเคราะห์ข้อมูล [ฉบับจับมือทำ] ตั้งแต่เบื้องต้น ถึงการสร้างโมเดล Machine Learning ผ่านข้อมูล การ ซื้อ-ขาย ผลไม้เพื่อสุขภาพยอดฮิตอย่าง Avocado {Part 2: EDA}
บทความนี้เป็นบทความที่ 2 ของบทความชุด “สอนวิเคราะห์ข้อมูล [ฉบับจับมือทำ] ตั้งแต่เบื้องต้นถึงการสร้างโมเดล Machine Learning ผ่านข้อมูลการซื้อขายผลไม้เพื่อสุขภาพยอดฮิตอย่าง Avocado” เนื่องจากบทความชุดนี้เป็นบทความที่มีเนื้อหาต่อเนื่องกัน! ดังนั้น เพื่อให้เกิดความเข้าใจ และเป็นประโยชน์สูงสุด ขอแนะนำให้ผู้อ่านเริ่มจากบทความแรกก่อน โดยสามาถอ่านได้ที่ลิงก์ด้านล่างค่ะ บทความที่ 1 อ่านบทความแรกกันไปแล้ว ก็พร้อมแล้วสำหรับเนื้อหาของบทความที่ 2 นี้ ไปเริ่มกันเลยค่ะ อะไรคือ EDA EDA หรือ Exploratory Data Analysis คือ กระบวนการสำรวจข้อมูลเบื้องต้นที่จำเป็น ก่อนที่จะเริ่มการวิเคราะห์ข้อมูลในเชิงลึกแบบอื่นๆ เช่น การทำนายข้อมูล (Predictive) การทำ EDA จะทำการสำรวจข้อมูลในหลายๆ แง่มุม ทั้งในรูปแบบการสำรวจโดยแยกเป็นแต่ละประเภทของข้อมูล และ นำไปสู่การสำรวจความสัมพันธ์ระหว่างตัวแปรที่เกี่ยวข้องในข้อมูลนั้นๆ โดยประโยชน์ของ EDA คือ การมีความเข้าใจข้อมูล และความสำพันธ์ของตัวแปรที่เกี่ยวข้องมากขึ้น หรือ เรียกว่าการหา Insights ของข้อมูล นั่นเอง การทำ EDA…
สอนวิเคราะห์ข้อมูล [ฉบับจับมือทำ] ตั้งแต่เบื้องต้น ถึงการสร้างโมเดล Machine Learning ผ่านข้อมูล การ ซื้อ-ขาย ผลไม้เพื่อสุขภาพยอดฮิตอย่าง Avocado {Part 1: Descriptive Analysis}
อะโวคาโด้ (Avocado) เป็นผลไม้เพื่อสุขภาพที่กำลังได้รับความนิยมเป็นอย่างมาก ทานก็อร่อย เอาข้อมูลมาวิเคราะห์ก็สนุก 🙂 จากการที่เป็นหนึ่งในผลไม้ยอดฮิต ที่มีราคาสูงเป็นอันดับต้นๆ จึงมีการเก็บข้อมูลผลผลิต ข้อมูลราคา และการซื้อขาย อย่างแพร่หลาย เพื่อให้ได้ประโยชน์จากการค้าอะโวคาโด้มากที่สุด เราจึงจับเอาข้อมูลราคา และการซื้อขายเจ้าอะโวคาโด้มาเป็นตัวแทน เพื่อสอนการวิเคราะห์ข้อมูลตั้งแต่เบื้องต้น ไปจนถึงสามารถสร้างโมเดลเพื่อทำนายข้อมูลด้วย Machine Learning ได้ เนื่องจากการวิเคราะห์ข้อมูลมีรายละเอียดค่อนข้างมาก จึงจัดแบ่งหัวข้อ และ บทความออกเป็นส่วนๆ ดังนี้ Part 1: การอ่านข้อมูล ทำความสะอาดเบื้องต้น และการวิเคราะห์ข้อมูลเชิงบรรยาย (Descriptive Analysis) Part 2: การวิเคราะห์ข้อมูลเพื่อสำรวจข้อมูลในเชิงความสัมพันธ์ EDA (Exploratory data analysis) เพื่อค้นหาลักษณะเฉพาะของข้อมูล และทดสอบสมมุติฐานเบื้องต้น Part 3: การวิเคราะห์ข้อมูลเชิงลึก และการสร้างโมเดลในการทำนายข้อมูลด้วย Machine Learning มาเริ่มกันเลยดีกว่าค่ะ 1. โหลด Library ที่จำเป็น General libraries ไลบรารี่พื้นฐานต่างๆ…
รายละเอียดคอร์ส AI for Investment: from AI to Fundamental Investing
คอร์สนี้เป็นคอร์ส “ประยุกต์ใช้ศาสตร์ Artificial Intelligence ในการลงทุน” ภายในคอร์ส เราจะเขียนโปรแกรมที่สามารถ “เลือกหุ้น” ที่จะลงทุนในระยาว ตั้งแต่ 1 ปีขึ้นไป โดยการใช้เทคนิค Machine learning เพื่อคัดแยกหุ้นที่น่าลงทุนมาให้เรา เป้าหมายของคอร์ส สร้างโปรเจคเพื่อ“คัดแยกหุ้นที่น่าสนใจด้วย Machine Learning” เราจะพาทุกท่านมาสร้าง ตะแกรงร่อนหุ้น เพื่อเฟ้นหาหุ้นที่น่าสนใจท่ามกลางหุ้นนับพันตัว!!! รายละเอียดหัวข้อต่างๆ ที่เราจะได้เรียนรู้จากการเรียนคอร์สนี้ เรียนรู้วิธีการหาข้อมูลหุ้น ข้อมูลงบการเงิน ประเภทข้อมูล ข้อมูลสูงระดับล้านแถว เรียนรู้วิธีการจัดการข้อมูลงบการเงิน และการสร้าง Financial Feature ที่ส่งผลต่อการทำนายด้วย โมเดล Machine Learning การทำความสะอาดข้อมูล (Data Cleaning) เพื่อเตรียมพร้อมสำหรับการสร้างโมเดล AI ความรู้เบื้องต้นเกี่ยวกับ Machine Learning เช่น การแบ่งข้อมูล Train-Test Set ปัญหา Overfittingการหาจุดสมดุลของโมเดล (Bias Variance Tradeoff) Machine…
โมเดลไหนเหมาะกับการลงทุนที่สุด? ต้องใช้โมเดลที่ซับซ้อนขนาดไหนถึงจะมีประสิทธิภาพเพียงพอ? โมเดลยิ่งยากยิ่งดีจริงหรือไม่?
พักหลังมานี้ผมได้รับคำถามหลังไมค์มาค่อนข้างบ่อย ว่าโมเดลไหนกันแน่ที่ลงทุนได้ผลดีที่สุด ผมจะสอนถึงไป deep learning หรือเปล่า คำตอบคือทำแน่ครับ แต่มันเป็นควรจะแยกไว้ต่างหากอีกเรื่องหนึงเลย แต่เอาเถอะ มาที่คำถามกันว่าโมเดลไหนดีที่สุดกันก่อน ในความคิดของผมอันที่จริง ปัญหานี้นับเป็นปัญหาของมือใหม่อย่างหนึ่งครับ คือความคิดที่เป็น myth ที่ว่า machine learning model ยิ่งลึกซึ้ง ยิ่งซับซ้อนมากๆ จะยิ่งดี ความคิดที่ว่า โมเดลพื้นฐานอย่าง linear หรือ logistic regression เป็นโมเดลที่แย่ เพราะง่ายเกินไป! ถ้าเพิ่มความละเอียดไปเป็น support vector machine มันก็จะยิ่งได้ผลลัพธ์ที่ดียิ่งขึ้น หรือ เพิ่มรายละเอียดไปถึงโมเดลที่ลึกซึ่งมากขึ้นอย่างโมเดลที่โด่งดังในช่วง 4 -5 ปีมานี้่อย่าง neural network deep learning ก็จะยิ่งดีขึ้นไปอีก โมเดลยิ่งซับซ้อนยิ่งดีจริงหรือเปล่า? คำตอบของผมคือ ไม่ครับ ไม่จริงซะทีเดียว ML หลายๆโมเดลมันก็เป็นแค่การแก้ปัญหาเชิง geometric เท่านั้น แล้วโมเดลไหนเหมาะกับปัญหาของเราทีสุด? คำตอบสั้นๆ ก็คือ…
Backtesting Part2: Adding Stoploss
หลังจากเราทำ backtest แบบง่ายๆไปกันแล้ว เรามาลองเพิ่มรายละเอียดให้กับมันโดยใช้การหยุดการขาดทุน หรือ Stoploss กันดีกว่าครับ เราจะใช้ Technical Analysis indicator ซักตัวหนึงมาใช้เพื่อรักษาระดับกำไรของเราไว้ ในบทความนี้ก็ยังคงพื้นๆอยู่ครับ แต่หลังจากโพสนี้ ยังมีรายละเอียดเกี่ยวการ backtest อีกหลายอย่าง เช่น ความสมจริงของราคาซื้อ-ขาย การเก็บ log วันที่ซื้อ-ขาย หรือปัญหาทาง assumption ทางคณิตศาสตร์ของการ backtest (รวม vectorize ด้วย) ที่เราจะมาพูดคุยและค่อยๆประกอบมันกันครับ เราจะใช้อินดิเคเตอร์ชื่อดังอย่าง Average True Range (ATR) มาช่วยในการรักษาระดับกำไรของเรา อินดิเคเตอร์ตัวนี้ถูกคิดค้นโดยคุณ J. Welles Wilder Jr. ที่เปิดตัวในหนังสือในตำนานทางเทคนิคคอลชื่อ New Concepts in Technical Trading Systems คุณคนนี้เค้ายังคิดค้นเทคนิคอลอินดิเคเตอร์ที่เรารู้จักกันดี และยังใช้กันอยู่ในทุกวันนี้อีกหลายตัวด้วยกัน เช่น Relative strength index(RSI), Average…
Backtesting Part1: อย่างง่าย แบบ Non-vectorization ฉบับจับมือทำ [แจกโค้ด]
อย่างที่เรารู้กันมาว่าการเขียนโปรแกรม Python ให้ดีคือการหลีกเลี่ยงการใช้ foor loop ที่อาจจะส่งผลให้โปรแกรมทำงานได้ช้าลง เราจะนำไป Optimization ก็อาจจะทำให้ใช้เวลามากเกินจำเป็น แต่บางครั้งก็มีความจำเป็นที่จะต้องทำแบบ Non-Vectorization บ้างเหมือนกัน บทความนี้ขอชวนทุกท่านมาทดลองทำ Backtesting ด้วยตัวเองแบบง่ายๆ กันครับ โดยบทความชุดนี้จะเป็นบทความชุด ในบทความแรกนี้จะไม่มีรายละเอียดมากนัก แต่จะทำเป็น Building blog ให้เราค่อยๆเพิ่มเติมรายละเอียดให้กับการเขียน Backtest เพิ่มเติมต่อไปครับ ทำเองใช้เอง ไม่ต้องง้อใคร เพื่อทดสอบสมมุติฐานของเราในเบื้องต้น มือใหม่ก็เข้าใจได้ แถมแจกโค้ดไปรันกันเองให้หนำใจไปเลย ใครที่เพิ่งเริ่มต้นศึกษา ยิ่งได้ทดลองทำด้วยตัวเอง ก็จะช่วยให้เข้าใจหลักการของการทำ Backtest มากขึ้นไปอีกครับ เกริ่นนำกันมาพาพอสมควรแล้ว อย่าเสียเวลาเลยครับ เรามาเริ่มต้นทำกันดีกว่า กับ Backtesting ฉบับจับมือทำ Step 1: Import Libraries ที่จำเป็น ก่อนอื่นเรามาเริ่มต้นด้วยการ Import ไลบรารี่ที่จำเป็นกันก่อน ในที่นี้เราจะ 4 ไลบรารี่ด้วยกัน ดังนี้ Step 2: ดึงข้อมูลหุ้นจาก…
เรียน 4 skills หลัก Data Science ผ่านโปรเจคคูลๆ แบบไม่น่าเบื่อ สำหรับผู้เริ่มต้น
ในปัจจุบัน ต้องยอมรับแบบไม่มีเงื่อนไขว่าการวิเคราะห์ข้อมูล ได้กลายมาเป็นปัจจัยหลักของแทบทุกธุรกิจไปเรียบร้อยแล้ว หนึ่งในทักษะที่ถูกถามหากันมากที่สุดในการสมัครงานก็คือ ทักษะการวิเคราะห์ข้อมูลแบบ Data Scientist นั่นเอง ทำให้ผู้ที่มีความสามารถในด้านนี้ได้เปรียบกันไปเต็มๆ ข่าวดีก็คือ ทักษะนี้สามารถสร้างได้เองงโดยไม่ต้องกลับเข้าไปลงทะเบียนเข้าเรียนใหม่ค่ะ โดยเฉพาะอย่างยิ่ง ในยุคเทคโนโลยีข่าวสารแบบนี้ แหล่งเรียนรู้มีมากมายนับไม่ถ้วน เพียงแต่หาให้เจอ เลือกแหล่งเรียนรู้ที่เหมาะสมเท่านั้น บทความนี้ Algoaddict จึงขออาสาพาผู้อ่านที่สนใจเริ่มต้นหาความรู้เพื่อเพิ่มพูนทักษะด้านการวิเคราะห์ข้อมูลมาเรียน Skill หรือทักษะหลักๆ ที่จำเป็นสำหรับการทำงานด้าน Data Science ผ่านโปรเจคที่หลากหลายกันค่ะ รับรองว่า เรียนสนุก ไม่น่าเบื่อ จนลืมเวลาไปแน่นอนค่ะ ไปดูกันเลยค่ะ ว่าทักษะเหล่านี้มีอะไรบ้าง และ โปรเจคไหนที่ได้รับเลือกมาในการเรียนทักษะนั้นๆ ค่ะ SKILL 1 การเก็บรวบรวมข้อมูล (Data Collection) Data collection หรือ การเก็บรวมรวมข้อมูล เป็นทักษะที่สำคัญอย่างหนึ่งของ Data Science ในช่วงการทำงาน หรือ ทำวิจัยด้าน AI / Machine Learning ที่ผ่านมาของผู้เขียน ปฏิเสธไม่ได้เลยว่า…
กลยุทธ์ Day of Week ของคุณ Larry R. Williams ทำงานได้จริงไหม
สองสามวันก่อนผู้เขียนได้ อ่านหนังสือ “Long-term secrets to short-term trading” (มีเวอร์ชั่นแปลไทยโดยใช้ชื่อว่า กลยุทธ์เก็งกำไรเทรดระยะสั้น) ของคุณ Larry R. Williams ก็เลยอยากทดลองใช้กลยุทธ์ในการวิเคราะห์ข้อมูลหุ้นตามคุณ Larry ด้วยภาษา Python ดูซะหน่อย จึงถือโอกาสหยิบยกการทดลองนี้มาให้เพื่อนๆ ได้ดูกัน ถือเป็นการฝึกมือภาษา Python และทำความรู้จักกับข้อมูลหุ้นให้มากขึ้นกันไปในตัวด้วยค่ะ สมมุติฐานเริ่มต้น คุณ Larry ได้ตั้งสมมุติฐานของกลยุทธ์นี้ไว้ว่า “ราคาของหลักทรัพย์ในแต่ละวันของสัปดาห์มีลักษณะนิสัย (Characteristic) บางวันมีการปรับตัวขึ้นของราคามากกว่าวันอื่นๆ ในขณะที่บางวันที่การปรับตัวของราคาลดลงมากกว่าวันอื่นๆ อย่างมีนัยยะสำคัญ เช่น หุ้นอย่าง Google อาจจะมีลักษณะของการมีแรงซื้อเข้ามามากใน วันเริ่มต้น ของสัปดาห์ และ มีแรงขายมากใน วันสุดท้าย ของสัปดาห์ ถ้าหุ้นเหล่านั้นมีลักษณะนิสัยแบบที่ว่าจริง เราก็น่าจะสามารถนำข้อมูลนี้มาใช้ประโยชน์ในการสร้างกลยุทธ์การลงทุนได้” ผู้เขียนจึงขออาสา พามาทดลองกลยุทธ์ที่ว่านี้ไปด้วยกันค่ะ บทความนี้ผู้เขียนจะขอใช้หุ้นใน Dow Jones Industrial Average (DJIA) ในการทดลองนะคะ เราจะนำหุ้นเหล่านี้วิเคราะห์ลักษณะเฉพาะ (Characteristic)…