【บันทึกการพัฒนา】ทำไมตัวเลขในการทดสอบย้อนหลังถึงดูอ่อนแอ? ความเป็นจริงของการลื่นไถลของสเปรดและการล้มเหลวเชิงฟิสิกส์
กราฟทรงทรัพย์ที่สวยงามของผลการทดสอบย้อนหลัง และประสิทธิภาพที่แท้จริงที่หายไปหลังจาก投入เงินจริง เมื่อเจาะลึกสาเหตุของช่องว่างนี้ บ่อยครั้งพบว่าไม่ได้อยู่ที่ตรรกะของโปรแกรมเอง แต่ที่สภาพแวดล้อมการตรวจสอบที่ตั้งไว้บนเงื่อนไข “สมบูรณ์แบบเกินไป” เพื่อการใช้งานจริง ในครั้งนี้ ผมอยากบันทึกถึงสองการเสียดทานทางกายภาพที่เป็นสาเหตุหลักของช่องว่างนี้ คือ สเปรดและสลippage ซึ่งเป็นตัวบ่งชี้ถึงแรงเสียดทานสองด้าน และเป็นส่วนหนึ่งของแกนสามด้านที่รองรับความสามารถในการอยู่รอดในห้ากลุ่มการตรวจสอบที่ผ่านมา
1. การทดสอบย้อนหลังในสภาวะแวดล้อมที่ “สมบูรณ์แบบ”
เครื่องมือทดสอบย้อนหลังส่วนใหญ่จะถือสเปรดเป็นค่าคงที่ในค่าเริ่มต้น และคำนวณสลippage เป็นศูนย์ ซึ่งเป็นสเปคที่ทำให้กระบวนการคำนวณง่ายขึ้น ไม่ได้มีเจตนาร้าย แต่ผลที่ได้คือการคำนวณค่าเสียดทานจริงในตลาดถูกประเมินต่ำเกินไป
ถ้าไม่เข้าใจเงื่อนไขนี้และรับผลการทดสอบย้อนหลังมาเป็นข้อเท็จจริงอย่างเดียว เมื่อใช้งานจริงทันที ค่าเฉลี่ยที่คาดไว้จะสั่นคลอนอย่างรุนแรง และเป็นสาเหตุที่ระบบล้มเหลวไม่ใช่จากตรรกะ แต่จากช่องว่างระหว่างเงื่อนไขการตรวจสอบกับเงื่อนไขการใช้งานจริง ซึ่งหากไม่เข้าใจโครงสร้างนี้และตัดสินใจว่า “ตรรกะแย่” ก็อาจตัดโครงสร้างหลักที่ควรได้รับการปรับปรุงไปด้วย
2. ความเสียดทานจากสเปรด: ขีดจำกัดของการคำนวณด้วยค่าคงที่
สเปรด (ความต่างระหว่างราคาซื้อและขาย) เปลี่ยนแปลงอยู่เสมอตามคู่สกุลเงิน ช่วงเวลา และสภาพคล่องของตลาด โดยทั่วไปจะแคบในช่วงปกติ แต่เมื่อมีการประกาศข้อมูลเศรษฐกิจ หรือในช่วงเวลาที่สภาพคล่องต่ำ จะขยายตัวขึ้นมาเป็นระยะหนึ่งหลายเท่ากันถึงหลายสิบเท่า ความผันผวนนั้นคือเหตุผลสำคัญที่ทำให้โมเดลคำนวณด้วยค่าคงที่มีความสอดคล้องกับตลาดน้อยลง
ในการทดสอบย้อนหลังที่คำนวณด้วยค่าคงที่ ความสูญเสียในช่วง “เวลาที่ตลาดคลุ้มคลั่ง” ไม่ถูกสะท้อนอย่างถูกต้อง โดยเฉพาะตรรกะที่มุ่งหา Breakout หลังประกาศข้อมูลเศรษฐกิจ ช่องว่างนี้อาจเป็นจุดชนวนที่ทำให้การเปรียบเทียบในอดิบดันดูดี แต่ในการใช้งานจริงกลับมีต้นทุนสูงสุด จุดที่ดูเหมือนจะได้เปรียบในตอนทดสอบย้อนหลัง กลายเป็นจุดที่มีต้นทุนสูงสุดในการใช้งานจริง เมื่อปรับพารามิเตอร์โดยอ้างอิงจากสเปรดเฉลี่ยในช่วงปกติ ความลึกของจังหวะที่ทำให้เกิดการย้อนกลับจะถูกมองข้ามไป
3. ความเสียดทานจากสลippage: ความคลาดเคลื่อนของราคาสั่งซื้อ
สลippage คือ ความแตกต่างระหว่างราคาที่สั่งซื้อกับราคาที่เกิดจริง เมื่อตลาดมีการเปลี่ยนแปลงอย่างรวดเร็ว หรือเมื่อมีคำสั่งขนาดใหญ่เข้ามา ความแตกต่างนี้มักสูงขึ้น และรูปแบบการเกิดมีความสัมพันธ์ทางสถิติกับความผันผวนของตลาด หากมองข้ามความสัมพันธ์นี้และใช้ค่าคงที่อย่างเดียว ก็จะประเมินต้นทุนจริงในสถานการณ์ที่เสี่ยงที่สุดต่ำเกินไป
ในสภาพแวดล้อมการทดสอบย้อนหลังจำนวนมาก จะละเว้นสลippage หรือใช้ค่าคงที่ขนาดเล็กมากเพื่อจัดการกับมัน อย่างไรก็ตามในการใช้งานจริง เมื่อสถานการณ์มีคำสั่งหนาแน่น (ช่วงประกาศข้อมูล รายการที่ตลาดเปลี่ยนแปลงอย่างรวดเร็ว) สลippage มักขยายออกไป ดังนั้นตรรกะที่ควรทำงานในช่วงเวลาที่สำคัญที่สุดจะต้องเสียค่าใช้จ่ายมากที่สุดแบบที่เป็นเหตุบิดเบี้ยว โครงสร้างที่ไม่สมดุลเช่นนี้ถูกออกแบบไว้โดยไม่พิจารณาอย่างครบถ้วน ทำให้ตรรกะในการใช้งานจริงมีโอกาสกลับด้านค่าเฉลี่ยที่คาดไว้
4. ถูกรวมความเสียดทานแล้วจะเห็นว่า “ความได้เปรียบที่หลอกลวง” หายไป
การรวมสเปรดและสลippage ไว้ในระดับที่ใกล้เคียงกับระดับสูงสุดแทนที่จะเป็นระดับเฉลี่ย จะทำให้ค่าคาดหวังที่เคยพอเพียงในเงื่อนไขสมบูรณ์แบบลดลงอย่างมาก หรือแม้กระทั่งกลายเป็นลบ ไม่ใช่ตรรกะที่ผิด แต่เป็นผลที่เกิดจากการละเลยเสียดทานในขั้นตอนการตรวจสอบ
จำนวนการค้าที่ยุ่งยากมากขึ้นจะเกิดผลสะสมจากดอกเบี้ยทบต้น และด้วยจำนวนการค้าทั้งปีหลายร้อยถึงหลายพันครั้ง แม้ความแตกต่างของต้นทุนต่อครั้งจะเพียงไม่กี่ pips แต่เมื่อคูณด้วยจำนวนการค้า ทำให้กราฟทรงพัณฑ์ทรงพลังของพอร์ตโฟลิโอเปลี่ยนไปอย่างมีนัยสำคัญ
5. เหตุผลที่ห้องทดลองให้ความสำคัญกับเสียดทานในการตรวจสอบ
ตามบันทึกการพัฒนาก่อนหน้านี้ ห้องทดลองให้ความสำคัญกับ “การอยู่รอดกับกฎฟิสิกส์ของเสียดทาน” เป็นแกนความสำคัญอันดับที่ 1 ตามที่บันทึกมา จึงเป็นเหตุผลว่าเสียดทานคือเงื่อนไขพื้นฐานที่สุดที่จะทำให้ตรรกะสามารถอยู่รอดในการใช้งานจริง
ตรรกะการเข้าออกใช้งานอาจรัดกุมแค่ไหนก็ตาม หากเมื่อรวมเสียดทานแล้วความได้เปรียบหายไป มันก็ยังเป็นเพียงทฤษฎีในห้องแล็บเท่านั้น ในทางกลับกันตรรกะที่ยังเหลือความได้เปรียบหลังรวมเสียดทานก็ถือเป็นเงื่อนไขขั้นต่ำที่ต้องผ่าน เพื่อใช้งานจริงให้ได้ ดังนั้นในห้องแล็บจึงมีขั้นตอนตรวจสอบความทนทานต่อเสียดทานเป็นขั้นตอนแรกอย่างเป็นระบบ
Semura Lab. ที่ไม่มองข้ามเสียดทานเหตุผลที่ Semura Lab. ไม่มองข้ามเสียดทาน
สำหรับพวกเรา Semura Lab. สเปรดและสลippage ไม่ใช่ข้อผิดพลาดที่แก้ไขได้ภายหลัง แต่เป็นเงื่อนไขพื้นฐานที่ต้องรวมเข้ามาในการตรวจสอบตั้งแต่ขั้นแรก การแสดงประสิทธิภาพในเงื่อนไขสมบูรณ์แบบเป็นเพียงก้าวแรกของการพัฒนา และเมื่อรวมเสียดทานเข้ากับการคำนวณแล้ว เราจะเห็นพลังแท้จริงของตรรกะนี้ ความงดงามของผลการตรวจสอบที่คงทนต่อเสียดทานไม่ใช่เรื่องรอให้เห็นก่อน แต่ควรนำเสนอเป็นครั้งแรกสำหรับสภาพความจริงที่นำไปใช้งาน ในบันทึกการพัฒนานี้ เราจะยังคงบันทึกกระบวนการตรวจสอบที่ดูเรียบง่ายแต่เป็นแก่นสารนี้อย่างตรงไปตรงมาในอนาคตสำหรับ Semura Lab. สเปรดและสลippage ไม่ใช่ข้อผิดพลาดที่แก้ไขได้ทีหลัง แต่เป็นเงื่อนไขพื้นฐานที่ต้องติดตั้งตั้งแต่ขั้นต้น การแสดงประสิทธิภาพในเงื่อนไขอุดมคติเป็นเพียงก้าวแรกของการพัฒนา และเมื่อรวมเสียดทานเข้ากับการคำนวณ จะเห็นพลังที่แท้จริงของตรรกะนี้ การนำเสนอผลการตรวจสอบที่สวยหรูมาก่อนจะเล่าถึงเสียดทานไปด้วยไม่ใช่ แล้วความสามารถจริงที่ควรนำเสนอคือค่าที่รวมเสียดทานไว้ตั้งแต่เริ่มต้น ในบันทึกการพัฒนานี้ เราจะบันทึกกระบวนการตรวจสอบที่เรียบง่ายแต่เป็นแก่นสารนี้อย่างซื่อสัตย์ต่อไป