ทำไมต้องทำ Backtest | มันคืออะไร | แล้วจำเป็นต้องทำมั๊ย?

backting ไปทำไม

Backtest คืออะไร ?

Backtest คือ การทดสอบประสิทธิภาพของกลยุทธ์การเทรดด้วยชุดข้อมูลย้อนหลัง (ราคาของสินทรัพย์นั้นๆ ในตลาด) ซึ่งไม่ว่าเราจะเทรดมือ หรือ การใช้ EA ก็ลวดแต่ต้องทำการ Backtest ทั้งนั้น โดยผมจะขอเริ่มเล่าจากการ Backtest ในการเทรดมือ ไล่ไปยังการ Backtest สำหรับผู้ใช้ EA ครับ

ถ้าเทรดมือเราต้อง Backtest ไปเพื่ออะไร?

  1. เพื่อประเมินประสิทธิภาพของกลยุทธ์การเทรด เช่น หากเราเทรดด้วยกลยุทธ์ xx ซึ่งมีจุดเข้าแบบนี้ ต้องปิดไม้ปิดตรงนี้ หรือ ต้องตั้ง TP / SL xx จุด เมื่อทำการเทรดไปแล้วด้วยระยะเวลา xx ปี มันจะชนะตลาดได้ไหม และกำไรเท่าไหร่ ความเสี่ยงเท่าไหร่ เป็นต้น
  2. หาข้อปกพร่องของกลยุทธ์ ยกตัวอย่างเช่น หากเราเทรดด้วยกลยุทธ์เดิมที่มีจุดแบบนี้ๆ เมื่อทำการ Backtest มาแล้วพบว่า สัดส่วนของ TP / SL สั้นเกินไป เราก็ต้องปรับระยะการตั้ง TP / SL ใหม่ เป็นต้น
  3. เพิ่มความมั่นใจการเทรด ยกตัวอย่างเช่น ในเคสเดิม เมื่อเราปรับ TP / SL ใหม่ แล้วผลลัพธ์มันกำไรดีจริงๆ ทดสอบ Backtest มาแล้วในสนามซ้อม ด้วยข้อมูลเดิมๆ มันผ่านสบายๆ เราก็ชื่นใจมาบ้าง เป็นต้น โดยขั้นต่อไปก็ลองสนามจริงเลย หรือ จะลองด้วยบัญชี Demo ก็ได้

หากเทรดมือต้องทำ Backtest วิธีไหน?

  1. ใช้ MT4 หรือ MT5 ได้เลย โดยวิธีนี้จะเป็นวิธีแบบดังเดิม ซึ่งเราจะต้องเลื่อนกราฟย้อนหลังเอาเองทั้งหมด (โคตรเหนื่อย) ข้อเสียคืออาจจะ Bias ในการทำได้เพราะเราเห็นกราฟในอนาคตไปแล้ว
  2. Soft4FX ซึ่งมัน คือ ซอฟต์แวร์ที่ออกแบบมาเฉพาะสำหรับการทดสอบ Backtest โดยเฉพาะ มันช่วยให้เราสามารถจำลองการซื้อขายด้วยตนเองและประเมินผลลัพธ์ได้อย่างละเอียด (ข้อดีคือเราจะไม่เห็นกราฟในอนาคต ส่งผลให้เกิด Bias หรือ อคติ ได้น้อยลง)
  3. Excel หรือ Google Sheets โดยมันเหมาะกับผู้ที่คุ้นเคยกับการใช้สเปรดชีต การนำข้อมูลราคาย้อนหลังมาวิเคราะห์และทดสอบกลยุทธ์ด้วยตนเองก็เป็นทางเลือกที่ดี (ค่อนข้างใช้เวลามาก)

ตอนนี้ผมคิดว่าเพื่อนๆ น่าจะพอมองเห็นความเป็นมาของ Backtest มาพอสมควรแล้ว ต่อไปผมจะเริ่มเล่าการ Backtest ในยุคปัจจุบัน ซึ่งเป็นไปในแง่มุมของคนใช้ EA และนักพัฒนา EA ครับ

Backtest EA ไปเพื่อ?
รูปที่ 1 ถ้าเราเขียน EA แล้วเราจะต้อง Backtest EA ไปเพื่อ?

