Alternative bars อีกทางเลือกของการวิเคราะห์ข้อมูลเพื่อการลงทุน

Cr. https://unsplash.com/photos/lPQIndZz8Mo

เคยคิดกันมั้ย ว่าข้อมูลหุ้นที่เรานำมาวิเคราะห์กันในทุกๆ วันนี้ ข้อมูลที่มีหน้าตาที่คุ้นเคย อย่างราคาของวันนั้นๆ OHLC (Open-High-Low-Close) และ Volume ที่เกิดขึ้นในวันๆ หนึ่ง มันเหมาะสมเพียงใด ที่เราจะนำมาใช้ในการ วัดความเป็นความตาย (นี่ก็เวอร์ไป) ….. ในการตัดสินใจว่า จะลงทุนในหุ้นตัวใด เมื่อไหร่ เป็นจำนวนเท่าใด เคยนั่งคิดกันมั้ยว่า เจ้าข้อมูลตัวนี้มันสมเหตุสมผลหรือไม่ หรือ มีข้อมูลอื่นๆ ที่อาจจะนำมาลองใช้ได้หรือไม่ วันนี้ เราเลยนำบทความเกี่ยวกับ “ข้อมูลหุ้นทางเลือก” หรือ “Aternative bars” มาเล่าสู่กันฟังค่ะ

โดยบทความนี้เราได้เอามาจาก คุณ Harkishan Singh Baniya ที่เค้าเอาไอเดียมาจาก Advances in Financial Machine Learning. ของคุณ marcos lopez de prado อีกทีหนึงนะคะ link บทความต้นฉบับ ที่นี่

บทความเก่าของเราเองที่เคยเขียนในเรื่องนี้ สามารถอ่านได้ที่นี่

อะไรคือ Bars หรือ Candles

บาร์ หรือ ชาร์ทแบบแท่งเทียน น่าจะเป็นสองชื่อที่เป็นที่คุ้นหูนักลงทุนกันเป็นอย่างดี เนื่องจากเป็นข้อมูลพื้นฐานที่สามารถเข้าถึง แล้ว เข้าใจได้ง่าย ซึ่งข้อมูลที่นิยมใช้กันนี้ มักจะเป็นข้อมูลที่ถูกสร้างขึ้นโดยจังหวะของ “เวลา” หรือ “Time” เช่น Daily bars (ราคารายวัน) Hourly bars (ราคารายชั่วโมง) หรือ Minute bars (ราคารายนาที)

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

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

ว่าแล้วก็มาดูปัญหาของ Bar หรือ Candles แบบเดิมๆ กันดีกว่าค่ะ

1. พฤติกรรมต่างๆในตลาดไม่ได้เกิดขึ้นโดยอ้างอิงจังหวะเวลา

ขอยกตัวอย่าง เช่น ถ้าเราใช้ข้อมูลราคารายชั่วโมง (Hourly bars) นั่นก็หมายความว่า ข้อมูลนั้นควรจะเกิดขึ้นเป็นรายชั่วโมง มีช่วงจังหวะเวลาที่แน่นอน ซึ่งไม่เป็นจริง เนื่องจากข้อมูลที่มาสู่ตลาดนั้น ไม่ได้มีรูปแบบชัดเจน ไม่มีช่วงเวลาการเกิดข้อมูลที่แน่ชัดแบบ รายชั่วโมง หรือ รายนาที แต่ในทางกลับกัน ข้อมูลในตลาดนั้นเกิดขึ้นแบบไม่มีระเบียบแบบแผนที่จัดเจน การซื้อขายสามารถเกิดขึ้นได้ตลอดเวลาในช่วงเวลาทำการ อีกทั้งแต่ละช่วงเวลาข้อมูลที่เกิดขึ้นก็ไม่เป็นรูปแบบเดียวกันอีกด้วย เช่น ในหุ้นทั่วไปส่วนใหญ่แล้วจะมี Volume สูงในช่วงเวลาที่ใกล้กับการเปิด หรือ ปิด ของตลาดหลักทรัพย์ เป็นต้น

Cr. https://unsplash.com/photos/ft0-Xu4nTvA

