โมเดลไหนเหมาะกับการลงทุนที่สุด? ต้องใช้โมเดลที่ซับซ้อนขนาดไหนถึงจะมีประสิทธิภาพเพียงพอ? โมเดลยิ่งยากยิ่งดีจริงหรือไม่?

พักหลังมานี้ผมได้รับคำถามหลังไมค์มาค่อนข้างบ่อย ว่าโมเดลไหนกันแน่ที่ลงทุนได้ผลดีที่สุด ผมจะสอนถึงไป 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)…

Alternative bars อีกทางเลือกของการวิเคราะห์ข้อมูลเพื่อการลงทุน

เคยคิดกันมั้ย ว่าข้อมูลหุ้นที่เรานำมาวิเคราะห์กันในทุกๆ วันนี้ ข้อมูลที่มีหน้าตาที่คุ้นเคย อย่างราคาของวันนั้นๆ OHLC (Open-High-Low-Close) และ Volume ที่เกิดขึ้นในวันๆ หนึ่ง มันเหมาะสมเพียงใด ที่เราจะนำมาใช้ในการ วัดความเป็นความตาย (นี่ก็เวอร์ไป) ….. ในการตัดสินใจว่า จะลงทุนในหุ้นตัวใด เมื่อไหร่ เป็นจำนวนเท่าใด เคยนั่งคิดกันมั้ยว่า เจ้าข้อมูลตัวนี้มันสมเหตุสมผลหรือไม่ หรือ มีข้อมูลอื่นๆ ที่อาจจะนำมาลองใช้ได้หรือไม่ วันนี้ เราเลยนำบทความเกี่ยวกับ “ข้อมูลหุ้นทางเลือก” หรือ “Aternative bars” มาเล่าสู่กันฟังค่ะ โดยบทความนี้เราได้เอามาจาก คุณ Harkishan Singh Baniya ที่เค้าเอาไอเดียมาจาก Advances in Financial Machine Learning. ของคุณ marcos lopez de prado อีกทีหนึงนะคะ link บทความต้นฉบับ ที่นี่ บทความเก่าของเราเองที่เคยเขียนในเรื่องนี้ สามารถอ่านได้ที่นี่ อะไรคือ…

Value-at-Risk Part 2: Cornish-Fisher Expansion – Deal with Fat-tailed

วันนี้เรามาต่อกันที่เรื่อง Value at Risk แบบที่ 3 ที่เรียกว่า “Semi Parameter Approach” กันครับ ผู้อ่านท่านใดสนใจบทความเรื่อง Value-at_Risk: part 1 ซึ่งพูดถึง VaR ใน 2 แบบแรก สามารถตามอ่านได้ที่ลิงก์ด้านล่างครับ ประเมินความเสี่ยงด้วย Value at Risk (VaR) แต่ละแบบมีข้อดีข้อเสียอย่างไร ปัญหาของสองแบบแรก ปัญหาของการประเมินสองแบบแรกที่กล่าวถึงในบทความที่ผ่านมา ประเมินความเสี่ยงด้วย Value at Risk (VaR) ก็คือ แบบ Historical มีปัญหาเรื่องการใช้ดาต้าอย่างเดียวในการอธิบายมันจึงไม่มีการตั้งสมมุติฐานใดๆ การประเมินสามารถกระโดดได้มากช่วงปลายการแจกแจง แบบ Parametric เราจะต้องมีการสร้างโมเดล โดยตั้งสมมุติฐานว่าดาต้ามีการแจกแจงแบบใดซักแบบหนึง สมมุติว่าเราใช้ Gaussian distribution มันก็จะมีการใช้ Parameter ในการประเมิน โดยคิดว่าข้อมูลที่เราประเมินเป็น Gaussian ตลอด ถ้าเราตั้งไว้ว่าเป็น Student distribution…

ประเมินความเสี่ยงด้วย Value at Risk (VaR) Part 1: VaR แต่ละแบบมีข้อดีข้อเสียอย่างไร

