Order Flow ImbalanceVPINMarket MicrostructureHigh-Frequency TradingAlgorithmic Trading

OFI กับ VPIN: เครื่องมือวัดสภาพตลาดของ HFT Market Maker

By Aoddy14 min read
OFI กับ VPIN: เครื่องมือวัดสภาพตลาดของ HFT Market Maker

ถ้าคุณเคยเล่นโป๊กเกอร์ คงเคยได้ยินคำพูดที่ว่า "ถ้านั่งเล่นไป 10 นาทีแล้วยังไม่รู้ว่าใครคือมือใหม่ในวงเดิมพัน นั่นแปลว่าคุณคือมือใหม่คนนั้น" หลักการเดียวกันนี้ใช้ได้กับ Market Maker ในตลาดการเงินทุกประเภท โดยเฉพาะสาย High-Frequency Trading (HFT) ที่ตั้งใบเสนอราคา (quote) ทั้งฝั่งซื้อและฝั่งขายพร้อมกันเป็นพันครั้งต่อวินาที

ปัญหาคือ ทุกครั้งที่มีคน "ฟันไม้" (fill) ใบเสนอราคาแบบ passive ของ Market Maker คำถามที่ตามมาเสมอคือ: คนที่เพิ่งเทรดกับเรารู้อะไรที่เรายังไม่รู้หรือเปล่า? นี่คือปัญหาคลาสสิกที่เรียกว่า Adverse Selection และมันคือเหตุผลที่ Market Maker สาย HFT ต้องมีเครื่องมือวัดสภาพตลาดแบบเรียลไทม์ที่ไวพอจะบอกได้ว่า "ตอนนี้ฝั่งตรงข้ามกำลังฉลาดกว่าเราหรือเปล่า"

บทความนี้จะพาไปเจาะลึก 2 แนวคิดที่ถูกอ้างอิงมากที่สุดในงานวิจัยด้าน Market Microstructure สำหรับปัญหานี้ ได้แก่ Order Flow Imbalance (OFI) จาก Cont, Kukanov & Stoikov (2014) และ VPIN (Volume-Synchronized Probability of Informed Trading) จาก Easley, López de Prado & O'Hara (2012) พร้อมสูตรคณิตศาสตร์จริงและตัวอย่างการคำนวณทีละขั้นตอน

ทำไม Market Maker ต้องอ่านสภาพตลาดแบบเรียลไทม์

Adverse Selection คือความเสี่ยงที่ Market Maker ต้องเจอเมื่อคู่เทรดของเขามีข้อมูลที่ดีกว่า ทำให้ทุกครั้งที่ใบเสนอราคาถูก fill มีโอกาสว่าราคาตลาดกำลังจะเคลื่อนไปในทางที่ Market Maker เสียเปรียบ

Market Maker ทำกำไรจาก spread ระหว่างราคาซื้อ (bid) กับราคาขาย (ask) แต่ spread ก้อนนั้นไม่ใช่กำไรฟรีๆ มันคือค่าตอบแทนความเสี่ยงที่ต้องแบกรับจาก 2 กลุ่มคู่เทรดที่ปะปนกันอยู่ในตลาด:

  • Uninformed / Noise Traders — เทรดเพราะเหตุผลอื่นที่ไม่ใช่ข้อมูลเชิงราคา เช่น ต้องการสภาพคล่อง ปรับพอร์ต หรือ hedge ความเสี่ยง กลุ่มนี้คือ "ลูกค้าที่ดี" ของ Market Maker เพราะเทรดแบบสุ่มทิศทาง
  • Informed Traders — เทรดเพราะรู้ (หรือคาดการณ์ได้แม่นกว่า) ว่าราคาจะไปทางไหนในอีกไม่กี่วินาทีข้างหน้า กลุ่มนี้คือฝันร้ายของ Market Maker เพราะทุกครั้งที่โดน fill คือสัญญาณว่าราคากำลังจะขยับสวนทางกับ position ที่เพิ่งได้มา

ปัญหาคือ Market Maker แยกไม่ออกว่าคำสั่งที่เพิ่งมา fill ใบเสนอราคาของตัวเองมาจากกลุ่มไหน สิ่งที่ทำได้คือ สังเกตพฤติกรรมรวมของ order flow แล้วประเมินว่า ณ ขณะนี้ สัดส่วนของ informed flow กำลังสูงขึ้นหรือไม่ ถ้าสูงขึ้น กลยุทธ์ที่สมเหตุสมผลคือถ่างสเปรดให้กว้างขึ้น ลดขนาดไม้ที่เสนอ หรือถอนใบเสนอราคาชั่วคราว

