NORMSTrading Platform
← คลังความรู้บท 5/15สารบัญ

📖 คัมภีร์ Quant บท 5 — Backtest: ห้องสอบที่แยกความรู้ออกจากความเชื่อ (และวิธีไม่ให้มันกลายเป็นเครื่องหลอกตัวเอง)

ระดับ: สูง · บทนี้สร้างบนบท 11 (สถิติ) — ถ้ายังไม่อ่านบท 11 กลับไปก่อน ไม่งั้นบทนี้จะกลายเป็นคู่มือสร้างความมั่นใจปลอม ตัวอย่างจริงประกอบบทนี้คืองานวิจัย R2/R3 ของเราเอง (อยู่ research/) — ทุกหลักการในบทถูกใช้จริงในนั้นแล้ว แผนทั้งชุด · ← บท 4 data · บท 6 risk →


1. ปรัชญาที่ถูกต้อง — backtest คือเครื่อง "ฆ่าไอเดีย" ไม่ใช่เครื่อง "ผลิตระบบ"

มือใหม่ใช้ backtest แบบนี้: คิดกฎ → ทดสอบ → ผลไม่สวย → ปรับ → ทดสอบ → ปรับ → ... → สวยแล้ว! → ลงเงิน → ตาย — กระบวนการนี้มีชื่อทางวิทยาศาสตร์ว่า การ optimize ความบังเอิญ (บท 11 ข้อ 5): ยิ่งวนลูปมาก ผลยิ่งสวย และยิ่งสวยยิ่งปลอม เพราะสิ่งที่ถูก "จูน" ไม่ใช่ edge แต่คือความพอดีกับ noise ในอดีตชุดนั้น

มืออาชีพใช้กลับด้าน: ตั้งสมมติฐานพร้อมเหตุผลเศรษฐศาสตร์ ก่อน (ใครจ่าย ทำไม — บท 3) → ล็อกนิยามกฎเป็นตัวเลข ก่อนเห็นผล → ทดสอบครั้งเดียวแบบจัดเต็ม → ผลส่วนใหญ่คือ "ตาย" และนั่นคือระบบทำงานถูกต้อง — กองทุนจริงฆ่าไอเดีย 80-95% ของทั้งหมดในห้องสอบนี้ ไอเดียที่รอดถึงเงินจริงคือส่วนน้อยมาก · งบของห้องสอบคือ "ความผิดหวังราคาถูก" — ทุกระบบห่วยที่ตายในห้องสอบ คือเงินจริงที่ไม่ต้องเสีย

ผลวิจัย R3 ของเราเมื่อคืนคือตัวอย่างที่ดีที่สุด: sweep proxy 20 ชุด ส่วนใหญ่ไม่ต่างจากสุ่ม → รายงานตรงๆ ไม่แต่งให้สวย → ผลคือเราได้ 2 อย่างที่มีค่ากว่า "ผล backtest เขียว": (1) รู้ว่า pattern เปล่าๆ ไร้ context ไม่พอ — ต้องมีเงื่อนไขแบบตาราง Phase C (บท 14) (2) ได้สมมติฐานที่แคบลงและคมขึ้น (ทอง + volume filter) ไปทดสอบต่อแบบมีวินัย — นี่คือหน้าตาของความคืบหน้าจริงในวิชานี้: ไม่ใช่เส้น equity สวย แต่คือสมมติฐานที่คมขึ้นเรื่อยๆ


2. บาป 7 ประการของ backtest — สาเหตุการตายเรียงตามที่เกิดจริง

บาปที่ 1 — Look-ahead (แอบดูเฉลย)

ระบบใช้ข้อมูลที่ ณ เวลานั้นยังไม่มีอยู่จริง — รูปแบบที่เจอบ่อย: ใช้ close ของแท่งในการตัดสินใจ "ระหว่าง" แท่งนั้น · indicator ที่คำนวณจากแท่งยังไม่ปิด · ข้อมูลเศรษฐกิจฉบับ revised · ราคา adjusted (บท 4) · อาการ: ผลดีผิดมนุษย์แบบไม่มีเหตุผล — ถ้า backtest แรกออกมาเทพทันที สงสัยบาปนี้ก่อนดีใจ · ยาแก้เชิงวิศวกรรม: กฎเหล็ก "ตัดสินใจที่ข้อมูลถึงแท่ง t · execute ที่ open ของ t+1" (R2/R3 ของเราใช้ shift มาตรฐานนี้ และเขียนแถลงไว้ในรายงาน — นั่นคือมารยาทวิชาชีพ)

บาปที่ 2 — Survivorship (สอบเฉพาะผู้รอด)