สำหรับนักพัฒนา EA เราจะทำการ Backtest ไปทำไม?

  1. เพื่อทดสอบระบบการทำงานของ EA ว่ามัน EA มันเข้า-ออก order, ตั้ง TP SL, หรือ ทำอย่างอื่นๆ ตามระบบที่เราตั้งใจเขียนเอาไว้ไหม ซึ่งนักพัฒนา EA หลายๆ ท่านจะเรียกว่า การทดสอบ Logic
  2. เพื่อทดสอบประสิทธิภาพของ EA ซึ่งผลการ Backtest เราจะสามารถมองเห็นสถิติการเทรดต่างๆ ไม่ว่าเป็น profit factor, winrate, expected payoff, และ stat อื่น ๆ (คลิ๊กเพื่ออ่านผล backtest) เป็นต้น
    • ทว่าก็มีนักพัฒนา EA หลายท่านให้ความเห็นทำนองว่า “การ backtest ทำแค่เช็ค Logic ก็เพียงพอแล้ว ผลการ backtest ไม่น่าเชื่อถือ” ซึ่งเอาจริงๆ ในทัศนะของผม หากเรายังชนะในสนามซ้อมไม่ได้ จะลงเทรดจริงจะมีความเสี่ยงสูง
    • อย่างไรก็ตามผมมองต่อไปว่า การที่นักพัฒนา EA ส่วนใหญ่มองข้ามความน่าเชื่อถือของการ Backtest มีอยู่หลายประเด็น เช่น ประสบการณ์ส่วนตัวที่พอทำ Backtest แล้วผลออกมาดี๊ดี แต่เทรดจริงล้างพอร์ตเฉย ซึ่งหากเป็นเรื่องนี้ เดี๋ยวผมจะอธิบายถึงสาเหตุเหล่านั้นให้ฟังครับ
    • หรือมีอีกเคสคือ เวลาทำ Backtest แล้วผลออกมาแย่จัง แต่พอรันแล้วได้ผลดีกว่านี้ ซึ่งอันนี้ก็ขึ้นอยู่กับหลายปัจจัย เช่น รัน EA ถูกจังหวะที่เป็นตลาดที่เหมาะสมกับกลยุทธ์นั้นๆ พอดี หรือ มีการเทรดมือเข้ามาช่วย หรือ มีการปรับเปลี่ยนค่า Parameters ให้เหมาะสมกับสภาพตลาดนั้นๆ เป็นพิเศษ เป็นต้น เพราะเราต้องยอมรับกันอย่างหนึ่งว่า EA ที่มีกลยุทธ์การเทรดแบบเดียว มีโอกาสรอดในตลาด forex ค่อนข้างน้อย ซึ่งสังเกตง่ายจาก EA ประเภท Trend following ก็มักจะแพ้หรือขาดทุนในจังหวะที่เกิด Sideways เป็นต้น ซึ่งในความเป็นจริงนั้นตลาด forex มันเปลี่ยนแปลงไปตลอดเวลาครับ
    • สิ่งที่น่ากลัวมากๆ สำหรับผู้บริโภค (ผู้ใช้ EA) คือ การที่มีนักพัฒนา EA บางท่านฉวยโอกาสเหล่านี้ โพนทะนาว่า ผลการ Backtest ไม่น่าเชื่อถือ การที่จะใช้ EA ไม่จำเป็นต้อง Backtest ก็ได้ การที่เขาพูดแบบนี้อาจจะเพียงเพราะเขาทำ Backtest ไม่ผ่านแต่อยากขายของน่ะ

 

“นักรบที่ชนะ หาทางชนะก่อนแล้วจึงทำศึก ในขณะที่นักรบที่แพ้ ทำศึกก่อนแล้วหาทางชนะ”

- ซุนวู -

 

  1. เพื่อหาข้อบกพร่องของ EA ไม่ว่าจะเป็นการบกพร่องที่เกิดจากการเขียน EA ไม่ครอบคลุมแล้วเกิด error บางประการ หรือ ข้อบกพร่องอันเกิดจากตัวกลยุทธ์เอง หรือการตั้งค่าชุด Parameters ต่างๆ ที่ไม่เหมาะสม เป็นต้น โดยเพื่อนๆ สามารถทำความเข้าใจ Frame Work จากรูปด้านล่างนี้ได้เลยครับ

 

สาเหตุที่หลายคน Backtest แล้วผลลัพธ์ต่างจากความจริง