2. ค่าทางสถิติของข้อมูลที่เก็บตามช่วงเวลาแบบดั้งเดิมไม่เหมาะสม

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

มีค่าทางสถิติอยู่หลายตัวที่บ่งบอกว่า ข้อมูลดิบทาง Finance ที่เก็บด้วยการอาศัยเวลาเป็นหลักนั้นไม่เหมาะสมจะนำมาใช้งาน ตัวอย่างเช่น non-normality, non-IId หรือ serial correlation เป็นต้น

Cr. https://unsplash.com/photos/APm4g7xKEcI

Alternative Bars?

แล้วทางเลือกอื่นที่เรามีล่ะ คืออะไร จริงๆ แล้วทางเลือกก็มีมากมายหลายรูปแบบ เช่น การใช้หลักการทางคณิตศาสตร์ในการปรับปรุงข้อมูลก่อนการใช้งาน เป็นต้น แต่ในที่นี้ วิธีที่เราจะหยิบยกมา จะเป็นการ “เลือกใช้” ข้อมูลที่อยู่ในลักษณะอื่น หรือ ที่เรียกว่า “Alternative Bars” กันค่ะ

“Alternative Bars” หรือ บาร์ทางเลือก หมายความว่า แทนที่จะเลือกใช้ข้อมูลที่สร้างบนพื้นฐานของช่วงเวลาแบบเดิมๆ แล้ว เรามาเลือกใช้ข้อมูลที่สร้างขึ้นโดยอาศัยกลไกอื่นๆ กันดีกว่า

Event – Driven Bars

วิธีแรก ก็คือ การสร้างข้อมูลโดยอาศัย “เหตุการณ์” เป็นหลัก กล่าวง่ายๆ คือ ถ้ามีเหตุการณ์ที่เราสนใจเกิดขึ้นถี่ การสร้างข้อมูล (เก็บข้อมูล) ก็จะมีความถี่สูงขึ้นตามไปด้วย ในทางกลับกัน ถ้ามีเหตุการณ์ที่เราสนใจเกิดขึ้นน้อย การสร้างข้อมูลก็เกิดน้อย หรือ ไม่เกิดนั่นเอง

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

ในการสร้าง Event – Driven bars จะต้องมี Code ส่วนหนึ่งที่ขาดไม่ได้เลย คือ การรวมค่าที่เราต้องการใช้ในการตรวจนับ Event หรือ เหตุการณ์ ที่เราสนใจ เช่น ตัวอย่าง Code ด้านล่าง จะมีการรวมค่าสำหรับเหตุการณ์ที่เราสนใจ คือ Ticks (จำนวน Transation), Volume (ขนาดของ Orders) และ Dollar (จำนวนเงิน) ซึ่งข้อมูลเหล่าจะถูกรวม และข้อมูลนี้จะถูกนำไปใช้ตรวจสอบเพื่อเป็นเงื่อนไขในการสร้างข้อมูลเมื่อขนาดของสิ่งที่เราสนใจ มีค่าเกินกว่าที่เรากำหนดไว้ เช่น ในการสร้างข้อมูล Volume bars ข้อมูลแต่ละแถวจะถูกสร้างขึ้นก็ต่อเมื่อมี Volume เกินกว่าระดับที่กำหนดไว้เท่านั้น เมื่อไหร่ก็ตามที่เข้ากฏดังกล่าว ข้อมูลจะถูกเก็บทันที

Cr. Harklshan Banlya

แน่นอนว่า เราสามารถปรับใช้วิธีนี้ได้ กับบาร์ชนิดอื่นๆ เช่น Dollar bar เป็นต้น ตัวอย่างเช่น แทนที่จะเช็คข้อมูล Volume ก็มีเช็คข้อมูล “จำนวนเงิน” แทน เมื่อไหร่ก็ตามที่จำนวนเงินซื้อขาย ณ เวลานั้นๆ มีค่าเกินกว่าค่าที่กำหนดไว้ ก็จะทำการเก็บข้อมูล เป็นต้น

มาดูรูปแบบของบาร์แบบต่างๆ กัน

Ticks Bars