ทดสอบกับ universe ปัจจุบันย้อนหลัง — ตัวที่เจ๊ง/ถูกถอดหายไปจากข้อสอบ · เจ็บสุดในหุ้นรายตัว (หุ้นเน่าหายจากดัชนีเรื่อยๆ) เบากว่าใน forex/ทอง/crypto ใหญ่ (EURUSD ไม่ "เจ๊งหายไป" แบบหุ้น แต่ crypto ตัวเล็กตายเป็นเบือ — universe 41 ตัวของเราเลือกตัวใหญ่ที่รอดมา → ฝั่ง buy&hold สวยเกินจริง ตามที่ R2 แถลง) · ยาแก้ระดับเรา: รู้และแถลงทุกครั้ง + เน้นข้อสรุปที่ "เทียบภายใน" (กลยุทธ์ A vs B บนข้อมูลเดียวกัน — อคติหักล้างกันเอง) มากกว่าข้อสรุปสัมบูรณ์

บาปที่ 3 — Overfitting (ตัดสูทพอดีหุ่นโชว์)

เจาะลึกแล้วในบท 11 — เพิ่มมุมเครื่องมือ: parameter sensitivity matrix คือเครื่องจับที่ดีที่สุด: รันกฎเดียวกันที่พารามิเตอร์ทุกค่าในย่าน (MA 10,15,20...60) แล้วดูภาพรวม — กฎจริงให้ "เนินเขียวกว้าง" (ดีทั้งย่าน) กฎปลอมให้ "เสาเขียวเดี่ยวกลางทะเลแดง" · แชทโรงงานของเราเจอหลักนี้เองแล้ว (SD30 = กฎ breakout มองย้อน 30 วัน ให้ "เนินกว้าง" ชนะ SD50 = มองย้อน 50 วัน ที่ให้ "ยอดแหลม" ของต้นแบบ) — เมื่อสองทีมเจอความจริงเดียวกันโดยอิสระ นั่นคือสัญญาณดีว่าความจริงนั้นแข็ง

บาปที่ 4 — มองข้ามต้นทุน (โลกที่ไม่มีแรงเสียดทาน)

backtest ไม่ใส่ spread/slippage/commission = ฟิสิกส์โลกไร้แรงโน้มถ่วง — กลยุทธ์ความถี่สูงที่ "กำไรในกระดาษ" ตายด้วยต้นทุนล้วนๆ เป็นสัดส่วนใหญ่ที่สุดของระบบ retail ทั้งหมด · มาตรฐานเรา (ใช้แล้วใน R2/R3): ใส่ต้นทุนสมจริงทุกครั้ง + ทดสอบซ้ำที่ต้นทุน ×2 — ระบบที่รอดต้นทุนคูณสองคือระบบที่ edge หนาพอมีชีวิตจริง · R3 ยังโชว์เคสคลาสสิก: EURUSD stop แคบทำให้ต้นทุน 0.1% กลายเป็น ~1.1R ต่อไม้ — ต้นทุนต้องวัดเทียบ "ระยะ stop" ไม่ใช่เทียบราคาสินทรัพย์ — กฎ stop แคบในตลาดต้นทุนแพง = โดนภาษีกินทั้ง edge โดยไม่รู้ตัว

บาปที่ 5 — มองข้าม "ความเป็นไปได้จริงของการ fill"

backtest สมมติว่าได้ราคา close เป๊ะทุกไม้ — โลกจริง: gap ข้าม stop (บท 11 ข้อ 3) · limit ไม่ fill (ราคาแตะแต่ไม่ทะลุ) · ตลาดปิด/วันหยุด/halt · ยาแก้: สมมติแบบเสียเปรียบตัวเองเสมอ (conservative fill: stop เช็คก่อน TP ในแท่งเดียวกัน — R3 ทำแล้ว) — backtest ที่ "ใจดีกับตัวเอง" ทุกจุดเล็กๆ สะสมเป็นความเทพปลอม 2-5%/ปีได้สบาย

บาปที่ 6 — Data Snooping ระดับกระบวนการ

ละเอียดในบท 11 — เพิ่มรูปแบบที่เนียนที่สุด: "ผมแค่ดูกราฟก่อนเฉยๆ" — การนั่งดูชาร์ต 10 ปีก่อนเขียนกฎ ก็คือการ snooping ด้วยตา: ตาจำไปแล้วว่าช่วงไหนเกิดอะไร แล้ว "กฎที่คิดออก" ก็เอียงไปหาเหตุการณ์ที่จำได้ · แก้ไม่ได้ 100% (เราเห็นตลาดมาแล้วทั้งชีวิต) แต่บรรเทาได้: ออกแบบกฎจากหลักการ (เหตุผลเศรษฐศาสตร์) ไม่ใช่จากการไล่ดูชาร์ต + ให้ out-of-sample เป็นผู้พิพากษาเสมอ