1. ข้อมูลของ History data ไม่ดีพอ

ก่อนอื่นเรามาทำความเข้าใจเกี่ยวกับ History data กันหน่อยครับ… เจ้าตัว data นี้ มันคือ ราคาของสินทรัพย์ต่างๆ ที่วิ่งขึ้นลงไปมา ซึ่งการขยับในแต่ละครั้งเราจะเรียกมันว่า Tick เช่น ขยับ 5 ครั้ง ก็คือ 5 Ticks โดยที่ในการขยับแต่ละครั้งก็จะมีราคา Ask และ Bids ที่ต่างกันออกไป ส่งผลให้ค่าความต่างของราคา (Spread) ต่างกันไปด้วย เป็นต้น จากนั้นโบรกเกอร์ต่างๆ ก็จะทำการเก็บข้อมูลเหล่านี้มาให้เรา Backtest นั่นเอง

อย่างไรก็ตาม คุณภาพของ Data ที่โบรกเกอร์ให้เราใช้ค่อนข้างต่ำ (90.00% data quality) เนื่องจากการบันทึกราคาเหล่านี้ต้องใช้พื้นที่เก็บมากและมีราคาต้นทุนที่สูง เพื่อเป็นการประหยัดงบส่วนนี้ โบรกเกอร์จึงเลือกเก็บข้อมูลแบบไม่ละเอียด (fraction tick)

tick data
รูปที่ 2 ตัวอย่างการวิ่งของ tick ทั้ง 2 แบบ

อย่างไรก็ตาม มีบริษัทเอกชนหลายค่าย (รวมไปถึงโบรกเกอร์ forex) ได้เล็งเห็นความสำคัญของข้อมูลราคาเหล่านี้จึงลงทุนเก็บมันเอาไว้ ดังนั้นคุณภาพของ Data เหล่านี้จะมีมากขึ้นดังปรากฏในตารางที่ 1

ตารางที่ 1 แสดงความแตกต่างของ data quality ต่างๆ

Data quality

Model quality Spread Commission

Slippage simulation

90.00% Math calculation: ความละเอียดต่ำ เป็นเพียงการคำนวณคณิตศาสตร์เฉย ๆ จึงไม่ค่อยนิยม Fix No No
Open Price Only: ความละเอียดต่ำ ใช้ข้อมูลราคาเปิดของแท่งเทียนมาทดสอบอย่างเดียว ไม่ค่อยนิยมใช้เพราะหยาบเกินไป Fix No No
99.00% 1-Minute OHLC Control Point: ความละเอียดปานกลาง Backtest ใช้เวลาไม่นานเพราะใช้ข้อมูลเปิด-ปิด สูง-ต่ำของแท่ง 1 นาที นิยมใช้ทดสอบ EA ที่ออกคำสั่งตรงราคา OHLC Fix No No
99.90% Everytick: ความละเอียดสูง เพราะจะใช้ข้อมูลทุก Tick ที่ราคาขยับ นิยมใช้กัน Variable Yes Yes
100.0% Everytick Real Tick: ความละเอียดสูงสุด เพราะจะใช้ข้อมูลทุก Tick ที่ราคาขยับและสภาวะตลาดเหมือนจริงที่สุด + Spread แบบจริงๆ ข้อเสียคือใช้เวลานานมากๆ Variable Yes No

หมายเหตุ: data quality = 99.90% มีเฉพาะ MT4 เท่านั้น และ data quality = 100.0% มีเฉพาะ MT5 เท่านั้น

หากอ่านมาถึงข้อนี้แล้ว เพื่อนๆ อาจจะพอเข้าใจว่าทำไม่ผล Backtest กับผลการรันจริงมีความแตกต่างกันแล้วใช่ไหมครับ แต่จริงๆ แล้วมันมีปัจจัยอื่นที่มากกว่าแค่ คุณภาพของ Data แน่นอน!!

2. ขั้นตอนการ backtest ยังไม่สมบูรณ์

