7 ปัจจัยอันตรายที่ทำให้กองทุนที่ใช้ Machine Learning ต้องพบจุดจบ ในมุมมองของคุณ Marcos Lopez de Prado

❌ 7 ปัจจัยอันตรายที่ทำให้กองทุนที่ใช้ Machine Learning ต้องพบจุดจบ ในมุมมองของคุณ Marcos Lopez de Prado ผู้จัดการกองทุนระดับมหายักษ์ใหญ่ ของโลกอย่าง AQR Capital และ หัวหน้ากลุ่ม วิจัย Machine Learning ของกองทุน

⚠️ เนื้อหาเชิงเทคนิคระดับสูง ในงานวิจัยของ Quants ในองกรใหญ่ อาจจะมีความซับซ้อนไปนิด แอดพยายามเขียนให้เข้าใจง่ายแล้ว ได้แค่นี้จริงๆ ค่ะ ⚠️

1. The Sisyphean Quants (รูปที่ #1)

ปัญหาข้อแรก ได้นำชื่อมาจาก “Sisyphean task” ที่เป็นเรื่องราวของชายชาวกรีกคนหนึ่งที่โดนลงโทษให้เข็ญก้อนหินก้อนมหึมาขึ้นไปบนยอดเขา ซึ่งเป็นงานที่แทบจะเป็นไปไม่ได้ การออกแรงดันทุกครั้ง ก็เพื่อที่จะพบกับการกลิ้งตกลงมาอีกครั่งของก้อนหินเท่านั้น

คุณ Marcos พบว่า สาเหตุแรกเลยที่ทำให้กองทุนที่ใช้ Machine Learning ต้องประสบกับความล้มเหลว ก็คือ ปัญหาพื้นๆ ของการบริหารงาน ที่ขาดการทำงานในลักษณะของ “การร่วมมือกัน” เพื่อดึงคุณลักษณะเด่นของแต่ละบุคคลออกมาใช้

สิ่งที่กองทุนที่ใช้ Machine Learning มักจะกระทำก็คือ การว่าจ้างนักวิจัย Machine Learning จำนวนมาก และ ให้แต่ละคนทำงาน ภายในเวลาที่กำหนด โดย “ต่างคนต่างทำ” ด้วยเหตุผลที่ว่า Machine Learning เป็นงานที่สามารถเปรียบได้ว่าเป็น “Black Box” ซึ่งทำให้ผู้วิจัย ไม่สามารถอธิบายออกมาได้ว่า “ทำไมจึงตัดสินใจ” ทำให้ยากต่อการ “ทำงานร่วมกันเป็นทีม”

แต่ในความเป็นจริง หลักการทำงานของนักวิทยาศาสตร์ คือ การทำงานร่วมกัน มีการถกเถียง แลกเปลี่ยนเรียนรู้กัน เพื่อนำไปสู่บทสรุป ต่อยอดไปยังการค้นพบทฤษฏีใหม่

ดังนั้น หัวใจสำคัญที่จะขับเคลื่อน กองทุนที่ใช้ Machine Learning คือ “การทำงานร่วมกัน” ให้แต่ละคนได้รับผิดชอบงานที่ตัวเองถนัดแยกเป็นงานๆ ไป เช่น parallel processing, production software, data cleaning, researching, backtesting etc. แต่ก็ต้องมีการบริหารจัดการ “ความลับ” ให้ดี เพื่อไม่ให้เกิดปัญหาการขัดแย้งกันเรื่องการเป็นเจ้าของ “แนวคิด”

2. Integer Differentiation (รูปที่ #2-4)

ปัญหาที่สองนี่ แตกต่างจากปัญหาแรกโดยสิ้นเชิง เป็นปัญหาของการวิจัยโดยตรง คุณ Macos กล่าวว่า ปัญหาทั่วๆ ไป ของงานวิจัย Machine Learning ในการลงทุนก็คือ “การไม่พยายามรักษาข้อมูลในอดีต” หรือ การลบ Memory ที่สำคัญทิ้งไป โดยการทำ Integer differentiation (การดิฟด้วยจำนวนเต็ม) เช่น การหา Return ด้วยการ differentiate ราคาวันนี้ กับราคาเมื่อวาน จะทำให้ memory ของวันก่อนหน้า หายไปทั้งหมด ทั้งๆที่ memory ซึ่งเป็นข้อมูลที่แฝงอยู่ในราคาวันก่อนหน้านั้น นับเป็นข้อมูลที่จำเป็นมากๆ ต่อการทำนาย

ถึงแม้เราจะบอกว่า การรักษา information ในอดีตไว้ทั้งหมดเป็นสิ่งที่จำเป็น แต่ในทางกลับกัน การรักษา Memory ไว้ทั้งหมด ก็จะเป็นที่รู้กันดีว่า ทำให้ข้อมูลนั้น ไม่เป็น Stationary และ จะส่งผลให้ ไม่สามารถใช้หลักการทางสถิติมาอธิบายได้! ส่งผลให้ Machine Learning algorithm ไม่สามารถค้นหารูปแบบ (Patterns) ภายในข้อมูลได้

สิ่งที่ต้องทำก็คือ “Trade-off” หรือ การหาจุดที่ดีที่สุด (Optimum Point) จะทำให้ ข้อมูลเป็น Stationary ในขณะที่ Memory หรือ Information ภายในข้อมูล ไม่ถูกทำลายไปจนมากเกินไป นั่นเอง

ซึ่งการใช้ “Fractional Differentiation” ดังรูปที่ #2 ก็เป็นวิธีการหนึ่งที่คุณ Macos แนะนำ จากกราฟ เส้นสีเขียน เป็นราคาจาก E-mini S&P 500 futures และ เส้นสีฟ้าเป็นเส้นที่ได้จากการทดลอง เพื่อหาจุด Optimum ที่จะรักษา Information ไว้ในข้อมูล พร้อมกับการทำให้ข้อมูลเป็น Stationary ซึ่งในทีนี้คือการใช้ d=0.4 ทำ Differentiation แทนที่การใช้จำนวนเต็ม

จะเห็นว่าเส้นสีฟ้าที่ได้ มีความเป็น “Stationary” มองจากตาเปล่าก็จะเห็นว่า ค่อนข้างเป็น flat graph ที่ถึงแม้จะมี Noise มาก แต่ก็ยังเป็นเส้นที่อยู่ในลักษณะตรง แต่ในขณะเดียวกัน memory การเปลี่ยนแปลงของราคาก็ยังคงถูก เก็บรักษาไว้ ดังจะเห็นได้จาก จุด Peak ทั้งทางด้าน บวก และ ลบ ที่เกิดขึ้นในกราฟสีฟ้า เมื่อการการเปลี่ยนแปลงของราคาแบบรุนแรง เป็นต้น

รูปที่ #3 และ #4 เป็นอีกรูปตัวอย่าง ที่แสดงให้เห็น Optimum point ที่จุด d = 0.35 เท่านั้น!! (แกน x) ที่ทำให้ข้อมูลมีลักษณะที่เราต้องการ คือ

1) เป็น stationary (เส้นสีน้ำเงิน ซึ่งเป็นค่าที่ได้จากการทดสอบความเป็น stationary ด้วย ADF test ลากผ่านเส้นประสีแดง ที่เป็นค่า threshold ที่ 95% confidence ของความเป็น stationary ของข้อมูล)

2) มีการรักษา memory ภายในข้อมูลไว้ได้ โดยที่ยังคงมีค่า correlation (แกน y ทางซ้ายมือ) สูง

