บทความนี้แปลจาก Basics of Algorithmic Trading: Concepts and Examples บนเว็บไซต์ Investopedia

Algorithmic trading (หรือเรียกอีกอย่างว่า automated trading, black-box trading, หรือ algo-trading) ใช้โปรแกรมคอมพิวเตอร์ที่ปฏิบัติตามชุดคำสั่งที่กำหนดไว้ (Algorithm) เพื่อทำการเทรด ตามทฤษฎีแล้วการเทรดด้วยวิธีนี้จะสามารถสร้างผลกำไรด้วยความเร็วและความถี่ที่เหนือกว่าที่มนุษย์จะลงมือเทรดเองได้

ชุดคำสั่งที่กำหนดไว้ในโปรแกรมจะขึ้นอยู่กับ ระยะเวลา ราคา ปริมาณ หรือแบบจำลองทางคณิตศาสตร์ใดก็ได้ นอกจาก algo-trading จะสร้างโอกาสในการทำกำไรสำหรับนักเทรดแล้ว มันยังช่วยให้ตลาดมีสภาพคล่องมากขึ้น และซื้อขายได้อย่างเป็นระบบมากขึ้นโดยตัดอารมณ์ของมนุษย์ที่อาจมีผลกระทบต่อการเทรดด้วย

Algorithmic Trading ในทางปฏิบัติ

สมมติให้นักเทรดคนหนึ่งปฏิบัติตามเกณฑ์การเทรดง่าย ๆ ดังต่อไปนี้

  • ซื้อหุ้นของบริษัทหนึ่ง 50 หุ้นเมื่อ เส้นค่าเฉลี่ยเคลื่อนที่ 50 วัน วิ่งตัดขึ้นไปสูงกว่า เส้นค่าเฉลี่ยเคลื่อนที่ 200 วัน (เส้นค่าเฉลี่ยเคลื่อนที่ (moving average) คือ ค่าเฉลี่ยของจุดข้อมูลในอดีต ที่ทำให้ความผันผวนของราคาในแต่ละวัน มีความราบเรียบขึ้น และด้วยเหตุนี้เอง เส้นค่าเฉลี่ยเคลื่อนที่จึงช่วยระบุแนวโน้มทิศทางราคาหุ้นว่ากำลังเป็นขาขึ้น ขาลง หรือว่ากำลังแกว่งตัวออกข้าง)
  • ขายหุ้นทิ้งเมื่อ เส้นค่าเฉลี่ยเคลื่อนที่ 50 วัน วิ่งตัดลงมาต่ำกว่า เส้นค่าเฉลี่ยเคลื่อนที่ 200 วัน

การใช้เกณฑ์ง่าย ๆ สองข้อนี้ โปรแกรมคอมพิวเตอร์สามารถช่วยเฝ้าดู ราคาหุ้น กับ เส้นค่าเฉลี่ยเคลื่อนที่ ให้เราได้โดยอัตโนมัติ และวางคำสั่งซื้อขายเมื่อตรงตามเงื่อนไขที่เรากำหนดไว้ ทำให้นักเทรดหุ้นไม่จำเป็นต้องมานั่งเฝ้าดูกราฟราคาหุ้น หรือวางคำสั่งซื้อขายเองอีกต่อไป algo-trading สามารถดำเนินการได้อัตโนมัติโดยที่สามารถระบุ จุดซื้อ จุดขาย ตามเกณฑ์ที่เรากำหนดไว้ได้อย่างถูกต้อง

ข้อดีของการใช้ Algorithmic Trading

Algo-trading มีข้อดีดังต่อไปนี้

  • การซื้อขายจะเกิดขึ้นในราคาที่ดีที่สุด
  • การวางคำสั่งซื้อขายนั้น รวดเร็ว แม่นยำ (มีโอกาสสูงที่จะซื้อขายได้ในระดับราคาที่ต้องการ)
  • การซื้อขายมีกำหนดเวลาที่ถูกต้องและทันท่วงที เพื่อหลีกเลี่ยงการเปลี่ยนแปลงอย่างมีนัยสำคัญของราคาหุ้น
  • ลดต้นทุนในการทำธุรกรรม
  • สามารถตรวจสอบสภาวะตลาดที่หลากหลายได้พร้อม ๆ กันโดยอัตโนมัติ
  • ลดความเสี่ยงของการเกิดข้อผิดพลาดจากการซื้อขายโดยมนุษย์
  • สามารถทดสอบ algo-trading ย้อนหลังได้ (backtest) โดยใช้ข้อมูลในอดีตและข้อมูล real-time เพื่อดูว่า กลยุทธ์การซื้อขายนี้จะสามารถเอาไปใช้งานจริงได้ดีหรือไม่
  • ลดโอกาสผิดพลาดที่อาจเกิดขึ้นจากสภาพอารมณ์และจิตใจของนักเทรด

