MOEasymmetry← บทความทั้งหมด
Methodology · 2026-06-12 · 5 นาที

กับดักของการเปรียบเทียบผล Walk-Forward

ตามรอย ศึกษา รอจังหวะ จู่โจม
ไทย อ่านภาษาอังกฤษ
⚠️ บันทึกการวิจัยและการเทรดส่วนตัว — ไม่ใช่คำแนะนำการลงทุน ผู้เขียนไม่ได้ให้บริการที่ปรึกษาการลงทุนที่มีใบอนุญาต

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

ปัญหา: backtest ทั้งสองครอบคลุมช่วงเวลาที่ต่างกัน

Setup ที่ดูชัดเจนจนกว่าคุณจะอยู่ในนั้น

สมมติคุณทดสอบ System A ในปี 2561-2566 และได้ Sharpe 0.85 จากนั้นรัน System B ในปี 2563-2568 และได้ Sharpe 0.72 คุณสรุปว่า System A ดีกว่า

แต่คุณไม่ได้เปรียบเทียบสิ่งเดียวกัน ช่วงของ System A รวมปี 2561-2562 สองปีของตลาดที่ส่วนใหญ่เป็น trending ช่วงของ System B รวมปี 2565-2566 ซึ่งรวม bear market ที่มีนัยสำคัญในหุ้น growth Market regime ต่างกัน การเปรียบเทียบที่ยุติธรรมต้องให้ทั้งสองระบบรันบนวันที่เดียวกัน

ฟังดูชัดเจนเมื่อพูดตรงๆ ในทางปฏิบัติมันพลาดได้ง่าย

เหตุผล: walk-forward backtests มีความซับซ้อน มี start dates, end dates, lookback periods, training windows, out-of-sample windows เมื่อคุณกำลัง iterate ระบบ — ปรับ parameter ที่นี่ เพิ่ม filter ที่นั่น — คุณมักจะแค่รัน test อีกครั้งและดู Sharpe ใหม่ ถ้า date range ที่อยู่เบื้องหลังเลื่อนเพราะคุณเปลี่ยน data source, อัปเดตไฟล์ราคา, หรือปรับ minimum lookback คุณกำลังเปรียบเทียบสิ่งที่ต่างกัน

สิ่งที่ผมพบเมื่อตรวจสอบ

ผมรัน 6-window comparison ของ system variants สองตัว (2563-2568, 6 out-of-sample windows แยกกัน) สถิติสรุปแสดง version 2 เหนือกว่า version 1 ด้วย Sharpe 0.12 ผมกำลังจะ adopt version 2

แล้วผมตรวจสอบ metadata ของ backtest แต่ละชุด: start date, end date, จำนวน windows ที่เสร็จสมบูรณ์, จำนวน trades ทั้งหมดต่อ window

backtest มี start dates ต่างกันเพราะ variant หนึ่งต้องการ warmup 50 bars เพิ่มสำหรับ indicator ใหม่ window แรกใน version 2 เริ่มช้ากว่า version 1 2.5 เดือน ความต่าง 2.5 เดือนนั้นบังเอิญยกเว้นช่วงขาดทุนในช่วงปลายปี 2563 ที่ version 1 จับได้ การเปรียบเทียบมีข้อบกพร่อง

เมื่อผม align ทั้งสอง tests ให้ใช้ start และ end date เดียวกัน (ตัด warmup period ต่างกัน) ข้อได้เปรียบของ version 2 หายไป ความต่าง Sharpe จาก 0.12 ลดเหลือ 0.02 — ไม่สามารถแยกแยะทางสถิติได้

ทำไม Walk-Forward Comparisons จึงเปราะบางเป็นพิเศษ

Backtest ช่วงเดียวง่ายต่อการ align: start เดียวกัน, end เดียวกัน เสร็จ

Walk-forward backtests ยากกว่าเพราะมีแหล่งที่มาหลายอย่างของการเลื่อนวันที่:

ความยาว training window: ถ้าคุณเปลี่ยนจำนวน bars ที่ใช้ calibrate ระบบก่อนเทรดแต่ละ window, ช่วง out-of-sample จะเลื่อน

Lookback indicators: ถ้า version 2 เพิ่ม moving average 200 วันที่ต้องการ 200 bars ในการคำนวณ วันที่เทรดที่ valid แรกจะช้ากว่า version 1 ~200 วัน

ความพร้อมของข้อมูล: ถ้า version 2 ใช้ data source เพิ่มเติมที่มีเฉพาะตั้งแต่ปี 2553 เป็นต้นไป การเปรียบเทียบของคุณจะเริ่มช้ากว่าแม้ทั้งสอง versions จะรันจากปี 2548 ตามทฤษฎี

ช่องว่างในตลาด: ตลาดไทยมีช่องว่างข้อมูลรอบวันหยุดและการระงับ circuit-breaker ที่แตกต่างจากปฏิทินตลาดสหรัฐ ระบบที่เทรดทั้งสองตลาดใน walk-forward จะมีจำนวน "valid window" ต่างกันขึ้นอยู่กับว่าปฏิทินใดขับ splits