ในข้อที่ 1 เราได้ทำความเข้าใจในเรื่องของ Data Quality ก็ไปแล้ว ในข้อนี้ผมจะบอกถึงอีกหนึ่งปัจจัยที่ทำให้การ Backtest ไม่แม่นยำพอ… .อ้างอิงตารางที่ 1 เพื่อนๆ ลองสังเกต Column Spread จะเห็นว่าถ้าเราใช้ 99.90% และ 100.0% เราจะเห็นคำว่า Variable ซึ่งมันหมายความว่า Spread มันจะสามารถเปลี่ยนแปลงไปตามตลาดจริง และสามารถตั้งค่าเพื่อปรับเพิ่มลงได้นั่นเองครับ (ยกเว้นใน MT5 ที่ไม่สามารถทำได้)

ดังนั้นแล้ว หากเราใช้ Data quality ที่ต่ำกว่า 99.90% เราจะไม่สามารถตั้งค่าเหล่านี้ได้เลย มันจึงนำมาซึ่งเหตุปัจจัยที่ทำให้การ Backtest ของเราไม่แม่นยำนั่นเอง คำถามต่อมาคือ แล้วเราจะหาเจ้า 99.90% มาใช้ได้จากที่ไหนล่ะ?

อันนี้ต้องบอกตามตรงว่า มันต้องเสียเงินซื้อมาใช้จริงๆ ครับ เพราะหลายๆ อย่างของเขามีต้นทุน โดยส่วนตัวผมเลือกใช้ของ Tick data suite software ในราคาราวๆ 6,800 บาทต่อปี หากใครอยากเป็นนักพัฒนา EA จริงๆ จังๆ ผมแนะนำมาให้ซื้อมาใช้จริงๆ ครับ เพราะมันประหยัดได้มากกว่าการพอร์ตแตกในตลาด forex มาก

ในส่วนของวิธีการใช้งาน Tick data suite Software ผมมีการสอนเอาไว้ใน คอร์ส fxDreema แล้วล่ะครับ ใครสนใจก็สมัครเข้ามาเรียนได้เลย 😀 [แอบบอกนิดนึงครับว่า การตั้งค่าสามารถทำได้หลากลายมากๆ และผมสอนให้เพื่อนๆ ตั้งค่าได้สมจริงเท่าที่จะทำได้ให้เลยครับ ไม่กั๊กความรู้]

Backtest Lab

สิ่งที่ผมได้กล่าวมานั่น ไม่ได้กล่าวลอยๆ แต่ได้ทำการทดสอบเปรียบเทียบการผลการ Backtest ด้วย Tick data suite กับการ ForwardTest ด้วยบัญชีจริง!! เรียบร้อยแล้ว ซึ่งสมการที่ใช้เปรียบเทียบความแตกต่างคือ

 

%Difference = Absolut (V1-V2) / [(V1+V2)/2] * 100    

 

หมายเหตุ: %Difference คือ การเปรียบเทียบส่วนต่างของเปอร์เซ็นต์ว่าต่างกันกี่เปอร์เซ็นต์ เพิ่มขึ้นกี่เปอร์เซ็นต์ หรือ ลดลงกี่เปอร์เซ็นต์

ผลการทดลองพบว่า: ความต่างระหว่างผล Backtest และ Forwardtest ในแง่ของ Profit มีน้อยกว่า 11%, ราคาเปิดและปิดมีน้อยกว่า 1%, ราคา SL มีน้อยกว่า 1%, และเวลาเปิดมีน้อยกว่า 17% (ตารางที่ 2) ซึ่งบ่งบอกได้ถึงความแม่นยำของระบบ Backtest ที่มีมากกว่าการ Backtest ด้วยชุดข้อมูลคุณภาพต่ำกว่า 99.90% ครับ

ตารางที่ 2 แสดงค่าเปอร์เซ็นต์ความต่างของค่าพารามิเตอร์ที่ใช้วัดผลการทดลอง

Profit

Open Time Price S/L Close Time

Price

%Difference 10.35 16.73 0.17 0.31 39.14 0.34
SD 14.83 4.99 0.04 0.04 11.74 0.04

 

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

  • หากผู้พัฒนา EA ต้องการทำการ Screening กลยุทธ์เบื้องต้น สามารถทำ Backtest ด้วยชุดข้อมูลที่มีคุณภาพ 90.00% - 99.00% ได้ เนื่องจากมีความรวดเร็วในการทดสอบ แต่ยังขาดความแม่นยำ และหาก EA ตัวนั้นผ่านการทดสอบจึงคุ้มค่ามากพอที่เราจะไปทดสอบด้วย Data 99.90% อีกที
  • หากผู้พัฒนา EA ต้องการดูประสิทธิภาพของ EA ควรใช้ Tick data suite software ในการทำการ Backtest เนื่องจากเขามีชุดข้อมูลคุณภาพ 99.90% อีกทั้งยังสามารถปรับรายละเอียดปลีกย่อยเพื่อทำให้การทดสอบของเราสมจริงมากที่สุด อันเป็นที่มาของความแม่นยำในการทดสอบดั่งที่ผลการทดสอบด้านบนครับ
