สารบัญบทความ

หลักฐานและขอบเขต

งานวิจัยรายงานผลตอบแทนรวม+1,985%, IRR19.6%, Sharpe1.33 และการลดลงสูงสุดจากจุดสูงสุด25% ในช่วงพฤษภาคม2007–เมษายน2024 รวมค่าคอมมิชชั่นและslippageตามสมมติฐาน เป็นผลที่ผู้เขียนรายงาน บทความนี้ไม่ได้ทดสอบซ้ำอย่างอิสระ [1]

ข้อมูลและตลาดงานวิจัยหลักใช้ข้อมูล SPY รายหนึ่งนาที ETF อื่นและโครงสร้างช่วงการซื้อขายอื่นต้องปรับเทียบและตรวจสอบแยกต่างหาก
กรอบเวลาที่ใช้วิจัยประมาณแถบราคาจาก14เซสชันก่อนหน้า และตัดสินใจตามจุดตรวจทุกครึ่งชั่วโมงที่กำหนด
ส่วนต่างจากเกณฑ์ถือซื้อเป็นบวก ณ จุดตัดสินใจ และเป็นลบที่จุดตัดสินใจถัดมา แสดงการเข้าและออกตามกำหนดเปิดภาพประกอบขนาดเต็ม
ข้อมูลจำลอง แกนตั้งแสดงค่าปิดลบ max(upper band, VWAP) ในหน่วยดอลลาร์ ไม่ใช่ราคาของ SPY เครื่องหมายแสดงจุดตรวจสอบการตัดสินใจ ค่าบวกระหว่างจุดตรวจสอบไม่ได้หมายความว่ามีการสั่งซื้อเกิดขึ้น

ขั้นตอนปฏิบัติ

ขั้นตอนสำหรับ SPY แถบสัญญาณรบกวนและ VWAP โมเมนตัม: แผนงานวิจัย
ขั้นตอนทั้งหมดอธิบายไว้ด้านล่าง ทุกขั้นต้องบันทึกเหตุผลที่คัดออกเมื่อข้อมูลไม่ครบหรือเงื่อนไขไม่ผ่าน
  1. เตรียมข้อมูลย้อนหลังจัด14เซสชันก่อนหน้าให้ตรงเวลาภายในวัน แล้วคำนวณความผันผวนรายวัน
  2. สร้างแถบราคาอ้างอิงจากราคาเปิดและราคาปิดก่อนหน้า โดยใช้การดำเนินการของบริษัทที่สอดคล้องกัน
  3. อัปเดต VWAPใช้ปริมาณซื้อขายเซสชันปัจจุบันที่ได้รับแล้วเท่านั้น
  4. ประเมินตามกำหนดเวลาหลังแท่งที่จุดตรวจปิด กำหนดเป้าหมายถือซื้อ ขายชอร์ต หรือไม่มีสถานะ
  5. ดำเนินการและชำระบัญชีคิดต้นทุนทุกการเปลี่ยนสถานะและปิดทั้งหมดภายในเส้นตายของเซสชัน
  6. แยกผลของแต่ละองค์ประกอบเปรียบเทียบแถบราคา VWAP และการปรับขนาดด้วยข้อมูลตรวจสอบที่ยังไม่เคยใช้

กรอบราคาที่ขึ้นกับเวลาภายในวัน

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

สำหรับเวลา k ให้กำหนด sigma(d, k) = mean(abs(P(d−j, k)/Open(d−j)−1), j=1…14) การใช้เฉพาะเซสชันก่อนหน้าที่เสร็จสมบูรณ์แล้วทำให้เส้นฐานเป็นเหตุเป็นผล ขอบเขตบนคือ U(d, k)=max(Open(d), PreviousClose(d))×(1+sigma(d, k)); ค่าล่างคือ L(d, k)=min(Open(d), PreviousClose(d))×(1−sigma(d, k)) ตัวยึดที่คำนึงถึงช่องว่างทำให้ซองกว้างขึ้นในช่วงช่องว่างข้ามคืน

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

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

การจัดเรียงข้อมูลจะกำหนดว่าสิ่งใดที่สามารถทราบได้

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

สร้างเมทริกซ์อดีตตามเซสชันของตลาดและเวลาบนนาฬิกา ต้องจัดการวันหยุด การเปลี่ยนเวลาออมแสง และวันซื้อขายสั้นตามปฏิทิน ข้อมูล10:00ที่ขาดหายไม่ใช่ผลตอบแทนศูนย์ ระบุว่าจะตัดเซสชันอดีตที่ไม่ครบหรือปิดการตัดสินใจปัจจุบัน

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

