By | February 2, 2022

บทนำ

ในบทความนี้ เราจะมาดูแนวทางปฏิบัติที่เกี่ยวข้องกันสองข้อที่เทรดเดอร์ใช้กันอย่างแพร่หลายเรียกว่า Backtesting และ การทำเหมืองข้อมูล. เทคนิคเหล่านี้เป็นเทคนิคที่ทรงพลังและมีค่าหากเราใช้อย่างถูกต้อง อย่างไรก็ตาม ผู้ค้ามักใช้ในทางที่ผิด ดังนั้น เราจะสำรวจข้อผิดพลาดทั่วไปสองประการของเทคนิคเหล่านี้ ซึ่งเรียกว่า ปัญหาสมมติฐานหลายข้อ และ ฟิตเกินไป และวิธีเอาชนะหลุมพรางเหล่านี้

Backtesting

การทดสอบย้อนกลับเป็นเพียงกระบวนการของการใช้ข้อมูลในอดีตเพื่อทดสอบประสิทธิภาพของกลยุทธ์การซื้อขายบางอย่าง. การทดสอบย้อนหลังมักเริ่มต้นด้วยกลยุทธ์ที่เราต้องการทดสอบ เช่น การซื้อ GBP/USD เมื่อข้ามเส้นค่าเฉลี่ยเคลื่อนที่ 20 วัน และขายเมื่อต่ำกว่าค่าเฉลี่ยนั้น ตอนนี้ เราสามารถทดสอบกลยุทธ์นั้นได้ด้วยการดูว่าตลาดเดินหน้าไปอย่างไร แต่นั่นอาจใช้เวลานาน นี่คือเหตุผลที่เราใช้ข้อมูลในอดีตที่มีอยู่แล้ว

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

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

การทำเหมืองข้อมูล

การทำเหมืองข้อมูลเกี่ยวข้องกับการค้นหาข้อมูลเพื่อค้นหารูปแบบและค้นหาความสัมพันธ์ที่เป็นไปได้ระหว่างตัวแปร. ในตัวอย่างข้างต้นที่เกี่ยวข้องกับกลยุทธ์ค่าเฉลี่ยเคลื่อนที่ 20 วัน เราเพิ่งมากับตัวบ่งชี้เฉพาะนั้นจากสีน้ำเงิน แต่สมมติว่าเราไม่รู้ว่ากลยุทธ์ประเภทใดที่เราต้องการทดสอบ นั่นคือเมื่อการทำเหมืองข้อมูลมีประโยชน์ เราสามารถค้นหาข้อมูลในอดีตของเราเกี่ยวกับ GBP/USD เพื่อดูว่าราคามีพฤติกรรมอย่างไรหลังจากผ่านเส้นค่าเฉลี่ยเคลื่อนที่ต่างๆ เราสามารถตรวจสอบการเคลื่อนไหวของราคากับตัวบ่งชี้ประเภทอื่นๆ ได้เช่นกัน และดูว่าตัวใดสอดคล้องกับการเคลื่อนไหวของราคาจำนวนมาก

หัวข้อของการขุดข้อมูลสามารถเป็นที่ถกเถียงกันเพราะอย่างที่ฉันได้กล่าวไว้ข้างต้นดูเหมือนว่าจะเป็นการโกงหรือ “มองไปข้างหน้า” ในข้อมูล การทำเหมืองข้อมูลเป็นเทคนิคทางวิทยาศาสตร์ที่ถูกต้องหรือไม่? ในอีกด้านหนึ่ง วิธีการทางวิทยาศาสตร์บอกว่าเราควรตั้งสมมติฐานก่อนแล้วจึงทดสอบกับข้อมูลของเรา แต่ในทางกลับกัน ดูเหมือนเป็นการเหมาะสมที่จะทำการ “สำรวจ” ข้อมูลก่อนเพื่อเสนอสมมติฐาน . แล้วอันไหนถูก? เราสามารถดูขั้นตอนในวิธีการทางวิทยาศาสตร์เพื่อหาเบาะแสที่มาของความสับสนได้ กระบวนการโดยทั่วไปมีลักษณะดังนี้:

การสังเกต (ข้อมูล) >>> สมมติฐาน >>> การคาดการณ์ >>> การทดลอง (ข้อมูล)

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

ตอนนี้เราจะหันความสนใจไปที่ข้อผิดพลาดหลักของการใช้การทำเหมืองข้อมูลและการทดสอบย้อนหลังอย่างไม่ถูกต้อง ปัญหาทั่วไปเรียกว่า “การเพิ่มประสิทธิภาพมากเกินไป” และฉันต้องการแบ่งปัญหานั้นออกเป็นสองประเภทที่แตกต่างกัน เหล่านี้เป็น ปัญหาสมมติฐานหลายข้อ และ ฟิตเกินไป. ในแง่หนึ่งพวกเขาเป็นวิธีที่ตรงกันข้ามกับการทำผิดพลาดแบบเดียวกัน ปัญหาสมมติฐานหลายข้อเกี่ยวข้องกับการเลือก สมมติฐานง่าย ๆ มากมาย ในขณะที่ overfitting เกี่ยวข้องกับการสร้าง สมมติฐานที่ซับซ้อนมากข้อหนึ่ง.