BackTest VS Forwardtest
รูปที่ 3 แสดงผลกำไรระหว่างการ BackTest และ Forwardtest

3. Backtest ปีนี้อาจจะดีจริง แต่ลอง Test ปีอื่นๆ ดูหรือยัง?

หลายๆ ครั้งที่เรา Backtest ปีนี้ผ่าน แต่ลองไปเทสอีกอื่นกลับพอร์ตแตก… เป็นแบบนี้เพราะอะไร แล้วเราจะมีการทดสอบอะไรแบบไหนบ้าง?

สาเหตุที่เราอาจจะ Backtest ผ่านบางปีเนื่องจาก กลยุทธ์การเทรดนั่นๆ เหมาะกับเฉพาะบางช่วงเวลาของตลาด forex นั่นเองครับ วิธีที่ง่ายที่สุด คือ การ Backtest ไปยาวๆ เลย 10-15 ปีก็ว่ากันไป ซึ่งถ้ามันผ่านไปได้ด้วยทั้งหมดช่วงระยะเวลานั้น เราควรจะทำการทดสอบ “ความทนทาน” หรือ “Robustness Test” เพิ่มด้วยครับ

Robustness Test คือ กระบวนการตรวจสอบความสามารถของระบบหรือซอฟต์แวร์ในการทำงานอย่างถูกต้องภายใต้สภาวะที่ไม่ปกติ หรือ ในช่วงเวลาที่แตกต่างกัน เช่น การรับข้อมูลที่ไม่ถูกต้องหรือเงื่อนไขที่เกินความคาดหมาย ดังนั้นการทดสอบนี้มุ่งเน้นให้มั่นใจว่าระบบสามารถรับมือกับสถานการณ์ที่ไม่คาดคิดได้โดยไม่เกิดความล้มเหลวครับ วิธีการเทสแบบวิธีการทำ Robustness test มีอยู่หลายขั้นตอนด้วยกัน ไม่ว่าจะเป็น

  • Additional Market Testing
  • Stress Testing
  • Walk Forward Optimizations (WFO) ซึ่งมีทั้งแบบ Anchored และ Un-Anchored
  • Monte Carlo Simulation

โดยรายละเอียดและวิธีการทำถ้าจะให้เขียนคงจะยาวมากๆ ซึ่งหากเพื่อนๆ ท่านใดสนใจสามารถเข้าไปอ่านได้ที่ หนังสือ fxDreema เล่มที่ 2 ได้เลยครับ

WFO Anchored and Un-Anchored
รูปที่ 4 ตัวอย่าง WFO ทั้งแบบ Anchored และ Un-Anchored

ตั้งยอมรับตรงๆว่า การทำ EA ซักตัวให้ผ่านการทดสอบทั้งหมดนี้ เป็นเรื่องที่ยากมากและเท่าที่ผมผู้เขียนได้ทำมาก็เห็นจะมีเพียง EA แค่ตัวเดียวที่ผ่านการทดสอบ นั่นก็คือ Wisdom EA นี่แหละครับ (คลิ๊กเพื่อดูการทดสอบ Wisdom EA)

Monte Carlo simulation forex
รูปที่ 5 ผลการทดสอบ Monte Carlo simulation ของ Wisdom EA

บทความอื่นๆ ที่เกี่ยวข้อง

สรุป

การ Backtest มีความจำเป็นสำหรับนักพัฒนา EA โดยมีจุดประสงค์เพื่อ

  • Screening กลยุทธ์การเทรด และความเป็นไปได้ถึงความคุ้มค่าที่จะพัฒนาต่อ ให้ทำการ Backtest ด้วยข้อมูล 90.00 – 99.00%
  • ทดสอบประสิทธิภาพการทำงานของ EA ให้ Backtest ด้วย Tick data suite software หรือ software อื่นๆ ที่ใช้ data 99.90% และสามารถปรับแต่งบัญชีการเทรดได้

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *