top of page
Robo Trade NotesContents
Hide contentsChapter 2
ช่างและหุ่นกลในโรงช่าง Deltaris ภาพประกอบโลกสมมติ Quantara
DELTARIS WORKSHOP
Trading / Investing / Quant

Why Robo Trade

หลังจากดูวิธีเตรียม Webull OpenAPI ในบทก่อน เราจะพักเรื่องการเชื่อมต่อไว้ แล้วกลับมาถามว่าจะมอบงานอะไรให้โปรแกรมทำ ตั้งแต่เหตุผลที่สร้าง Robo Trade ความต่างระหว่าง Trading กับ Investing ไปจนถึง Alpha models การจัดพอร์ต และการกำหนดรายละเอียดของโมเดล

Why Robo Trade

นักลงทุนรายย่อยมีเครื่องมือสำหรับดึงข้อมูลตลาด วิเคราะห์ราคา เขียนโปรแกรมทดสอบกลยุทธ์ และสร้าง Dashboard เพื่อติดตามพอร์ต บางส่วนยังนำไปเชื่อมต่อกับระบบส่งคำสั่งซื้อขายได้ด้วย แต่เมื่อเราซื้อขายด้วยตัวเองได้อยู่แล้ว ทำไมต้องเสียเวลาสร้าง Robo Trade ขึ้นมาอีก?

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

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

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

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

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

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

งานซ้ำควรให้ผลที่อธิบายได้

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

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

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

เขียนความเชื่อให้กลายเป็นข้อที่หักล้างได้

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

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

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

แยกความผิดของแนวคิดออกจากความผิดของโปรแกรม

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

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

ตัวอย่างเช่น เมื่อข้อมูลเก่า ระบบควรระบุว่าต้องหยุดตรวจสอบ เมื่อข้อมูลพร้อมแต่ราคาไม่เข้าเกณฑ์ ควรระบุว่ารอ สองกรณีนี้ไม่มีข้อเสนอซื้อเหมือนกัน แต่ผู้ดูแลต้องทำงานต่อคนละอย่าง

ลดการเปลี่ยนกติกาตามอารมณ์หน้างาน

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

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

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

บังคับให้ตัดสินใจก่อนเหตุการณ์เกิดขึ้น

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

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

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

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

เวลาในการดูแลเปลี่ยนไป

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

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

สมุดช่าง Deltaris

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

เหตุผลที่อยากให้ได้จากการเรียนบทนี้

เราต้องเขียนให้ครบตั้งแต่เป้าหมาย ข้อมูล สมมติฐาน วิธีตัดสินใจ ขนาดความเสี่ยง ไปจนถึงการตรวจผล ช่องว่างที่เคยปล่อยไว้ในคำว่า “เดี๋ยวดูหน้างาน” จะปรากฏเป็นคำถามที่ต้องตอบ บางข้อเขียนเป็นสูตรได้ บางข้อควรให้คนตัดสินใจ และบางข้อทำให้รู้ว่าเรายังไม่มีข้อมูลพอจะเริ่ม

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

เหตุผลที่สำคัญที่สุดคือการถูกบังคับให้คิดแบบเป็นระบบ

Trading vs Investing

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

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

FINRA อธิบาย market timing ว่าเป็นกลยุทธ์การลงทุนแบบ active ที่พยายามใช้ประโยชน์จากการเคลื่อนไหวราคาที่คาดไว้ ตัวอย่างนี้ทำให้เห็นว่าการจับจังหวะตลาดและการลงทุนไม่ได้เป็นหมวดที่แยกขาดในทุกบริบท What Is Market Timing?

ระยะเวลาถือสัมพันธ์กับคำถามที่กำลังตอบ

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

การถือสั้นไม่ได้ทำให้แผนใช้เหตุผลน้อยลง และการถือยาวไม่ได้ทำให้ความเสี่ยงหายไป เราต้องถามว่าถือรออะไร เหตุการณ์ใดแสดงว่าสมมติฐานผิด และมีเงินรองรับความเสียหายระหว่างทางเพียงใด

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

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