Algo-trading ในปัจจุบันส่วนใหญ่เป็นการเทรดด้วยความถี่สูง (high-frequency-trading, HFT) ซึ่งพยายามใช้ประโยชน์จากการวางคำสั่งซื้อขายจำนวนมากด้วยความเร็วสูงในหลาย ๆ ตลาดพร้อมกัน ในหลากหลายพารามิเตอร์ที่ใช้ตัดสินใจ โดยจะทำตามคำสั่งที่เราตั้งโปรแกรมเอาไว้ล่วงหน้า

Algo-trading ถูกนำมาใช้เทรดและลงทุนในหลากหลายรูปแบบ ซึ่งรวมถึง

  • นักลงทุนระยะกลางถึงยาว หรือสถาบันที่อยู่ในฝั่งซื้อ เช่น กองทุนบำเหน็จบำนาญ กองทุนรวม บริษัทประกันภัย ต่างใช้ algo-trading เพื่อซื้อหุ้นจำนวนมากเมื่อพวกเขาไม่ต้องการให้การซื้อของพวกเขากระทบกระเทือนต่อราคาหุ้น (ดันราคาหุ้นขึ้นจากการเข้าซื้อครั้งละจำนวนมาก ๆ)
  • นักเทรดระยะสั้น และสถาบันที่อยู่ในฝั่งขาย ผู้ดูแลสภาพคล่อง (market makers) (เช่น บริษัทนายหน้า) นักเก็งกำไร และนักทำกำไรส่วนต่างราคา (arbitrageurs) ต่างได้รับผลประโยชน์จากระบบซื้อขายอัตโนมัติทั้งสิ้น นอกจากนี้แล้ว algo-trading ยังช่วยสร้างสภาพคล่องตลาดให้กับผู้ขายอีกด้วย
  • นักเทรดแบบเป็นระบบ (systematic traders) นักเทรดหุ้นตามแนวโน้มราคา (trend followers) กองทุน hedge fund หรือ นักเทรดแบบจับคู่ (pairs traders) (pairs trades เป็นกลยุทธ์การเทรดที่ใช้วิธีจับคู่ ซื้อสินทรัพย์หนึ่งพร้อมกันกับขายอีกสินทรัพย์หนึ่ง ที่เป็นคู่ที่มีสหสัมพันธ์ต่อกันสูง เช่น หุ้นสองตัว กองทุนซื้อขายแลกเปลี่ยน (ETFs) หรือสกุลเงิน) ต่างพบว่าการเขียนโปรแกรมให้ทำตามกฎให้ซื้อขายโดยอัตโนมัตินั้น จะมีประสิทธิภาพสูงกว่าการที่จะต้องมานั่งเทรดด้วยตัวเอง

Algo-trading ให้แนวทางการเทรดที่เป็นระบบ มากกว่าการซื้อขายตามสัญชาตญาณมนุษย์ของนักเทรดเอง

กลยุทธ์ต่าง ๆ ใน Algorithmic Trading

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

Trend-following Strategies

กลยุทธ์การเทรดแบบ algo ที่พบบ่อยที่สุดจะซื้อขายตามแนวโน้มราคาหุ้น (trend-following) โดยดูจาก เส้นค่าเฉลี่ยเคลื่อนที่ การทะลุช่องแนวรับแนวต้าน การเคลื่อนไหวของระดับราคา และตัวชี้วัดทางเทคนิคที่เกี่ยวข้อง เหล่านี้เป็นกลยุทธ์ที่ง่ายที่สุดใน algo-trading เพราะไม่ต้องใช้การคาดการณ์หรือการทำนายราคาหุ้นแต่อย่างใด การเทรดจะเริ่มต้นโดยพิจารณาว่าราคาหุ้นมีแนวโน้มตามที่เราต้องการหรือไม่ ซึ่งทำได้ง่ายและตรงไปตรงมา ไม่ต้องมีการวิเคราะห์คาดการณ์แบบซับซ้อน วิธีหนึ่งที่ได้รับความนิยมในกลยุทธ์นี้ คือ การใช้เส้นค่าเฉลี่ยเคลื่อนที่ 50 และ 200 วัน

Arbitrage Opportunities

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

Index Fund Rebalancing

