30 สิงหาคม 2026 · สถิติ

แบ็กเทสต์ต้องมีเทรดกี่ครั้ง Sharpe ถึงจะมีความหมาย?

แบ็กเทสต์ต้องมีเทรดกี่ครั้ง Sharpe ถึงจะมีความหมาย?

นี่คือคำถามที่ผมถูกถามบ่อยที่สุดในรูปแบบใดรูปแบบหนึ่ง จากคนที่เพิ่งทำกลยุทธ์แรกเสร็จ: ต้องมีเทรดกี่ครั้ง ผลลัพธ์ถึงจะเป็นของจริง? ปกติจะมีตัวเลขพ่วงมาด้วย เช่น “ผมมี 1,200 เทรด แบบนี้พอแล้วใช่ไหม?” คำตอบตรงไปตรงมามักทำให้ทุกคนหงุดหงิด เพราะมันไม่ได้ขึ้นอยู่กับจำนวนเทรดเลย

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

1/√Tค่าคลาดเคลื่อนมาตรฐานของ Sharpe รายปี โดย T มีหน่วยเป็นปี
±0.88ช่วงความเชื่อมั่น 95% รอบค่า Sharpe ที่วัดได้ในช่วง 5 ปี
1.4ค่า Sharpe ที่กลยุทธ์ไร้สัญญาณ 100 แบบ ซึ่งโชคดีที่สุดแสดงได้ในช่วง 5 ปีเดียวกัน

ค่าคลาดเคลื่อนมาตรฐานของอัตราส่วน Sharpe คือเท่าไร?

สำหรับ Sharpe ที่คำนวณจากผลตอบแทนเป็นช่วงจำนวน n ค่า โดยสมมติว่าค่าเหล่านั้นเป็นอิสระต่อกันและมีการแจกแจงใกล้เคียงปกติ ค่าคลาดเคลื่อนจากการสุ่มตัวอย่างคือ:

SE(s) ≈ √((1 + s²/2) / n)

โดยที่ s คือค่า Sharpe ที่วัดด้วยความถี่เดียวกัน เมื่อนำทั้งสองข้างมาปรับเป็นรายปี จะได้สมการที่เรียบง่าย เมื่อมีข้อมูล k ค่าในแต่ละปี และมีข้อมูล T ปี ค่า Sharpe รายปี S มี:

SE(S) ≈ √((1 + S²/(2k)) / T)

ดูค่า 2k ที่อยู่ในตัวส่วนสิ สำหรับผลตอบแทนรายวัน k = 252 ดังนั้นแม้ Sharpe จะเท่ากับ 2 ก็มีส่วนเพิ่มในเศษเพียง 4/504 ≈ 0.008 พจน์ทั้งหมดจึงยุบเหลือ 1 ค่าคลาดเคลื่อนมาตรฐานของ Sharpe รายปีมีค่าประมาณ 1/√T โดย T คือจำนวนปีปฏิทินของข้อมูล ค่านี้แทบไม่ขึ้นกับตัว Sharpe เอง ไม่ขึ้นกับความถี่ในการสุ่มตัวอย่าง และไม่เกี่ยวกับจำนวนเทรดที่คุณทำเลยแม้แต่น้อย

ดังนั้น:

จำนวนปีข้อมูลSE(Sharpe)ช่วงความเชื่อมั่น 95% เมื่อวัดได้ 1.5
11.00−0.46 ถึง 3.46
20.710.11 ถึง 2.89
30.580.37 ถึง 2.63
50.450.62 ถึง 2.38
100.320.88 ถึง 2.12

แบ็กเทสต์ที่แสดง Sharpe 1.5 จากประวัติข้อมูล 2 ปี ไม่สามารถแยกผลลัพธ์ทางสถิติออกจากการโยนเหรียญได้ที่ระดับ 95% นี่คือสถานการณ์ตั้งต้นของงานวิจัยคริปโตส่วนใหญ่ เพราะข้อมูลที่สะอาด ปรับแก้การอยู่รอดของสินทรัพย์ และคิดค่าธรรมเนียมได้แม่นยำของคนส่วนมาก เริ่มมีตั้งแต่ราวปี 2022 และเหรียญที่น่าสนใจครึ่งหนึ่งยังไม่มีอยู่ก่อนปี 2023