นี่คือจุดที่ OFI และ VPIN เข้ามามีบทบาท — ทั้งคู่พยายามตอบคำถามเดียวกัน (สภาพตลาดตอนนี้อันตรายแค่ไหน) แต่มองจากข้อมูลคนละชุด: OFI มองจาก order book (คำสั่งที่ตั้งรออยู่) ส่วน VPIN มองจาก trade tape (คำสั่งที่ execute จริงแล้ว)

Order Flow Imbalance (OFI): วัดแรงกดดันจากฝั่ง Order Book

Order Flow Imbalance คือตัวชี้วัดที่สรุปการเปลี่ยนแปลงของราคาและปริมาณที่ระดับ best bid/ask ให้เป็นตัวเลขเดียว เพื่อบอกว่า ณ ขณะนั้นมีแรงกดดันเชิงทิศทาง (ซื้อหรือขาย) ต่อ order book มากแค่ไหน

ทำไม Volume Imbalance แบบเดิมไม่พอ

ก่อนมี OFI นักเทรดมักใช้ตัวชี้วัดง่ายๆ อย่าง trade volume imbalance (ปริมาณซื้อ − ปริมาณขาย ในช่วงเวลาหนึ่ง) เพื่อประเมินแรงกดดันของตลาด ปัญหาของวิธีนี้คือมันดูเฉพาะคำสั่งที่ "เทรดสำเร็จแล้ว" เท่านั้น ซึ่งเป็นข้อมูลที่มาช้าเกินไปสำหรับ Market Maker ที่ต้องตัดสินใจล่วงหน้าก่อนโดน fill

Cont, Kukanov และ Stoikov (2014) เสนอว่าสิ่งที่สำคัญกว่าคือการเปลี่ยนแปลงของ limit order book เอง — ทุกครั้งที่มีคนวางคำสั่งใหม่ ยกเลิกคำสั่งเดิม หรือคำสั่งถูก fill บางส่วน ระดับราคาและปริมาณที่ best bid/ask จะเปลี่ยน และการเปลี่ยนแปลงนี้เกิดขึ้นเร็วกว่าและบ่อยกว่าการเทรดจริงมาก

จุดสำคัญคือพวกเขาเลือกวัดเป็น event time — คือนับทีละครั้งที่ book มีการเปลี่ยนแปลง (order submission, cancellation, หรือ trade) ไม่ใช่แบ่งตามนาฬิกา (clock time) เหตุผลคือช่วงที่ตลาดผันผวน book จะเปลี่ยนถี่มาก การหั่นเวลาแบบ clock-time เท่าๆ กันจะทำให้บาง interval มีข้อมูลล้นและบาง interval แทบไม่มีข้อมูลเลย ในขณะที่ event time จะปรับความละเอียดตามความ "ร้อนแรง" ของตลาดโดยอัตโนมัติ

นิยามและสูตรของ OFI

สำหรับทุก event ที่ nn ให้ PnBP^B_n, qnBq^B_n คือราคาและปริมาณที่ best bid และ PnAP^A_n, qnAq^A_n คือราคาและปริมาณที่ best ask หลังจาก event นั้น เทียบกับค่าก่อนหน้า (n1n-1)

ให้คำนวณ contribution ของแต่ละ event (ene_n) แยกฝั่ง bid และ ask ตาม 3 กรณีของการเปลี่ยนแปลงราคา:

ฝั่ง Bid (enBe^B_n):

กรณีราคา Bid ความหมาย enBe^B_n
ราคาดีขึ้น (PnB>Pn1BP^B_n > P^B_{n-1}) มีแรงซื้อใหม่เข้ามาที่ราคาดีกว่าเดิม +qnB+q^B_n (นับ size ใหม่ทั้งก้อน)
ราคาเท่าเดิม (PnB=Pn1BP^B_n = P^B_{n-1}) แรงซื้อที่ระดับเดิมเปลี่ยนขนาด qnBqn1Bq^B_n - q^B_{n-1}
ราคาแย่ลง (PnB<Pn1BP^B_n < P^B_{n-1}) แรงซื้อที่ระดับเดิมถอนตัว qn1B-q^B_{n-1} (หัก size เก่าทั้งก้อน)