ข้อมูลจะถูกสร้างขึ้นก็ต่อเมื่อจำนวน Ticks หรือ Trades ถึงระดับที่ต้องการเท่านั้น เช่น เราอาจจะกำหนด Algorithm ของเราเอาไว้ให้ทำการสร้างข้อมูลก็ต่อเมื่อ จำนวน Ticks มีค่าสูงถึง 10,000 ticks เท่านั้น การสร้างข้อมูลแบบนี้ จะทำให้เราทราบว่าเมื่อไหร่ที่มีข้อมูลใหม่ๆ เข้ามาในตลาด เนื่องจากการสร้างบาร์มีความถี่สูง เป็นต้น

จากรูป จะเห็นว่าเมื่อไหร่ก็ตามที่ที่มีจำนวน tick (Trade หรือ Transaction) มากกว่าหรือ เท่ากับค่า Threshold ที่กำหนด ก็จะทำการสร้าง หรือ บันทึกข้อมูล

Cr. Harklshan Banlya
Volume Bars

การสร้างข้อมูลโดยอาศัยค่า Volume วิธีนี้มีประโยชน์ในการจัดการกับปัญหา Order Fragmentation หรือ การกระจายคำสั่งซื้อ เป็นอย่างมาก โดยเฉพาะอย่างยิ่งในการเทรดด้วยระบบอัติโนมัติ ซึ่งการกระจายคำสั่งซื้อเกิดขึ้นอยู่เป็นปกติ ดังนั้น แทนที่จะสร้างข้อมูลบนพื้นฐานของคำสั่ง Trade หรือ Ticks วิธีการนี้จะสร้างข้อมูลอยู่บนพื้นฐานของจำนวน Volume แทน เช่น ข้อมูลจะถูกสร้างเมื่อมีจำนวน Shares ที่ซื้อขายกันอยู่มากถึงจำนวน 10,000 shares เท่านั้น โดยไม่สนใจเลยว่าในการซื้อขายนี้ จะมีการกระจายคำสั่งซื้อมาก น้อย เพียงใด

จากรูป จะเห็นว่า ในแต่ละ Tick หรือ Transaction จะมีการรวมผลของ Volume เมื่อไหร่ที่ผลรวมของ Volume มีการมากกว่าหรือเท่ากับค่า Threshold ที่ตั้งไว้ ก็จะทำการสร้างข้อมูล โดยไม่ได้สนใจว่าค่า Tick เป็นอย่างไร

Cr. Harklshan Banlya
Dollar Bars

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

จากรูปจะเห็นว่า ในแต่ละ Tick หรือ Transation จะมีการคำนวณมูลค่าเงิน โดยการหาผลคูณระหว่าง ราคา กับ volume และทำการรวมค่าไว้ เมื่อไหร่ก็ตามที่ค่ามูลค่าเงินนี้ มีค่ามากกว่าหรือเท่ากับค่า Threshold ที่กำหนดไว้ ก็จะทำการสร้างข้อมูลขึ้น

Cr. Harklshan Banlya

เมื่อเข้าใจความแตกต่างระหว่าง Candle bars (Time driven) และ Bars ในรูปแบบของ Event-driven (Tick, Volume และ Dollar bars) ด้านบนแล้ว เรามาดูผลการวิเคราะห์กันดีกว่าว่า บาร์แบบ Event-driven นี่มันจะดีจริงหรือไม่

วิเคราะห์ข้อมูล

ในที่นี้จะมาทำการทดลองโดยใช้ข้อมูลหุ้น AAPL (Apple Inc.) ในช่วงเวลาตั้งแต่ วันที่ 1 มกราคม 2018 ไปจนถึงวันที่ 31 ธันวาคม 2019 เพื่อทดสอบความแตกต่างระหว่างการใช้ Bars ประเภทต่างๆ

ค่า Threshold ที่ใช้ในการสร้างข้อมูล Alternative Bars จากหุ้น AAPL มีดังนี้

a) Tick Bars – 5,000 (ticks)

b) Volume Bars – 700,000 (quantity)

c) Dollar Bars – 150,000,000 (dollar)

ซึ่งค่า Threshold ที่เลือกมานี้ จะทำให้มีจำนวน Bars ที่ถูกสร้างขึ้นประมาณ 25-30 bars ต่อวัน ซึ่งจริงๆ แล้ว ค่า Threshold เหล่านี้ควรจะมีการทดลอง และวิเคราะห์อย่างละเอียด อีกครั้ง เพื่อให้ข้อมูลที่สร้างขึ้นมีความเหมาะสมมากที่สุด แต่ในที่นี้เนื่องจากเป็นการทดลองเท่านั้น จึงกำหนด Threshold ขึ้นมาง่ายๆ ข้างต้น

วิเคราะห์ข้อมูล Bars แต่ละประเภทในเชิงสถิติ

1. วิเคราะห์ลักษณะการกระจายตัวของข้อมูลจากการพล็อต

จากรูป ก็จะเป็นไปตามคาด ตามที่เคยบอกไว้ว่า time bars จะเก็บข้อมูลตามเงื่อนไขของ “เวลา” ซึ่งในรูป ช่วงเวลาที่เก็บข้อมูลจะเป็นช่วงเท่าๆ กัน แสดงเป็นเส้นประสีม่วงในแนวตั้ง ซึ่งในหนึ่งวันก็จะมีการเก็บข้อมูลตามช่วงเวลาที่ต่างกัน เช่น ทุกๆ ครึ่งชั่วโมง หรือ ทุกๆ 1 ชั่วโมง เป็นต้น ส่วน tick bars แทนด้วยจุดสีเหลือง ก็จะเห็นได้ชัดว่า tick bars ซึ่งมีการเก็บข้อมูลทุกครั้งที่เกิด Tick หรือ Transaction ขึ้น จึงจะเห็นว่าจุดสีเหลือง เกิดขึ้นค่อนข้างถี่ และ สม่ำเสมอ

ส่วนข้อมูล Alternative bars คือ Volume bars และ Dollar bars ที่แสดงด้วยจุดสีม่วง และ สีแดงนั้น จะมีการกระจายตัวไม่สม่ำเสมอ จะถูกเก็บเฉพาะเมื่อค่า Threshold ถึงขีดที่กำหนดไว้เท่านั้น ทำให้เราจะเห็นการกระจุกตัวของบาร์ เป็นช่วงๆ ที่ไม่เท่ากัน เช่น การกระจุกตัวจะมากในช่วงระยะเวลาที่ใกล้กับ การเปิด และ ปิด ตลาด เป็นต้น

2. วิเคราะห์จำนวนบาร์ (Bar count)

จากรูป เป็นการเปรียบเทียบ Bar count ระหว่าง Tick, Volume และ Dollar bars จะเห็นว่า Dollar bars เป็นบาร์ที่ Stable มากที่สุด ซึ่งได้จาก ค่าการเบี่ยงเบนออกจากค่าเฉลี่ยของข้อมูลหรือ Standard deviation มีค่าต่ำที่สุด ซึ่งเบื้องต้น ก็จะทราบกันดีอยู่แล้วว่า ข้อมูลที่จะนำมาใช้ในการวิเคราะห์ โดยเฉพาะอย่างยิ่งวิเคราะห์ด้วย Machine Learning นั้น ยิ่งข้อมูลมีความ Stable มากเท่าไหร่ ก็จะทำให้การทำนายมีประสิทธิภาพมากขึ้น

3. การวิเคราะห์การแจกแจงแบบปกติ

การทดสอบการแจกแจงแบบปกติ (Normality test) เป็นเรื่องสำคัญมาก เนื่องจากถ้าข้อมูลมีการกระจายตัวที่ห่างไกลจากการกระจายตัวแบบปกติมากเท่าไหร่ ก็จะส่งผลต่อความถูกต้องในการวิเคราะห์ข้อมูลต่อไปในอนาคตมากเท่านั้น เช่น ถ้าข้อมูลไม่มีการกระจายตัวแบบปกติ แล้วเรายังดึงดันจะใช้ Machine Learning ในการทำนายค่าในอนาคต โดยไม่สนใจจัดการกับข้อมูลให้เหมาะสมก่อน ไม่ว่าจะใช้ Machine Learning ที่ดีแค่ไหน ก็มีความเป็นไปได้สูงว่าจะไม่ประสบความสำเร็จ

สำหรับการทดสอบการแจกแจงแบบปกตินั้น มีค่าทางสถิติมากมายที่เกี่ยวข้อง ในที่นี้จะใช้วิธีการทดสอบที่เรียกว่า ” Jarque-Bera test ” ซึ่งจะทำการวัดค่าต่างๆ ทางสถิติของข้อมูล เช่น skewness และ kurtosis ของการแจกแจงของข้อมูล เพื่อวิเคราะห์ว่าข้อมูลมีการแจกแจงมาตรฐานหรือไม่ ผลการคำนวณที่ได้ เป็นดังนี้

จากผลการวิเคราะห์ข้อมูล จะเห็นได้ชัดเจนว่า Dollar bars เป็น Bars ที่มีค่าทางสถิติที่ใกล้เคียงกับการแจกแจงมาตรฐานมากที่สุดในจำนวนข้อมูลทั้งหมด ซึ่งจะเห็นได้จากการมีค่า Jarque-Bera stats, skewness และ kurtosis ที่ตำที่สุด นั่นเอง ส่วน Bars ที่มีค่าทางสถิติที่แย่ที่สุด หรือ ห่างไกลจากการแจกแจงแบบปกติมากที่สุด ก็คือ Time bars

มาลองพล็อตค่าการแจกแจงของข้อมูลแต่ละ Bars เทียบกับการแจกแจงปกติกัน จะได้เห็นภาพมากขึ้น

จากรูป KDE หรือ Kernel Density Estimation plot จะเห็นได้อย่างชัดเจนว่า Bars ที่ห่างไกลจากการแจกแจงแบบปกติ (กราฟเส้นประสีดำ) มากที่สุด คือ time bars (กราฟสีแดง) ส่วน Tick, Volume และ Dollar bars นั่นค่อนข้างใกล้เคียงกันถ้าดูจากกราฟ แต่จากค่าที่คำนวณได้ เราก็จะทราบว่า Bar ที่ใกล้เคียงกับการแจกแจงปกติมากที่สุดคือ Dollar bars (กราฟสีเทา) นั่นเอง

สรุป

บทความนี้อธิบายความแตกต่างของ Bars แต่ละประเภท และ ทำการวิเคราะห์ความเป็นไปได้ของการใช้ข้อมูล Alternative bars ในการเพิ่มประสิทธิภาพของระบบเทรด ซึ่งในการทดลองค่าที่จำเป็นต้องคำนึงถึงเป็นอย่างมากคือ ค่า Threshold ซึ่งไม่ควรจะถูกกำหนดด้วยตัวผู้ทดลองเอง แต่ควรจะเป็นค่าที่ได้จากการวิเคราะห์อย่างถี่ถ้วนแล้ว หรือ แม้กระทั่ง ไม่ควรเป็นค่า Static เพื่อความมีประสิทธิภาพของระบบ ค่า Threshold นี้ ควรจะสามารถเปลี่ยนแปลงได้ตามสถานการณ์อีกด้วย การใช้ Alternative bars ไม่ได้การันตีว่าจะดีกว่าการใช้ Candle bars เสมอ ดังนั้น ก่อนเลือกใช้ข้อมูล ผู้ใช้ควรจะวิเคราะห์ให้ดีว่า ต้องการทำอะไร และ จะใช้ข้อมูลใดในการทำงานดี ตัวอย่างเช่น ถ้าต้องการใช้กลยุทธ์ Short term momentum ก็ควรจะเลือก Volume bars เนื่องจาก Volume เปรียบเสมือนพระเอกในการทำงานของกลยุทธ์นี้ เป็นต้น

บทความเก่า

จริงๆ แล้วบทความนี้ไม่ใช่บทความแรกในเรื่องนี้ ที่เราเคยหยิบยกมาเล่าสู่กันฟัง ถ้าผู้อ่านท่านใดสนใจ ลองติดตามบทความเก่าได้ที่นี่ค่ะ

ข้อมูล Open High Low Close ตาม Time Frame ที่เรารู้จักมีจุดอ่อนอย่างไร?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s