ปัญหาสมมติฐานหลายข้อ

เพื่อดูว่าปัญหานี้เกิดขึ้นได้อย่างไร ให้กลับไปที่ตัวอย่างของเราที่เราได้ทำการทดสอบย้อนหลังกลยุทธ์ 20 วันของค่าเฉลี่ยเคลื่อนที่ สมมุติว่าเรา backtest กลยุทธ์กับข้อมูลตลาดย้อนหลังสิบปีและดูเดาอะไร? ผลลัพธ์ไม่ได้น่ายินดีมากนัก อย่างไรก็ตาม เนื่องจากเราเป็นเทรดเดอร์ที่หยาบและพังยับเยินอย่างเรา เราจึงตัดสินใจที่จะไม่ยอมแพ้ง่ายๆ แล้วอา .ล่ะ สิบวัน ค่าเฉลี่ยเคลื่อนที่? มันอาจจะดีขึ้นเล็กน้อย เรามาทดสอบย้อนหลังกัน! เราทำ backtest อีกครั้งและพบว่าผลลัพธ์ยังไม่ได้เป็นตัวเอก แต่ก็ดีกว่าผลลัพธ์ 20 วันเล็กน้อย เราตัดสินใจที่จะสำรวจเล็กน้อยและทำการทดสอบที่คล้ายกันกับค่าเฉลี่ยเคลื่อนที่ 5 วันและ 30 วัน ในที่สุดก็เกิดกับเราว่าเราทำได้แค่ทดสอบจริงๆ ทุกเส้นค่าเฉลี่ยเคลื่อนที่ ถึงจุดหนึ่งและดูว่าพวกเขาทั้งหมดทำงานอย่างไร ดังนั้นเราจึงทดสอบ 2 วัน 3 วัน 4 วัน และอื่นๆ จนถึงเส้นค่าเฉลี่ยเคลื่อนที่ 50 วัน

ในตอนนี้ แน่นอนว่าค่าเฉลี่ยเหล่านี้บางส่วนจะทำงานได้ไม่ดี และบางค่าเฉลี่ยก็ทำได้ค่อนข้างดี แต่จะต้องมีค่าใดค่าหนึ่งที่ดีที่สุดแน่นอน ตัวอย่างเช่น เราอาจพบว่าเส้นค่าเฉลี่ยเคลื่อนที่ 32 วันกลายเป็นตัวแสดงที่ดีที่สุดในช่วงสิบปีนี้ นี่หมายความว่ามีบางอย่างที่พิเศษเกี่ยวกับค่าเฉลี่ย 32 วันและเราควรจะมั่นใจว่ามันจะทำงานได้ดีในอนาคตหรือไม่? น่าเสียดายที่นักเทรดหลายคนคิดว่าเป็นเช่นนี้ และพวกเขาก็แค่หยุดการวิเคราะห์ ณ จุดนี้ โดยคิดว่าพวกเขาได้ค้นพบบางสิ่งที่ลึกซึ้ง พวกเขาตกอยู่ในหลุมพราง “ปัญหาหลายสมมติฐาน”

ปัญหาคือไม่มีอะไรผิดปกติหรือมีนัยสำคัญเกี่ยวกับข้อเท็จจริงที่ว่า บาง ค่าเฉลี่ยกลายเป็นสิ่งที่ดีที่สุด ท้ายที่สุด เราทดสอบเกือบห้าสิบรายการเทียบกับข้อมูลเดียวกัน ดังนั้นเราจึงคาดว่าจะพบผู้ดำเนินการที่ดีสองสามราย แค่บังเอิญ. ไม่ได้หมายความว่ามีอะไรพิเศษเกี่ยวกับเส้นค่าเฉลี่ยเคลื่อนที่ที่ “ชนะ” ในกรณีนี้ ปัญหาเกิดขึ้นเนื่องจากเราทดสอบสมมติฐานหลายข้อ จนกระทั่งเราพบสมมติฐานที่ได้ผล แทนที่จะเลือกสมมติฐานเดียวและทำการทดสอบ

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