ฝั่ง Ask (enAe^A_n) — ตรรกะกลับด้าน เพราะ ask size ที่เพิ่มขึ้นคือแรงขาย ไม่ใช่แรงซื้อ:

กรณีราคา Ask ความหมาย enAe^A_n
ราคาแย่ลง/สูงขึ้น (PnA>Pn1AP^A_n > P^A_{n-1}) แรงขายที่ระดับเดิมถอนตัว (bullish) +qn1A+q^A_{n-1}
ราคาเท่าเดิม (PnA=Pn1AP^A_n = P^A_{n-1}) แรงขายที่ระดับเดิมเปลี่ยนขนาด (qnAqn1A)-(q^A_n - q^A_{n-1})
ราคาดีขึ้น/ต่ำลง (PnA<Pn1AP^A_n < P^A_{n-1}) มีแรงขายใหม่เข้ามาที่ราคาถูกกว่าเดิม (bearish) qnA-q^A_n

แล้วรวม contribution ของ event นั้นเป็นค่าเดียว:

en=enB+enAe_n = e^B_n + e^A_n

และ OFI ในช่วงเวลาหนึ่ง (ตั้งแต่ event ที่ 1 ถึง N) คือผลรวมของ contribution ทั้งหมด:

OFI=n=1NenOFI = \sum_{n=1}^{N} e_n

ในการใช้งานจริง มักหาร OFI ด้วย ความลึกเฉลี่ยของ book (Average Depth) ในช่วงนั้น เพื่อให้ค่าที่ได้เทียบกันได้ข้ามช่วงเวลาและข้ามสินทรัพย์ที่มีสภาพคล่องต่างกัน เรียกว่า Normalized OFI

ตัวอย่างตัวเลข: คำนวณ OFI จาก Order Book Snapshot

สมมติมี event เกิดขึ้นต่อเนื่อง 4 ครั้งบน order book ของสัญญาสมมติ (ราคาหน่วยเป็นทศนิยม 2 ตำแหน่ง):

Event Bid Price Bid Size Ask Price Ask Size เหตุการณ์
0 (เริ่มต้น) 100.00 50 100.05 40
1 100.01 30 100.05 40 มีคนวางซื้อราคาดีขึ้น
2 100.01 45 100.05 40 มีคนเติมซื้อที่ระดับเดิม
3 100.01 45 100.04 25 มีคนวางขายตัดหน้าราคาถูกลง
4 100.00 60 100.04 25 คนวางซื้อ event 1-2 ยกเลิก bid หลุดกลับไป 100.00

คำนวณทีละ event:

  • e1e_1: bid ราคาดีขึ้น → e1B=+30e^B_1 = +30 ; ask ไม่เปลี่ยน → e1A=0e^A_1 = 0e1=30e_1 = 30
  • e2e_2: bid ราคาเท่าเดิม → e2B=4530=+15e^B_2 = 45 - 30 = +15 ; ask ไม่เปลี่ยน → e2A=0e^A_2 = 0e2=15e_2 = 15
  • e3e_3: bid ไม่เปลี่ยน → e3B=0e^B_3 = 0 ; ask ราคาต่ำลง (ถูกลง = bearish) → e3A=25e^A_3 = -25e3=25e_3 = -25
  • e4e_4: bid ราคาแย่ลง (หลุดจาก 100.01 กลับไป 100.00) → e4B=45e^B_4 = -45 (หัก size เดิมที่ 100.01 ทั้งก้อน) ; ask ไม่เปลี่ยน → e4A=0e^A_4 = 0e4=45e_4 = -45
OFI=30+152545=25OFI = 30 + 15 - 25 - 45 = -25

ผลลัพธ์ OFI ติดลบ บอกว่าตลอด 4 event นี้ แรงกดดันสุทธิของ book เอนไปทาง ฝั่งขาย เล็กน้อย แม้ก่อนหน้านี้จะดูเหมือนมีแรงซื้อเข้ามา (e1e_1, e2e_2 เป็นบวก) แต่พอ order นั้นถูกยกเลิกใน event 4 มันกลับกลายเป็นแรงกดดันลบที่หนักกว่าเดิม — นี่คือจุดแข็งของ OFI ที่จับ "การยกเลิก" ได้ ซึ่งเป็นข้อมูลที่ trade volume imbalance มองไม่เห็นเลย เพราะไม่มีการเทรดเกิดขึ้นจริงสักครั้งในตัวอย่างนี้

