คลังความรู้ · งานวิจัยวิชาการ
สร้างผู้ตัดสินก่อนสร้างกลยุทธ์ — และผลตอบแทน +871% ที่กลายเป็น −5% หลังแก้บั๊กสามจุด
นักวิจัยเดี่ยวคนหนึ่งสร้างระบบทดสอบย้อนหลังขึ้นมาก่อน แล้วแช่แข็งมันไว้ก่อนคำนวณผลตอบแทนแม้แต่ตัวเดียว จากนั้นเอากลยุทธ์หกตัวมาตัดสินด้วยเกณฑ์ที่ตั้งไว้ล่วงหน้า ผลคือตกทั้งหมด — และระหว่างทางระบบจับบั๊กที่เคยสร้างผลตอบแทนปลอม +871.5% ซึ่งพอแก้แล้วเหลือ −5.2% บทความนี้คือแบบแปลนของเครื่องมือที่เรากำลังจะสร้าง
งานวิจัยต้นทาง
“Build the Judge Before the Strategy: A Reproducible Retail Backtesting Platform and a Five-Study Negative-Results Program on ASX/US Equities”
โดย Jason Li — นักวิจัยอิสระ
SSRN working paper ยังไม่ผ่าน peer review
หน้านี้เป็นบทสรุปและบทวิเคราะห์เป็นภาษาไทยโดย XAULearn ไม่ใช่การแปลหรือทำซ้ำตัวงานวิจัย เราไม่ได้โฮสต์ไฟล์เอกสารและไม่ได้ตรวจสอบตัวเลขซ้ำ ลิขสิทธิ์เป็นของผู้เขียนและสำนักพิมพ์ โปรดอ่านฉบับเต็มจากต้นทาง เปิดหน้างานวิจัยที่ SSRN →
DOI 10.2139/ssrn.7104418
สรุป 5 ข้อ
- หลักการเดียวที่เป็นแกนทั้งบทความ: เครื่องมือตัดสิน — คลังข้อมูลที่รู้ว่า ณ เวลานั้นเรารู้อะไรบ้าง เส้นกั้นการรั่วของข้อมูล ตัวจำลอง walk-forward ที่คิดต้นทุน และเกณฑ์ผ่านที่ตั้งไว้ล่วงหน้า — ถูกสร้างและแช่แข็งก่อนคำนวณผลตอบแทนของกลยุทธ์ใดๆ
- ผลลัพธ์: ผู้สมัครทั้งหกตัวตกหมด ไม่มีตัวไหนผ่านเกณฑ์ที่ตั้งไว้ล่วงหน้า สองตัวถูกตัดตั้งแต่ขั้นความเป็นไปได้ของข้อมูลก่อนจะได้คำนวณผลตอบแทนด้วยซ้ำ
- ⭐ เคสที่ควรติดไว้บนผนัง: ผลรอบแรกของกลยุทธ์หนึ่งได้ผลตอบแทนเฉลี่ย +871.5% ซึ่งเกิดจากบั๊กการจัดแนวข้อมูล พอแก้อิสระสามจุดแล้วเหลือ −5.2% ซึ่งแยกไม่ออกทางสถิติจากศูนย์ (N = 2,110 เหตุการณ์จับคู่)
- ผู้เขียนบอกเองว่าผลงานที่คงทนของโครงการนี้ไม่ใช่กลยุทธ์ แต่คือเครื่องตัดสินกับวินัย และการปฏิเสธห้าครั้งจากเครื่องตัดสินเดียวกัน ให้ข้อมูลรวมกัน ไม่ใช่แค่ความล้มเหลวห้าครั้ง
- เกณฑ์ผ่านที่เขาใช้เป็นแบบตั้งล่วงหน้า — ค่า Sharpe ที่ปรับด้วยจำนวนครั้งที่ทดสอบ และความน่าจะเป็นที่ผลจะเป็นการ overfit ทั้งคู่ถูกกำหนดก่อนดูตัวเลขแรก
นี่คือบทความที่ใกล้เคียงกับสิ่งที่เรากำลังจะสร้างที่สุดในคลังทั้งหมด — เราวางแผนสร้างเครื่องมือที่วัดว่าสัญญาณของเราทำงานเมื่อไร ก่อนจะไปสร้างกลยุทธ์ใหม่ และผู้เขียนคนนี้ทำสิ่งเดียวกันไปแล้ว พร้อมรายงานว่าเจออะไร
ที่สำคัญกว่าคือ เขารายงานความล้มเหลว ซึ่งเป็นประเภทเนื้อหาที่เว็บนี้ยึดถือว่ามีค่าที่สุด
1. หลักการเดียวที่เป็นแกน
สร้างเครื่องตัดสินให้เสร็จและแช่แข็งไว้ ก่อนจะคำนวณผลตอบแทนของกลยุทธ์ใดๆ
องค์ประกอบของเครื่องตัดสินที่เขาสร้าง
| ส่วน | ป้องกันอะไร |
|---|---|
| คลังข้อมูลที่บันทึกว่า ณ เวลานั้นเรารู้อะไรบ้างจริงๆ | กันการใช้ข้อมูลที่ถูกแก้ย้อนหลัง ซึ่งตอนนั้นยังไม่มี |
| เส้นกั้นเชิงโครงสร้างระหว่างตัวแปรต้นกับผลลัพธ์ | กันข้อมูลอนาคตรั่วเข้ามาในตัวแปรที่ใช้ทำนาย |
| ตัวจำลอง walk-forward ที่มีเกณฑ์เทียบที่คิดต้นทุนอย่างเป็นธรรม | กันการเทียบกับเกณฑ์ที่อ่อนเกินไป |
| เกณฑ์ผ่านที่ตั้งไว้ล่วงหน้า | กันการขยับเส้นชัยหลังเห็นผล |
คำที่ควรสังเกตคือ “เชิงโครงสร้าง” — เขาไม่ได้แค่ตั้งใจจะไม่ให้ข้อมูลรั่ว แต่ออกแบบระบบให้รั่วไม่ได้ ซึ่งต่างกันมาก เพราะความตั้งใจล้มเหลวได้ แต่โครงสร้างไม่ล้มเหลว
2. ผลลัพธ์ — ตกหมด
กลยุทธ์สี่ตัวถูกทดสอบจนได้คำตัดสินจากผลตอบแทนจริง อีกสองตัวถูกตัดตั้งแต่ขั้นความเป็นไปได้ของข้อมูล เพราะเข้าถึงข้อมูลที่ต้องใช้ไม่ได้
ทั้งหกตัวจบลงด้วยผลลบหรือถูกบล็อก ไม่มีตัวไหนผ่านเกณฑ์
และประโยคที่เราชอบที่สุด
การปฏิเสธห้าครั้งจากเครื่องตัดสินเดียวกันที่มีวินัย ให้ข้อมูลเมื่อรวมกัน ไม่ใช่แค่ความล้มเหลวห้าครั้ง — ผลงานที่คงทนของโครงการนี้คือเครื่องตัดสินกับวินัย ไม่ใช่กลยุทธ์ตัวใดตัวหนึ่ง
3. ⭐ เคสที่ควรติดไว้บนผนัง
กลยุทธ์หนึ่งให้ผลรอบแรกเป็นผลตอบแทนเฉลี่ย +871.5%
ตัวเลขแบบนี้คือตัวเลขที่ทำให้คนเลิกตรวจสอบ เพราะมันดูเหมือนเจอของ
แต่มันเกิดจากบั๊กการจัดแนวข้อมูล และหลังจากแก้อิสระสามจุด ผลเหลือ −5.2% ซึ่งแยกไม่ออกทางสถิติจากศูนย์ บนกลุ่มตัวอย่าง 2,110 เหตุการณ์ที่จับคู่แล้ว
บทเรียนไม่ใช่ว่าเขาโง่ — ตรงกันข้าม เขาเก่งพอที่จะสร้างระบบที่จับบั๊กของตัวเองได้ บทเรียนคือถ้าไม่มีระบบแบบนั้น ตัวเลข +871.5% จะกลายเป็นกลยุทธ์ที่เอาเงินจริงไปใส่
และมันสอดคล้องกับสิ่งที่เราบันทึกไว้เองว่า ระบบสองตัวของเราถูกปฏิเสธที่ขั้นตรวจสอบ — การถูกปฏิเสธคือระบบทำงาน ไม่ใช่ระบบล้มเหลว
4. ⚠ อ่านอย่างระแวง
- เป็นเปเปอร์ทำงาน ยังไม่ผ่าน peer review และเป็นงานเดี่ยวของนักวิจัยอิสระ
- ทดสอบกับหุ้น ไม่ใช่ทองคำหรือสินค้าโภคภัณฑ์ โครงสร้างข้อมูลต่างกันมาก โดยเฉพาะเรื่องข้อมูลที่ถูกแก้ย้อนหลังซึ่งเป็นปัญหาของหุ้นมากกว่าของทอง
- ผลว่างเปล่าหกครั้งไม่ได้พิสูจน์ว่ากลยุทธ์เหล่านั้นไม่มีขอบ มันพิสูจน์ว่าด้วยข้อมูลและวิธีนี้ ตรวจไม่พบ ซึ่งต่างกัน — แต่สำหรับคนที่จะเอาเงินไปเสี่ยง ภาระการพิสูจน์อยู่ที่ฝ่ายที่อ้างว่ามี
- เขาอธิบายหลักการมากกว่าจะให้โค้ด การนำไปทำซ้ำจึงต้องออกแบบเองอยู่ดี
5. ⭐ เอาไปใช้กับเครื่องมือที่เรากำลังจะสร้าง
บทความนี้ให้ลำดับการสร้างที่เราจะใช้ตรงๆ
- เขียนนิยามเหตุการณ์และเกณฑ์ผ่านให้เสร็จก่อน แล้วแช่แข็ง — ห้ามแก้หลังเห็นตัวเลขแรก
- ทำให้ข้อมูลอนาคตรั่วเข้ามาไม่ได้เชิงโครงสร้าง ในบริบทของเราแปลว่า อ่านเฉพาะแท่งที่ปิดแล้ว และวัดผลลัพธ์หลังแท่งที่เกิดเหตุการณ์เท่านั้น ไม่ใช่รวมแท่งนั้น
- มีเกณฑ์เทียบที่คิดต้นทุนอย่างเป็นธรรม — ในกรณีเรา เกณฑ์เทียบที่ซื่อสัตย์ที่สุดคือการเข้าแบบสุ่มที่จำนวนและระยะถือเท่ากัน
- นับจำนวนครั้งที่ดูผล และปรับเกณฑ์ตามจำนวนนั้น
- ยอมรับผลว่างเปล่าเป็นผลลัพธ์ที่ถูกต้อง ไม่ใช่เหตุผลให้ไปหาพารามิเตอร์ใหม่
ข้อที่ห้าคือข้อที่ยากที่สุดในทางจิตใจ และเป็นข้อที่บทความนี้พิสูจน์ว่าทำได้จริง — เขาเผยแพร่ความล้มเหลวหกครั้งเป็นผลงานวิชาการ
6. ตั้งคำถามกับเปเปอร์นี้ — และคำตอบว่าทำไม
ทำไม +871% ถึงเป็นตัวเลขที่อันตรายกว่า −5% — เพราะตัวเลขใหญ่หยุดการตรวจสอบ · สมองอ่าน +871% เป็น “เจอแล้ว” และเปลี่ยนโหมดจากตรวจเป็นปกป้อง · ตัวเลขที่พอเชื่อได้ (+30%) จะถูกตรวจต่อ ตัวเลขที่เหลือเชื่อกลับถูกตรวจน้อยกว่า — จึงต้องมีกฎว่ายิ่งสวยยิ่งต้องสงสัยบั๊กก่อน และเราเจอเองแล้วบนทอง: ตัวแบบ AVR ให้ชุดที่ดีที่สุด EV ราว $15 ต่อไม้ แต่ 86% ของชุดที่บวกกระจุกที่จุดหยุดแคบสุด — ซึ่งคือจุดที่โมเดลพัง
ทำไม “เชิงโครงสร้าง” ถึงต่างจาก “ตั้งใจ” — เพราะความตั้งใจต้องทำซ้ำทุกครั้งที่เขียนโค้ดใหม่ และครั้งที่ลืมคือครั้งที่บั๊กเข้า · โครงสร้างทำครั้งเดียว: เราเคยมีสคริปต์ที่อ่าน parquet โดยตรงและเห็นข้อมูล 2023–26 ที่ควรถูกปิด — แก้ด้วยการตัดที่ DEV_END ตอนโหลด ไม่ใช่ตอนใช้ · นี่คือความต่างระหว่างสองคำ
ทำไมผลว่างเปล่าหกครั้งจึงเป็น “ผลงาน” ไม่ใช่ความล้มเหลว — เพราะมันตอบคำถามว่าด้วยเครื่องตัดสินนี้ กลยุทธ์ยอดนิยมหกตัวไม่ผ่าน ซึ่งประหยัดเงินของทุกคนที่จะลองมันด้วยเงินจริง · ผลบวกหนึ่งครั้งที่ไม่มีเครื่องตัดสินมีค่าน้อยกว่าผลลบหกครั้งที่มี
7. ที่มาของเนื้อหา — ใครพูด และมีอะไรจะขาย
| ใครเขียน | Jason Li — นักวิจัยอิสระ · SSRN working paper · งานเดี่ยว |
| ทำอะไร | สร้างแพลตฟอร์ม backtest ที่ตัดการรั่วเชิงโครงสร้าง แล้วรันหกกลยุทธ์ผ่านมัน |
| ที่ไหน | หุ้น ASX และสหรัฐ |
| อย่างไร | point-in-time archive · เส้นกั้นตัวแปร/ผลลัพธ์ · walk-forward · เกณฑ์ผ่านล่วงหน้า |
| หลักฐาน | 4 ตกเกณฑ์ · 2 ถูกบล็อกที่ข้อมูล · เคส +871% → −5.2% หลังแก้บั๊ก 3 จุด (2,110 เหตุการณ์) |
| แรงจูงใจ | วิชาการ · รายงานผลลบเป็นผลงาน |
8. ใคร ทำอะไร ที่ไหน อย่างไร — ถอดเหตุการณ์ในตลาดจากบทเรียนนี้
เปเปอร์นี้ไม่ได้เล่าตลาด แต่เล่า เหตุการณ์ที่เกิดในห้องทดลองของนักวิจัย ซึ่งมีตัวละครและแรงบังคับของมันเอง
| ใคร | ทำอะไร — และถูกบังคับด้วยอะไร | ที่ไหน | อย่างไร (กลไก) |
|---|---|---|---|
| นักวิจัยที่เห็นตัวเลข +871.5% | เปลี่ยนจากโหมดตรวจสอบ เป็นโหมดปกป้อง | รอบแรกของการทดสอบ | ตัวเลขใหญ่หยุดการตรวจ — ตัวเลขที่พอเชื่อได้จะถูกตรวจต่อ ตัวเลขที่เหลือเชื่อกลับถูกตรวจน้อยกว่า |
| บั๊กการจัดแนวข้อมูล | ให้ผลลัพธ์ที่สวยอย่างเป็นระบบ | ระหว่างตัวแปรต้นกับผลลัพธ์ | แก้สามจุดแล้วเหลือ −5.2% จาก 2,110 เหตุการณ์ = แยกไม่ออกจากศูนย์ |
| เครื่องตัดสินที่ถูกแช่แข็งไว้ก่อน | ปฏิเสธงานของเจ้าของมันเอง | ทุกการทดสอบ | ความตั้งใจล้มเหลวได้ แต่โครงสร้างไม่ล้มเหลว — เส้นกั้นเชิงโครงสร้าง ≠ ความระมัดระวัง |
| กลยุทธ์ทั้งหก | ถูกปฏิเสธหมด | ASX + สหรัฐ | “การปฏิเสธห้าครั้งจากเครื่องตัดสินเดียวกัน ให้ข้อมูลเมื่อรวมกัน” |
อ่านเป็นประโยคเดียว — คนที่ถูกบังคับในเรื่องนี้คือนักวิจัยเอง และสิ่งที่บังคับเขาคือกฎที่เขาเขียนไว้ก่อนเห็นตัวเลข
แล้วบนทองคำ ใครอยู่ตรงนั้นบ้าง
- ผู้ขายระบบทองที่โชว์ backtest สวย — ยืนอยู่ตำแหน่งเดียวกับนักวิจัยที่เห็น +871% แต่ไม่มีเครื่องตัดสินบังคับ · ตัวทดสอบของ MT5 ให้ผู้ใช้เลือกช่วงข้อมูล สเปรด และโหมดจำลองราคาเองได้ทั้งหมด → ตัวเลขที่สวยผิดปกติจึงควรถูกอ่านว่า “ตรวจบั๊กก่อน” ไม่ใช่ “เจอขอบ”
- เคส +871% ของเราบนทองคือตัวแบบ AVR — ชุดที่ดีที่สุดให้ EV ราว $15 ต่อไม้ แต่ 86% ของชุดที่เป็นบวกมาจากจุดหยุดที่แคบที่สุด → โมเดลพังจริง: เปอร์เซ็นไทล์ไม่รู้ลำดับก่อนหลัง (แตะจุดหยุดก่อนแล้วค่อยถึงเป้าถูกนับเป็นชนะ) → เดินราคาจริงเหลือ PF 1.193 · EV +$1.27 · จับได้เพราะถามว่า “ทำไมผลกระจุกที่ขอบของพื้นที่ค้นหา” ก่อนจะดีใจ
- เส้นกั้นเชิงโครงสร้างของเรา: ตัดคลัง 2023–26 ที่ loader ไม่ใช่ที่จุดใช้ · ใช้ session_day() แทนวันปฏิทิน (TV ป้าย D1 ด้วยเวลาเปิด = look-ahead 17 ชม.) · วัดผลหลังแท่งสัญญาณเท่านั้น
- ระบบที่เครื่องตัดสินของเราปฏิเสธ: KVF-MACD · ExhaustionFade · ScalperVBubble · DeskTrend (แพ้การถือ) — สี่ตัว และนั่นคือผลงาน ไม่ใช่ความล้มเหลว
- สิ่งที่ยังต้องเพิ่ม: นับจำนวนครั้งที่ดูผลข้ามงาน — N สะสมของทั้งโปรแกรม (1,350 ณ 21 ก.ย. 2026 · ตอนเขียนหน้านี้ 1,029) คือ N ที่แท้จริง ไม่ใช่ N ของงานเดียว
9. การวิเคราะห์ — เครื่องตัดสินของเราสร้างแล้ว และตัดสินไปแล้ว
ห้าข้อของหัวข้อ 5 กลายเป็นโครงของโปรแกรม EDGE และทุกงานหลังจากนั้น:
| ข้อ | สิ่งที่ทำ |
|---|---|
| 1 แช่แข็งก่อน | ทุกงานมี prereg.md ประกาศชุด เกณฑ์ และ N ก่อนรัน |
| 2 รั่วไม่ได้เชิงโครงสร้าง | ตัด 2023–26 ที่ loader · session_day() แทนวันปฏิทิน (TV ป้าย D1 ด้วยเวลาเปิด = look-ahead 17 ชม.) · วัดผลหลังแท่งสัญญาณเท่านั้น |
| 3 เกณฑ์เทียบ | ควบคุมสุ่มจับคู่ + เส้นปลอมเลื่อน + ถือทองที่ σ เท่ากัน |
| 4 นับครั้งที่ดู | เกณฑ์ t ≥ √(2 ln N) |
| 5 ยอมรับผลว่าง | เจ็ดงาน 1,029 ชุด ผ่าน 0 — เผยแพร่ทุกรอบ |
- เคส +871% ของเราคือตัวแบบ AVR: เปอร์เซ็นไทล์ให้ EV ราว $15 ต่อไม้ → โมเดลไม่รู้ลำดับก่อนหลังของเส้นทางราคา → เดินราคาจริงเหลือ PF 1.193 · EV +$1.27 · เจอเพราะถามว่าทำไมผลกระจุกที่ขอบของพื้นที่ค้นหา
- ระบบที่เครื่องตัดสินปฏิเสธ: KVF-MACD · ExhaustionFade · ScalperVBubble · และ DeskTrend (แพ้การถือ) — สี่ตัว
10. นำไปใช้กับ XAUUSD
- ก่อนเชื่อผลใด ให้ถามว่าดีเกินไปไหม — ทองที่ 0.42 bp ต้นทุน กฎ M3 ที่ให้ +0.5R ขึ้นไปคือบั๊กจนกว่าจะพิสูจน์เป็นอื่น
- เครื่องตัดสินมีแล้ว อย่าสร้างใหม่ — สมมติฐานใหม่ทุกข้อเข้าโครงเดิม: prereg → DEV 2015–2022 → ควบคุม → √(2 ln N)
- สิ่งที่ยังต้องเพิ่ม: บันทึกจำนวนครั้งที่ดูผลข้ามงาน (ไม่ใช่แค่ใน N ของงานเดียว) — N สะสมของทั้งโปรแกรม (1,350 ณ 21 ก.ย. 2026) คือ N ที่แท้จริง
11. สรุป
เปเปอร์ที่ใกล้เคียงกับสิ่งที่เรากำลังจะสร้างที่สุด — และตอนนี้เราสร้างมันเสร็จแล้วและได้ผลแบบเดียวกัน: ผลว่างเปล่าทุกครั้ง บั๊กที่ให้ตัวเลขสวยหนึ่งครั้ง และระบบสี่ตัวที่ถูกปฏิเสธถูกต้อง · ผลงานของเราคือเครื่องตัดสิน ไม่ใช่กลยุทธ์ — ตรงคำของผู้เขียน
หัวข้อในคลิป