แต่ผมมี 40,000 เทรด แบบนี้ช่วยแก้ปัญหาไม่ได้หรือ?

ไม่ได้ และนี่คือความเข้าใจผิดที่ผมอยากกำจัดให้มากที่สุด

จำนวนเทรดกับความยาวของตัวอย่างเป็นคนละปริมาณกัน และมีเพียงอย่างเดียวที่อยู่ในสูตร ถ้ากลยุทธ์ของคุณส่งคำสั่ง 40,000 ครั้งใน 6 เดือน คุณมี T = 0.5 และ SE ≈ 1.41 ช่วงความเชื่อมั่น 95% ของ Sharpe ที่วัดได้ 2.0 อยู่ระหว่าง −0.8 ถึง 4.8 แม้มี 40,000 เทรด ข้อสรุปที่ตรงไปตรงมาก็คือ “อาจจะดี หรืออาจจะติดลบ”

เหตุผลคือ 40,000 เทรดนั้นไม่ใช่การเดิมพันอิสระ 40,000 ครั้งในสภาวะตลาดที่ต่างกัน 40,000 แบบ แต่มันคือตัวอย่าง 40,000 ค่า จากพฤติกรรมตลาดประมาณ 180 วัน โดยแต่ละวันมีความสัมพันธ์กัน และสภาวะตลาดก็มีความสัมพันธ์ภายในกลุ่มด้วย กลยุทธ์กลับตัวสู่ค่าเฉลี่ยความถี่สูงที่ทำกำไรทุกวันเป็นเวลา 4 เดือนนั้น ที่จริงแล้วได้เดิมพันเพียงครั้งเดียว — ว่าการกลับตัวในช่วงเวลาสั้นจะยังใช้ได้ในสภาวะสภาพคล่องนี้ — และอาจได้เห็นผลของการเดิมพันนั้นในโอกาสที่เป็นอิสระต่อกันเพียงไม่กี่ครั้ง

วิธีคิดที่ผมใช้แทนคือ นับสภาวะตลาด ไม่ใช่จำนวนการจับคู่คำสั่ง กลยุทธ์นี้ผ่านสภาวะตลาดที่แตกต่างกันจริง ๆ มาแล้วกี่แบบ? กลยุทธ์รับผลตอบแทนจาก funding carry ที่ทำงานในช่วง basis เป็นบวกยาวนานเพียงช่วงเดียว ก็เจอสภาวะ n = 1 ไม่ว่าจะบันทึกการปรับสมดุลรายชั่วโมงไว้กี่ครั้งก็ตาม

ตรวจสอบเบื้องต้นแบบเร็ว: ใช้ block bootstrap กับ P&L รายวัน โดยกำหนดความยาวบล็อก 20 วัน แล้วดูการกระจายของค่า Sharpe ที่สุ่มตัวอย่างใหม่ ถ้าเปอร์เซ็นไทล์ที่ 5 ต่ำกว่าศูนย์ จำนวนเทรดของคุณก็ไม่มีความหมาย ผมเขียนโค้ดนี้ด้วย numpy ได้ประมาณ 9 บรรทัด และมันช่วยห้ามผมจากการใช้กลยุทธ์มากกว่าการตรวจสอบแบบอื่นใดเพียงอย่างเดียว

สูตรนี้ใช้ได้กับกลยุทธ์จริงไหม?

ไม่ทั้งหมด และมันประเมินความไม่แน่นอนไปในทิศทางที่คุณคงไม่ชอบ ผล 1/√T ตั้งอยู่บนสมมติฐานว่าผลตอบแทนเป็น IID และมีการแจกแจงปกติ แต่ผลตอบแทนของกลยุทธ์จริงมีสหสัมพันธ์ตามเวลาและมีความเบ้ ซึ่งโดยทั่วไปมักเบ้ติดลบสำหรับกลยุทธ์ที่คล้าย carry, short vol หรือการกลับตัวสู่ค่าเฉลี่ย การปรับแก้ของ Mertens นำโมเมนต์เหล่านี้กลับมาคิดด้วย:

SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)

โดย γ₃ คือความเบ้ และ γ₄ คือความโด่ง ความเบ้ติดลบทำให้พจน์ −γ₃·s เป็นบวก ซึ่งทำให้ช่วงความเชื่อมั่นกว้างขึ้น ความโด่งส่วนเกินก็ทำให้กว้างขึ้นอีก สำหรับ P&L ของกลยุทธ์ crypto carry ทั่วไปที่มีความเบ้ราว −1.2 และความโด่งราว 9 ผมเคยเห็นค่าคลาดเคลื่อนมาตรฐานหลังปรับแก้สูงกว่าค่าแบบง่าย 30–40% งานของ Lo ในปี 2002 จัดการส่วนของสหสัมพันธ์ตามเวลา และให้ผลไปในทิศทางเดียวกัน: สหสัมพันธ์ต่อเนื่องเชิงบวกในผลตอบแทนทำให้ Sharpe แบบง่ายสูงเกินจริงและทำให้ค่าคลาดเคลื่อนที่เห็นต่ำเกินไป ซึ่งเป็นคู่ปัญหาที่น่ากังวล

ดังนั้นให้มอง 1/√T เป็นค่าต่ำสุดของความไม่แน่นอน นี่คือกรณีที่ดีที่สุดแล้ว

ถ้าผมทดสอบ 500 รูปแบบ Sharpe ต้องสูงแค่ไหน?

ทีนี้ก็มาถึงส่วนที่สำคัญสำหรับคนที่ใช้ไปป์ไลน์วิจัยอัตโนมัติ ซึ่งเป็นสิ่งที่เราทำกันทุกวันที่ Stratmill: เอเจนต์สร้างกลยุทธ์ไม่ได้สร้างตัวเลือกเดียว แต่สร้างหลายร้อยตัวเลือก

ค่าสูงสุดที่คาดหมายของการสุ่ม M ค่าจากการแจกแจงปกติมาตรฐานมีค่าประมาณ √(2 ln M) เมื่อนำไปคูณกับค่าคลาดเคลื่อนมาตรฐาน ก็จะได้ค่า Sharpe ที่กลยุทธ์ไร้คุณค่าจริง ๆ ในจำนวน M กลยุทธ์ ซึ่งโชคดีที่สุดจะแสดงออกมา

จำนวนกลยุทธ์ที่ทดสอบ√(2 ln M)Sharpe สูงสุดจากสัญญาณรบกวน ช่วง 5 ปี (SE 0.45)ค่าสูงสุดจากสัญญาณรบกวน ช่วง 2 ปี (SE 0.71)
102.150.961.52
1003.031.362.16
5003.531.582.50
5,0004.131.852.93

ดูแถวรองสุดท้าย ถ้าคุณสร้างตัวเลือก 500 แบบจากข้อมูล 2 ปี แล้วผู้ชนะได้ Sharpe 2.4 คุณก็ยังไม่ได้ค้นพบอะไรเลย ค่านี้ต่ำกว่าระดับสัญญาณรบกวน Sharpe ที่ปรับลดอคติของ Bailey และ López de Prado ใช้ความแปรปรวนของค่า Sharpe จากการทดลองแทนค่า √(2 ln M) แบบหยาบ และคุ้มค่าที่จะนำไปใช้ให้ถูกต้อง แต่สูตรคร่าว ๆ ก็เพียงพอที่จะปรับพฤติกรรมได้ตั้งแต่วันนี้

มี 2 เรื่องที่ทำให้ปัญหานี้หนักกว่าที่ตารางบอก อย่างแรก M ไม่ใช่จำนวนกลยุทธ์ที่คุณบันทึกไว้ แต่คือจำนวนที่คุณประเมินผล ซึ่งรวมการปรับพารามิเตอร์ทุกครั้ง ทุกครั้งที่คิดว่า “ลองใช้ lookback 30 ช่วงดูอีกทีดีกว่า” และการรันใหม่ทุกครั้งหลังแก้บั๊ก ไม่มีใครนับอย่างตรงไปตรงมาหรอก อย่างที่สอง ตัวเลือกของคุณไม่ได้เป็นการสุ่มที่เป็นอิสระต่อกัน ดังนั้น √(2 ln M) จึงประเมินความกว้างที่มีผลจริงสูงเกินไป แม้การทดลองที่มีความสัมพันธ์กันก็หมายความว่าสภาวะตลาดที่เข้าทางเพียงครั้งเดียวยกผลลัพธ์ของกลุ่มกลยุทธ์ขึ้นไปพร้อมกันได้