นอกจากนั้น เมื่อทำการทดลองนี้ กับหุ้น 100 ตัวที่มีสภาพคล่องมากที่สุด Macos พบว่า ค่า differentiation สูงสุดที่ต้องการ เพื่อประโยชน์ในการรักษาสมดุลระหว่าง Stationary และ Memory เอาไว้ มีค่าเพียง 0.5 เท่านั้น ไม่เคยเกิน 0.5 เลย

*** ในส่วนนี้คุณ Macos จึงสรุปว่า จริงๆ แล้วตลาด เป็นสิ่งที่ทำนายได้ แต่ ตลาดจะกลายสภาพเป็นสิ่งที่ไม่สามารถทำนายได้ทันที่ที่เรา Remove Memory ออกจากข้อมูล!! เอ้า ทดลองคราวหน้าลองเปลี่ยน integer differentiate และ fractal differentiate กันนะคะ 🙂

3. Inefficient Sampling (รูปที่ #5)

ปัญหานี้เป็นปัญหาเกี่ยวกับ “มุมมอง” ที่มีต่อข้อมูล ไม่เพียงพอ เนื่องจาก ข้อมูลที่นักวิเคราะห์ใช้กันในปัจจุบัน มักจะถูกเก็บอยู่บนพื้นฐานของ “ช่วงเวลา” ไม่ว่าจะเป็นราคารายชั่วโมง รายวัน รายเดือน หรือ รายปี ก็ตาม… คุณ Macos กล่าวว่ามาตรวัดที่เราใช้ในการเก็บข้อมูลกันนั้น ไม่เพียงพอ เพราะข้อมูลที่เข้ามาในตลาด มันไม่ได้เลือกเวลา ไม่ได้เข้ามาตามจังหวะที่เรากำหนด เช่น ถ้าเราเก็บข้อมูลรายวัน เก็บเฉพาะ Open High Low Close แล้วข้อมูลที่ตลาดได้รับมาในระหว่างช่วงต่างๆ ที่ไม่ได้แสดงออกในช่วงข้อมูลนั้นล่ะ? ก็จะต้องถูกทิ้งไปโดยเปล่าประโยชน์ และ ในส่วนของข้อมูลที่ถูกเก็บในช่วงนี้ไม่มีการเปลี่ยนแปลง ก็จะไม่เป็นประโยชน์อะไรเลยเช่นกัน

วิธีการคือ วิเคราะห์ข้อมูล โดยการ Sampling หรือ แปลงรูปแบบของข้อมูลให้มี “มิติ” ที่หลากหลาย และเอื้อต่อการ วิเคราะห์ในทุกช่วงที่มีข้อมูลใหม่เข้ามา และ สามารถเชื่อมโยงถึงการเปลี่ยนแปลงของข้อมูลที่เข้ามาในตลาด เช่น

– Trade bars

– Volume bars

– Dollar bars

– Volatility or runs bars

– Order Imbalance bars

– Entropy bars

พร้อมกันนี้ คุณ Marcos ยังได้ ให้ตัวอย่างการ Sampling ข้อมูลด้วย Dollar bars ซึ่งจะถูก Sampling เมื่อมีการเทรดเกิดขึ้น ซึ่งจำนวน หรือ ค่าที่ได้มา ก็จะมีความเกี่ยวข้องกับการเปลี่ยนแปลงการเทรดโดยรวมในหุ้นตัวนั้นด้วย เช่น ณ เวลาหนึ่ง มีเทรดเดอร์ที่มีความเชื่อมั่นสูงว่าราคาหุ้นตัวนั้นกำลังจะปรับตัวขึ้น และทำการซื้อหุ้นตัวนั้นเป็นจำนวนมาก Dollar bars ก็จะถูก Sampling มากขึ้นไปด้วย เนื่องจาก ต้องการจับการเคลื่อนไหวของเทรดเดอร์คนนั้น เพื่อที่จะได้นำข้อมูลเข้ามาตรวจสอบได้ในภาพหลัง ใครสนใจ ในวิธีการ Sampling นี้ คุณ Marcos ก็ได้ลงสมการไว้ ให้นำไปลองคำนวณกันได้ค่ะ

อีกตัวอย่างหนึ่ง คือ ตัวอย่างการ Sampling ข้อมูล Frequencies ที่ประสบความสำเร็จในการทำงาน แสดงในรูปที่ #5

กราฟสีดำ คือ Tick bars เป็นกราฟที่แสดงจำนวน Ticks ในแต่ละวัน จะเห็นได้ชัดว่ากราฟนี้ ดูจากตาก็มองออกว่า ยังห่างไกลจากความ stable อยู่มาก เนื่องจากค่าวิ่งขึ้น ลง ในช่วงที่สูง สาเหตุมาจาก จำนวน Ticks ที่มีการเพิ่มขึ้น จากผลกระทบของ High frequency trading ที่ทำให้ขนาดของการเทรดเล็กลง (กราฟระหว่าง ปี 2007-2012) … นี่คือ ตัวอย่าง Sampling ในมิติที่ควรหลีกเลี่ยง เพราะค่าที่สะท้อนออกมาเป็นได้รับผลกระทบจากการเปลี่ยนแปลงของ Technology ภายนอก ซะมากกว่า

จากความไม่เหมาะสมของกราฟสีดำที่กล่าวมาข้างต้น ทำให้มีการใช้ “Volume bars” แสดงในกราฟสีเขียว เข้ามาเพื่อช่วยแก้ปัญหา Volume bars ไม่ได้ถูก Sampling เมื่อ ticks มีการเปลี่ยนแปลงอีกแล้ว แต่จะ Sampling เมื่อ Volume หรือ จำนวน Contracts เปลี่ยนไป ทำให้ กราฟมีความ stable ขึั้นมากอย่างเห็นได้ชัด

สุดท้าย กราฟสีฟ้า “dollar bars” จะเห็นว่า กราฟมีความ stable มากที่สุดในสามกราฟนี้ เมื่อเราหันมาพิจารณา Sampling ข้อมูลบนพื้นฐานของจำนวนเงินที่เปลี่ยนไป กราฟนี้เป็นกราฟที่เหมาะสม เนื่องจากไม่ได้รับผลกระทบจากการเปลี่ยนแปลงของ Technology และ มีความ stable มากกว่า Volume อย่างมีนัยสำคัญอีกด้วย

Wrong Labelling (รูปที่ #6)

เป็นที่ทราบกันอย่างแพร่หลายว่า โดยปกติแล้ว นักวิจัยมันจะทำการ Sampling ข้อมูลและ ใส่ Label ให้กับแต่ละ Sample โดยการพิจารณาว่า ค่า Return ที่เกิดขึ้น ณ เวลาที่กำหนด มีค่าเป็น บวก, ลบ หรือ คงที่ และ มักจะ Label ข้อมูลนั้นเป็น 1, -1 และ 0 ตามลำดับ ซึ่ง การ Label ข้อมูลแบบนี้ คุณ Macos กล่าวว่า ไม่มีความเหมาะสม เนื่องจาก Label ที่ได้ ไม่ได้รวมข้อมูลที่เป็นประโยชน์ต่อการทำนายไว้ และ อาจมักจะพบกว่า Series ของ Labels ที่ได้ไม่มีความสำพันธ์กัน (Zero correlation) นอกจากนี้ ยังไม่มีการแจกแจงแบบปกติ (Normal Distribution) อีกด้วย

วิธีการแก้ ที่คุณ Macos แนะนำ คือ ให้ Label ข้อมูลด้วยการใช้วิธีการที่มีชื่อว่า “The Triple Barrier Method” คือ จากรูปที่ 6 สมมุตว่าเราต้องการจะ Label ข้อมูล ในช่วงตั้งแต่จุด A ไปยัง จุด B ด้วยวิธีการว่า ราคา ณ จุด B มีความเพิ่มขึ้น จากราคาที่จุด A แล้ว Label ข้อมูลนั้นด้วย เลข 1

ถ้าใช้วีธีการ Label แบบ “Triple Barrier” คุณจะต้องสร้างเส้น barriers ขึ้นมา 3 เส้น เป็นเส้นแนวนอนสองเส้น (เส้นประ ที่ 1 และ 2) และ เส้นในแนวตั้งอีก 1 เส้น (เส้นประที่ 3) ดังรูปที่ 6

เส้นประที่ 1 คือ เส้น “Profit taking” ถ้าในระหว่างช่วงที่เราพิจารณาค่าราคาขึ้นไปถึงจุดนี้ เราจะ Label ข้อมูลชุดนี้เป็น 1 ในทางตรงกันข้าม ถ้าข้อมูลลงไปต่ำกว่าจุดเส้นประที่ 2 ซึ่งก็คือ เส้น “Stop loss” ข้อมูลชุดนี้ จะถูก Label ด้วยเลข -1 และ สุดท้าย ถ้าราคาในระหว่างนั้น ไม่ตัดเส้นแนวนอนสองเส้นดังกล่าวไปจนถึงเส้นประที่ 3 ซึ่งเรืยกว่า “Expiration limit” ข้อมูลชุดนั้นก็จะถูกแทนค่าเป็น 0 นั่นเอง

จากตัวอย่างที่คุณ Macos ให้มา ก็จะเห็นว่า การแทนค่า หรือ ตั้ง Label ให้กับข้อมูลนั้น ไม่ได้ขึ้นอยู่กับ “ช่วงเวลา” แต่จะขึ้นอยู่กับ activity หรือ การกระทำที่จะเกิดขึ้น ภายใต้เงื่อนไขที่เรากำหนด ภายในช่วงข้อมูลนั้นๆ แทน

นับว่าเป็นวิธีการที่น่าสนใจจริงๆ ค่ะ ใครสนใจก็ตามอ่านเปเปอร์โลดค่ะ 🙂

อีกตัวอย่างนึงคือ ตัวอย่างของการใช้ “Mata-labelling” ตัวอย่างนี้ก็น่าสนใจค่ะ เป็นตัวอย่างในอีกมุมมองนึงใน Fundamental Firms โดย แทนที่จะใช้ Machine Learning เป็นตัวทำนาย และ ตัดสินใจในการซื้อขาย … วิธีการนี้จะใช้ Machine Learning มาช่วย หลังจากได้รับการตัดสินใจจากผู้เชียวชาญแล้ว!!! น่าสนใจอีกแล้ววววว …

มาดูรายละเอียดกันค่ะ

วิธีนี้จะให้ Machine Learning model ทำการเรียนรู้พฤติกรรมของผู้เชียวชาญแต่ละคน ว่ามีความแม่นยำ แค่ไหน และ เที่ยงตรงแค่ไหน เช่น ที่ผ่านมีการตัดสินใจที่เค้าใช้มีประสิทธิภาพแค่ไหน ในด้านในบ้าง เช่น มีค่า F1 score เท่าไหร่ มีค่า Precision และ Recall เท่าไหร่ เป็นต้น แล้วเจ้า Machine Learning นี้ก็จะเป็นตัวช่วยในการตัดสินใจว่า ในแต่ละครั้งที่ผู้เชียวชาญแต่ละคนทำนาย Position นั้นๆ ควรจะมี ขนาด (Size) เท่าไหร่ นั่นเองค่ะ

เช่น ถ้าผู้เชียวชาญคนนึง มีประวัติ Low-precision แต่ High-recall ซึ่งก็หมายความว่าผู้เชียวชาญคนนี้ มักจะทำนายว่าราคาขึ้น ในวันที่ราคาขึ้นบ่อยครั้ง แต่ในขณะเดียวกับ ก็ทำนายวันที่ราคาตก ว่าขึ้นเช่นกัน (มีค่า Fault Positive สูง) ซึ่ง ณ จุดนี้ คุณ Macos ได้แอบแซวว่า ผู้เรียกตัวเองว่าเป็นผู้เชียวชาญส่วนใหญ่ในปัจจุบันก็เป็นแบบนี้แหละ 555 คือ ทำนายไปก่อนเลยว่าราคาจะ ขึ้นๆๆๆๆๆ ทำนายไป 100 ครั้ง ก็ต้องถูกซัก 50 ครั้งแหละน่าาา … เจ้า Machine Learning ก็ต้องรู้ว่า ถ้าได้รับคำสั่งจาก ผู้เชียวชาญที่มีประวัติเช่นนี้ ควรจำกำหนด Size ในการเทรด เท่าไหร่ เพื่อช่วยลด ค่า Recall เพื่อแลกกับการเพิ่มขึ้นของ Precision เป็นต้น

5. Weighting of non-IID samples

เรื่องนี้คุณ Macos พูดยาวเชียวกว่าจะเข้าเรื่อง มีการเล่นมุขด้วย แต่เนื่องจากเนื้อหาในโพสนี้ค่อนข้างยาว และ ซับซ้อมมากแล้ว แอดขอสรุปหัวข้อนี้ให้ง่ายๆ สั้นๆ แล้วกันนะคะ ว่า ปัญหาหลักๆ ของ ข้อมูล Economic หรือ Finance ซึ่งก็รวมข้อมูลหุ้นด้วย เป็นข้อมูลที่ ไม่สามารถหาข้อมูลเกี่ยวกับ Feature ที่เกี่ยวข้องได้ชัดๆ เช่น สมมุติว่าในทาง Biology เราอยากจะคัดกรองเบาหวาน คุณหมอ ก็จะทราบว่า จะต้องวัดค่าอะไรบ้าง เช่น ค่าน้ำตาล เป็นต้น แต่ในข้อมูลหุ้น มันมีค่า Correlation ที่ซับซ้อนมากเข้ามาเกี่ยวข้อง คุณจะไม่สามารถบอกได้เลยว่า อยากรู้ว่าข้อมูลหุ้น ณ วันที่ 300 ขึ้นอยู่กับข้อมูลหุ้น วันไหนๆ บ้างที่ผ่านมา … สรุป ง่ายๆ ว่าข้อมูลมันจะพัวพันกันไปหมด ไม่สามารถหาข้อมูลที่เราต้องการได้โดยตรงเลย

แล้วจะแก้ยังไง ในจุดนี้คุณ Marcos แนะนำว่า ให้ใช้วีธีการ ให้น้ำหนักข้อมูล โดยการวัดค่าความแตกต่าง (Uniqueness) จากข้อมูลอื่นๆ ใน Series ข้อมูลนั้นๆ โดยถ้าเรามีการพิจารณาค่า Uniqueness เข้าไปด้วย ก็จะทำให้ค่า Accuracy ของ out-sample data สูงขึ้นอย่างมีนัยสำคัญค่ะ ณ จุดนี้ ใครสนใจการคำนวณ คุณ Macos ก็ได้ให้สมการไว้ด้วย ไปตามต่อกันได้ค่ะ

6. Cross-Validation (CV) Leakage (รูปที่ #7)

ข้อนี้เป็นปัญหาคลาสสิคที่เข้าใจได้ง่ายมากๆ ค่ะ ก็คือ ปัญหาที่เกิดขึ้นในขณะ Train model ข้อมูล Test มีการรั่วไหลเข้าไปในข้อมูล Train ทำให้ ถึงแม้ผลที่ได้จาก Training ดีมากๆ แต่โมเดลก็ไม่สามารถทำงานได้ดีกับ ข้อมูล Out-of- Sample ค่ะ

ตัวอย่างเช่น ในรูปที่ #7 มีข้อมูล Train อยู่ 2 ชุด คือ A และ B ชุด A ไม่มีปัญหา แต่จะมีปัญหาที่ชุด B เนื่องจากเป็นข้อมูลที่อยู่ภายหลังข้อมูล Test ทำให้ ภายในข้อมูล ชุด B นั้น จะมี Information ที่รั่วไหลจากข้อมูล Test เข้าไปนั่นเอง (ราคา จะมีความเกี่ยวข้องกับราคาในอดีต)

ปัญหานี้มีแนวโน้มจะเกิดขึ้นได้สูง โดยเฉพาะอย่างยิ่ง การทำ Cross-validation ถ้าไม่มีการระวังที่ดี ก็อาจจะปัญหานี้ได้ค่ะ ซึ่งถ้าใครพอจะทราบ เรื่อง การทำ Cross-validation มาบ้าง ก็จะทราบว่า เป็นการแบ่งข้อมูลออกเป็นกลุ่ม แล้วสลับ ให้ข้อมูลทุกกุล่มได้มีโอกาสเป็นทั้ง Train และ Test ซึ่งในปัญหาทั่วไปอาจจะทำได้ แต่ไม่ใชในระบบข้อมูลในรูปแบบ อนุกรมเวลา (Time series) แบบข้อมูล Finance ค่ะ

7. Backtest Overfiting (รูปที่ #8)

ปัญหานี้เป็นอีกหนึ่งปัญหาที่น่าจะเป็นที่คุ้นชินกันมากในการทำ Blacktest ที่ผล Backtest ของการ Train ออกมาดีเลิศ อลังการ แต่เมื่อนำ model ไปใช้กับข้อมูล Test ที่เป็น Out-of-sample ผลกลับดิ่งลงเหว แบบคนละเรื่องกับก่อนหน้าเลยทีเดียว ซึ่งในส่วนนี้เรียกได้ว่า model ของเรานั้น Overfitting ค่ะ 👎

ลองดูกราฟกันก่อนค่ะ

จากรูปที่ #8 แกน Y คือค่า Sharpe Ratio แกน X คือจำนวนการทดสอบกลยูทธ์ ในกรณีที่ลองทำการทดลอง backtest เป็นจำนวนหลายๆรอบ (ในการทดลองเค้าทำเป็นล้านรอบ)

ไม่ว่าจะเป็นการลงทุนแบบไหนก็ตาม เช่น “Trend Following” หรือ “Mean Reversal” หรือ ไม่ว่าจะเป็นกลยุทธ์ที่ใช้ “Machine Learning” ผลการ backtest มันก็ดีได้ทั้งนั้น เนื่องจาก …. ถ้าฟีเจอร์ที่เรานำมาใช้ในการสร้างกลยุทธนั้นเป็น “Random Walk” คือมันสุ่ม เมื่อมันคือ การสุ่ม แล้ว เราสุ่มมากครั้งเข้า มันก็มีโอกาสจะได้ผลลัพธ์ ดีๆ มากขึ้น จริงม้ยคะ 🙂

ในสถานการณ์แบบนี้ จริงๆ ถ้าจะกล่าวให้ถูกต้อง อาจจะกล่าวได้ว่า “เราก็ไม่มีกลยุทธอะไรหรอก” เพราะมันก็แค่สุ่ม!! ทำมากๆ ครั้งเข้า ก็ต้องได้ผลดีขึ้น งานวิจัยหลายงาน โชว์แค่ผลลัพธ์ที่ได้ในการทำงานรอบที่ดี แต่จะมีซักกี่งาน ที่บอกเราด้วยว่า เจ้าผลลัพธ์ที่ดีงามนั้น เกิดจากการทดลองเป็นจำนวนกี่รอบ!

จากรูปที่ #8 เป็นตัวอย่างที่ดีเลยค่ะ เป็นตัวอย่างที่ตอบคำถามเราว่า ถ้าเราทำการทดลองหลายๆ ครั้ง ซ้ำๆ โดยไม่ได้เปลี่ยนอะไรเลย แค่ทำให้มากเข้า ค่า Shape Ratio ที่ได้ก็สูงขึ้นเรื่อยๆ แล้วค่ะ จากรูป จึงจะเห็นว่า เส้นประที่เห็นคือค่าคาดหวัง Expected Maximum Sharpe Ratio ของมันมีค่าค่อนข้างสูงถึง 3 เลยทีเดียว เมื่อทำการทดลองซ้ำประมาณ 1000 รอบ หรือ ถ้าทำเป็นล้านรอบ ค่า Expected Maximum Sharpe Ratio สูงถึง 5 เลยทีเดียว!!

แล้วค่า Sharpe Ratio ในเปเปอร์งานวิจัย ส่วนใหญ่ที่เราอ่านๆกันมา ผลงานวิจัยส่วนใหญ่ไม่ได้บอกหรอกค่ะว่า “ผลที่ได้ เค้าทำการทดลองกี่ครั้ง” ส่วนใหญ่เค้าก็ทำกันมากๆ แล้วก็ ตั้ง Threshold Level ไว้เพื่อ ตอบรับ หรือ ปฎิเสธสมมุติฐานนั้นๆ เช่น Significance 95%, 5% เป็นตน แต่ก็ไม่ค่อยมีใคร รายงานผล False positive ไว้ให้เราด้วย คุณ Macos จึงให้ระวังการศึกษางานวิจัยให้ดี ที่น่ากลัวค่ะ “งานวิจัยทางไฟแนนซ์ส่วนใหญ่น่ะมันผิดทั้งนั้นแหละ”! ถ้าเราไม่รู้จริง ก็อาจจะเกิดการเข้าใจผิดพลาดได้ “การทดลองทาง Finance ซับซ้อนมากกว่าที่คิด และต้องการคนรู้จริงๆ เท่านั้นถึงจะทำการทดลอง และ อ่านผลได้อย่างถูกต้อง”

สิ่งควรระวังคือ ค่า “False Positive” นี่แหละค่ะ เพราะการที่เราไม่รู้ว่าควรจะทดลองกี่รอบจนกว่าจะได้ผลลัพธ์ที่รับได้ นั่น หมายความว่ามีโอกาสการเกิด False Positive ได้สูงด้วยนั่นเอง

เราอาจจะคิดว่า เราได้เจอกลยุทธ์การลงทุนที่มันได้กำไรแล้ว ถึงแม้จริงๆมันจะไม่เป็นเช่นั้น!! ดั่งคำคลาสสิคที่กล่าวไว้ว่า “ถ้าเราทรมานดาต้าให้มากพอ ดาต้าก็จะคายข้อมูลที่เราอยากรู้ออกมา”! นั่นเองค่ะ

จริงๆ แล้ว ซึ่งถ้าเราทรมานไม่ถูกวิธี คำกล่าวนี้ก็ไม่เป็นจริง … ดังสมการที่ได้รับการทดสอบไปแล้วเมื่อปี 2014 ที่เส้นประในรูป ได้มาจาการ โดยสมการจะมี “Discount factor” ของโอกาสการเกิด False Positive ที่ทีมงานของคุณ Macos ทำก็คือ ให้มีการ ลงโทษ (Penalized) เมื่อมีการเข้าถึง Information เดิมหลายๆ ครั้งนั่นเอง เพื่อหา Significant หลังจากการทดสอบหลายๆครั้ง

จบแล้วนะคะ ยาวมากกกก ไม่นึกว่าคุณ Macos จะให้ข้อมูลในเชิงวิจัยลึกขนาดนี้ ฟังแล้วได้ไอเดียเยอะมากๆ เลยค่ะ แฟนเพจท่านใด จริงจังเรื่องการวิจัยทาง Finance แอด สนับสนุนได้ “ตาม” หาข้อมูลเพิ่มเติม แล้วทดลองเลยค่ะ นี่ตัวแอดก็ลิสไว้หลายส่วนแล้วเหมือนกัน … แฟนเพจที่ดูแลกองทุนยิ่งต้องไม่พลาดนะคะ วิดีโอนี้ เป็นวีดีโอที่ควรให้ทีมวิจัยของท่านดูเป็นอย่างยิ่งค่ะ มีประโยชน์จริงๆ ค่ะ

นี่อาจจะเป็นบทความที่ยาวววว และ informative มากที่สุดอันนึงที่แอดได้เขียนในปีนี้ เขียนนานมากๆ หวังว่าจะเป็นประโยชน์แก่ผู้ที่สนใจไม่มากก็น้อยนะคะ ใครมีไอเดียดีๆ ยังไง ทักเข้ามาคุยกันได้นะคะ ทางเรายินดีแลกเปลี่ยนเรียนรู้กับทุกท่านค่ะ

วีดีโอต้นฉบับค่ะ


3 Comments Add yours

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