ความจริงเรื่องนี้ผมเคยเขียนไปเมื่อ 2-3 ปีก่อนแล้ววันนี้มีโอกาสผมขอนำกลับมาเขียนให้เป็นระบบและครอบคลุมขึ้นนะครับ Value at Risk (VaR) คืออะไร VaR คือ “โมเดลที่ใช้ในการประเมินความเสี่ยง” ของพอร์ตฟอลิโอวิธีหนึ่ง ที่ถูกนำมาใช้เพื่อตอบคำถามประเภทที่ ในช่วงเวลาหนึ่งๆ พอร์ตฟอลิโอของเราจะมีโอกาสเสียเงินได้มากเท่าไหร่ ที่ระดับความเชื่อมั่น (Confident Level) แค่ไหน ตัวอย่าง เช่น “จากข้อมูลรายเดือนที่เราของหุ้น ABC เป็นเวลา 30 ปี เรามีความมั่นใจ 95% ว่าถ้าเราถือหุ้นตัวนี้ไว้ในพอร์ตฟอลิโอของเรา หุ้นตัวนี้จะไม่ลดลงเกินกว่า 4% ในช่วงเวลา 1 เดือน” พูดง่ายๆคือ “มีโอกาสแค่ 5% ที่หุ้น ABC จะลดลงเกินกว่า 4% ในช่วง 1 เดือน” นั่นเองเป็น “VaR” เป็นโมเดลที่ใช้กันอย่างแพร่หลายในการวิเคราะห์ความเสี่ยง และวิธีการคำนวณ VaR ก็มีหลายวิธี ซึ่งผมจะแยกประเภท ดังนี้ Non-Parametric วิธีการที่ไม่ต้องใช้ตัวแปรใดๆ ใช้แค่…

การรู้จำรูปแบบสำหรับข้อมูลแบบตามลำดับเวลาด้วย Hidden Markov Model (Pattern Recognition with Sequential Data using HMM)