ตัวอย่างการคำนวณ Order Flow Imbalance จากการเปลี่ยนแปลงของ Order Book

ผลจากงานวิจัยต้นฉบับ

Cont, Kukanov และ Stoikov (2014) ทดสอบ OFI บนข้อมูล order book ระดับ event ของสัญญา E-mini S&P 500 futures และพบว่า OFI มีความสัมพันธ์เชิงเส้นตรงกับการเปลี่ยนแปลงราคาระยะสั้น (short-term price impact) ได้แม่นยำกว่าตัวชี้วัดแบบเดิมอย่าง trade volume imbalance อย่างมีนัยสำคัญ พูดง่ายๆ คือ การเปลี่ยนแปลงของ book ที่ยังไม่ทันเทรดจริง มีข้อมูลที่บอกทิศทางราคาต่อไปได้ดีกว่าการรอดูว่าใครเทรดอะไรไปแล้ว ซึ่งสอดคล้องกับสัญชาตญาณของ Market Maker ที่ว่าการอ่าน book แบบ real-time สำคัญกว่าการอ่าน tape ที่มาทีหลัง

VPIN: วัดความเป็นพิษของ Order Flow ที่ Execute แล้ว

VPIN (Volume-Synchronized Probability of Informed Trading) คือตัวชี้วัด "ความเป็นพิษของ flow" (flow toxicity) ที่ประมาณสัดส่วนความไม่สมดุลระหว่างปริมาณซื้อกับขายที่ execute จริง โดยแบ่งข้อมูลตาม volume แทนเวลานาฬิกา

จาก PIN Model สู่ VPIN

VPIN ไม่ได้เกิดขึ้นลอยๆ แต่ต่อยอดมาจาก PIN Model (Probability of Informed Trading) ของ Easley และ O'Hara ที่เสนอกรอบคิดว่าคำสั่งซื้อขายแต่ละคำสั่งมีโอกาส (probability) ที่จะมาจาก informed trader หรือ uninformed trader โดยประมาณค่าจากความไม่สมมาตร (asymmetry) ระหว่าง buy flow กับ sell flow ตามช่วงเวลา — ถ้าวันไหนมี buy หรือ sell ฝั่งใดฝั่งหนึ่งเยอะผิดปกติ แปลว่ามีโอกาสสูงที่มี informed trader กำลังไล่ตาม information event บางอย่างอยู่

ปัญหาของ PIN ดั้งเดิมคือการประมาณค่าต้องใช้ Maximum Likelihood Estimation (MLE) กับข้อมูลรายวันสะสมเป็นช่วงยาว ทำให้คำนวณช้าเกินกว่าจะใช้งานแบบเรียลไทม์ในตลาด HFT ที่ต้องการสัญญาณระดับวินาทีหรือนาที

Easley, López de Prado และ O'Hara (2012) จึงเสนอ VPIN เป็นตัวประมาณค่าแบบเร็ว (fast proxy) ของ PIN โดยตัดขั้นตอน MLE ออก แล้วแทนที่ด้วยการนับสัดส่วน buy/sell volume โดยตรงจาก volume bucket

ทำไมต้องใช้ Volume Clock แทน Clock Time

หัวใจของ VPIN คือแนวคิด Volume Clock — แทนที่จะแบ่งข้อมูลเป็นแท่งตามเวลานาฬิกา (เช่น 1 นาทีต่อแท่ง) ให้แบ่งเป็น bucket ที่มีปริมาณเทรดเท่ากันทุก bucket (เช่น bucket ละ 1,000 สัญญา) แล้วปิด bucket ทันทีที่ volume สะสมครบ ไม่ว่าจะใช้เวลากี่วินาทีหรือกี่นาทีก็ตาม

