ความโหดร้ายในการลงทุน จากสิ่งเล็กๆที่เรียกว่า “Slippage”

หลายๆครั้งสิ่งเล็กๆน้อยๆในชีวิตที่เราอาจจะไม่เคยได้ใส่ใจมาก่อนได้กลายมาเป็นต้นตอของปัญหาใหญ่ในภายหลัง ไม่ต่างอะไรกับน้่ำกัดเซาะชายฝั่ง วันนี้เราจะมาคุยกันถึงสิ่งเล็กๆที่เรียกว่า “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 รูปแบบคือ

  1. 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) ค่าพารามิเตอร์ที่ผู้ใช้สามารถปรับแต่งได้ในฟังก์ชั่นฟังค์ชั่นประกอบไปด้วย

  1. OrderPrice นั้นคือราคาที่จะทำการซื้อหรือขายเมื่อมีสัญญาณเข้ามา เช่น Open, High, Low, Close
  2. Slip คือค่า Slippage ในหน่วยที่ผู้ใช้ต้องการตั้งสมมุติฐานในการทดสอบระบบลงทุน
  3. 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 วันในการทดสอบ

  1. กรณีที่ไม่มีค่า Slippage
  2. กรณีที่ ราคาซื้อ ซื้อได้แพงขึ้น 2% และราคาขายได้ถูกลง 2% รวมกันเป็น 4% ต่อ Trade
  3. กรณีที่ ราคาซื้อ ซื้อได้แพงขึ้น 2 ช่อง และราคาขายได้ถูกลง 2 ช่อง รวมกันเป็น 4 ช่องต่อ Trade
  4. กรณีที่ ราคาซื้อ ซื้อได้แพงขึ้น 30%  ของส่วนต่างราคาเปิดกับราคาสูงสุดของวัน และราคาขายได้ถูกลง 30%  ของส่วนต่างราคาเปิดกับราคาต่ำสุดของวัน (Slippage 30% Volatility)

ซึ่งก่อนจะไปทดสอบกันนั้นเราจะมีการกำหนดรายละเอียดของการทดสอบดังต่อไปนี้

Condition Details
Backtesting Window
  • 01/01/2007 – 01/01/2017
Backtesting Restriction
  • เงินทุนเริ่มต้น 1 ล้านบาท
  • อัตราค่า Commission 0.15% (รวมซื้อขาย 0.3%)
  • Slippage  1% ทั้งการซื้อและขาย
  • Long Only
Universe
  • All Stocks หุ้นทุกตัวในตลาดหลักทรัพย์
Filters
  • มูลค่าการซื้อขายเฉลี่ยใน 1 ปีมากกว่า 1 ล้านบาท/วัน
  • กรองข้อมูลที่มีความผิดพลาดออกด้วย SQDataFilter(0)
Entry
  • เข้าซื้อเมื่อราคาสูงสุดของวัน (High) สูงกว่าราคาสูงสุดในรอบ 200 วัน
Exit
  • ขายหุ้นออกเมื่อราคาปิดของวัน (Close) ต่ำกว่าเส้นค่าเฉลี่ย 50 วัน
Position Size
  • ถือหุ้นมากที่สุด 20 ตัวในพอร์ตโฟลิโอ ขนาดการลงทุนต่อตัวคือ 5% ของมูลค่าพอร์ตโฟลิโอ
Position Score
  • เรียงลำดับจากปริมาณการซื้อขาย
Order Management
  • ทำการซื้อขายราคาเปิด (Open) ของวันถัดไปของวันที่เกิดสัญญาณ)

 

ตารางที่ 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

Koedkao Peeratiyuth

ทีมงานวิจัยระบบการลงทุน SiamQuant Alpha Researcher

วิศวกรที่หันมาเดินทางในสายการเงินแบบเต็มตัวมากว่า 10 ปี ด้วย Passion อันแรงกล้าและความคลั่งไคล้การลงทุน โดยมีเป้าหมายสูงสุดคือการเผยแพร่ความรู้ให้คนไทยลงทุนได้ด้วยความเข้าใจไม่ใช่ไสยศาสตร์ !!

สอบผ่านหลักสูตร CMT Level 1 และ ได้รับใบอนุญาตนักวิเคราะห์หลักทรัพย์ด้วยปัจจัยเทคนิค เลขที่ทะเบียน 040287