โดยปกติแล้ว กองทุนดัชนีต่าง ๆ จะมีกำหนดวันเวลาในการปรับสมดุลพอร์ต (rebalancing) เป็นระยะ ๆ เพื่อทำให้การถือครองหุ้นของกองทุนดัชนี มีสัดส่วนเดียวกันกับดัชนีที่ใช้อ้างอิง สิ่งนี้จึงสร้างโอกาสในการทำกำไรให้แก่นักเทรดแบบ algo-trading ที่ใช้ประโยชน์จาก การซื้อขาย (ที่เราสามารถคาดการณ์ได้ล่วงหน้า) ของกองทุนดัชนี ซึ่งจะทำกำไรได้ประมาณ 20 ถึง 80 basis points (0.2-0.8%) ขึ้นอยู่กับจำนวนหุ้นในกองทุนดัชนีก่อนการปรับสมดุลพอร์ต การเทรดด้วยวิธีดังกล่าวจะใช้ algo-trading เพื่อให้รวดเร็ว ทันเวลา และได้ราคาที่ดีที่สุด

Mathematical Model-based Strategies

แบบจำลองทางคณิตศาสตร์ที่ได้รับการพิสูจน์แล้ว เช่น delta-neutral trading strategy เป็นการเทรดโดยผสมผสานกันระหว่าง options และหุ้น (delta-neutral เป็นกลยุทธ์บริหารพอร์ตที่ประกอบไปด้วยหลาย positions ที่มีการหักล้างกันระหว่าง delta ที่เป็นบวก กับ delta ที่เป็นลบ หักล้างกันให้เป็นศูนย์ โดยที่ delta เป็นอัตราส่วนเปรียบเทียบ การเปลี่ยนแปลงของราคาสินทรัพย์ (ส่วนใหญ่มักจะเป็นหุ้น) กับ การเปลี่ยนแปลงในราคาอนุพันธ์ของมัน การทำ delta-neutral เป็นกลยุทธ์ที่ทำเพื่อให้โดยรวมแล้ว delta ของการถือครองสินทรัพย์นั้น ๆ รวมกันเป็นศูนย์)

Trading Range (Mean Reversion)

Mean reversion เป็นกลยุทธ์ที่อยู่บนพื้นฐานของแนวคิดที่ว่า ราคาสูงและราคาต่ำของสินทรัพย์หนึ่งเป็นเพียงปรากฏการณ์ชั่วคราวที่เกิดขึ้นเป็นระยะ ๆ ซึ่งในที่สุดก็จะกลับคืนสู่ค่าเฉลี่ย (มูลค่าเฉลี่ย) การระบุและกำหนดกรอบราคาสูงต่ำ และนำ algorithm มาช่วย จะทำให้สามารถซื้อขายได้โดยอัตโนมัติเมื่อราคาของสินทรัพย์วิ่งทะลุเข้าและออกจากกรอบราคาที่กำหนดไว้

Volume-weighted Average Price (VWAP)

กลยุทธ์นี้จะแบ่งคำสั่งซื้อ จากหนึ่งคำสั่งที่จะซื้อหุ้นจำนวนมาก ๆ ออกเป็นหลายคำสั่งซื้อย่อย ๆ โดยแบ่งออกไปตามโปรไฟล์ปริมาณการซื้อขายในอดีตในแต่ละราคา จุดมุ่งหมายของวิธีนี้คือ เพื่อให้ซื้อหุ้นได้ในราคาที่ใกล้เคียงกับราคาเฉลี่ยถ่วงน้ำหนักตามปริมาณ (volume-weighted average price, VWAP)

Time Weighted Average Price (TWAP)

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

Percentage of Volume (POV)

กลยุทธ์นี้จะส่งคำสั่งซื้อขายย่อย ๆ ออกไปเรื่อย ๆ ตามอัตราส่วน participation ratio ที่เราตั้งค่าเอาไว้ และตามปริมาณการซื้อขายในตลาด จนกว่าจะซื้อขายหุ้นได้ครบตามจำนวนที่เราต้องการ กลยุทธ์นี้ช่วยเพิ่มหรือลด participation rate เมื่อราคาหุ้นวิ่งถึงระดับราคาที่เรากำหนด

Implementation Shortfall

กลยุทธ์นี้มีจุดมุ่งหมายเพื่อลดต้นทุนการซื้อขาย โดยยอมแลกกันกับความรวดเร็วของการซื้อขายแบบ real-time ในตลาด ซึ่งจะช่วยประหยัดต้นทุนแลกกันกับค่าเสียโอกาสจากการดำเนินการที่ล่าช้า กลยุทธ์นี้จะเพิ่ม participation rate เมื่อราคาหุ้นเคลื่อนไหวในทิศทางที่ดีและจะลด participation rate ลงเมื่อราคาหุ้นเคลื่อนไหวในทางลบ (อ่านเพิ่มเติมได้ใน Investopedia)

