- ทำไมปี 2023 จึงยังคงเป็นปีที่ยากลำบากสำหรับการลงทุนในตลาดหุ้นไทย? - December 25, 2023
- 5 ข้อผิดพลาดที่พบบ่อยๆในการวิเคราะห์ผลการลงทุน - September 13, 2020
- พิสูจน์ความอันตรายของการเก็งกำไรระยะสั้นด้วยทฤษฎี Risk of Ruin - July 19, 2020
หลายๆครั้งสิ่งเล็กๆน้อยๆในชีวิตที่เราอาจจะไม่เคยได้ใส่ใจมาก่อนได้กลายมาเป็นต้นตอของปัญหาใหญ่ในภายหลัง ไม่ต่างอะไรกับน้่ำกัดเซาะชายฝั่ง วันนี้เราจะมาคุยกันถึงสิ่งเล็กๆที่เรียกว่า “Slippage” กับผลกระทบที่ไม่เล็กของมันต่อผลลัพธ์การลงทุนของเรากันครับ
Slippage คืออะไร? แล้วทำไมถึงต้องสนใจ Slippage?
ความหมายของคำว่าสลิปเพจ (Slippage) ก็คือค่าความคลาดเคลื่อนระหว่างราคาในจุดที่ระบบเกิดสัญญาณซื้อขาย (Buy/Sell Signal) กับราคาที่เราสามารถซื้อขายได้จริงๆ (Executed Price) โดยอาจเกิดจากหลายๆสาเหตุเช่น สภาพคล่องของหุ้นที่ต่ำ, สภาวะตลาดที่ผิดปกติ หรือข่าวที่เป็นด้านบวกหรือด้านลบมากๆที่เข้ามาระหว่างวัน ทำให้ราคาเกิดการเคลื่อนไหวอย่างรุนแรงเป็นต้น
เหตุการณ์ที่ไม่คาดฝันเหล่านี้ทำให้นักลงทุนควรทดสอบและประมาณการค่า Slippage ก่อนตัดสินใจลงทุนตามกลยุทธ์ใดๆ นอกจากนี้การเพิ่มค่า Slippage ในการทดสอบระบบนั้น ยังเป็นอีกวิธีที่เป็นการตรวจสอบความแข็งแกร่งหรือความเสถียร (Robustness) ของระบบ ซึ่งระบบที่มีความอ่อนไหวต่อราคาซื้อขายที่สูง (High Sensitivity) หรือระบบซื้อขายที่ทำการซื้อขายบ่อยและมีความสามารถในการทำกำไรต่อหนึ่งการเทรดไม่สูงพอ (ค่า Expectancy ต่ำ) เมื่อระบบเหล่านี้พบกับค่า Slippage ในการลงทุนจริงๆจะทำให้ผลตอบแทนของระบบนั้นแย่กว่าที่คาดหวังไว้ทันที
ดังนั้นในการทดสอบระบบการลงทุนนั้นมีความจำเป็นอย่างยิ่งที่ต้องมาการใส่ค่า Slippage เข้าไปในการทดสอบเพื่อเพิ่มสภาพแวดล้อมในการทดลองให้ความสมจริงมากขึ้น โดยยังสามารถที่จะทำการทดสอบภาวะวิกฤติ (Stress Test) เพื่อที่จะหาค่า Slippage ที่มากที่สุดที่ระบบการลงทุนจะสามารถรับมือได้โดยยังมีผลตอบแทนอยู่ในระดับที่น่าพอใจและยังสามารถที่จะนำข้อมูลที่ได้มาใช้ในการเฝ้าระวัง (Monitoring) และควบคุมการทำงานของระบบ (Control Factor) ระหว่างลงทุนจริงอีกด้วย
ทำความรู้จัก Slippage ในรูปแบบต่างๆ
ปรากฏการณ์ Slippage นั้นเป็นสิ่งที่หลีกเลี่ยงไม่ได้จากการซื้อขายจริงๆในตลาด (Live Trading) ไม่ว่าคุณจะทำการลงทุนในสินทรัพย์ประเภทไหนก็ตาม ยิ่งถ้าสภาพคล่องของสินทรัพย์ที่เลือกลงทุนนั้นต่ำระบบเราก็จะต้องรับมือกับค่าเฉลี่ยของ Slippage ที่สูงขึ้นเป็นเงาตามตัว โดยเราจะทำการแบ่งหน่วยมาตราวัดของค่า Slippage ออกเป็น 3 รูปแบบคือ
- Slippage ในหน่วยเปอร์เซ็น (Percent)
ความหมายคือ การที่เราได้ซื้อ (หรือขาย) ได้แพง (หรือถูก) กว่าราคาที่เกิดสัญญาณกี่เปอร์เซนต์ยกตัวอย่างเช่น กรณีที่ค่า Slippage เท่ากับ 3% ก็คือ ราคาต้นทุนของหุ้นที่ซื้อเข้า portfolio ได้จริงนั้นแพงกว่าราคาที่เกิดสัญญาณซื้อ 3% และหุ้นที่ขายออกจาก portfolio ขายได้ราคาถูกกว่าราคาที่เกิดสัญญาณขายอีก 3% คิดรวมแล้วเป็น Slippage ทั้งหมด 6% ในการทำการซื้อขายในแต่ละครั้ง
2. Slippage ในหน่วยช่อง (Spread)
ความหมายของคือ การที่เราได้ซื้อ (หรือขาย) ได้แพง (หรือถูก) กว่าราคาที่เกิดสัญญาณกี่ช่องยกตัวอย่างเช่น กรณีที่ค่า Slippage เท่ากับ 3 ช่อง ก็คือ ราคาที่เกิดสัญญาณซื้อเท่ากับ 5 บาทแต่ราคาจริงที่จับคู่คำสั่งซื้้อขาย (Match) คือ 5.15 บาท ซึ่งเท่ากับ 3 % อย่างไรก็ดีสิ่งที่ทำให้แตกต่างกับ Slippage แบบเปอร์เซนต์คือราคาหุ้นในแต่ละช่วงราคามีสเปรดไม่เท่ากัน เช่นหากหุ้นมีราคา 200 บาทจะมีสเปรดเท่ากับ 1 บาทต่อหนึ่งช่อง ดังนั้นที่ Slippage 3 ช่อง หมายถึงจะซื้อได้ที่ราคา 203 บาท หรือคิดเป็น 1.5% นั่นเองครับ
3. Slippage ในหน่วยของความผันผวน (Volatility)
ความหมายของค่า Slippage ในหน่วยของความผันผวน (Volatility) คือราคาที่เกิดการซื้อขายจริงนั้นมีค่าเป็นกี่เปอร์เซ็นของช่วงราคาในวันที่มีสัญญาณซื้อขาย โดยการคำนวณค่าความผันผวนนั้นจะนำราคาเปิดมาเป็นตัวแปรหลักโดยพิจารณาส่วนต่างระหว่างราคาเปิดและราคาสูงสุด (Open – High Range) สำหรับกรณีที่เป็นสัญญาณซื้อ และส่วนต่างระหว่างราคาเปิดและราคาต่ำสุด (Open – Low Range) สำหรับกรณีที่เป็นสัญญาณขายยกตัวอย่างเช่น หุ้น XX ราคาเปิดที่ 10 บาทและราคาสูงสุดคือ 11 บาท ราคาที่ซื้อได้จริงรวม Slippage 30% Volatility จะเท่ากับ 10.30 เป็นต้น
ภาพที่ 1 : ภาพตัวอย่างของวิธีการคิด Slippage ในหน่วยของความผันผวน (Volatility) 30%
ภาพที่ 2 : ตัวอย่างข้อมูลราคาซื้อขายของหลักทรัพย์ใน SET50 และราคาซื้อขายที่มีการเพิ่มค่า Slippageแบบต่างๆเข้าไป
การศึกษาผลกระทบของค่า Slippage ในรูปแบบต่างๆต่อพอร์ตโฟลิโอ
ในการทดสอบผลกระทบจาก Slippage ต่อระบบการลงทุนนั้น ทางเราได้ทำการสร้าง Function พิเศษที่ใช้ในโปรแกรม Amibroker ขึ้นมา 3 รูปแบบคือ SQBuy(Sell)SlippagePercent(), SQBuy(Sell)SlippageSpread(), SQBuy(Sell)SlippageVolatility() โดยมีเป้าหมายในการจำลองราคาซื้อขายที่มีการคลาดเคลื่อนหรือค่า Slippage ในรูปแบบต่างๆตามที่ได้อธิบายในข้างต้น โดยค่านี้จะถูกนำเข้าไปรวมอยู่ในราคาซื้อขายของทุกการซื้อขาย (Trade) ในการทดสอบ (Backtest) ค่าพารามิเตอร์ที่ผู้ใช้สามารถปรับแต่งได้ในฟังก์ชั่นฟังค์ชั่นประกอบไปด้วย
- OrderPrice นั้นคือราคาที่จะทำการซื้อหรือขายเมื่อมีสัญญาณเข้ามา เช่น Open, High, Low, Close
- Slip คือค่า Slippage ในหน่วยที่ผู้ใช้ต้องการตั้งสมมุติฐานในการทดสอบระบบลงทุน
- PriceBoundLimit (True/False) คือการสั่งให้ Amibroker เปิด/ปิด การใช้ SetOption(“PriceBoundChecking”) ซึ่งจะเป็นการตรวจสอบว่าราคาที่มีการเพิ่มเติมค่า Slippage ไปแล้วนั้นไม่ได้เกินกว่าค่า High หรือไม่ได้ต่ำกว่าค่า Low ของข้อมูลในวันนั้น
การทำงานของฟังก์ชั่น SQslippage ทั้ง 3 แบบนั้นจะทำการเข้าไปคำนวณค่า Slippage และทำการแก้ไขราคาซื้อขายโดยมีการบวกหรือลบค่าความคลาดเคลื่อนเข้าไป โดยตัวอย่างการเรียกใช้ฟังก์ชั่นนั้นมีดังนี้
BuyPrice = SQBuySlippagePercent(Open, Slip, True);
SellPrice = SQSellSlippagePercent(Open, Slip, True);
หมายเหตุ : ในกรณี SQSlippageVolatility นั้นไม่ต้องมีพารามิเตอร์ OrderPrice
โดยในบทความนี้เราจะทำการทดสอบทั้งหมด 4 กรณีเพื่อเปรียบเทียบผลลัพธ์การลงทุนจากผลกระทบของค่า Slippage แบบต่างๆโดยเราจะใช้ระบบ BreakHigh 200 วันในการทดสอบ
- กรณีที่ไม่มีค่า Slippage
- กรณีที่ ราคาซื้อ ซื้อได้แพงขึ้น 2% และราคาขายได้ถูกลง 2% รวมกันเป็น 4% ต่อ Trade
- กรณีที่ ราคาซื้อ ซื้อได้แพงขึ้น 2 ช่อง และราคาขายได้ถูกลง 2 ช่อง รวมกันเป็น 4 ช่องต่อ Trade
- กรณีที่ ราคาซื้อ ซื้อได้แพงขึ้น 30% ของส่วนต่างราคาเปิดกับราคาสูงสุดของวัน และราคาขายได้ถูกลง 30% ของส่วนต่างราคาเปิดกับราคาต่ำสุดของวัน (Slippage 30% Volatility)
ซึ่งก่อนจะไปทดสอบกันนั้นเราจะมีการกำหนดรายละเอียดของการทดสอบดังต่อไปนี้
Condition | Details |
Backtesting Window |
|
Backtesting Restriction |
|
Universe |
|
Filters |
|
Entry |
|
Exit |
|
Position Size |
|
Position Score |
|
Order Management |
|
ตารางที่ 1 : ตารางแสดงเงื่อนไขต่างๆสำหรับการทดสอบผลกระทบของค่า Slippage
ผลการทดสอบค่า Slippage รูปแบบต่างๆกับระบบ Break High 200 วัน
ภาพที่ 3 : มูลค่าพอรต์โฟลิโอจากการทดสอบระบบ Break High 200 วัน ที่ ไม่มี Slippage (เส้นสีดำ) มี Slippage แบบเปอร์เซ็น (เส้นสีเขียว) มี Slippageแบบ Spread (เส้นสีฟ้า) และมี Slippageแบบ Volatility (เส้นสีส้ม)
จากภาพที่ 3 จะเห็นได้ถึงการเปลี่ยนแปลงของมูลค่าพอร์ตโฟลิโอระหว่างการทดสอบระบบการลงทุนที่มีการเพิ่มเติมค่า Slippage ในแบบต่างๆเข้าไป โดยจะเห็นได้ชัดเจนว่าพิจารณาค่า Slippage ไม่ว่าจะในรูปแบบไหน ต่างส่งผลกระทบเชิงลบต่อผลตอบแทนของพอร์ตโฟลิโออย่างมีนัยยะ
Portfolio Metrics | No Slippage | Slippage 2% | Slippage 2 Spread | Slippage 25% Volatility |
Net Profit | 741.86% | 381.27% | 190.98% | 501.21% |
CAGR | 23.75% | 17.02% | 11.28% | 19.65% |
MaxDD | -40.41% | -38.75% | -52.66% | -36.93% |
Longest DD (Month) | 26.10 | 26.15 | 26.10 | 25.50 |
CAR/MDD | 0.59 | 0.44 | 0.21 | 0.53 |
Trade Metrics | No Slippage | Slippage 2% | Slippage 2 Spread | Slippage 25% Volatility |
No. of All Trade | 857 | 837 | 863 | 842 |
Avg. Bar Held | 42.87 | 43.14 | 42.60 | 43.24 |
% Win | 41.95% | 38.38% | 38.47% | 39.67% |
Avg. Profit/Loss % | 6.04% | 4.44% | 3.31% | 5.09% |
Max Consecutive Loss | 19 | 18 | 18 | 19 |
ตารางที่ 2 : ค่าสถิติจากการทดสอบกลยุทธ์ Break High 200 วัน โดยมีการคำนวณ Slippage 3 รูปแบบ 1. ไม่มี Slippage 2. คำนวณแบบเปอร์เซ็น 3. คำนวณแบบช่อง 4. คำนวณด้วยความผันผวน
จากค่าสถิติจากการทดสอบในตารางที่ 2 จะเห็นได้ว่าถึงแม้จะเป็นกลยุทธ์ที่ให้ผลตอบแทนที่ดีอย่าง Break High 200 วันพอเพิ่มค่า Slippage เข้ามาไม่ว่าจะในกรณีไหนก็ตามกลับทำให้ผลตอบแทนลดลงอย่างมีนัยยะสำคัญ โดยเฉพาะในกรณีที่ค่า Slippage 2 ช่อง (Spread) ในทั้งราคาซื้อและราคาขาย (รวมเป็น 4 ช่องต่อการซื้อขาย 1 ครั้ง) โดยผลตอบแทนนั้นลดลงไปมากกว่าครึ่งจากกรณีที่ไม่มีค่า Slippage!!
โดยการทดลองค่า Slippage แต่ละรูปแบบนั้นก็มีความเหมาะสมในการใช้ต่างกัน เช่น ผู้ใช้อาจจะเลือกโหมด Spread เพื่อความง่ายในกรณีเทรดจริงที่ต้องมีการดูและควบคุมไม่ให้ค่า Slippage เกินจากกรอบที่กำหนด หรือผู้ใช้อาจจะเลือก Slippage แบบ Volatility ถ้าต้องการวิเคราะห์ถึงผลกระทบที่มีต่อระบบการลงทุนในช่วงเวลาที่ตลาดหรือตะกร้าหุ้นมีความผันผวนสูง/ต่ำ
หมายเหตุ : ในการทดสอบนี้ค่า Slippage จะเกิดขึ้นกับทุกๆ trade ที่มีสัญญาณซื้อขาย โดยถือว่าเป็นการมองแบบในกรณีที่แย่ที่สุด (Worst Case Scenario) ซึ่งเมื่อนำมาปรับใช้จริงจะทำให้ผู้ใช้มีช่องว่างเผื่อความผิดผลาดในการส่งคำสั่งซื้อขายจริงด้วย
บทสรุปของ “Slippage” กับผลกระทบที่ไม่อาจมองข้าม
จากผลการทดสอบในบทความนี้จะเห็นได้ว่าค่า Slippage เพียงไม่กี่เปอร์เซ็นหรือไม่กี่ช่องเท่านั้น ก็สามารถทำให้ระบบการลงทุนที่ก่อนหน้านั้นดูสวยหรูกลายเป็นขี้เหร่ได้ในพริบตา!! โดยที่ไม่ว่าจะเป็นแนวทางการลงทุนแบบไหนจะลงทุนเป็๋นระบบหรือไม่ก็ตามคุณก็ไม่อาจหนีจากค่า Slippage ที่จะเกิดขึ้นจากการซื้อขายได้ และค่า Slippage นั้นจะยิ่งส่งผลกระทบมากเป็นพิเศษในกรณีที่นักลงทุนเลือกใช้กลยุทธ์ที่เน้นการเก็งกำไรระยะสั้น
เพราะฉะนั้นขั้นตอนการพิจารณาเพิ่มเติมค่า Slippage เข้าไปในการทดสอบระบบการลงทุนและการควบคุมค่า Slippage ให้เป็นไปตามกรอบที่กำหนดไว้ระหว่างการซื้อขายจริง (Live) นั้นเป็นปัจจัยที่สำคัญอย่างมากต่อความสำเร็จในการลงทุนอย่างยั่งยืนครับ
หมายเหตุ : สมาชิก SiamQuant Membership สามารถทำการทดลองใช้ Slippage Function ได้โดยการอัพเดท SiamQuant Amibroker Plugin ให้เป็น Version ล่าสุด (The Alpha Suite Beta Version ขึ้นไป) ได้ที่ลิงค์นี้ครับ SiamQuant Alphas Suite