บาปที่ 7 — Regime Blindness (สอบฤดูเดียว)

ทดสอบเฉพาะช่วงที่เข้าทาง — ระบบ buy-dip ที่สอบเฉพาะ 2023-2025 (กระทิง) ได้เกรด A ที่ไร้ความหมาย · มาตรฐาน: ข้อมูลต้องคลุม ≥2-3 regime + รายงานผลแยกรายปี/ราย regime เสมอ (R2 ทำแล้ว — จึงเห็นภาพจริงว่า trend รุ่งปีไหนเจ็บปีไหน) — ระบบที่ดีไม่ใช่ระบบที่เขียวทุกปี (ไม่มีจริง) แต่คือระบบที่ รู้ว่าตัวเองเขียวฤดูไหนแดงฤดูไหน แล้วไม่แตกแถวตอนฤดูแดงมาถึง


3. กระบวนการ backtest ที่ถูกต้อง — 8 ขั้น (SOP ของโปรเจกต์เรา)

  1. เขียนสมมติฐานลงกระดาษก่อนแตะโค้ด: กฎอะไร · เหตุผลเศรษฐศาสตร์ (ใครจ่าย) · คาดหวังผลแบบไหน · จะยอมรับว่า "ตาย" ที่เงื่อนไขไหน — ข้อสุดท้ายสำคัญสุด: นิยามความตายก่อนสอบ ไม่งั้นจะเลื่อนเส้นตายไปเรื่อยๆ ตอนเห็นผล (มนุษย์ทุกคนทำ)
  2. ล็อกนิยามเป็นตัวเลขทุกตัว: "แห้ง" = เท่าไร "แคบ" = เท่าไร — เขียนหัวไฟล์โค้ด (R3 ทำเป็นตัวอย่างแล้ว)
  3. แบ่งข้อมูล: in-sample (ออกแบบ/ปรับ) vs out-of-sample (ตัดสิน — แตะครั้งเดียว) · ของเรา: 7 ปีแรก / 3 ปีหลัง · ข้อควรระวัง: H4/Daily บน 4 ตลาด ใน 3 ปี อาจมีไม้แค่ 30-80 ไม้ — น้อยกว่าเกณฑ์ ≥100 ที่ให้ significance (บท 11) ดังนั้นการอ่าน OOS ให้ดูทิศทางและนิสัยของระบบ ไม่ใช่หวังผลมีนัยสำคัญทางสถิติ
  4. รันแบบ conservative ทุกจุด: execute แท่งถัดไป · ต้นทุนจริง+×2 · fill เสียเปรียบตัวเอง
  5. อ่านผลครบชุด ห้ามดูแค่กำไร: จำนวนไม้ (≥100 ต่อข้อสรุป — บท 11) · expectancy (R) · PF · MaxDD+ระยะเวลาใต้น้ำ · skew (วันแย่สุดหน้าตาเป็นไง) · แยกรายปี/ตลาด · sensitivity matrix (เนินหรือยอดแหลม)
  6. ทรมานระบบ (robustness): ต้นทุน×2 · พารามิเตอร์±20% · Monte Carlo P5 (สับลำดับไม้พันรอบ ดูกรณีแย่สุด 5% ของทุกสถานการณ์ที่เป็นไปได้) · ตัดตลาด/ปีที่ดีสุดออกแล้วยังบวกไหม (ถ้ากำไรทั้งระบบมาจากไม้เดียว/ปีเดียว = ยังไม่มีระบบ มีแต่ความทรงจำดีๆ หนึ่งครั้ง — R3 จับเคสนี้ได้จริง: ตัด 2 ไม้ลอตเตอรี่ จาก +0.97R เหลือ −0.05R)
  7. ตัดสินด้วยเกณฑ์ที่ตั้งไว้ในข้อ 1: ผ่าน = ไปเทรดกระดาษ (ไม่ใช่ไปเงินจริง!) · ตาย = จดบทเรียน เก็บเข้าสุสานไอเดียพร้อมเหตุผล (สุสานนี้มีค่ามาก — กันขุดศพมาทำซ้ำ + เป็นคลังคอนเทนต์ชั้นดี)
  8. เทรดกระดาษ = สอบปลายภาค: ระบบเจอตลาดสด + เจอนิสัยเราจริงๆ — backtest วัดระบบ เทรดกระดาษวัด "ระบบ+คน" ซึ่งคือหน่วยที่จะทำเงินจริง

4. การอ่านรายงาน backtest อย่างมือโปร — ลำดับการเปิดดู (ใช้กับของเราเองและของคนอื่น)

ลำดับนี้ออกแบบให้ "ของปลอมตกรอบเร็วที่สุด": 1. จำนวนไม้ ก่อนเลย — <100 = ปิดรายงานได้ ยังไม่มีอะไรให้คุย (บท 11) 2. วันแย่สุด/MaxDD/skew — เห็นนิสัยหางก่อนเห็นความหอมหวาน · เส้น equity เนียนกริบ = ธงแดง ไม่ใช่ธงเขียว 3. expectancy หลังต้นทุน เป็น R — ตัวเลขเดียวที่สรุปทั้งระบบ 4. แยกรายปี/ตลาด — กำไรกระจุกปีเดียว/ตลาดเดียวไหม 5. sensitivity — เนินหรือยอดแหลม 6. แล้วค่อยดู — CAGR/กำไรรวม (ตัวเลขที่มือใหม่ดูเป็นอันดับแรก คือตัวเลขที่มืออาชีพดูเป็นอันดับสุดท้าย เพราะมันถูกปั้นง่ายที่สุด)

🔬 เจาะลึก — ทำไม "เส้น equity เนียน" เป็นธงแดง: ระบบจริงบน timeframe ใหญ่มีไม้จำกัด/ปี ผลรายปีจึงแกว่งตามธรรมชาติ — เส้นที่เนียนผิดวิสัยมีคำอธิบายไม่กี่แบบ: overfit จนจำอดีตได้ (จะพังเมื่อเจออนาคต) · negative skew ซ่อนหาง (เนียนจนวันตาย — EA สายกริด/มาร์ติงเกล หรือ LTCM) · หรือ... ปลอม (Madoff โชว์เส้นเนียน 15 ปี — บท 12) · ธรรมชาติของกำไรจริงคือ "หยักแต่มีทิศ" — จำไว้ใช้ดูทั้งของตัวเองและของที่คนเอามาขาย


5. จาก backtest สู่โลกจริง — ทำไมผลสดมัก "หดครึ่ง" และต้องวางแผนยังไง

ปรากฏการณ์ที่วงการรู้กันแต่มือใหม่ไม่มีใครบอก: ระบบที่ผ่านห้องสอบอย่างซื่อสัตย์แล้ว ผลเงินจริงมักได้ราว 50-70% ของ backtest (กฎหัวแม่มือที่ practitioner ใช้กัน — ไม่ใช่ตัวเลขที่วัดได้สากล แต่ทิศทางมีเหตุผลรองรับ) — สาเหตุรวมกัน: alpha decay ระหว่างทาง (ตลาดวิวัฒน์ตลอด) · ต้นทุนจริงสูงกว่าโมเดลเสมอเล็กน้อย · execution คน/เครื่องไม่เป๊ะเท่าสมมติ · และ regression to the mean (ระบบที่ "ผ่านการคัด" คือระบบที่โชคช่วยใน sample ด้วยเสมอ — บท 11 ข้อ 7 เวอร์ชันระบบ) - การใช้: ตั้งความคาดหวังที่ "ครึ่งหนึ่งของ backtest" — ถ้าระบบต้องได้เต็มร้อยถึงจะคุ้ม แปลว่ายังไม่คุ้ม · ถ้าได้ครึ่งเดียวแล้วยังน่าทำ = ระบบมี margin of safety จริง

ประโยคขึ้นเพจจากบทนี้: - "Backtest คือเครื่องฆ่าไอเดีย ไม่ใช่เครื่องผลิตระบบ — กองทุนระดับโลกฆ่าไอเดียตัวเอง 9 จาก 10 และนั่นแหละงานหลักของเขา" - "ถ้าผล backtest แรกออกมาเทพทันที อย่าเพิ่งดีใจ — สถิติบอกว่าน่าจะเป็นบั๊กแอบดูเฉลยมากกว่าการค้นพบ" - "ตัดไม้ที่ดีที่สุด 2 ไม้ออก แล้วระบบยังกำไรไหม — ถ้าไม่ คุณไม่ได้มีระบบ คุณมีความทรงจำดีๆ หนึ่งครั้ง" - "เส้น equity ที่เนียนเกินไปคือธงแดง ไม่ใช่ธงเขียว — กำไรจริงหน้าตาหยักแต่มีทิศ ความเนียนสนิทคือลายเซ็นของ overfit, หางที่ซ่อนไว้ หรือการโกหก" - "วางแผนด้วยครึ่งเดียวของ backtest — ถ้าครึ่งเดียวไม่คุ้ม คือยังไม่คุ้ม"


ถัดไป → บท 6: Risk & Position Sizing — ส่วนที่ตัดสินว่าใครได้อยู่เห็น edge ตัวเองทำงาน

← บทก่อน📖 คัมภีร์ Quant บท 4 — Data ทุกเรื่อง: วัตบทถัดไป →📖 คัมภีร์ Quant บท 6 — Risk & Position Siz