Skip to content
คู่มือออปชันทั้งหมด
เลือกข้อมูลย้อนหลังที่โมเดลการเงินจะใช้เรียนรู้อ่าน 12 นาที

หน้าต่างแบบขยายและแบบเลื่อนสำหรับการตรวจสอบโมเดล Walk-Forward

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

ในคู่มือนี้โฟลด์แบบ Walk-Forward มีหน้าต่างฝึกและประเมินคนละชุด

สรุปสั้น

หน้าต่างฝึกแบบขยายเก็บประวัติที่มีสิทธิ์ใช้ตั้งแต่ช่วงแรกไว้ แล้วเพิ่มข้อมูลใหม่เมื่อสังเกตได้ ส่วนหน้าต่างแบบเลื่อนเก็บจำนวนข้อมูลที่มีสิทธิ์ใช้ล่าสุดไว้คงที่ และตัดแถวที่เก่ากว่าออก ทั้งสองแบบใช้ประเมินแบบ walk-forward ตามลำดับเวลาได้ แต่ไม่มีแบบใดทดแทนการแยกการเลือกโมเดลออกจากช่วงทดสอบสุดท้าย

โฟลด์แบบ Walk-Forward มีหน้าต่างฝึกและประเมินคนละชุด

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

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

แยกช่วงย้อนหลังที่ใช้คำนวณคุณลักษณะออกจากหน้าต่างฝึกด้วย สัญญาณอาจคำนวณความผันผวนของแต่ละแถวจากช่วงล่าสุดสั้น ๆ ขณะที่โมเดลใช้แถวข้อมูลหลายปี การเปลี่ยนช่วงย้อนหลังของคุณลักษณะเปลี่ยนตัวแปรนำเข้า ส่วนการเปลี่ยนหน้าต่างฝึกเปลี่ยนข้อมูลที่ใช้ประมาณค่าโมเดล

หน้าต่างแบบขยายเก็บประวัติเริ่มต้นไว้

ให้ \(s\) เป็นดัชนีของข้อมูลที่มีสิทธิ์ใช้รายการแรก และ \(t\) เป็นดัชนีของข้อมูลล่าสุดที่ป้ายกำกับเสร็จสมบูรณ์ ณ เวลาปรับโมเดล ชุดฝึกแบบขยายคือ \(\{s,s+1,\ldots,t\}\) เมื่อถึงจุดพยากรณ์ถัดไป จะเก็บแถวเดิมไว้และเพิ่มแถวใหม่ที่มีสิทธิ์ใช้ ดังนั้นจำนวนข้อมูลจึงเพิ่มขึ้นตามเวลา เว้นแต่จะมีเกณฑ์แยกต่างหากมากรองหรือลบข้อมูล

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

หน้าต่างแบบเลื่อนตัดข้อมูลที่อยู่นอกช่วงที่เลือก

หากความยาวคงที่เท่ากับ \(W\) ชุดฝึก ณ จุด \(t\) คือ \(\{t-W+1,\ldots,t\}\) หลังคำนึงถึงความล่าช้าของป้ายกำกับและช่องว่างตรงขอบแล้ว เมื่อเลื่อนไปยังจุดถัดไป ปลายช่วงจะขยับไปข้างหน้าและแถวที่มีสิทธิ์ใช้ซึ่งเก่าที่สุดจะหลุดออก ความยาวอาจวัดเป็นจำนวนข้อมูลหรือเวลาในปฏิทิน แต่เมื่อข้อมูลไม่สม่ำเสมอ หน่วยทั้งสองใช้แทนกันไม่ได้

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

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

กติกาทั้งสองให้ประวัติที่ต่างกันแก่การปรับโมเดลแต่ละครั้ง

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

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