Beyond the Usual Trading Algorithms

ยังมี algorithms พิเศษบางประเภทที่พยายามระบุ “สิ่งที่กำลังเกิดขึ้น” ในอีกฝั่ง (ฝั่งผู้ซื้อ กับ ฝั่งผู้ขาย) “อัลกอริทึมดมกลิ่น (sniffing algorithms)” เหล่านี้ เช่นที่ใช้โดยผู้ดูแลสภาพคล่องฝั่งขาย (sell-side market maker) มีความสามารถที่จะ ระบุ/ตรวจจับ การมีอยู่ของ algorithms ใด ๆ ในฝั่งผู้ซื้อที่มีคำสั่งซื้อขนาดใหญ่ได้ การตรวจจับด้วย algorithms ดังกล่าวจะช่วยให้ผู้ดูแลสภาพคล่องฝั่งขาย (sell-side market maker) ระบุโอกาสของการส่งคำสั่งซื้อขนาดใหญ่จากฝั่งผู้ซื้อ ทำให้พวกเขาสามารถแสวงหาผลประโยชน์ได้โดยการกรอกคำสั่งขายในราคาที่สูงขึ้น (ทำให้ขายได้ราคาที่สูงกว่าปกติ) วิธีการนี้ในบางครั้งจะถูกมองว่าเป็น high-tech front-running (front-running เป็นการซื้อขายโดยใช้ประโยชน์จากข่าวสาร/ความรู้ล่วงหน้าที่ยังไม่ถูกเปิดเผยต่อสาธารณะ) ซึ่งโดยทั่วไปแล้ว front-running ถือเป็นการกระทำที่ผิดกฎหมาย และอยู่ภายใต้การควบคุมอย่างเข้มงวดโดยหน่วยงานกำกับดูแลอุตสาหกรรมการเงิน (Financial Industry Regulatory Authority)

องค์ประกอบทางเทคนิคที่จำเป็นสำหรับการทำ Algorithmic Trading

การนำ algorithm มาใช้ในโปรแกรมคอมพิวเตอร์เป็นองค์ประกอบสุดท้ายของ algorithmic trading ควบคู่ไปกับการทดสอบย้อนหลัง (backtesting) (backtesting คือ การลองนำ algorithm มาใช้ทดสอบย้อนหลังกับข้อมูลในอดีต เพื่อทดสอบดูว่าสามารถทำกำไรได้หรือไม่) ความท้าทายจะอยู่ที่การนำกลยุทธ์ไปบูรณาการใช้ในคอมพิวเตอร์ที่สามารถเข้าถึงบัญชีเทรดสำหรับส่งคำสั่งซื้อขายได้ สิ่งต่าง ๆ ดังต่อไปนี้ เป็น requirements สำหรับ algorithmic trading:

  • ความรู้ด้านการเขียนโปรแกรม เพื่อสร้างโปรแกรมที่ทำตามกลยุทธ์เทรดที่เราต้องการ, นักเขียนโปรแกรมรับจ้าง, หรือซอฟต์แวร์เทรดหุ้นสำเร็จรูป
  • การเชื่อมต่อเครือข่ายและการเข้าถึงแพลตฟอร์มเทรด เพื่อส่งคำสั่งซื้อขาย
  • การเข้าถึงฟีดข้อมูลตลาดหุ้นที่ algorithm ใช้ติดตามเพื่อ จับจังหวะ หาโอกาส ในการซื้อขาย
  • ความสามารถและโครงสร้างพื้นฐานสำหรับทดสอบระบบย้อนหลัง (backtest) ก่อนนำไปใช้งานจริง
  • ข้อมูลย้อนหลัง (historical data) สำหรับใช้ทดสอบย้อนหลัง (backtest) ซึ่งจะขึ้นอยู่กับความซับซ้อนของกฎเกณฑ์ที่ใช้ใน algorithm

หนึ่งตัวอย่างของ Algorithmic Trading