Buy side และ sell side บอกบทบาทของธุรกิจ

Buy side เป็นคำที่ใช้เรียกองค์กรที่จัดสรรและบริหารเงินลงทุน เช่น บริษัทจัดการกองทุน กองทุนบำนาญ หรือกองทุนเฮดจ์ฟันด์ ส่วน sell side มักใช้กับผู้ให้บริการซื้อขาย การจัดจำหน่ายหลักทรัพย์ งานวิจัย และบริการตลาดทุน เช่น โบรกเกอร์และธนาคารเพื่อการลงทุน

ชื่อ buy side ไม่ได้หมายความว่าองค์กรนั้นซื้อได้อย่างเดียว และ sell side ก็ไม่ได้แปลว่าขายได้อย่างเดียว ทั้งสองฝั่งซื้อและขายสินทรัพย์ได้ คำเหล่านี้ช่วยอธิบายว่าธุรกิจให้บริการใครและหารายได้จากงานประเภทใด องค์กรขนาดใหญ่อาจมีหลายหน่วยงานที่ทำหน้าที่ต่างกัน

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

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

Portfolio manager ตัดสินใจหลายระดับ

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

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

ลองพอร์ตสมมติที่ตั้งหุ้น 60% และเงินสด 40% หากหุ้นขึ้นจนมีน้ำหนักเป็น 70% การขายหุ้นบางส่วนเพื่อกลับไป 60% อาจเป็นการรักษาแผนเดิม การเห็นคำสั่งขายไม่ได้บอกว่าผู้จัดการเปลี่ยนมุมมองว่าหุ้นจะลง ต้องอ่านเหตุผลของคำสั่งร่วมกับเป้าหมายพอร์ต

Trader สนใจอายุของโอกาสและเงื่อนไขซื้อขาย

ถ้าโอกาสที่ศึกษามีอายุสั้น เวลาที่ได้ข้อมูล เวลาที่ประมวลผล และเวลาที่คำสั่งไปถึงตลาดมีผลต่อสิ่งที่ทำได้ สัญญาณที่ดูดีด้วยราคาที่ผ่านมาแล้วอาจเหลือประโยชน์น้อยเมื่อถึงเวลาส่งคำสั่งจริง

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

Quant, Alpha และสิ่งที่ตัวเลขยังไม่บอก

Quantitative finance ใช้คณิตศาสตร์ สถิติ ข้อมูล และการคำนวณศึกษาปัญหาทางการเงิน ตั้งแต่ประเมินราคาและความเสี่ยง ไปจนถึงจัดพอร์ตและวิจัยการซื้อขาย Quant trading คือส่วนของงานที่นำวิธีเชิงปริมาณมาสร้างและประเมินกติกาซื้อขาย

คำว่า Quant จึงไม่ได้ระบุเครื่องมือชิ้นเดียว กฎที่เรียบง่ายอาจทำงานเชิง Quant ได้เมื่อกำหนดวิธีวัดและตรวจหลักฐานชัดเจน ส่วนโมเดลที่ซับซ้อนยังต้องตอบคำถามพื้นฐานเรื่องข้อมูล เวลา และความน่าเชื่อถือเหมือนกัน

Outperformance ต้องมีสิ่งที่นำมาเทียบ

สมมติพอร์ตได้ผลตอบแทน 12% ในช่วงที่ดัชนีอ้างอิงได้ 10% เราพูดได้ว่าพอร์ตชนะดัชนี 2 จุดเปอร์เซ็นต์ในช่วงนั้น แต่ต้องรู้ด้วยว่าใช้ดัชนีใด รวมเงินปันผลหรือยัง ช่วงเวลาเดียวกันหรือไม่ และผลตอบแทนของพอร์ตหักต้นทุนใดไปแล้ว

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

Beta เป็นความไวต่อปัจจัย

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

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

Alpha ต้องบอกแบบจำลองและช่วงที่ประเมิน

รูปแบบหนึ่งที่ใช้ศึกษาผลตอบแทนคือ

Rp,t−Rf,t=α+β(Rm,t−Rf,t)+εtR_{p,t}-R_{f,t}=\alpha+\beta\left(R_{m,t}-R_{f,t}\right)+\varepsilon_t

Rp,tR_{p,t} คือผลตอบแทนพอร์ตในช่วง tt, Rm,tR_{m,t} คือผลตอบแทนตลาด และ Rf,tR_{f,t} คือผลตอบแทนปลอดความเสี่ยงที่เลือกให้สอดคล้องกับช่วงเดียวกัน β\beta เป็นสัมประสิทธิ์ความไวต่อปัจจัยตลาด ส่วน α\alpha เป็นค่าคงที่และ εt\varepsilon_t เป็นส่วนคลาดเคลื่อนของแต่ละช่วงภายใต้แบบจำลองนี้

ในการประเมินจากข้อมูลหลายช่วง เราประมาณค่าสัมประสิทธิ์และตรวจความไม่แน่นอนของมัน ค่า alpha ที่ได้ขึ้นกับแบบจำลอง ปัจจัยที่ใส่ ช่วงข้อมูล และวิธีวัดผล หากเพิ่มปัจจัยที่อธิบายผลตอบแทนได้ ส่วนที่เคยถูกเรียกว่า alpha อาจเปลี่ยนไป CFA Institute: Portfolio Risk and Return

ลองกลับมาที่ตัวอย่างสมมติ พอร์ตได้ 12% ตลาดได้ 10% กำหนดอัตราปลอดความเสี่ยง 2% และ สมมติ beta เท่ากับ 1.5 ส่วนอ้างอิงตามแบบจำลองสำหรับช่วงนี้เท่ากับ

2%+1.5(10%−2%)=14%2\%+1.5(10\%-2\%)=14\%

พอร์ตยังชนะดัชนี 2 จุดเปอร์เซ็นต์ แต่ผล 12% ต่ำกว่าส่วนอ้างอิง 14% อยู่ 2 จุดเปอร์เซ็นต์ ตัวอย่างนี้แสดงว่าการชนะดัชนีกับการประเมินหลังคำนึงถึง exposure อาจให้ภาพต่างกัน

ในสมการข้างต้น ส่วนต่างจากฐาน Rf+β(Rm−Rf)R_f+\beta(R_m-R_f) นี้เท่ากับ α+εt\alpha+\varepsilon_t จึงยังไม่ใช่ εt\varepsilon_t ที่เหลือหลังประมาณทั้ง alpha และ beta แล้ว

เราเพิ่งคำนวณส่วนต่างของ หนึ่งช่วง จาก beta ที่ตั้งสมมติไว้ ยังไม่ได้ประมาณ alpha จากชุดข้อมูล และยังไม่ได้พิสูจน์ว่าผู้จัดการมีหรือไม่มีฝีมือ การเปลี่ยน beta สมมติเป็น 1 ก็ทำให้ส่วนอ้างอิงเปลี่ยนเป็น 10% แล้ว ตัวเลขจึงต้องอ่านคู่กับฐานที่ใช้คำนวณ

เปลี่ยน Alpha กับ Beta แล้วเส้นมูลค่าต่างกันอย่างไร

ภาพนี้สร้างข้อมูลสมมติ 60 ช่วง โดยให้มูลค่าเริ่มต้น 100 และอัตราปลอดความเสี่ยงเป็นศูนย์ทั้งสองกรณี กราฟแรกกำหนด α=0.20%\alpha=0.20\% ต่อช่วงและ β=1\beta=1 กราฟที่สองกำหนด α=0\alpha=0 และ β=1.3\beta=1.3 เส้นทึบคือกลยุทธ์ ส่วนเส้นประคือดัชนีอ้างอิงสมมติเดียวกัน ทั้งสองกราฟใช้สเกลเดียวกัน

ข้อมูลสมมติ 60 ช่วง เปรียบเทียบกรณี alpha 0.20% ต่อช่วง beta 1 กับกรณี alpha 0 beta 1.3 โดยใช้ดัชนีอ้างอิงเดียวกันและเริ่มมูลค่า 100

ข้อมูลสมมติ · เปิดภาพเต็ม · ดาวน์โหลดข้อมูล CSV

กราฟที่สองเห็นการแกว่งตามตลาดที่แรงขึ้น แม้กำหนด alpha เป็นศูนย์ ส่วนกราฟแรกมีค่าคงที่บวกอยู่ในสมการตั้งแต่สร้างข้อมูล ทั้งคู่ยังขาดทุนในบางช่วง เรากำหนดค่าพารามิเตอร์และส่วนคลาดเคลื่อนให้การประมาณจากชุดตัวอย่างได้ค่าเหล่านี้ จึงใช้ภาพเพื่ออธิบายแบบจำลองเท่านั้น ไม่ใช่หลักฐานว่ากลยุทธ์จริงสร้าง alpha ได้ การสะสมมูลค่าใช้ Vt=Vt−1(1+rt)V_t=V_{t-1}(1+r_t) และยังไม่รวมต้นทุนซื้อขาย

Alpha model เป็นงานพยากรณ์อีกความหมายหนึ่ง

ในระบบวิจัย คำว่า alpha model มักใช้เรียกแบบจำลองที่ให้สัญญาณเกี่ยวกับโอกาสในอนาคต ผลลัพธ์อาจเป็นผลตอบแทนที่คาด คะแนนจัดอันดับ หรือความน่าจะเป็นของเหตุการณ์ ผู้สร้างต้องบอกว่าผลลัพธ์แบบใดและใช้กับกรอบเวลาใด

คะแนน 0.8 ไม่ได้แปลว่าราคามีโอกาสขึ้น 80% เว้นแต่โมเดลนิยามและตรวจการปรับเทียบให้เป็นความน่าจะเป็นเช่นนั้น การคาดว่าขึ้นบ่อยก็ยังไม่บอกผลตอบแทนคาดหวัง หากขนาดกำไรและขาดทุนต่างกัน

ตัวอย่างสมมติหนึ่งให้โอกาสขึ้น 2% เท่ากับ 55% และโอกาสลง 3% เท่ากับ 45% ผลตอบแทนคาดหวังก่อนต้นทุนภายใต้ตัวเลขนี้คือ

0.55(2%)+0.45(−3%)=−0.25%0.55(2\%)+0.45(-3\%)=-0.25\%

แม้โมเดลให้โอกาสทิศทางขึ้นมากกว่าลง แต่ขนาดการลงทำให้ค่าเฉลี่ยติดลบ ความน่าจะเป็นเหล่านี้เองก็เป็นสมมติฐานที่ต้องตรวจ ไม่ใช่ค่าที่เราทราบจริงจากอนาคต

คำว่า alpha model จึงบอกหน้าที่ของส่วนหนึ่งในระบบ ส่วน estimated alpha บอกผลการประเมินภายใต้แบบจำลองสถิติ เราต้องรู้ว่ากำลังใช้คำนี้ในความหมายใดก่อนตีความตัวเลข

The Quant Universe

Quantitative Trading, Algorithmic Trading และ HFT เกี่ยวข้องกันผ่านงานวิจัย การสร้างพอร์ต และการดำเนินคำสั่ง แต่ละคำบอกขอบเขตงานต่างกัน เราจึงควรระบุหน้าที่ที่ระบบของเราต้องทำก่อนเลือกเครื่องมือ

คำคำถามที่ช่วยให้เห็นหน้าที่ตัวอย่าง
Quantitative tradingใช้ข้อมูลและแบบจำลองประเมินการตัดสินใจอย่างไรวิจัยความสัมพันธ์ระหว่างสัญญาณกับผลตอบแทนภายหลัง
Algorithmic tradingมอบขั้นตอนใดให้โปรแกรมดำเนินตามกฎแบ่งคำสั่งเป็นส่วนย่อยและปรับวิธีส่งตามสถานะตลาด
High-frequency tradingต้องใช้โครงสร้างและการตอบสนองเร็วเพียงใดกลยุทธ์บางกลุ่มที่จัดการคำสั่งและความเสี่ยงในช่วงสั้นมาก
Machine learningใช้วิธีเรียนรู้จากข้อมูลสร้างแบบจำลองส่วนใดประมาณผลลัพธ์จากคุณลักษณะแล้วตรวจบนข้อมูลใหม่

SEC จัด HFT เป็นส่วนย่อยหนึ่งของ algorithmic trading และอธิบายการใช้อัลกอริทึมในงานจัดการและส่งคำสั่งด้วย เราจึงสร้างระบบจัดพอร์ตเดือนละครั้งโดยใช้โปรแกรมได้ และระบบ execution อัตโนมัติก็ไม่จำเป็นต้องมี Machine Learning อยู่ข้างใน SEC: Report to Congress on Algorithmic Trading

ข้อมูลและการวิจัยเชิง Quant อาจนำไปทำงานอัตโนมัติ โดย HFT เป็นส่วนหนึ่งของ Algorithmic trading และต้องประเมิน Alpha จากหลักฐาน

เปิดภาพเต็ม · แก้ไขผังใน Excalidraw

ข้อมูลต้องมาถึงทันเวลาที่ใช้ตัดสินใจ

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

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

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

สัญญาณ พอร์ต และคำสั่งมีหน้าที่ต่างกัน

สมมติ alpha model ให้คะแนนสินทรัพย์ A สูงขึ้น ยังมีงานต่ออีกหลายข้อ: ตอนนี้ถือ A อยู่แล้วเท่าไร สินทรัพย์อื่นในพอร์ตเสี่ยงคล้ายกันหรือไม่ ถ้าขยับสัดส่วนจะเสียต้นทุนเท่าไร และขนาดที่ต้องการซื้อมีสภาพคล่องพอหรือไม่

Risk model ช่วยอธิบายและประเมินความเสี่ยงของการถือร่วมกัน แบบจำลองต้นทุนช่วยประมาณผลจากการซื้อขาย ส่วน portfolio construction นำข้อมูลเหล่านี้มาประกอบเป้าหมายการถือครอง แล้วจึงเทียบกับสถานะปัจจุบันเพื่อหาส่วนที่ต้องปรับ

จากการพยากรณ์ ผ่านความเสี่ยงและต้นทุน สู่พอร์ตเป้าหมาย คำสั่ง และการตรวจผล

เปิดภาพเต็ม · แก้ไขผังใน Excalidraw

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

Execution ต้องติดตามสิ่งที่เกิดจริง

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

ตัวอย่างเช่น ระบบต้องการถือ 10 หน่วย มีอยู่ 6 และมีคำสั่งซื้ออีก 4 ที่ยังรออยู่ หากตรวจสัญญาณรอบถัดไปแล้วลืมคำสั่งค้าง อาจเสนอซื้อเพิ่มอีก 4 ทั้งที่ความต้องการเดิมถูกส่งไปแล้ว การเก็บสถานะคำสั่งจึงเชื่อมโดยตรงกับการควบคุมจำนวนที่ถือ

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

HFT เป็นโจทย์เฉพาะด้านหนึ่ง

เมื่ออายุของโอกาสสั้นมาก ตำแหน่งในคิวคำสั่ง ความหน่วง ข้อมูลคำสั่ง และกติกาของตลาดอาจมีบทบาทมาก การศึกษาส่วนนี้ต้องเข้าใจ market microstructure หรือโครงสร้าง กติกา และพฤติกรรมที่ทำให้การซื้อขายเกิดขึ้น

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

Alpha models: ไอเดียมาจากไหน

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

แนวทาง theory-driven เริ่มจากสมมติฐานเกี่ยวกับพฤติกรรม เศรษฐกิจ หรือโครงสร้างตลาด เช่น ผู้ลงทุนอาจรับรู้ข่าวใหม่ไม่พร้อมกัน เราจึงลองตรวจว่าหลังข่าวบางชนิด ราคายังเคลื่อนไหวต่อในทิศทางเดิมหรือไม่ สมมติฐานช่วยกำหนดว่าจะเก็บอะไรและคาดเห็นอะไร แต่ต้องยอมให้ผลทดลองปฏิเสธมันได้ ถ้าผลปรากฏเฉพาะวันที่เราคัดเลือกด้วยมือ คำอธิบายที่ฟังสมเหตุสมผลยังไม่พอ

แนวทาง data-driven เริ่มจากการค้นหารูปแบบในข้อมูล อาจใช้วิธีสถิติง่าย ๆ หรือ Machine Learning เพื่อดูว่าตัวแปรใดช่วยพยากรณ์เป้าหมายได้ จากนั้นต้องตรวจว่ารูปแบบยังอยู่ในข้อมูลใหม่หรือเกิดจากวิธีเลือกตัวอย่าง การทดลองหลายพันรูปแบบแล้วรายงานเฉพาะผู้ชนะทำให้เราประเมินความสามารถสูงเกินจริงได้ แม้ผู้ชนะจะมีกราฟที่ดูเรียบร้อยมากก็ตาม

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

สองจุดเริ่มของการวิจัย จากสมมติฐานหรือจากรูปแบบในข้อมูล ผ่านการกำหนดเป้าหมายและตรวจข้อมูล ก่อนทดสอบกับข้อมูลใหม่

เปิดภาพเต็ม · แก้ไขผังใน Excalidraw

ใช้ข้อมูลราคา แต่คาดหวังพฤติกรรมต่างกัน

Trend following ตั้งคำถามว่าการเคลื่อนไหวที่ผ่านมาอาจดำเนินต่อในช่วงที่เราสนใจหรือไม่ สมมติราคาทองเหลืองเปลี่ยนจาก 100 เป็น 103 แล้วเป็น 106 เราอาจสร้างกฎจากผลตอบแทนย้อนหลังหรือการเทียบค่าเฉลี่ย แต่ตัวเลขสามตัวนี้ยังพิสูจน์แนวโน้มที่ซื้อขายได้ไม่ได้ ต้องกำหนดว่าจะมองย้อนหลังนานเท่าไร ถือหรือทบทวนนานเท่าไร และยอมรับความเสียหายอย่างไรเมื่อราคาสลับทิศไปมา

การดูแนวโน้มของสินทรัพย์เองต่างจากการจัดอันดับว่าตัวใดขึ้นมากกว่าตัวอื่น ในกรณีแรกสินทรัพย์อาจได้สัญญาณลบเพราะราคาของมันลดลง แต่ในกรณีหลังมันอาจอยู่อันดับสูงเพราะตัวอื่นลดหนักกว่า งาน Time Series Momentum แยกสองลักษณะนี้ไว้ การตั้งชื่อทั้งคู่สั้น ๆ ว่า momentum จึงควรตามด้วยคำอธิบายว่ากำลังวัดแบบใด

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

ในงานจับคู่สินทรัพย์ เราอาจพิจารณาความสัมพันธ์สมมติ

zt=PA,t−hPB,tz_t=P_{A,t}-hP_{B,t}

โดยราคา A และ B ใช้หน่วยที่สอดคล้องกัน และ hh เป็นสัมประสิทธิ์ที่ประมาณจากช่วงข้อมูลที่กำหนด คำว่าอยู่กับที่กล่าวถึงคุณสมบัติทางสถิติ เช่น ค่าเฉลี่ยและความแปรปรวนที่ไม่เปลี่ยนตามเวลา ตัวเลขยังขึ้นลงได้ หากทั้งสองราคาเป็นอนุกรมไม่อยู่กับที่แบบ I(1)I(1) ซึ่งผลต่างอันดับหนึ่งอยู่กับที่ เราอาจตรวจว่ามี hh ที่ทำให้ ztz_t อยู่กับที่หรือไม่ แนวคิดนี้เรียกว่า cointegration สมการจริงอาจต้องมีค่าคงที่หรือแนวโน้มเพิ่มเติม ส่วนสมการข้างต้นใช้แสดงรูปแบบอย่างง่าย

Correlation บอกระดับการเคลื่อนไหวร่วมกันของชุดข้อมูลที่นำมาคำนวณ ส่วน cointegration ถามเรื่องความสัมพันธ์ระยะยาวของอนุกรมตามสมมติฐานข้างต้น การพบ correlation สูงในราคาหรือผลตอบแทนจึงยังสรุปว่ามี cointegration ไม่ได้ เอกสาร statsmodels: coint ระบุว่าการทดสอบนี้สมมติให้ตัวแปรเป็น I(1)I(1) และตั้งสมมติฐานหลักว่าไม่มี cointegration ผลทดสอบในอดีตยังไม่รับรองว่าความสัมพันธ์จะคงอยู่ หรือว่าซื้อขายแล้วเหลือกำไรหลังต้นทุน

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

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

ใช้ข้อมูลกิจการ ต้องรู้ว่ากำลังวัดอะไร

Value และ yield ชวนให้เทียบราคากับสิ่งที่สินทรัพย์สร้างหรือมีอยู่ สมมติโรงหลอม A ราคา 80 เหรียญต่อหุ้นและมีกำไร 8 เหรียญต่อหุ้น จึงมี P/E 10 เท่า โรงหลอม B ราคา 90 และกำไร 6 มี P/E 15 เท่า ถ้าใช้ข้อมูลกำไรชุดเดียวกัน E/P จะเป็น 10% และประมาณ 6.67% ตามลำดับ ตัวเลขนี้เป็นอัตราส่วนทางบัญชีต่อราคา ยังไม่ใช่ผลตอบแทนที่ผู้ถือจะได้รับแน่นอน

ถ้ากำไร 8 ของ A มีรายได้ครั้งเดียวรวมอยู่ด้วย และกำไรที่คาดว่าจะเกิดซ้ำเหลือ 2 การประเมินด้วยกำไรฐานนั้นจะให้ P/E 40 เท่า ความต่างนี้บังคับให้เราระบุว่ากำไรย้อนหลังหรือประมาณการ ครอบคลุมช่วงใด และประกาศให้รู้แล้วเมื่อไร Yield สูงอาจสะท้อนราคาต่ำ ความเสี่ยงสูง หรือรายได้ที่ตลาดคาดว่าจะลดลง จึงต้องอ่านตัวเศษและตัวส่วนพร้อมกัน

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

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

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

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

จากกลุ่มแนวคิดไปสู่ข้อกำหนดโมเดล

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

กลุ่ม Price และ Fundamentals แยกเป็น Trend following, Mean reversion, Technical sentiment, Yield, Growth และ Quality ก่อนกำหนดเป้าหมาย กรอบเวลา สถานะ กลุ่มสินทรัพย์ สูตร เงื่อนไข และความถี่

เปิดภาพเต็ม · แก้ไขผังใน Excalidraw

ออกแบบโมเดลให้ตอบคำถามเดียวกัน

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

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

ข้อกำหนดสิ่งที่ต้องเขียนให้ตรวจได้
Forecast target: พยากรณ์อะไรผลตอบแทน ทิศทาง ความผันผวน หรืออันดับสินทรัพย์ ใช้หน่วยอะไร และหักต้นทุนแล้วหรือยัง
Time horizon: มองไปไกลแค่ไหนระบุว่าพยากรณ์จากเวลาใดถึงเวลาใด นับเป็นวันทำการหรือวันปฏิทิน และใช้กรอบเวลาพยากรณ์เดียวกันทั้งตอนฝึกและตรวจโมเดล ส่วนการปรับพอร์ต (rebalance) ให้กำหนดแยกว่าจะทำบ่อยแค่ไหน
Bet structure: วางสถานะอย่างไรซื้อสินทรัพย์เดียว ซื้อกลุ่มที่เลือก หรือถือสองด้านของความสัมพันธ์ ใครกำหนดขนาดและเงื่อนไขออก
Investment universe: เลือกจากอะไรตลาด สกุลเงิน ประเภทสินทรัพย์ และเกณฑ์สภาพคล่อง รวมถึงสมาชิกที่มีสิทธิ์ถูกเลือก ณ เวลานั้น
Model definition: คำนวณอย่างไรสูตร ตัวแปร ช่วงย้อนหลัง พารามิเตอร์ และวันที่เริ่มใช้แต่ละรุ่น
Conditioning variables: ใช้เมื่อใดเงื่อนไขที่เปิด ปิด หรือลดน้ำหนักสัญญาณ พร้อมวิธีวัดที่รู้ได้ในเวลาตัดสินใจ
Run frequency: ตรวจบ่อยแค่ไหนเวลารับข้อมูล ประเมินสัญญาณ ทบทวนพอร์ต และเงื่อนไขที่ทำให้ต้องสร้างคำสั่งใหม่

Target และ horizon ต้องอ่านคู่กัน คะแนน 0.7 อาจเป็นความน่าจะเป็นที่ผลตอบแทนเป็นบวก เป็นคะแนนจัดอันดับ หรือค่าที่โมเดลปรับให้อยู่ในช่วงหนึ่ง ถ้าไม่ระบุความหมาย เราไม่ควรเอาไปคูณเงินลงทุนทันที เช่นเดียวกับผลตอบแทนคาดการณ์ 1% ที่อาจหมายถึงพรุ่งนี้หรืออีกหนึ่งปี ความไม่แน่นอนและต้นทุนที่เกี่ยวข้องย่อมต่างกัน

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

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

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

การเขียนข้อกำหนดเจ็ดด้านนี้ทำให้เราเลือกตรวจทีละประเด็นได้ เมื่อเปลี่ยน horizon ต้องสร้างเป้าหมายใหม่ เมื่อเปลี่ยน universe ต้องตรวจข้อมูลและต้นทุนใหม่ เมื่อเปลี่ยนความถี่ประเมินต้องตรวจการใช้ข้อมูลซ้ำและวงจรคำสั่ง การตั้งชื่อโมเดลเดิมไม่ได้ทำให้การเปลี่ยนเหล่านี้เป็นการทดลองเดิม

สรุป

การสร้าง Robo Trade เริ่มจากการเขียนให้ชัดว่าเราจะตัดสินใจอย่างไร ใช้ข้อมูลอะไร และยอมให้โปรแกรมทำงานส่วนไหน กฎเหล่านี้ช่วยให้เราทดสอบแนวคิด ทำงานซ้ำ และตรวจย้อนหลังได้ว่าเหตุใดจึงซื้อ ขาย หรือรอ คนยังเป็นผู้เลือกสมมติฐานและแก้กฎ จึงต้องบันทึกเหตุผลของการเปลี่ยนแผนด้วย

Trading กับ Investing มีวิธีทำงานที่ซ้อนกันได้ สิ่งที่ต้องระบุคือเราถือสินทรัพย์เพราะอะไร คาดหวังผลในช่วงเวลาใด และหลักฐานแบบไหนทำให้ต้องทบทวนการถือ เมื่อคำตอบเหล่านี้ชัด เราจึงเลือกข้อมูล วิธีวัดผล และความถี่ในการตัดสินใจให้สอดคล้องกันได้

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

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

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

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

© 2023 by QuantCorner, Thailand.

bottom of page