กติกาเหล่านี้ไม่ได้กำหนดจุดเริ่มพยากรณ์เช่นกัน หน้าต่างฝึกทั้งสองแบบประเมินด้วยจุดเริ่มแบบเลื่อนได้ โดยฝึกจากอดีตที่มีสิทธิ์ใช้ พยากรณ์บล็อกถัดไป เลื่อนไปข้างหน้า แล้วทำซ้ำ บททบทวนของ Leonard Tashman เรื่องการทดสอบการพยากรณ์นอกตัวอย่าง00065-0)กล่าวถึงทั้งจุดเริ่มแบบเลื่อนและหน้าต่างประมาณค่าแบบเลื่อน อย่างแรกกำหนดว่าจะประเมินเมื่อใด อย่างหลังระบุว่าแถวฝึกใดคงอยู่

เส้นเวลาในตัวอย่างสมมติแสดงข้อมูลที่เข้าสู่การปรับแต่ละครั้ง

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

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

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

เลือกกติกาหน้าต่างภายในช่วงตรวจสอบตามลำดับเวลา

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

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

เก็บช่วงเวลาตามลำดับที่ใหม่กว่าไว้ตรวจสอบขั้นสุดท้าย ในการออกแบบแบบซ้อน การตรวจสอบชั้นในเลือกหน้าต่างและการตั้งค่าโดยใช้เฉพาะข้อมูลก่อนบล็อกทดสอบชั้นนอกแต่ละชุด ส่วนผลชั้นนอกประเมินกระบวนการคัดเลือกทั้งหมด คู่มือ Purged CVอธิบายขอบเขตที่ป้ายกำกับทับซ้อนกัน ส่วนการฟิตเกินในโมเดลการเงินและการทดสอบหลายครั้งครอบคลุมความเสี่ยงการคัดเลือกที่เกี่ยวข้อง

จัดป้ายกำกับ การเตรียมข้อมูล และเวลาปรับโมเดลให้ตรงกับข้อมูลที่รู้ในขณะนั้น

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

ปรับการเติมค่าที่ขาด การปรับสเกล การเลือกคุณลักษณะ และการเตรียมข้อมูลที่เรียนรู้จากข้อมูล โดยใช้เฉพาะส่วนฝึกของแต่ละโฟลด์ หากต้องเลือกค่าขีดแบ่งหรือไฮเปอร์พารามิเตอร์ ให้ใช้การตรวจสอบตามลำดับเวลาภายในช่วงฝึก และตรึงตัวเลือกก่อนประเมินบล็อกถัดไป เอกสารทางการของ scikit-learn สำหรับ TimeSeriesSplitระบุว่าชุดฝึกขยายตามค่าเริ่มต้น และ max_train_size ใช้จำกัดขนาดได้ gap นับเป็นจำนวนตัวอย่าง และการเปรียบเทียบความยาวโฟลด์ที่เท่ากันสมมติว่าข้อมูลเว้นช่วงสม่ำเสมอ ควรตรวจเวลาของป้ายกำกับการเงินและเวอร์ชันไลบรารีที่ใช้ด้วย

รายงานผลตามจุดเริ่มและระบุข้อจำกัดของการประเมิน

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

ความแม่นยำของการพยากรณ์ไม่ใช่ผลตอบแทนสุทธิจากการซื้อขาย การสร้างสถานะ เลเวอเรจ การหมุนเวียน สภาพคล่อง ค่าธรรมเนียม สเปรด ผลกระทบต่อตลาด การยืม เงินทุน และเวลาส่งคำสั่ง ล้วนมีผลต่อผลลัพธ์ คงสมมติฐานเหล่านี้ให้เหมือนกันเมื่อต้องการเปรียบเทียบ และระบุสิ่งที่ไม่ได้รวมไว้ งานศึกษาของ Cerqueira, Torgo และ Mozetič เรื่องการประมาณผลงานของอนุกรมเวลารายงานว่าค่าประมาณอาจต่างกันระหว่างสภาวะคงที่กับไม่คงที่ งานนี้ไม่ได้เปรียบเทียบนโยบายหน้าต่างทางการเงินโดยตรง และไม่ได้พิสูจน์ว่ากติกาใดชนะเสมอ

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

