องค์ความรู้จากการลงทุนอย่างเป็นระบบ

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

Koedkao Peeratiyuth

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

Write A Comment