ทำไมผล Backtest กับผลการเทรดจริงของคุณจึงไม่ตรงกัน
Backtest คือ การจำลอง กลยุทธ์ของคุณบนข้อมูลในอดีตที่มีความเที่ยงตรงสูง — ไม่ใช่คำสัญญาถึงผลลัพธ์ในอนาคต ช่องว่างระหว่างผล Backtest กับผลการเทรดจริงเป็นเรื่อง ปกติและคาดหมายได้ เป้าหมายคือการเข้าใจ ว่าทำไม เพื่อที่คุณจะตั้งความคาดหวังได้อย่างสมจริง คู่มือฉบับนี้จะแยกแยะให้เห็นว่า Backtest ของ Freya จำลองอะไรได้บ้าง และมีแรงเสียดทานใดบ้างที่มันจำลองไม่ได้
สำหรับวิธีรันและอ่านผล Backtest โปรดดู วิธีรัน Backtest และ การตีความผลลัพธ์ Backtest
Key Takeaways
- Backtest ของ Freya จำลองต้นทุนก้อนใหญ่ไว้แล้ว ได้แก่ ค่าธรรมเนียมการเทรดจริงของ exchange (maker/taker), Slippage แบบอนุรักษ์นิยมบนออเดอร์ market และ stop และ funding ของ futures
- แต่มันไม่สามารถจำลองแรงเสียดทานที่เกิดเฉพาะในการเทรดจริงได้ ได้แก่ ความหน่วง (latency), การทำงานบางส่วนของออเดอร์, ความลึกของสมุดคำสั่ง/สภาพคล่อง, ผลกระทบต่อตลาดจากออเดอร์ของคุณเอง และการแกว่งของ funding แบบเรียลไทม์
- Backtest ไม่ได้หักค่าธรรมเนียมตามผลงาน (performance fee) ของ Freya ดังนั้นกลยุทธ์ที่ทำกำไรจึงดูดีกว่าบนกระดาษเล็กน้อยเมื่อเทียบกับผลสุทธิที่ได้จริง
- ธงเตือนความเสี่ยง liquidation หมายความว่าการเทรดนั้นอาจถูก liquidate ได้ในการเทรดจริง แม้ว่า Backtest จะ “รอด” มาได้ก็ตาม — จงให้ความสำคัญกับมัน โดยเฉพาะเมื่อใช้ leverage สูง
- ช่องว่างที่ใหญ่ที่สุดมักไม่ใช่เรื่องกลไก — แต่เป็นเพราะตลาดในอนาคตจะไม่ซ้ำรอยช่วงเวลาในอดีตที่คุณทดสอบไว้
สิ่งที่ Backtest ของ Freya จำลองไว้แล้ว
เอนจินนี้สมจริงกว่าการจำลองแบบไร้เดียงสาที่ว่า "ราคาขึ้นไป X%" มันคำนึงถึง:
- ค่าธรรมเนียมการเทรดของ exchange — ใช้ระดับค่าธรรมเนียม maker/taker จริงของแต่ละ exchange โดยคิดกับทุกออเดอร์ (การเข้าซื้อ, ทุกออเดอร์ถัวเฉลี่ย และการออก) ออเดอร์ limit ที่ทำงานถือเป็น maker ส่วนออเดอร์ market ถือเป็น taker
- Slippage — จำนวนแบบอนุรักษ์นิยมที่ใช้กับออเดอร์ market และ stop ทำให้การทำงานของออเดอร์ถูกจำลองให้แย่กว่าราคาในอุดมคติเล็กน้อย (ส่วนออเดอร์ limit/Take Profit จะถือว่าทำงานที่ราคาเป้าหมายพอดี)
- Funding ของ futures — สำหรับ futures ต้นทุน funding ตลอดช่วงเวลาที่คุณถือสถานะจะถูกประมาณการและหักออก
ดังนั้นผลลัพธ์ สุทธิ ของ Backtest บน Freya จึงสะท้อนค่าธรรมเนียม, Slippage บางส่วน และ funding ไว้แล้ว — ซึ่งเป็นเหตุผลที่มันน่าเชื่อถือกว่าการจำลองที่ไม่คิดค่าธรรมเนียม
แรงเสียดทานเฉพาะการเทรดจริงที่มันจำลองไม่ได้
ไม่มี Backtest ใดที่จำลองการทำงานของออเดอร์ในสภาพจริงได้อย่างสมบูรณ์ นี่คือช่องว่างที่ทำให้ผลการเทรดจริงแตกต่างออกไป:
- ความหน่วง (Latency) — ใน Backtest สัญญาณและการทำงานของออเดอร์เกิดขึ้นบนแท่งเทียนเดียวกัน แต่ในการเทรดจริงมีความล่าช้า (เล็กน้อย) ที่เกิดขึ้นจริงระหว่างการตัดสินใจกับการส่งคำสั่ง
- การทำงานบางส่วนของออเดอร์ — Backtest จะทำให้ออเดอร์ทำงานเต็มจำนวนที่ราคาเดียว แต่ในการเทรดจริง ออเดอร์ขนาดใหญ่หรือออเดอร์ limit อาจทำงานเป็นส่วน ๆ หรือไม่ทำงานเลย
- ความลึกของสมุดคำสั่งและสภาพคล่อง — Backtest สมมติว่าออเดอร์ของคุณทำงานที่ราคาที่จำลองไว้ แต่ในการเทรดจริง สมุดคำสั่งที่บางอาจทำให้ราคาเคลื่อนไหวสวนทางกับคุณ
- ผลกระทบต่อตลาดจากออเดอร์ของคุณเอง — ออเดอร์จริงของคุณเข้าไปมีส่วนร่วมในตลาด ส่วนออเดอร์ใน Backtest ไม่ได้เป็นเช่นนั้น
- การแกว่งของ Funding — สำหรับ futures Backtest ใช้อัตรา funding เฉลี่ย ตลอดช่วงเวลานั้น ดังนั้นสถานะจริงที่ไปเจอ funding ที่สูงผิดปกติในบางจังหวะ อาจมีต้นทุนมากกว่า (หรือน้อยกว่า) ที่จำลองไว้
ค่าธรรมเนียมที่ Backtest ของคุณไม่ได้รวมไว้
มีช่องว่างหนึ่งที่เฉพาะเจาะจงกับ Freya ซึ่งควรรู้ไว้: Backtest ไม่ได้หักค่าธรรมเนียมตามผลงาน (performance fee) ของ Freya (ส่วนแบ่งจากการเทรดที่ทำกำไร ซึ่งหักจากยอดคงเหลือบนแพลตฟอร์มของคุณ — ดู อธิบายค่าธรรมเนียม) ค่าธรรมเนียมของ exchange และ funding อยู่ ใน Backtest แล้ว แต่ค่าธรรมเนียมตามผลงานเป็น การหักที่เกิดขึ้นเฉพาะในการเทรดจริง ดังนั้นกลยุทธ์ที่ทำกำไรจะได้ผลสุทธิจริงน้อยกว่าที่ Backtest บอกไว้เล็กน้อยในการเทรดที่ชนะ
Liquidation: ถูกติดธง ไม่ใช่รอดมาได้
หาก Backtest แสดงคำเตือน ความเสี่ยง liquidation จงให้ความสำคัญกับมัน Backtest จะติดธงการเทรดที่มี Drawdown เข้าใกล้ระดับ liquidation อย่างอันตราย — แต่มันก็ยังบันทึกการเทรดนั้นที่จุด stop/ออกของมัน แทนที่จะจำลองการถูกบังคับ liquidate ในการเทรดจริง การเทรดเดียวกันนั้นอาจ ถูก liquidate จนขาดทุนทั้งหมด ช่องว่างนี้จะกว้างขึ้นตาม leverage: ยิ่ง leverage ของคุณสูงเท่าไร การเทรดที่ "ฟื้นตัว" ได้ใน Backtest ก็ยิ่งมีโอกาสถูกล้างพอร์ตในความเป็นจริงมากขึ้นเท่านั้น
ช่องว่างที่ใหญ่ที่สุด: ตัวตลาดเอง
นอกเหนือจากเรื่องกลไกแล้ว แหล่งที่มาของความแตกต่างที่ใหญ่ที่สุดก็คือ อนาคตจะไม่เล่นซ้ำอดีต กลยุทธ์ที่ปรับจูนมาสำหรับช่วงเวลาในอดีตช่วงหนึ่ง อาจให้พฤติกรรมที่ต่างออกไปมากเมื่อสภาพตลาดเปลี่ยน นี่คือเหตุผลที่การตรวจสอบความถูกต้องจึงสำคัญ — ดู Walk-Forward Analysis — และเป็นเหตุผลที่ Backtest ที่ยอดเยี่ยมเป็นเพียง ตัวกรอง ไม่ใช่การรับประกัน
การตั้งความคาดหวังอย่างสมจริง
- คาดหมายว่า Drawdown ในการเทรดจริงจะลึกกว่า ใน Backtest — หลักการง่าย ๆ ที่ใช้กันบ่อยคือให้คูณ Drawdown ที่แย่ที่สุดที่คุณเห็นให้สูงขึ้นในใจ (อธิบายไว้ใน การตีความผลลัพธ์ Backtest)
- หักลบผลตอบแทนสุทธิของคุณ ลงมาเล็กน้อยเผื่อค่าธรรมเนียมตามผลงานและ Slippage ในโลกจริง
- ตรวจสอบความทนทาน (walk-forward, out-of-sample) แทนที่จะเชื่อ Backtest ที่สมบูรณ์แบบเพียงครั้งเดียว
- เริ่มต้นด้วยขนาดเล็กในการเทรดจริง เพื่อยืนยันว่ากลยุทธ์ทำงานตามที่คาดไว้ ก่อนที่จะขยายขนาด
คำถามที่พบบ่อย
Backtest ของ Freya รวมค่าธรรมเนียมการเทรดหรือไม่?
รวม มันใช้ค่าธรรมเนียม maker/taker จริงของ exchange กับทุกออเดอร์ — การเข้าซื้อ, ทุกออเดอร์ถัวเฉลี่ย และการออก นั่นคือเหตุผลที่ผลลัพธ์สุทธิของ Backtest บน Freya สมจริงกว่าการจำลองที่มองข้ามค่าธรรมเนียม
Backtest รวม Slippage หรือไม่?
รวม โดยเป็นจำนวนแบบอนุรักษ์นิยมที่ใช้กับออเดอร์ market และ stop เพื่อให้การทำงานของออเดอร์ถูกจำลองให้แย่กว่าอุดมคติเล็กน้อย ส่วนออเดอร์ limit และ Take Profit จะถือว่าทำงานที่ราคาเป้าหมายพอดี (เพราะออเดอร์ limit นั้นไม่ทำงานที่ราคาของมันก็ไม่ทำงานเลย)
Backtest คำนึงถึง funding ของ futures หรือไม่?
สำหรับ futures คำนึงถึง — มันประมาณการต้นทุน funding ตลอดช่วงเวลาที่ถือสถานะแล้วหักออก ทั้งนี้โปรดทราบว่ามันใช้อัตรา funding เฉลี่ยของช่วงเวลานั้น ดังนั้น funding จริงที่พุ่งขึ้นในบางจังหวะจึงอาจต่างจากค่าประมาณการได้
Backtest หักค่าธรรมเนียมตามผลงานของ Freya หรือไม่?
ไม่ ค่าธรรมเนียมของ exchange และ funding ถูกรวมไว้แล้ว แต่ค่าธรรมเนียมตามผลงานของ Freya บนกำไรเป็นการหักจากยอดคงเหลือบนแพลตฟอร์มของคุณที่เกิดขึ้นเฉพาะในการเทรดจริง ดังนั้นผลสุทธิจริงของคุณในการเทรดที่ชนะจะต่ำกว่าที่ Backtest แสดงเล็กน้อย โปรดดู อธิบายค่าธรรมเนียม
ทำไม Drawdown ในการเทรดจริงของฉันจึงแย่กว่าใน Backtest?
การทำงานของออเดอร์ในสภาพจริงเพิ่มแรงเสียดทานที่ Backtest จำลองได้ไม่ครบถ้วน — ความหน่วง, การทำงานบางส่วนของออเดอร์, สภาพคล่องที่บางกว่า, การแกว่งของ funding — และตัวตลาดเองก็เปลี่ยนไป จงวางแผนเผื่อ Drawdown ในการเทรดจริงที่ลึกกว่ากรณีเลวร้ายที่สุดใน Backtest ของคุณ
Backtest ของฉันทำกำไร แต่ฉันถูก liquidate ในการเทรดจริง — ทำไม?
Backtest จะติดธงความเสี่ยง liquidation แต่ไม่ได้จำลองการถูกบังคับ liquidate มันบันทึกการเทรดนั้นที่จุด stop/ออกของมัน ในการเทรดจริง Drawdown ที่ลึกสามารถ liquidate สถานะจนขาดทุนทั้งหมดได้ leverage สูงมักเป็นสาเหตุ — ลดมันลงเพื่อลดความเสี่ยง
การทดสอบบนช่วงเวลาที่ฉันจะเทรดพอดี จะรับประกันผลลัพธ์เดียวกันได้หรือไม่?
ไม่ ข้อมูลในอดีตไม่เกิดซ้ำ และตลาดในอนาคตจะไม่เหมือนกับช่วงเวลาในอดีต จงใช้ Backtest เพื่อกรองและตรวจสอบความถูกต้องของกลยุทธ์ (walk-forward, out-of-sample) ไม่ใช่ใช้เป็นการรับประกันผลตอบแทนในการเทรดจริง