นั่นเป็นวิธีที่ถูกต้อง อย่างไรก็ตาม จะเกิดอะไรขึ้นถ้าเรามีสมมติฐาน 1,000 ข้อ แทนที่จะเป็นเพียงข้อเดียวเกี่ยวกับฉันในการเป็นผู้ตีเหรียญที่ดี เราตั้งสมมติฐานเดียวกันได้กับคน 1,000 คน…ฉัน เอ็ด ซินดี้ บิล แซม ฯลฯ เอาล่ะ เรามาทดสอบสมมติฐานหลายข้อกัน เราขอให้ทุกคน 1,000 คนพลิกเหรียญ น่าจะมีประมาณ 500 คนที่พลิกหัว คนอื่นสามารถกลับบ้านได้ ตอนนี้เราขอให้คน 500 คนพลิกอีกครั้ง และคราวนี้ประมาณ 250 คนจะพลิกหัว พลิกครั้งที่สามมีประมาณ 125 คน พลิกหัวครั้งที่สี่เหลือ 63 คน และพลิกที่ห้ามีประมาณ 32 คน 32 คนนี้น่าทึ่งมากใช่ไหม พวกเขาทั้งหมดพลิกห้าหัวติดต่อกัน! หากเราพลิกอีกห้าครั้งและกำจัดคนครึ่งหนึ่งในแต่ละครั้งโดยเฉลี่ย เราจะจบลงด้วย 16 จากนั้น 8 จากนั้น 4 จากนั้น 2 และสุดท้ายมีคนจากไปหนึ่งคนที่พลิกหัวสิบครั้งติดต่อกัน มันคือบิล! บิลเป็นเหรียญที่ “วิเศษ”! หรือเขา?

เราไม่รู้จริงๆ และนั่นคือประเด็น บิลอาจชนะการแข่งขันของเราด้วยโอกาสอันบริสุทธิ์ หรือเขาอาจเป็นสุดยอดนักบิดหัวด้านนี้ของกาแล็กซีแอนโดรเมดา ในทำนองเดียวกัน เราไม่ทราบว่าค่าเฉลี่ยเคลื่อนที่ 32 วันจากตัวอย่างด้านบนของเราทำได้ดีหรือไม่ในการทดสอบของเราโดยบังเอิญ หรือมีอะไรพิเศษเกี่ยวกับมันจริงๆ แต่สิ่งที่เราทำจนถึงตอนนี้คือ หาสมมติฐานกล่าวคือกลยุทธ์ค่าเฉลี่ยเคลื่อนที่ 32 วันนั้นทำกำไรได้ (หรือว่า Bill เป็นผู้พลิกเหรียญที่ยอดเยี่ยม) เรายังไม่ได้ทดสอบสมมติฐานนั้นจริงๆ

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

ฟิตเกินไป

การใส่มากเกินไปเป็นการพลิกกลับของปัญหาข้างต้นจริงๆ ในตัวอย่างสมมติฐานหลายข้อข้างต้น เราได้พิจารณาสมมติฐานง่ายๆ หลายข้อและเลือกสมมติฐานที่ทำงานได้ดีที่สุดในอดีต ในการใส่มากเกินไป เราจะพิจารณาถึงอดีตก่อน จากนั้นจึงสร้างสมมติฐานที่ซับซ้อนเพียงข้อเดียวที่เข้ากันได้ดีกับสิ่งที่เกิดขึ้น ตัวอย่างเช่น หากฉันดูอัตรา USD/JPY ในช่วง 10 วันที่ผ่านมา ฉันอาจเห็นว่าการปิดรายวันทำสิ่งนี้:

ขึ้น ขึ้น ลง ขึ้น ขึ้น ขึ้น ลง ลง ลง ขึ้น.

เข้าใจแล้ว? ดูรูปแบบ? ใช่ ฉันเองก็เหมือนกัน แต่ถ้าฉันต้องการใช้ข้อมูลนี้เพื่อเสนอสมมติฐาน ฉันอาจคิดได้ว่า…

สมมติฐานที่น่าทึ่งของฉัน:

หากราคาปิดเพิ่มขึ้นสองครั้งติดต่อกันแล้วลดลงเป็นเวลาหนึ่งวัน หรือหากราคาปิดลงเป็นเวลาสามวันติดต่อกัน เราควรซื้อ

แต่ถ้าราคาปิดเพิ่มขึ้นสามวันติดต่อกันเราควรขาย

แต่ถ้ามันเพิ่มขึ้นสามวันติดต่อกันแล้วลงสามวันติดต่อกัน เราควรซื้อ

ฮะ? ฟังดูเป็นสมมติฐานที่แปลกประหลาดใช่มั้ย? แต่ถ้าเราใช้กลยุทธ์นี้ในช่วง 10 วันที่ผ่านมา เราจะทำถูกต้องในทุกการซื้อขายที่เราทำ! “overfitter” ใช้ backtesting และ data mining แตกต่างจากที่ “ผู้สร้างสมมติฐานหลายราย” ทำ “overfitter” ไม่ได้มาพร้อมกับกลยุทธ์ที่แตกต่างกัน 400 แบบในการทดสอบย้อนหลัง ไม่มีทาง! “overfitter” ใช้เครื่องมือขุดข้อมูลเพื่อค้นหา เพียงหนึ่งกลยุทธ์ไม่ว่าจะซับซ้อนเพียงใด แต่ก็มีประสิทธิภาพดีที่สุดตลอดระยะเวลาการทดสอบย้อนหลัง มันจะทำงานในอนาคต?

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

บทสรุป

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

สกอตต์ เพอซิวาล

ตุลาคม 2549