การเลื่อนแต่ละอย่างนี้เปลี่ยนช่วงการเปรียบเทียบจริงโดยไม่เปลี่ยน label วันที่ในตาราง summary อาจบอก "2563-2568" สำหรับทั้งคู่ — แต่ trades out-of-sample จริงครอบคลุมวันปฏิทินต่างกัน

Protocol

ก่อนเปรียบเทียบผล walk-forward สองชุดใดๆ:

1. พิมพ์ metadata สำหรับทุก window: start date, end date, n_trades, n_wins, และ market regime ที่แต่ละ window ครอบคลุม (bull/bear/flat) ต้องการ logging code เพิ่ม 5 นาที

2. ตรวจสอบว่าจำนวน windows ตรงกัน: ถ้า version A มี 12 windows และ version B มี 11 windows พวกมันไม่ใช่ test เดียวกัน window ที่ขาดหายไปไม่ใช่ neutral — มันเป็น exposure ต่างกันต่อช่วงตลาดบางอย่าง

3. ตรวจสอบวันที่ trade แรกและสุดท้าย: สถิติ summary อาจบอก range เดียวกัน แต่ trade แรกจริงใน version B อาจช้ากว่า 3 เดือนถ้า indicator ใหม่เพิ่ม warmup requirements

4. เปรียบเทียบตาม window ไม่ใช่รวม: แทนที่จะเปรียบเทียบ "Sharpe รวม 0.85 vs 0.72" เปรียบเทียบ window-by-window: Window 1: A ได้ 0.8, B ได้ 0.7 Window 2: A ได้ 1.2, B ได้ 1.1 ซึ่งบังคับให้คุณสังเกตว่า windows ขาดหายไปหรือไม่

5. รันทั้งสองบน date range เดียวกันเป็น sanity check: แม้ test สุดท้ายของคุณจะใช้ประวัติที่มีทั้งหมด รันเวอร์ชันที่ constrained ที่ทั้งคู่ share start date ที่เข้มงวดเดียวกันและยืนยันว่าการเปรียบเทียบยังคงอยู่

Protocol นี้ใช้เวลา 30 นาทีเพิ่มในการเปรียบเทียบใดๆ มันช่วยผมจากข้อสรุปที่ผิดอย่างน้อยสามครั้งว่า "เวอร์ชันนี้ดีกว่า"

บทเรียนที่กว้างกว่า

Walk-forward testing เป็นวิธีที่ซื่อสัตย์ที่สุดในการประเมินระบบเทรด มันยังซับซ้อนที่สุดด้วย และความซับซ้อนสร้าง surface area สำหรับข้อผิดพลาดที่ละเอียด

ข้อผิดพลาดที่ผมกำลังอธิบายไม่ใช่เรื่องของเจตนาไม่ดีหรืองานที่ไม่ระมัดระวัง แต่เกี่ยวกับช่องว่างระหว่างสิ่งที่ label การวิเคราะห์บอกและสิ่งที่ข้อมูลครอบคลุมจริง labels บอก "2563-2568" ข้อมูลอาจครอบคลุม "2563-2568 ยกเว้น 5 เดือนแรกสำหรับ version B" สิ่งเหล่านี้ดูเหมือนกันบนกระดาษและให้ผลลัพธ์ที่เปรียบเทียบกันไม่ได้

ตรวจสอบ metadata ก่อนเชื่อ summary summary คือผลรวมของ windows ที่คุณอาจนับไม่ถูก

ตามรอย ศึกษา รอจังหวะ จู่โจม


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

Draft 2026-06-12. แหล่งที่มา: 6-window WF comparison บน Thai paper system, 2563-2568 ข้อได้เปรียบ Version 2 (Sharpe 0.12) หายไปหลัง align start dates รูปแบบใช้ได้กว้าง: การเปรียบเทียบ WF ใดๆ ต้องการการตรวจสอบ metadata ระดับ window ก่อนที่จะเชื่อถือข้อสรุป

รับบทความวิจัยใหม่ทางอีเมล
ทดสอบจริง · ล้มเหลวจริง · เผยแพร่ทั้งหมด
Subscribe — ฟรี
📊 ดูแดชบอร์ดสด เครื่องสแกน breakout และ track record จริงได้ที่ หน้าหลัก MOEasymmetry — งานวิจัย ไม่ใช่คำแนะนำการลงทุน
← ก่อนหน้า
IBD บอกให้ซื้อ 91% ขึ้นสูงขึ้น แต่ส่วนใหญ่คืนกำไรทั้งหมด
งานวิจัยและบันทึกการเทรดส่วนบุคคล ไม่ใช่คำแนะนำการลงทุน · Personal research & trading journal — not investment advice. The author does not provide licensed advisory services.
Home · Articles · Methodology · Track record