ตัวเลขที่อันตรายที่สุดในงานวิจัยเชิงปริมาณคือตัวเลขที่ไม่มีใครบันทึกไว้: คุณลองดูผลไปกี่ครั้งแล้ว

แล้วผมควรทำอะไรจริง ๆ?

มี 5 อย่าง เรียงตามลำดับที่ผมจะทำ

  1. บันทึกการประเมินผลทุกครั้ง ตั้งตัวนับที่เพิ่มขึ้นทุกครั้งที่รันแบ็กเทสต์ บันทึกค่าไว้อย่างถาวรและห้ามรีเซ็ต ถ้าคุณบอกไม่ได้ว่า M เท่ากับเท่าไร คุณก็ระบุเกณฑ์ของตัวเองไม่ได้ นี่คือชั่วโมงงานวิศวกรรมที่คุ้มค่าที่สุดในรายการทั้งหมด
  2. รายงาน Sharpe พร้อมช่วงความเชื่อมั่นเสมอ อย่าแสดงตัวเลขเดี่ยว ๆ รายงานแบ็กเทสต์ของเราแสดง 1.72 ± 0.51 (2.9y, skew-adjusted) และเครื่องหมาย ± ต้องมีเสมอ มันเปลี่ยนวิธีที่ทั้งทีมพูดถึงผลลัพธ์
  3. กำหนดเกณฑ์จาก M และ T ก่อนดูผล ดึงตัวเลขจากตารางด้านบนมาเขียนไว้ เกณฑ์ที่กำหนดหลังเห็นผลคือวิธีที่ทำให้ทุกคนโน้มน้าวตัวเองว่าการฟิตเส้นโค้งนั้นถูกต้อง
  4. เมื่อมีตัวอย่างน้อย ให้เพิ่มความหลากหลายแทนความถี่ คุณสร้างเวลาในปฏิทินเพิ่มไม่ได้ แต่ใช้สัญญาณเดียวกันกับสินทรัพย์ 40 ตัวที่ไม่สัมพันธ์กันได้ วิธีนี้เพิ่ม n ที่มีผลจริงได้ ซึ่งการเพิ่มความถี่ในการเทรดทำไม่ได้ อย่างไรก็ตามต้องระวังสหสัมพันธ์ด้วย — perpetual คริปโต 40 ตัวในชั่วโมงที่ตลาดหลีกเลี่ยงความเสี่ยง ก็เป็นเหมือนเครื่องมือเดียวกัน
  5. จากนั้นก็เทรดบนบัญชีจำลอง เวลานอกตัวอย่างสะสมได้วันละ 1 วัน และไม่มีทางลัด ซึ่งเป็นเหตุผลว่าทำไมตัวอย่างนี้จึงเป็นสิ่งเดียวที่ไม่มีใครฟิตเกินได้

ทั้งหมดนี้ไม่ได้ทำให้ตัวอย่างสั้น ๆ นำไปใช้ได้ แต่ช่วยให้คุณซื่อตรงกับสิ่งที่ตัวอย่างสั้น ๆ รองรับได้ ซึ่งเป็นข้อสรุปที่อ่อนกว่าที่รายงานแบ็กเทสต์ส่วนใหญ่มักทำให้เข้าใจมาก Sharpe 1.5 จากข้อมูล 2 ปีเป็นสมมติฐานที่น่าลองเทรดบนบัญชีจำลอง แต่ยังไม่ใช่ข้อค้นพบ

อัตราส่วน Sharpeการฟิตเกินแบ็กเทสต์นัยสำคัญทางสถิติงานวิจัยเชิงปริมาณ
แชร์XLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← บทความทั้งหมด