การค้นพบ “รูปแบบ” หรือ “Patterns” ที่ซ่อนอยู่ภายในข้อมูล เป็นอีกสาขาวิชาที่น่าสนใจ และ มีความท้าทายเป็นอย่างมาก เนื่องจากในปัจจุบันนี้ที่เรากำลังใช้ชีวิตอยู่ในโลกของข้อมูล ซึ่งเรากำลังพูดถึงข้อมูลจำนวนมหาศาล (ต้องขอคุณเทคโนโลยีในการเก็บข้อมูลที่ก้าวล้ำอย่างรวดเร็วไว้ ณ ที่นี้ด้วย!) ข้อมูลถูกเก็บบันทึก แทบจะทุกที่ทุกเวลา ไม่มีใครสามารถวิ่งหนีกระบวนการนี้ได้เลย “Data” หรือ “ข้อมูล” ถือเป็นสิ่งที่มีคุณค่ามหาศาล การมีข้อมูล ถูกเรื่อง ถูกเวลา นั้น ถึงขนาดเปลี่ยนยาจกเป็นเศรษฐี เปลี่ยนขาวเป็นดำ ได้เลยทีเดียว! แต่ถึงอย่างนั้นก็ตาม “ข้อมูล” นี้ จะกลายเป็นแค่ “ขยะไซเบอร์” ทันที ถ้ามันไม่ได้ถูกนำมาใช้งานอย่างถูกต้อง จุดนี้นี่เองที่ทำให้การศึกษาในสาขา “Pattern Recognition” หรือ การระบุรูปแบบที่ซ่อนอยู่ภายในข้อมูล ได้รับความสนใจเป็นอย่างมาก เพราะสามารถขุดค้นเอา “ความรู้” ที่ซ่อนอยู่ในข้อมูล เพื่อนำไปสู่การใช้งานอย่างเหมาะสมได้ “Pattern Recognition” มีด้วยกันมากมายหลากหลายรูปแบบมาก ขึ้นอยู่กับลักษณะการใช้งาน ระบบ Pattern Recognition ยกตัวอย่างระบบที่เราคุ้นเคยกัน เช่น ระบบรู้จำใบหน้า (Face…

Basic Pair Trading with cointegration

สืบเนื่องจากที่แอดได้ไปเข้าร่วมประชุมกับทีมงาน Quantopian ที่ลอนดอน เมื่อปีที่แล้ว หัวข้อที่ทำ workshop กันในงานประชุมก็คือ การพัฒนาเทคนิคการ Hedging ด้วยการทำ Pair Trading ด้วย การใช้ค่าทางสถิติ Cointegration เข้ามาช่วย ซึ่งเป็นหัวข้อที่น่าสนใจมากอีกหัวข้อนึง  หลังกลับมาจากงานประชุม แอดจึงได้เขียนบทความขึ้นมา 2 บทความ เพื่ออธิบายทฤษฏี และ แนวทางการประยุกต์ใช้ Cointegration ในการทำ Pair Trading ซึ่งสามารถหาอ่านได้ใน blog (เดี๋ยวจะลงลิงก์ด้านล่างให้นะคะ) หลังจากลงบทความไปแล้ว ได้รับความสนใจอย่างมากหลังไมค์ มีแฟนเพจหลายท่านต้องการนำไอเดียไปพัฒนาต่อ ทางเราจึงนำทฤษฏีนี้เข้ามาในคอร์สใหม่ เพื่อ ทำการพัฒนา และ Backtest อย่างละเอียด ซึ่งตอนนี้กำลังอยู่ระหว่างการจัดทำ ระหว่างนี้ เลยนำไฟล์ Source code มาฝากหลายๆ ท่านที่สนใจกันก่อนค่ะ เผื่อใครอยากนำไปพัฒนาต่อ และ Backtest ด้วยตัวเอง ไม่ต้องรอเรียนก็จะได้สามารถทำได้  (สำหรับการสอนอย่างละเอียดรวมถึงการ Backtest เพื่อใช้งานจริง…

Modern Portfolio Theory หนึ่งในนวตกรรมเปลี่ยนโลกการลงทุน

อาจารย์ Harry Markowitz ผู้คิดค้นทฤษฏี Modern Portfolio Theory ในปี 1956 อาจารย์ Harry Markowitz(รูปบน) ได้นำเสนอเปเปอร์สำคัญทางด้านการลงทุน ว่าด้วยการจัดสรรพอร์ตการลงทุนด้วยสมการ Modern Portfolio Theory หรือเรียกอีกชื่อว่าMarkowitz Portfolio Theory(MPT) ซึ่งมี Impact อย่างสูงและได้เปลี่ยนโลกการเงินไปตลอดกาล จากการวิเคราะห์การลงทุนแบบรายตัวมาเป็นวิเคราะห์การลงทุนแบบ Portfolio สมัยใหม่ เดี๋ยวเรามาดูกันอย่างกันครับว่า MPT มีไว้ทำอะไร และ สำคัญอย่างไร เพื่อความเข้าใจง่ายผมจะทำให้มีสมการน้อยเท่าที่จำเป็นนะครับ การเข้ามาของ MPT ถือว่าเป็นการเปลี่ยนแปลงมุมมองต่อ Portfolio ให้เป็นวิชาการขึ้น จำคำที่ว่า “Don’t put all your eggs in one basket” มันได้มีการกล่าวถึงกันมานานแล้วก็จริงแต่งานนี้จะก้าวไปอีกสเตป เป็นการพิสูจน์มันทางคณิตศาสตร์ และ พรูพให้เราเห็นไปเลยว่าทำไม ทำไมต้องมี MPT? จากรูปเรามี Asset 2…

Basic Pair Trading (2) : การประยุกต์ใช้ Cointegration

บทความนี้เขียนมาจากการเข้าร่วมสัมมนากับกลุ่ม Quantopain ที่กรุงลอนดอน ประเทศอังกฤษ ส่วนหนึ่งของสัมมนาได้กล่าวถึง Basic pair trading strategy ที่มีการประยุกต์ใช้ค่า Cointegration เราจะตัดส่วนนี้มาพูดถึงกันในบทความชุดนี้ค่ะ บทความแรก Basic Pair Trading (1) สามารถหาอ่านได้จากลิงก์นี้ Basic Pairs Trading (1) : Idea of Cointegration Cointegration idea แนวคิดหลักๆ ของ Cointegration ที่เราจะนำมาใช้กันใน basic pair trading ก็คือ การใช้ค่า Cointegration เพื่อหาหุ้นที่มี “Economic link” ต่อกัน โดยที่ หุ้น 2 ตัวจะ Cointegrated กันก็ต่อเมื่อความแตกต่างของข้อมูล 2 ชุด มีลักษณะเป็น “Mean Reverting” หรือ พูดง่ายๆ…