เหตุผลคือ informed trading มักกระจุกตัวตาม "ปริมาณข้อมูลใหม่ที่เข้าตลาด" ไม่ใช่ตามนาฬิกา ช่วงที่มีข่าวสำคัญหรือ information event เกิดขึ้น volume จะไหลเข้าตลาดเร็วมาก การใช้ clock-time bar แบบเดิมจะทำให้ 1 นาทีนั้นมี volume เยอะผิดปกติ (mix ข้อมูลเยอะเกินไป) ในขณะที่นาทีเงียบๆ แทบไม่มีข้อมูลอะไรเลย การใช้ volume bucket แก้ปัญหานี้โดยให้แต่ละ bucket มี "ปริมาณข้อมูล" ที่ใกล้เคียงกันเสมอ

graph LR subgraph Clock["Clock-Time Bars — แบ่งตามนาฬิกา (1 นาที/แท่ง)"] C1["09:00-09:01<br/>Volume: 200"] --> C2["09:01-09:02<br/>Volume: 4,500"] --> C3["09:02-09:03<br/>Volume: 150"] end subgraph Vol["Volume-Time Buckets — แบ่งตาม Volume (1,000 หน่วย/bucket)"] V1["Bucket 1<br/>09:00:05-09:00:40"] --> V2["Bucket 2<br/>09:00:40-09:00:44"] --> V3["Bucket 3<br/>09:00:44-09:02:10"] end

จากภาพ จะเห็นว่า clock-time bar แต่ละแท่งมี volume ต่างกันมหาศาล (200 vs 4,500 vs 150) เพราะถูกบังคับให้จบตามเวลา ในขณะที่ volume bucket แต่ละอันมี volume เท่ากันเป๊ะ (1,000) แต่ใช้เวลาไม่เท่ากัน — bucket 2 ปิดเร็วมากเพียง 4 วินาทีเพราะช่วงนั้นตลาดซื้อขายกันดุเดือด สะท้อนว่ากำลังมี information event เกิดขึ้น

สูตรของ VPIN

ขั้นแรก ต้องแบ่ง volume ทั้งหมดออกเป็น bucket ขนาดคงที่ VV แต่ละ bucket (τ\tau) แล้วจำแนกปริมาณที่ execute ในแต่ละ bucket ว่าเป็นฝั่งซื้อ (VτBV^B_\tau) หรือฝั่งขาย (VτSV^S_\tau) เท่าไหร่ โดยงานต้นฉบับใช้เทคนิค Bulk Volume Classification (BVC) ซึ่งประมาณสัดส่วนฝั่งซื้อจากการเปลี่ยนแปลงของราคาเทียบกับความผันผวน แทนการไล่ดูทีละ tick:

VτB=iτViZ(PiPi1σΔP),VτS=VτVτBV^B_\tau = \sum_{i \in \tau} V_i \cdot Z\left(\frac{P_i - P_{i-1}}{\sigma_{\Delta P}}\right), \qquad V^S_\tau = V_\tau - V^B_\tau

โดยที่ Z()Z(\cdot) คือฟังก์ชันการแจกแจงสะสม (CDF) ของ standard normal distribution และ σΔP\sigma_{\Delta P} คือค่าเบี่ยงเบนมาตรฐานของการเปลี่ยนแปลงราคาในช่วงนั้น — ตรรกะคือถ้าราคาขยับขึ้นแรงในช่วงหนึ่งของ bucket แปลว่า volume ส่วนใหญ่ในช่วงนั้นน่าจะถูก initiate โดยฝั่งซื้อ

จากนั้นคำนวณ Order Imbalance ของแต่ละ bucket:

OIτ=VτBVτSOI_\tau = |V^B_\tau - V^S_\tau|

และสุดท้าย VPIN คือค่าเฉลี่ยของ Order Imbalance ตลอดหน้าต่าง n bucket ล่าสุด หารด้วยขนาด volume ทั้งหมดในหน้าต่างนั้น (n × V):

VPIN=τ=1nVτBVτSnVVPIN = \frac{\sum_{\tau=1}^{n} |V^B_\tau - V^S_\tau|}{n \cdot V}

ค่า VPIN จะอยู่ระหว่าง 0 ถึง 1 — ยิ่งใกล้ 1 แปลว่า flow ที่ execute ไปเอนไปทางฝั่งใดฝั่งหนึ่งอย่างรุนแรง (toxic) ยิ่งใกล้ 0 แปลว่า buy กับ sell สมดุลกันดี (benign)

ตัวอย่างตัวเลข: คำนวณ VPIN จาก Volume Bucket