เซสชั่น VWAP ต้องใช้เฉพาะการซื้อขายที่ได้รับหรือแท่งราคาที่เสร็จสมบูรณ์แล้วเท่านั้น การประมาณค่าแบบอิงแท่งราคา สามารถใช้ราคาเฉลี่ย (H+L+C)/3 โดยถ่วงน้ำหนักด้วยปริมาณแท่งราคา ซึ่งแตกต่างจากเกณฑ์มาตรฐานระดับธุรกรรม ควรวัดความแตกต่างเมื่อมีข้อมูลที่มีความละเอียดสูงกว่า โดยเฉพาะอย่างยิ่งสำหรับแท่งราคาที่มีช่วงกว้าง

แปลงแนวคิดให้เป็นกฎตำแหน่งเป้าหมายที่ชัดเจน

แบบวิจัยนี้ประเมินเฉพาะจุดตรวจทุกครึ่งชั่วโมงที่กำหนด ถ้าราคาเหนือmax(U, VWAP)เป้าหมายคือถือซื้อ ถ้าต่ำกว่าmin(L, VWAP)คือขายชอร์ต กรณีอื่นเป้าหมายคือไม่มีสถานะ ส่งเป้าหมายหลังได้รับข้อมูลแท่งนั้นแล้ว การปิดเพื่อป้องกันตลอดเวลาและการปรับสถานะตามกำหนดเป็นกฎต่างกัน ห้ามถือว่าเหมือนกันโดยไม่ระบุ

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

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

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

before_session(d):
    bands = build_from_completed_sessions(d, lookback=14)
    daily_vol = sample_std(previous_14_daily_returns)
    if data_incomplete or not isfinite(daily_vol) or daily_vol <= 0:
        disable_session(); return
    multiplier = min(4, 0.02 / daily_vol)
    shares = floor(previous_equity * multiplier / session_open)
on_completed_bar(k):
    if is_liquidation_deadline(k):
        cancel_pending_entries(); submit_flat(); return
    if session_disabled: return
    update_session_vwap()
    if is_decision_time(k):
        target = 1 if close > max(upper[k], vwap) else (
                 -1 if close < min(lower[k], vwap) else 0)
        submit_target_after_available_at(target * shares)

การปรับขนาดสถานะตามความผันผวนเปลี่ยนการรับความเสี่ยง

ข้อกำหนดขนาดสถานะแบบหนึ่งคือ multiplier = min(4, 0.02/s) โดย s คือส่วนเบี่ยงเบนมาตรฐานของตัวอย่างจากผลตอบแทนรายวัน 14 ค่าก่อนหน้าที่จบแล้ว จำนวนหุ้นเท่ากับ floor(previous account equity × multiplier / session open) เป้าหมาย 2% และเพดานเลเวอเรจเป็นส่วนหนึ่งของการกำหนดค่านี้ มิใช่คำแนะนำความเสี่ยงสากล

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

ควรแสดงเวอร์ชันที่ใช้เลเวอเรจกับเวอร์ชันที่ไม่ใช้เลเวอเรจแยกกัน ในงานวิจัย เวอร์ชันอัตราทดหนึ่งเท่ารายงานผลตอบแทนรวม +380%, IRR 9.7%, Sharpe 1.24 และการลดลงสูงสุดจากจุดสูงสุด 12% [1] ไม่อาจอธิบายความแตกต่างของผลการดำเนินงานทั้งหมดด้วยสัญญาณเข้าที่ดีขึ้น หากนโยบายการเปิดรับความเสี่ยงเปลี่ยนไปด้วย

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

เลขคณิตสังเคราะห์และการต่อที่ไม่สำเร็จ

สมมติว่าราคาปิดก่อนหน้าคือ 500 ราคาเปิดวันนี้คือ 505 และค่าซิกมา ณ จุดตรวจสอบคือ 0.003 จากนั้นจะเป็น U=505×1.003=506.515 และ L=500×0.997=498.50 ความไม่สมมาตรเกิดจากช่องว่างราคาเปิด แถบสมมาตรรอบ 505 จะไม่ใช่การคำนวณแบบเดียวกัน

ที่ 10:00 ให้ VWAP เป็น 506.20 และราคาปิดที่เสร็จสมบูรณ์คือ 506.80 กฎที่เสนอมีเป้าหมายเป็นการซื้อ (long) เนื่องจาก 506.80 สูงกว่า max(506.515,506.20) หากคำสั่งซื้อขายเสร็จสมบูรณ์ที่ 506.86 และปิดที่ 509.00 กำไรจากราคาจะเป็น $2.14 ต่อหุ้นก่อนหักค่าใช้จ่าย การดำเนินการซื้อขายนั้นตั้งใจให้เกิดขึ้นช้ากว่าและแตกต่างจากราคาปิดของสัญญาณ

กรณีล้มเหลว ราคาปิด10:30คือ506.30 ขอบบนใหม่506.60 และVWAP506.50 เป้าหมายจึงเป็นไม่มีสถานะ ถ้าออกจริง506.24จากจุดเข้า506.86 ขาดทุน$0.62ต่อหุ้น ห้ามนำการตัดลงใต้แถบก่อนหน้านั้นมาย้อนให้ราคาปิดสถานะที่ดีกว่าแก่กฎตัดสินใจตามกำหนด

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

