เริ่มด้วยตัวเลขเลย เพราะตัวเลขคือสาระทั้งหมดของเรื่องนี้ การเทรดแบบ taker ครบรอบไป-กลับบนกระดาน perp รายใหญ่มีต้นทุนค่าคอมมิชชันราว 0.10% ของ notional ส่วน funding ในฝั่ง long ที่คนแออัดอยู่อาจกินเราถึง 10-30% ต่อปี คำสั่ง market ที่ใหญ่เมื่อเทียบกับความลึกของ top-of-book ยังต้องจ่ายผลกระทบตามกฎรากที่สองเพิ่มจากสเปรดอีก และ backtest ที่อ่านข้อมูลเมื่อวานในเวอร์ชันที่ถูกแก้ไขวันนี้ ก็จะได้ edge มูลค่าหลายเปอร์เซ็นต์ต่อปีที่ไม่เคยมีอยู่จริง
ตัวเลขที่น่าประหลาดใจคือตัวแรก ไม่ใช่เพราะมันใหญ่ แต่เพราะสิ่งที่มันทำกับความถี่ในการเทรด ทุกคนพยักหน้ากับคำว่า "ใส่ค่าธรรมเนียมด้วย" แล้วก็ไปทดสอบกลยุทธ์ที่เทรดวันละสี่สิบครั้ง ที่ 0.10% ต่อรอบ สี่สิบเทรดคือต้นทุน 4% ของ notional ต่อวัน ไม่มีสัญญาณไหนบน perp ระดับกลางที่ผ่านเกณฑ์นั้นได้ กลยุทธ์นั้นไม่ได้ใกล้เคียงกับคำว่าใช้ได้เลย แต่ backtest ที่ไม่คิดค่าธรรมเนียมบอกว่ามันยอดเยี่ยม
ค่าธรรมเนียมคือตัวกรอง ไม่ใช่แค่การหักออกนิดหน่อย
ภาพในหัวที่คนส่วนใหญ่มีคือค่าธรรมเนียมจะเกลาเส้นทุนลงมา รูปทรงเดิม แค่ต่ำลงเล็กน้อย นั่นผิด ค่าธรรมเนียมคือตัวกรองความถี่ มันลบ edge เวอร์ชันความถี่สูงทิ้งทั้งดุ้น และแทบไม่แตะเวอร์ชันที่เทรดช้า ตอนที่ไปป์ไลน์ของเราเริ่มบังคับใช้ตาราง maker/taker จริงรายกระดาน กลยุทธ์ที่ตายไม่ใช่ไอเดียแย่ ๆ แต่เป็นไอเดียดี ๆ ที่เทรดถี่เกินไป ทางแก้มักเป็นการขยับไป timeframe ที่ยาวขึ้น ไม่ใช่การหาสัญญาณที่ดีกว่า ตอนนี้เราทิ้งทุกอย่างที่ผลตอบแทนเฉลี่ยต่อเทรดต่ำกว่า 0.15% ของ notional เพราะหลังหักต้นทุนสองขาแล้วไม่เหลืออะไรให้ทบต้น
Funding คือภาษีสถานะที่มีความจำ
สัญญา perpetual futures จ่าย funding ทุกชั่วโมงหรือทุกแปดชั่วโมง และมันไม่ใช่สัญญาณรบกวน มันสัมพันธ์เชิงโครงสร้างกับเทรดแบบเดียวกับที่ระบบโมเมนตัมอยากเข้าพอดี เมื่อทุกคน long ค่า funding เป็นบวก และสถานะ long ตามโมเมนตัมของคุณคือคนจ่าย backtest ที่ไม่คิด funding accrual จึงเชิดชูกลยุทธ์ตามเทรนด์บน perp อย่างเป็นระบบ เราเรียนรู้เรื่องนี้แบบน่าอาย — กลยุทธ์ตระกูล funding-carry ทั้งตระกูลถูกระบบสั่งเลิกอัตโนมัติ เพราะเอนจินไม่ได้เครดิต funding ที่กลยุทธ์เหล่านั้นถูกออกแบบมาเก็บเกี่ยว สัญญาณไม่มีปัญหา แต่บัญชีมันหายไป
ผลกระทบต่อราคาโตตามรากที่สองของขนาดไม้
คำโกหกสุภาพของ backtest ที่อิงแท่งเทียนคือ คุณได้ฟิลที่ราคาปิด สำหรับไม้เล็ก ๆ นั่นก็พอจริงอยู่ แต่สำหรับอะไรที่ขนาดมีนัยสำคัญ โมเดลที่ยอมรับกันคือผลกระทบโตตามรากที่สองของขนาดคำสั่งเทียบกับวอลุ่ม และมันไม่เคยคืนกลับมา เราจึงพับค่าประมาณผลกระทบตามกฎรากที่สองเข้าไปในทุกฟิลและในเส้น equity เองด้วย มันสำคัญที่สุดตรงจุดที่ไม่สะดวกที่สุดพอดี นั่นคือ capacity กลยุทธ์หนึ่งอาจทำกำไรได้จริงที่เงิน $50k และขาดทุนเชิงโครงสร้างที่ $5M และมีแต่เส้น equity ที่รู้จักผลกระทบเท่านั้นที่แสดงเส้นแบ่งนั้นให้เห็น
การมองเห็นอนาคตซ่อนอยู่ในข้อมูล ไม่ใช่ในโค้ด
ไม่มีใครเขียน if tomorrow_close > today_close: buy() หรอก การมองเห็นอนาคตแอบเข้ามาทางท่อข้อมูล เช่น sentiment จากข่าวที่ประทับเวลาตอนเผยแพร่แทนที่จะเป็นตอนที่เรารับข้อมูลเข้ามา, อัตรา funding ที่ join ด้วยช่วงเวลาที่มันครอบคลุมแทนที่จะเป็นตอนที่รู้ค่าจริง, จักรวาลสัญลักษณ์ "ปัจจุบัน" ที่เอาไปใช้กับข้อมูลอดีต (survivorship) และตัวเลขเศรษฐกิจฉบับแก้ไขที่เข้าไปแทนที่ตัวเลขที่ออกสู่ตลาดจริง ๆ กฎของเราคือ point-in-time ทุกที่ ทุกชุดข้อมูลเสริมประทับเวลาด้วยจังหวะที่เราจะรู้ได้จริง และ backtest อ่านได้เฉพาะสิ่งที่มีอยู่จริง ณ นาโนวินาทีนั้น
บทพิสูจน์ของ backtest ไม่ใช่ว่าเส้นทุนขึ้นหรือไม่ แต่คือโค้ดชุดเดียวกันที่ป้อนสัญญาณเดียวกันในตลาดจริงจะออกคำสั่งเทรดชุดเดียวกันหรือเปล่า — และคุณจะรู้ได้ก็ต่อเมื่อตรวจสอบทุกวัน ตลอดไป
ประโยคสุดท้ายนั้นคือกระบวนการจริง ไม่ใช่สโลแกน ทุกวันเราเล่นย้อนหน้าต่างเวลาของกลยุทธ์ที่เทรดกระดาษแต่ละตัวผ่านเอนจิน backtest แล้วเทียบเทรดทีละไม้ เมื่อผลเทรดกระดาษกับผล replay ไม่ตรงกัน ต้องมีฝ่ายหนึ่งกำลังโกหก และมักเป็นเรื่องต้นทุนหรือ timestamp สี่รายการข้างต้นก็แค่รายการที่โกหกเราเป็นกลุ่มแรกเท่านั้น
← บทความทั้งหมด