บริษัท Royal Dutch Shell (RDS) จดทะเบียนอยู่ในตลาดหุ้น 2 แห่งคือ Amsterdam Stock Exchange (AEX) และ London Stock Exchange (LSE) เราจะเริ่มต้นด้วยการสร้าง algorithm เพื่อระบุหาโอกาสในการทำ arbitrage โดยมีข้อสังเกตที่น่าสนใจดังนี้

  • ตลาด AEX ซื้อขายในสกุลเงินยูโร (EUR) ในขณะที่ตลาด LSE ซื้อขายในสกุลเงินปอนด์สเตอร์ลิง (GBP)
  • เนื่องจากความแตกต่างของเวลา ตลาด AEX จะเปิดเร็วกว่า LSE หนึ่งชั่วโมง ตามด้วยการซื้อขายพร้อมกันในอีกไม่กี่ชั่วโมงต่อมา จากนั้นจะมีการซื้อขายเฉพาะใน LSE ในช่วง 1 ชั่วโมงสุดท้ายหลังตลาด AEX ปิด

เราจะมาลองหาความเป็นไปได้ของการทำ arbitrage ในหุ้น Royal Dutch Shell ที่จดทะเบียนในสองตลาดนี้ในสองสกุลเงินที่แตกต่างกัน

Requirements:

  • โปรแกรมคอมพิวเตอร์ที่สามารถอ่านราคาหุ้นปัจจุบันได้
  • ราคาหุ้นจากทั้งสองตลาด (LSE และ AEX)
  • อัตราแลกเปลี่ยนระหว่างสกุลเงิน GBP กับ EUR
  • ความสามารถของระบบ ในการส่งคำสั่งซื้อขายไปยังตลาด LSE และ AEX ได้
  • ความสามารถในการทดสอบย้อนหลัง (Backtesting) บนข้อมูลราคาในอดีต

โปรแกรมคอมพิวเตอร์จะต้องสามารถทำสิ่งต่าง ๆ ดังต่อไปนี้ได้:

  • อ่านฟีดราคาหุ้น RDS จากทั้งสองตลาด
  • ใช้อัตราแลกเปลี่ยนสกุลเงิน แปลงราคาหุ้น จากเงินสกุลหนึ่งไปเป็นอีกสกุลหนึ่ง
  • ถ้าทั้งสองตลาด มีความแตกต่างของราคามากพอให้มีโอกาสทำกำไร (หลังหักค่านายหน้าแล้ว) โปรแกรมจะวางคำสั่งซื้อจากตลาดที่มีราคาต่ำกว่า และสั่งขายในตลาดที่มีราคาสูงกว่า
  • ถ้าคำสั่งได้ถูกดำเนินการอย่างถูกต้อง ก็จะเกิดกำไรจากการ arbitrage

ฟังดูเหมือนจะง่ายนะครับ แต่ในทางปฏิบัตินั้น algorithmic trading ไม่ง่ายนักที่จะดำเนินการ (execute) และดูแลรักษา (maintain) โปรดจำไว้ว่า หากนักลงทุนคนหนึ่งสามารถเทรดแบบ algo ได้ นักลงทุนคนอื่น ๆ ก็สามารถทำได้เช่นกัน ดังนั้นแล้ว ราคาหุ้นในสองตลาดจึงอาจผันผวนแตกต่างกันได้บ้างเพียงเสี้ยว (มิลลิหรือไมโคร) วินาที เท่านั้น ในตัวอย่างข้างต้น จะเกิดอะไรขึ้นถ้าการเทรดนี้มีการซื้อไปแล้ว แต่ การขายไม่เกิดขึ้นเนื่องจากราคาขายได้มีการเปลี่ยนแปลงไปแล้วก่อนที่การส่งคำสั่งขายจะไปถึงที่ตลาดได้ทัน ถ้าเป็นแบบนี้แล้ว นักเทรดจะถูกทิ้งให้เหลือหุ้นที่ยังไม่ถูกขายออกไปอยู่ในพอร์ต ทำให้กลยุทธ์การ arbitrage นี้ไร้ค่า

นอกจากนี้ ยังมีความเสี่ยงและความท้าทายอื่น ๆ ด้วย เช่น ความเสี่ยงที่ระบบจะล่มกลางคัน การเชื่อมต่อเครือข่ายเกิดหลุดหรือมีข้อผิดพลาด (network connectivity errors) ความล่าช้าระหว่าง คำสั่งซื้อขายและการดำเนินการ และที่สำคัญที่สุดคือ algorithms ที่ไม่สมบูรณ์ ยิ่ง algorithm มีซับซ้อนมากเท่าไหร่ การทำ backtesting ก่อนนำไปใช้งานจริงก็จะยิ่งต้องมีความเข้มงวดรัดกุมมากขึ้นเท่านั้น

อ่านบทความ Big Data อื่น ๆ ที่เกี่ยวข้องกับการเงินและการลงทุนได้ใน

แปลโดย อิสระพงศ์ เอกสินชล

ตรวจทานโดย ปพจน์ ธรรมเจริญพร

Recommended Posts