คำถามที่พบบ่อย

Q1หน้าต่างแบบขยายดีกว่าเสมอหรือไม่ เพราะใช้ข้อมูลมากกว่า?

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

Q2หน้าต่างแบบเลื่อนปรับตัวต่อการเปลี่ยนระบอบตลาดโดยอัตโนมัติหรือไม่?

ไม่ หน้าต่างจะเอาแถวออกเมื่อพ้นช่วงที่เลือก แต่ไม่ได้ตรวจจับการเปลี่ยนแปลงหรือรับประกันว่าตัวอย่างใหม่แทนระบอบถัดไปได้ ความถี่การปรับ ความยาวหน้าต่าง และการออกแบบโมเดลยังสำคัญ

Q3ใช้ช่วงเวลาเดียวกันเพื่อปรับหน้าต่างและรายงานผลสุดท้ายได้ไหม?

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

แหล่งข้อมูลและการอ่านเพิ่มเติม

รายงานปัญหา

เราจะเตรียมอีเมลพร้อมลิงก์บทความนี้ Mark จะได้รับรายงานเมื่อคุณส่งอีเมลแล้วเท่านั้น

ตรวจสอบอย่างรวดเร็ว

อ่านคู่มือจบแล้ว ลองตอบคำถาม 3 ข้อ

คำถาม 1 / 3

คำถาม 01

สิ่งใดเปลี่ยนไปเมื่อปรับโมเดลครั้งถัดไปด้วยหน้าต่างฝึกแบบเลื่อนที่มีความยาวคงที่?

เลือกคำตอบเพื่อดูคำอธิบาย

อภิธานศัพท์ออปชัน

ตรวจสอบโมเดลเทรดPurged cross-validation และ embargo: ป้องกัน label leakage ในโมเดลเทรดเรียนรู้วิธีตรวจสอบ time series การเงินเมื่อช่วงเวลาของ forward label ซ้อนทับกัน และความต่างระหว่าง purging, embargo, walk-forward, TimeSeriesSplit และ CPCVเหตุใดโมเดลอธิบายอดีตได้แต่ล้มเหลวในช่วงถัดไปBias–Variance Tradeoff และการ overfit ของโมเดลการเงินทำความเข้าใจ prediction bias, estimation variance, noise ที่ลดไม่ได้, ความซับซ้อนของโมเดล, การตรวจสอบ time series, data snooping, backtest overfitting และธรรมาภิบาลของโมเดลการเงินเหตุใด threshold เดียวจึงล้มเหลวเมื่อ researcher ทดสอบไอเดียจำนวนมากMultiple Testing และ False Discovery Rate ในการเงินทำความเข้าใจ multiple comparisons, family-wise error, false discovery rate, Bonferroni, Holm, Benjamini–Hochberg, dependence, q-values, factor mining, backtest selection และ research governanceกลไกออปชันการถูกใช้สิทธิ์ออปชันคืออะไรทำความเข้าใจว่าการถูก assign เปลี่ยน short call หรือ put ให้เป็นภาระผูกพันต่อหุ้นได้อย่างไร เกิดขึ้นเมื่อใด และเตรียมเงินสดกับหุ้นอย่างไรจำนวนสัญญาที่อนุญาตไม่ใช่งบประมาณความเสี่ยงPosition limits เทียบกับ exercise limits ของออปชันอธิบายอย่างไรเรียนรู้ว่า position limits ของออปชันที่จดทะเบียนต่างจาก exercise limits อย่างไร เหตุใดการรวมฝั่งเดียวกันและการรายงานจึงสำคัญ และเหตุใดมาร์จินหรือ buying power จึงไม่บอกว่าจำนวนหนึ่งได้รับอนุญาต