หลักฐานที่ตีพิมพ์และการเปรียบเทียบที่สามารถทำซ้ำได้

อัตราความสำเร็จรายวันของเอกสารนี้คือ 43% ในขณะที่ตารางการซื้อขายรายงาน 37% จากการซื้อขาย 7,668 [1] ตัวเลขเหล่านี้ตอบคำถามที่แตกต่างกัน เก็บ IRR ผลตอบแทนรวม อัตราการชนะต่อการซื้อขาย และความถี่ของวันที่ทำกำไรไว้ในช่องแยกต่างหาก

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

ไฟล์ README ของแหล่งเก็บข้อมูลสาธารณะแยกต่างหาก รายงานค่า Sharpe นอกช่วงตัวอย่าง 0.39 ผลตอบแทนรายปี 4.8% และการลดลงสูงสุด 18.5% สำหรับเดือนพฤษภาคม 2024 ถึงมีนาคม 2026 เมื่อเทียบกับค่า Sharpe ในช่วงตัวอย่าง 1.34 มีการตรวจสอบเฉพาะไฟล์ README เท่านั้น ข้อมูลที่ได้รับอนุญาตและการดำเนินการทั้งหมดไม่ได้ถูกจำลองขึ้นใหม่โดยอิสระ [3]

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

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

ข้อผิดพลาดที่พบบ่อย

การแทนที่สถิติเสียงรบกวนโดยไม่เปลี่ยนชื่อตัวแปร

การเปลี่ยนแปลงเฉลี่ยสัมบูรณ์ของการเปิดตามเวลาไม่ใช่ค่าเบี่ยงเบนมาตรฐานแบบเคลื่อนที่ การแทนที่นี้เปลี่ยนทั้งมาตราส่วนเกณฑ์และการตีความทางเศรษฐกิจ

การส่งสัญญาณตามกำหนดเวลาเพื่อดำเนินการอย่างต่อเนื่อง

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

การกำหนดตัวอย่างโค้ดแบบรวมให้กับส่วนประกอบเดียว

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

รายการตรวจสอบก่อนใช้วิธีนี้

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

0/8 ข้อ

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

VWAP เหมือนกับแถบสัญญาณรบกวนด้านบนหรือด้านล่างหรือไม่?

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

ตัวเลข Sharpe ที่รายงานมานั้นสะท้อนถึงผลกำไรในปัจจุบันหรือไม่?

ไม่ มันอธิบายถึงตัวอย่างและแบบจำลองต้นทุนเฉพาะเท่านั้น หลักฐานในระยะหลัง การจำลองการดำเนินการ และความไม่แน่นอนจะต้องได้รับการประเมินแยกต่างหาก

แหล่งวิจัย

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

  1. Beat the Market: An Effective Intraday Momentum Strategy for S&P500 ETF (SPY)Zarattini, Aziz, Barbon — bản 03/02/2025. อ่านไฟล์ PDF ฉบับเต็ม รวมถึงเวอร์ชันลงวันที่ 3 กุมภาพันธ์ 2025 ตาราง 3 และ 4 ปรากฏบนหน้ากระดาษจริงและหน้าพิมพ์ 15 และ 16 ไม่มีการจำลองข้อมูลใหม่เกิดขึ้น ตรวจสอบเมื่อ: .
  2. Designing a Profitable Intraday Strategy Using Python and AlpacaConcretum Group. อ่านบทความและโค้ดสาธารณะของผู้เขียนแล้ว ตัวอย่างที่สมบูรณ์ประกอบด้วยส่วนประกอบช่องว่างข้ามคืนเพิ่มเติม และไม่ใช่การจำลองโมเมนตัมที่บริสุทธิ์โดยอัตโนมัติ ตรวจสอบเมื่อ: .
  3. Out-of-Sample Evaluation of an Intraday Momentum Strategy for SPYSheimy Paz Serpa. ตรวจเฉพาะREADME ไม่ได้สร้างซ้ำอย่างอิสระด้วยข้อมูลนำเข้าที่ต้องมีสิทธิ์ใช้งานครบชุด หรือทวนการจับคู่คำสั่งนอกตัวอย่างที่รายงาน ตรวจสอบเมื่อ: .

วิธีการที่เกี่ยวข้อง

หมายเหตุความเสี่ยง

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

ตรวจสอบกฎก่อนเสี่ยงด้วยเงินจริง

ตรวจสอบความสามารถของแอป ข้อมูล และแต่ละรายการซื้อขายจำลอง ตัวตรวจจับขั้นสูงอาจต้องพัฒนาแยกต่างหาก

ดาวน์โหลด Backtest บน App Store