Edges
อัลกอริทึม Smart Money: มุมมองของนักพัฒนาเกี่ยวกับการส่งคำสั่งซื้อขาย
อัลกอริทึม smart money ไม่ใช่บอทตัวเดียวที่มองเห็น order book ทั้งหมดแล้วกด Buy ครั้งใหญ่ครั้งเดียว โมเดลความคิดแบบนั้นคือสาเหตุที่การวิเคราะห์ SMC ของรายย่อยจำนวนมากผิดพลาด หากคุณทำงานเขียนซอฟต์แวร์เป็นอาชีพ ภาพที่แม่นยำกว่า — และมีประโยชน์กว่า — คือสิ่งนี้: สถาบันมี วัตถุประสงค์ (objective), อัลกอริทึม (algorithm) ในการส่งคำสั่งจะย่อยวัตถุประสงค์นั้นออกเป็นคำสั่งซื้อขายขนาดเล็กนับพันรายการ และทุกสิ่งที่คุณเห็นบน TradingView คือ ผลลัพธ์ (output) ของกระบวนการนั้น ไม่ใช่ข้อมูลนำเข้า (input) บทความนี้จะสร้าง smart money ขึ้นมาใหม่จากมุมมองของนักพัฒนา เพื่อให้คุณสามารถอ่านร่องรอย (footprints) ได้ แทนที่จะเป็นการจินตนาการถึงความตั้งใจ (intentions)
การปรับมุมมองอย่างตรงไปตรงมาตั้งแต่เริ่ม Smart money ไม่ได้ รู้อนาคต และ ไม่ได้ เห็น order book ที่ "สมบูรณ์" สิ่งที่มันมีจริงๆ คือชุดของความได้เปรียบ:
นั่นคือความได้เปรียบทั้งหมด — ข้อมูลที่ดีกว่า บวกกับการส่งคำสั่งที่มีประสิทธิภาพมากกว่า บวกกับเงินทุนที่มากกว่า บวกกับโมเดลสภาพคล่อง บวกกับการบริหารความเสี่ยง บวกกับอัลกอริทึมที่ปรับตัวได้ ไม่มีลูกแก้วพยากรณ์อยู่ในรายการนี้เลย
สิ่งที่อัลกอริทึม smart money กำลังทำอยู่จริงๆ
ลองจินตนาการถึงวัตถุประสงค์ที่เรียบง่ายที่สุดของสถาบัน: ซื้อหุ้นหนึ่งล้านหุ้นโดยไม่ทำให้ราคาขยับแรงเกินไป ไม่มีมนุษย์คนไหนคลิกสิ่งนั้นล้านครั้ง อัลกอริทึมการส่งคำสั่งจะรัน loop ที่อ่านตลาด ตัดสินใจว่าจะผลักดันแรงแค่ไหน และปรับตัวเมื่อเงื่อนไขเปลี่ยนไป:
OBJECTIVE:
Buy 1,000,000 shares — minimise market impact
LOOP:
read_order_book()
read_trades()
estimate_liquidity()
estimate_market_impact()
check_inventory()
check_risk()
if liquidity_is_good: execute_more()
if price_impact_too_high: slow_down()
if liquidity_disappears: wait_or_reprice()
if aggressive_sellers_appear: absorb_if_within_risk()
update_remaining_quantity()
UNTIL:
target_completed OR risk_limit_hit
สังเกตว่านี่คืออะไร: มันคือ control loop ที่มีการป้อนกลับ (feedback), การจำกัดความเร็ว (throttling), และสวิตช์ตัดความเสี่ยง (risk kill-switch) — มันคือวิศวกรรมทั่วไป ไม่ใช่เวทมนตร์ และสังเกต estimate_liquidity() แม้แต่สถาบันเองก็ยังต้อง ประมาณการ มันไม่สามารถเห็นคำสั่งที่ซ่อนอยู่ (hidden orders), การยกเลิกคำสั่ง หรือกระดานเทรดอื่นๆ ได้ ดังนั้นมันจึงสร้างแบบจำลองของ order book แทนที่จะเป็นการอ่านความจริง
Parent order ที่ตลาดไม่เคยเห็น
นี่คือข้อแตกต่างที่ทำให้ทุกอย่างชัดเจนสำหรับนักพัฒนา: ให้แยก คำสั่งแม่ (parent order) ออกจาก คำสั่งลูก (child orders)
คำสั่งแม่ — BUY 1,000,000 — จะอยู่ในระบบ OMS/EMS (ระบบจัดการคำสั่งและการส่งคำสั่ง) ของสถาบัน ซึ่งตลาดหลักทรัพย์อาจจะ ไม่เคยเห็นมันเลย สิ่งที่ตลาดได้รับคือกระแสของคำสั่งลูกขนาดเล็กที่อัลกอริทึมตัดสินใจส่งออกไป:
Parent (internal): BUY 1,000,000 ← exchange never sees this
│
▼ execution algorithm splits it
Children (sent): BUY 800 BUY 1,200 BUY 500
BUY 2,000 BUY 700 BUY 900 ...
ลองรันด้วยตัวเองดู ตั้งค่าโปรไฟล์ กดเล่น และเฝ้าดูหุ้นหนึ่งล้านหุ้นสลายตัวกลายเป็นรายการเทรด (prints) ที่ดูธรรมดา — ซึ่งไม่มีรายการใดเลยที่ประกาศวัตถุประสงค์ที่แท้จริง:
อัลกอริทึมที่ทำหน้าที่แบ่งคำสั่งเหล่านี้มีชื่อที่คุณจะพบได้ทุกที่ในเรื่อง Market Microstructure: TWAP (กระจายอย่างสม่ำเสมอตามเวลา), VWAP (ติดตามเส้นกราฟปริมาณการซื้อขาย), POV (รักษาสัดส่วนเปอร์เซ็นต์คงที่ของปริมาณการซื้อขาย) และ Implementation Shortfall (รักษาสมดุลระหว่างผลกระทบต่อราคาและความเสี่ยงจากการรอ) โปรไฟล์ต่างกัน ร่องรอย (footprint) ต่างกัน — แต่ใช้หลักการเดียวกันคือ: วัตถุประสงค์ของคำสั่งแม่จะถูกย่อยสลาย และมีเพียงคำสั่งลูกเท่านั้นที่สัมผัสกับตลาด
Iceberg orders vs order splitting — กลไกสองแบบที่แตกต่างกัน
หลายคนรวมสองสิ่งนี้เข้าเป็นไอเดียเดียว แต่มันไม่ใช่สิ่งเดียวกัน และความแตกต่างนี้มีความสำคัญ
- Iceberg / hidden orders คือ ประเภท ของคำสั่ง คำสั่งเต็มจำนวนจะวางพักไว้ในตลาด (venue) แต่จะแสดงให้เห็นเพียงบางส่วน เมื่อจับคู่ได้ 500 อีก 500 จะปรากฏขึ้น จับคู่ได้อีก 500 ก็ปรากฏขึ้นมาอีก — ตลาดรู้ขนาดที่เหลือที่แท้จริง แต่สาธารณชนไม่เห็น การปกปิดเกิดขึ้น ที่ตัวตลาด (at the venue)
- Parent order + execution algorithm นั้นแตกต่างกัน วัตถุประสงค์ 1 ล้านหุ้นอาจไม่เคยส่งไปถึงตลาดใดเลย อัลกอริทึมจะถือคำสั่งนั้นไว้ภายในและค่อยๆ ปล่อยคำสั่งลูกออกมา การปกปิดเกิดขึ้น ก่อนถึงตัวตลาด (before the venue) — ความตั้งใจนั้นไม่เคยออกจากระบบของสถาบันเลย
สิ่งที่อัลกอริทึมเห็น vs สิ่งที่คุณเห็น
เครื่องยนต์ของสถาบันและกราฟของคุณกำลังมองตลาดเดียวกันผ่านปลายคนละด้าน เครื่องยนต์จะอ่านข้อมูลนำเข้า (inputs): Orders → Depth → Flow → Liquidity → Fill → Inventory → Risk ส่วนคุณอ่านข้อมูลส่งออก (outputs): Sweep → Absorption → Displacement → FVG → BOS/MSS → Retest
ทุกแนวคิด SMC ที่คุณเทรดคือ เงาที่สังเกตได้ ของพฤติกรรมการส่งคำสั่ง (execution behaviour) จงแตะที่ footprint เพื่อวิเคราะห์ย้อนกลับ (reverse-engineer) ถึงสาเหตุทางอัลกอริทึมของมัน:
นี่คือคำบรรยายลักษณะงานที่แท้จริงของเทรดเดอร์ order-flow: วิเคราะห์ย้อนกลับพฤติกรรมของ parent order จากร่องรอยของ child-order footprints คุณไม่ได้กำลังอ่านคำสั่งซื้อขาย แต่คุณกำลังอนุมานเจตนาจากสิ่งที่การส่งคำสั่งทิ้งร่องรอยไว้ ห่วงโซ่ทั้งหมด ตั้งแต่เจตนาไปจนถึงโครงสร้างบนหน้าจอของคุณ:
แคมเปญการส่งคำสั่งเพียงครั้งเดียวจะทิ้งร่องรอยที่จำแนกได้ — เริ่มจากการกวาด (sweep) สภาพคล่องที่เห็นได้ชัด, การดูดซับ (absorption) ที่ระดับราคาหนึ่ง, จากนั้นจึงเกิดขา displacement เมื่อความไม่สมดุล (imbalance) ถึงจุดพลิกผัน:
The footprint of an accumulation campaign — sweep → absorption → displacement
การ sweep คือการดึงสภาพคล่องที่ผู้ซื้อต้องการ, ช่วงที่มีวอลุ่มสูงและราคาเคลื่อนที่ราบเรียบคือ parent order ที่กำลังดูดซับผู้ขาย และ displacement คือการปลดปล่อยความไม่สมดุลในที่สุด ตลาดเดียวกัน แต่อ่านจากฝั่ง output
เครื่องยนต์สองตัวไม่จำเป็นต้องคุยกันเพื่อขับเคลื่อนตลาด
ทีนี้มาถึงส่วนที่ละเอียดอ่อน ร่องรอย (footprint) ไม่ได้ พิสูจน์ว่ามีสถาบันเพียงแห่งเดียวที่อยู่เบื้องหลัง บ่อยครั้งที่อัลกอริทึมสองตัวที่มีวัตถุประสงค์ตรงกันข้ามมาบรรจบกันตรงกลางพอดี อัลโก A ต้องการสะสมสถานะ Long ส่วนอัลโก B กำลังระบายของออก ในช่วงระยะเวลาหนึ่ง วัตถุประสงค์ของทั้งคู่ตรงกันอย่างสมบูรณ์ — มีการซื้อขายปริมาณมหาศาล แต่ราคากลับแทบไม่ขยับ:
พวกเขาไม่เคยประสานงานกัน เพียงแค่หาเจอกันผ่าน order book และกรณีที่น่าสนใจกว่าคือการอุบัติขึ้น (emergence): อัลกอริทึมอิสระจำนวนมากตรวจพบ สภาวะตลาดแบบเดียวกัน และตอบสนองในทางเดียวกัน โดยไม่มีการสื่อสารระหว่างกันเลย
ให้คิดว่าตลาดเป็นเหมือน event bus ราคา, ปริมาณการซื้อขาย, รายการเทรด, สภาพคล่อง — ทุกการเปลี่ยนแปลงจะทำการประกาศเหตุการณ์ (publish an event) และทุกอัลกอริทึมคือผู้ติดตาม (subscriber) ที่มีกฎเกณฑ์ของตัวเอง ลองจุดชนวนการเบรคเอาท์ (breakout) เพียงครั้งเดียว แล้วดูเครื่องยนต์อิสระต่างๆ ทำงานพร้อมกัน:
Momentum ซื้อเมื่อเกิดการเบรค, อัลโก breakout ซื้อสภาพคล่องที่ถูกกวาด (swept liquidity), อัลโก VWAP-reclaim ซื้อเมื่อมีการดึงราคากลับ และอัลโก stop-cover ซื้อเพื่อปิดสถานะ short — โปรแกรมที่แตกต่างกันสี่ตัว แต่ใช้ตัวจุดชนวนร่วมกันตัวเดียว และแรงซื้อจึง ทับซ้อนกัน (stacks) จากนั้นราคาใหม่จะกลายเป็นสภาวะใหม่ ตัวบัสจะประกาศเหตุการณ์ซ้ำ และอัลกอริทึมอื่นๆ จะอ่านค่านั้น วงจรป้อนกลับ (feedback loop) นี้คือเครื่องยนต์ที่อยู่เบื้องหลังการพุ่งของราคาอย่างรุนแรง:
Sweep → algos react → order imbalance → other algos detect momentum
→ more orders → stops trigger → more orders → DISPLACEMENT
สิ่งนี้เปลี่ยนวิธีการเทรดของคุณอย่างไร
มีการอัปเกรดโมเดลทางความคิดสองประการที่ได้จากเรื่องนี้ และทั้งคู่จะทำให้ SMC ของคุณแข็งแกร่งขึ้น:
- เลิกตามล่าหาออเดอร์ แต่ให้ล่า "ร่องรอย" (footprint) ไม่มีล็อต 1M ให้ค้นหา มีเพียงการ sweep, โซนการดูดซับ (absorption zone), ขาการเคลื่อนที่อย่างรุนแรง (displacement leg) และ FVG ให้เทรดตาม หลักฐานของการส่งคำสั่ง (evidence of execution) ไม่ใช่จินตนาการถึงมือของผู้เล่นเพียงรายเดียว บทความประกอบของเราเรื่อง liquidity sweep และ ทำไมราคาถึงย่อตัว ก็คือแนวคิดเดียวกันนี้ในมุมมองของกราฟ
- ยึดกรอบความคิดใหม่ไว้อย่างยืดหยุ่น ประโยคที่ว่า "การส่งคำสั่งขนาดใหญ่สร้างร่องรอยที่สังเกตได้" เป็นฐานความคิดที่ดีกว่าประโยคที่ว่า "สถาบันตั้งใจลากราคามาที่นี่" มันจะทำให้คุณถ่อมตัวต่อความแน่นอน ให้เกียรติกรณีที่มีผู้เล่นหลายราย และโฟกัสในสิ่งที่คุณสามารถตรวจสอบได้จริง นั่นคือ ร่องรอยของ Smart Money นั่นเอง
นั่นคือมุมมองของนักพัฒนา Smart money ไม่ได้หยั่งรู้ทุกสิ่ง — แต่มันคือเป้าหมาย, อัลกอริทึมการส่งคำสั่ง และขีดจำกัดความเสี่ยง ซึ่งทิ้งร่องรอยไว้ในตลาดที่เต็มไปด้วยระบบอื่นๆ ที่กำลังทำสิ่งเดียวกัน