สมมติกำหนด bucket ขนาด V = 1,000 หน่วย และดูย้อนหลัง n = 5 bucket ล่าสุด (สมมติว่าผ่านการจำแนกด้วย BVC มาแล้ว):

Bucket (τ\tau) Buy Volume (VBV^B) Sell Volume (VSV^S) |VBV^BVSV^S|
1 700 300 400
2 550 450 100
3 200 800 600
4 900 100 800
5 480 520 40

รวม Order Imbalance ทั้ง 5 bucket: 400 + 100 + 600 + 800 + 40 = 1,940

VPIN=19405×1000=19405000=0.388VPIN = \frac{1940}{5 \times 1000} = \frac{1940}{5000} = 0.388

VPIN ≈ 38.8% — ค่าระดับกลาง บอกว่าในช่วง 5 bucket ล่าสุด flow มีความเอนเอียงพอสมควร (สังเกตว่า bucket 3 กับ 4 เอียงหนักไปคนละทาง) ในทางปฏิบัติ ค่า VPIN มักถูกนำไปเทียบกับค่าเฉลี่ยย้อนหลังของสินทรัพย์นั้นเอง (เช่นดูเป็น percentile) มากกว่าตีความเป็นตัวเลขสัมบูรณ์ เพราะระดับ "ปกติ" ของแต่ละสินทรัพย์ไม่เท่ากัน

ตัวอย่างการคำนวณ VPIN จาก Volume Bucket และค่า Order Imbalance

OFI vs VPIN: มุมมองที่ต่างกันแต่เสริมกัน

แม้ทั้งสองตัวจะตอบคำถามคล้ายกัน ("ตลาดตอนนี้อันตรายแค่ไหน") แต่มองจากมุมที่ต่างกันโดยสิ้นเชิง — OFI มองจากคำสั่งที่ "ตั้งรอ" อยู่ใน book ส่วน VPIN มองจากคำสั่งที่ "execute แล้ว" บน trade tape ทำให้ทั้งสองตัวเป็นข้อมูลที่เสริมกัน ไม่ใช่ตัวแทนกัน

มิติ OFI VPIN
แหล่งข้อมูล Order book (bid/ask ที่ตั้งรอ) Trade tape (คำสั่งที่ execute แล้ว)
หน่วยเวลา Event time (ทุกครั้งที่ book เปลี่ยน) Volume time (ทุกครั้งที่ volume ครบ bucket)
วัดอะไร แรงกดดันเชิงทิศทางจากสภาพคล่องที่ตั้งรอ สัดส่วนความไม่สมดุลของ flow ที่เทรดจริง
ตอบคำถาม "book กำลังถูกกดดันไปทางไหน" "flow ที่เพิ่งเทรดมีโอกาสมาจาก informed trader แค่ไหน"
ที่มางานวิจัย Cont, Kukanov & Stoikov (2014) Easley, López de Prado & O'Hara (2012), ต่อยอดจาก PIN Model
ความไว ไวมาก ปรับทุก event ไวรองลงมา ปรับทุก bucket

ในทางปฏิบัติ Market Maker หลายรายจึงใช้ทั้งสองตัวประกอบกัน: OFI สำหรับตัดสินใจ tick-by-tick ว่าจะขยับ quote หรือ skew ราคาอย่างไร ส่วน VPIN สำหรับประเมินภาพกว้างกว่าว่าช่วงนี้ควรลดความเสี่ยงโดยรวมของ book หรือไม่

มุมมองจากการลงมือทำจริง: บทเรียนเชิงหลักการออกแบบ

ผมเคยมีโอกาสศึกษาตัวอย่างการ implement แนวคิดทั้งสองนี้ในบริบทงาน market making สั้นๆ จากคอร์สเทรนนิ่งที่เคยเข้าร่วม แม้จะเป็นเพียงตัวอย่างประกอบการเรียนรู้ ไม่ใช่ระบบที่พิสูจน์แล้วว่าใช้งานได้จริงในตลาดจริง แต่ก็มีข้อสังเกตเชิงหลักการออกแบบที่น่าสนใจอยู่บ้าง:

  • OFI คำนวณได้หลายความลึกของ book — บางระบบคำนวณเฉพาะที่ best bid/ask (level 1) บางระบบรวมหลายระดับราคาเข้าด้วยกัน (multi-level) แต่ละความลึกให้มุมมองต่างกัน: ความลึกน้อยจะไวต่อการเปลี่ยนแปลงเร็วกว่าแต่มี noise มากกว่า ส่วนความลึกมากจะนิ่งกว่าแต่อาจตอบสนองช้ากว่าเหตุการณ์จริง การเลือกความลึกจึงเป็น trade-off ระหว่างความไวกับความนิ่ง ไม่ใช่ว่ายิ่งลึกยิ่งดีเสมอไป

  • ขนาด volume bucket ของ VPIN ต้องปรับตามสภาพคล่องของแต่ละสินทรัพย์ — การใช้ค่าคงที่ตัวเดียวกันกับทุกสินทรัพย์มักไม่เวิร์กในทางปฏิบัติ เพราะสินทรัพย์ที่เทรดเบาบางจะทำให้ bucket ขนาดคงที่ปิดช้าเกินไป (หรือไม่ปิดเลยในบางช่วง) ทำให้สัญญาณล้าหลังเกินกว่าจะใช้ตัดสินใจแบบเรียลไทม์ได้ ในทางกลับกัน สินทรัพย์ที่เทรดหนาแน่นเกินไปก็อาจทำให้ bucket ปิดถี่จนสัญญาณสั่นไหวเกินไป

  • บทเรียนที่พบบ่อยที่สุด: ทั้งสองแนวคิดนี้เหมาะกับการเป็น "ตัวปรับความเสี่ยง/ราคา" มากกว่า "ตัวชี้ทิศทางเข้าไม้โดยตรง" — งานวิจัยและการทดสอบในเชิงหลักการมักพบตรงกันว่าการนำ OFI หรือ VPIN ไปใช้เป็นสัญญาณเข้าไม้แบบตรงไปตรงมา (เช่น OFI เป็นบวกแรงก็ไล่ซื้อตาม) มักนำไปสู่การคัดเลือกไม้ที่ผิดทางอย่างเป็นระบบ เพราะตัวชี้วัดเหล่านี้สะท้อน "สิ่งที่กำลังเกิดขึ้น" ไม่ใช่ "สิ่งที่กำลังจะเกิดขึ้นในอนาคต" การใช้งานที่สมเหตุสมผลกว่าคือนำไปปรับพารามิเตอร์ของกลยุทธ์ที่มีอยู่แล้ว เช่น ถ่างสเปรดให้กว้างขึ้นเมื่อสัญญาณสูง หรือถอนใบเสนอราคาชั่วคราวเมื่อสัญญาณเปลี่ยนเร็วผิดปกติ

หลักการออกแบบ: ใช้ OFI และ VPIN เป็นตัวปรับความเสี่ยง ไม่ใช่ตัวชี้ทิศทางเข้าไม้

ข้อจำกัดที่ต้องรู้ก่อนนำไปใช้

ก่อนจะหยิบ OFI หรือ VPIN ไปใช้งาน มีข้อจำกัดสำคัญที่ควรเข้าใจ:

  • ทั้งสองตัววัด "สิ่งที่เกิดขึ้นแล้ว" ไม่ใช่การพยากรณ์ล่วงหน้า — OFI สรุปสิ่งที่เพิ่งเกิดกับ order book, VPIN สรุปสิ่งที่เพิ่งเทรดจริง ทั้งคู่เป็น contemporaneous/lagging indicator ในระดับหนึ่ง ไม่ใช่เครื่องมือทำนายอนาคต
  • ต้อง calibrate ต่อสินทรัพย์และสภาพตลาดเสมอ — ค่า "ปกติ" ของ OFI หรือ VPIN ของสินทรัพย์หนึ่งไม่สามารถนำไปเทียบตรงๆ กับอีกสินทรัพย์หนึ่งได้ ต้องมี baseline หรือ normalization ของตัวเอง
  • ไม่ใช่ "จอกศักดิ์สิทธิ์" ที่รับประกันกำไร — ทั้งสองแนวคิดเป็นเพียงส่วนหนึ่งของระบบบริหารความเสี่ยงของ Market Maker ประสิทธิภาพจริงขึ้นอยู่กับการ implement, การ calibrate พารามิเตอร์, และบริบทของตลาดที่ใช้งาน ไม่มีตัวชี้วัดตัวใดตัวหนึ่งที่ใช้ได้ผลเหมือนกันในทุกสภาวะตลาด

สรุป

Order Flow Imbalance และ VPIN คือสองแนวคิดที่ตอบโจทย์ปัญหา Adverse Selection ของ Market Maker จากมุมมองที่ต่างกันแต่เสริมกัน — OFI จับแรงกดดันจาก order book แบบ event time ส่วน VPIN จับความเป็นพิษของ flow ที่ execute แล้วแบบ volume time ทั้งคู่มีสูตรคณิตศาสตร์ที่ชัดเจนและมีที่มาจากงานวิจัยที่ถูกอ้างอิงอย่างกว้างขวางในวงการ Market Microstructure

สิ่งสำคัญที่สุดที่ควรจำไว้คือ ทั้งสองตัวเหมาะกับการเป็นเครื่องมือ "ปรับความเสี่ยง" มากกว่า "ชี้ทิศทางเข้าไม้" — ความเข้าใจในข้อจำกัดนี้สำคัญพอๆ กับความเข้าใจในตัวสูตรเอง


FAQ (คำถามที่พบบ่อย)

OFI กับ Trade Volume Imbalance ต่างกันอย่างไร?

Trade Volume Imbalance วัดจากคำสั่งที่ execute สำเร็จแล้วเท่านั้น ส่วน OFI วัดจากการเปลี่ยนแปลงของ order book ทั้งหมด รวมถึงการวางคำสั่งใหม่และการยกเลิกคำสั่งด้วย ทำให้ OFI ได้รับข้อมูลเร็วกว่าและครอบคลุมกว่า โดยเฉพาะการจับสัญญาณจากการยกเลิกคำสั่งซึ่ง trade volume imbalance มองไม่เห็นเลย

ทำไม VPIN ถึงใช้ volume bucket แทนการนับตามเวลานาฬิกา?

เพราะ informed trading มักกระจุกตัวตามปริมาณข้อมูลใหม่ที่เข้าตลาด ไม่ใช่ตามเวลานาฬิกา การแบ่งข้อมูลตาม volume ทำให้แต่ละ bucket มี "ปริมาณข้อมูล" ใกล้เคียงกันเสมอ ต่างจาก clock-time bar ที่อาจมี volume ต่างกันมหาศาลระหว่างช่วงตลาดคึกคักกับช่วงตลาดเงียบ

ใช้ OFI หรือ VPIN เป็นสัญญาณเข้าซื้อขายโดยตรงได้ไหม?

ในทางทฤษฎีทำได้ แต่ในทางปฏิบัติมักไม่แนะนำ เพราะทั้งสองตัวสะท้อนสิ่งที่กำลังเกิดขึ้น ไม่ใช่การพยากรณ์ล่วงหน้า การใช้เป็นสัญญาณเข้าไม้โดยตรงมักนำไปสู่การคัดเลือกไม้ที่ผิดทางอย่างเป็นระบบ วิธีที่เหมาะสมกว่าคือนำไปใช้ปรับพารามิเตอร์ความเสี่ยง เช่น ความกว้างของสเปรดหรือขนาด position

จำเป็นต้องมีข้อมูล order book แบบละเอียดถึงจะคำนวณ OFI และ VPIN ได้หรือไม่?

OFI ต้องการข้อมูล order book ระดับ event (อย่างน้อยที่สุดคือ best bid/ask แบบ tick-by-tick) ส่วน VPIN ใช้เพียงข้อมูลราคาและปริมาณการเทรด (trade tape) ก็เพียงพอ ไม่จำเป็นต้องมีข้อมูล order book ลึก ทำให้ VPIN เข้าถึงได้ง่ายกว่าสำหรับผู้ที่ไม่มีสิทธิ์เข้าถึงข้อมูล order book แบบเต็มรูปแบบ


Resources:

  • Cont, R., Kukanov, A., & Stoikov, S. (2014). "The Price Impact of Order Book Events." Journal of Financial Econometrics, 12(1), 47-88.
  • Easley, D., López de Prado, M. M., & O'Hara, M. (2012). "Flow Toxicity and Liquidity in a High-Frequency World." Review of Financial Studies, 25(5), 1457-1493.
  • Aoddy's GitHub Repository
Share this article:
Aoddy avatar

Aoddy

Lifelong learning | Data Analytics | Algorithmic Trading | Quantmania | Wife Lover

www.aoddy.com
Loading views...

Comments

Loading comments...