เรียนรู้ › EA และเทรดอัตโนมัติ

Pairs Trading และ Cointegration: เทรดส่วนต่างของสองตัว ทำไม Correlation ไม่พอ

เทรดส่วนต่างของสองสินทรัพย์แบบ Statistical arbitrage ตั้งแต่ hedge ratio จาก regression, z-score, half-life ไปจนถึงตอนความสัมพันธ์พัง พร้อมตัวอย่างคำนวณที่หักต้นทุนสองขา

ขั้นสูง อ่าน 13 นาที 21 ตุลาคม 2569

อ่านจบแล้วจะรู้
  • สองตัวที่ correlation สูงอาจเดินห่างกันไปเรื่อย ๆ ได้ ต้องเป็น cointegration คือส่วนต่างมีแรงดึงกลับ ถึงจะเทรดแบบรอให้ส่วนต่างกลับมาได้
  • Hedge ratio หาจาก regression ราคาตัวหนึ่งบนอีกตัว แล้วทดสอบว่าส่วนที่เหลือ (spread) กลับหาค่าเฉลี่ยจริงไหม ตามแนวคิด Engle–Granger สองขั้น
  • กติกาพื้นฐานคือเข้าเมื่อ z-score ของ spread แตะ ±2 ออกเมื่อกลับถึง 0 และต้องมี stop เพราะความสัมพันธ์พังได้ทุกเมื่อ
  • ทุกไม้มีสองขา จ่าย spread swap และ margin สองชุด กำไรต่อไม้ของกลยุทธ์นี้มักเล็ก ต้นทุนจึงกินได้มาก

Pairs trading คือการเทรด ส่วนต่าง ระหว่างสองสินทรัพย์ที่ปกติเดินไปด้วยกัน เมื่อส่วนต่างถ่างออกผิดปกติ ก็ขายตัวที่แพงกว่าและซื้อตัวที่ถูกกว่าพร้อมกัน แล้วรอให้ส่วนต่างกลับมา เป็นกลยุทธ์กลุ่ม Statistical arbitrage ที่นิยมเขียนเป็น EA เพราะกติกาเป็นตัวเลขล้วน บทนี้อธิบายกลไกทีละขั้น ตั้งแต่เหตุผลที่ Correlation ไม่พอ วิธีหา hedge ratio, z-score และ half-life ไปจนถึงสิ่งที่เกิดขึ้นเมื่อความสัมพันธ์พัง ตัวเลขทุกตัวมาจากราคาสมมติที่เราคำนวณด้วยสคริปต์ ไม่ใช่ตลาดจริง

Pairs trading ได้เงินจากอะไร

ไม้เดียวมีสองขาเสมอ เช่น Sell B 1 หน่วย คู่กับ Buy A จำนวน β หน่วย ถ้าตลาดทั้งก้อนขึ้นหรือลง สองขาหักล้างกันเป็นส่วนใหญ่ สิ่งที่เหลือคือกำไรขาดทุนจาก spread หรือส่วนต่างที่ปรับสัดส่วนแล้ว

spread = ราคา B − α − β × ราคา A

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

งานวิจัยที่คนมักอ้างถึงคือ Gatev, Goetzmann และ Rouwenhorst (2006) ซึ่งทดสอบการจับคู่หุ้นสหรัฐฯ ที่ราคาเดินคล้ายกันในอดีต และเปิดสถานะเมื่อส่วนต่างถ่างเกินสองเท่าของส่วนเบี่ยงเบนมาตรฐาน ซึ่งเป็นที่มาของกติกา ±2 ที่ใช้กันทั่วไป

Correlation ไม่พอ ต้องเป็น Cointegration

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

  • Correlation สูง = รายแท่งมักขยับทางเดียวกัน แต่ความต่างเล็ก ๆ ที่สะสมทุกวันอาจพาสองตัวห่างกันไปเรื่อย ๆ ไม่มีอะไรดึงกลับ
  • Cointegration = ราคาแต่ละตัวเดินแบบสุ่มได้ แต่มีสัดส่วน β ที่ทำให้ spread กลับหาค่าเฉลี่ย (mean reversion) คิดภาพคนจูงหมาเดินเล่น ทั้งคู่เดินไปไหนก็ได้ แต่สายจูงทำให้ห่างกันได้ไม่ไกล

เราสร้างราคาสมมติ 500 แท่ง ราคา A เป็น random walk แล้วสร้างราคา B สองแบบจาก A ชุดเดียวกัน แบบแรกบวก spread ที่มีแรงดึงกลับหาศูนย์ แบบที่สองบวก random walk ที่ไม่มีแรงดึงกลับ

  1. Correlation ของผลตอบแทนรายแท่งระหว่าง A กับ B ได้ 0.79 (แบบแรก) และ 0.75 (แบบที่สอง) แทบเท่ากัน
  2. แต่ spread ของแบบแรกแกว่งอยู่ระหว่าง −2.57 ถึง +2.94 ตลอด 500 แท่ง ส่วนแบบที่สองไปไกลถึง −10.62
ช่วงหาค่า β (แท่ง 0–249)ช่วงหลังจากนั้น (แท่ง 250–499) cointegrated: กลับหาศูนย์ตลอด · DF t = −5.33 แค่ correlated: เดินห่างไปเรื่อย ๆ · DF t = −1.73 −10−505
ราคาสมมติ ไม่ใช่ตลาดจริง ทั้งสองคู่ใช้ราคา A ชุดเดียวกัน คู่น้ำเงินบวก spread ที่ถูกดึงกลับหาศูนย์ คู่ส้มบวก random walk ที่ไม่มีแรงดึงกลับ correlation ของผลตอบแทนรายแท่งใกล้กันมาก (0.79 กับ 0.75) แต่ spread ต่างกันคนละเรื่อง

ถ้าเลือกคู่จาก Correlation อย่างเดียว ทั้งสองคู่ผ่านเหมือนกัน แต่คู่ที่สองไม่มีอะไรรับประกันว่า spread จะกลับมาเลย

หา hedge ratio ด้วย regression

Hedge ratio (β) คือจำนวนหน่วยของ A ที่ใช้คู่กับ B 1 หน่วย วิธีพื้นฐานคือ regression แบบ OLS (Ordinary Least Squares หาเส้นตรงที่ใกล้ทุกจุดที่สุด) ของราคา B บนราคา A

B = α + β × A + ส่วนที่เหลือ

ส่วนที่เหลือนั่นแหละคือ spread ของเรา ต้องทำในช่วงข้อมูลหนึ่ง (ช่วงหาค่า) แล้วเอา β ไปใช้กับข้อมูลที่ตามมา ห้ามคำนวณ β จากข้อมูลทั้งหมดแล้วย้อนไปทดสอบ เพราะนั่นคือการแอบดูอนาคต อ่านเรื่องนี้เพิ่มได้ที่ อินดิเคเตอร์ repaint และ look-ahead

ข้อควรรู้สองเรื่อง

  • β ที่ได้เป็นค่าประมาณ ในตัวอย่างนี้เราใส่ค่าจริงไว้ 0.8 แต่ regression จาก 250 แท่งได้ 0.854 ข้อมูลจริงคลาดได้มากกว่านี้
  • regression B บน A กับ A บน B ให้ β และผลทดสอบไม่เท่ากัน ต้องเลือกแบบหนึ่งแล้วใช้ให้คงที่

ทดสอบ Cointegration แบบ Engle–Granger สองขั้น

แนวคิดนี้มาจาก Engle และ Granger (1987) ทำเป็นสองขั้น

  1. Regression หา α และ β แล้วคำนวณ spread
  2. ทดสอบว่า spread กลับหาค่าเฉลี่ยไหม โดยดูว่าแท่งที่ spread อยู่สูง แท่งถัดไปมักลดลงไหม ใช้สมการ Δspread = b × spread แท่งก่อน ถ้า b ติดลบชัดเจน แปลว่ามีแรงดึงกลับ ค่าที่ใช้ตัดสินคือ t-stat ของ b (การทดสอบแบบ Dickey–Fuller)

จุดที่คนพลาดบ่อย ค่าวิกฤตของขั้นที่สอง ไม่ใช่ ค่าเดียวกับการทดสอบ Dickey–Fuller ทั่วไป เพราะ spread ถูกสร้างจาก β ที่ regression เลือกมาให้ดูนิ่งที่สุดแล้ว ต้องใช้ตาราง Engle–Granger (ของ MacKinnon) ซึ่งสำหรับสองตัวแปรที่ระดับ 5% อยู่ราว −3.34 ไม่ใช่ราว −2.86 ของการทดสอบเดี่ยว ไลบรารีสถิติส่วนใหญ่มีฟังก์ชันทดสอบนี้ให้พร้อมค่าวิกฤตที่ถูกต้อง

ผลจากตัวอย่างของเรา (ช่วงหาค่า 250 แท่ง)

  • คู่ที่ cointegrated: b = −0.2071, t = −5.33 ต่ำกว่า −3.34 ผ่าน
  • คู่ที่แค่ correlated: t = −1.73 ไม่ผ่าน

การทดสอบนี้ผิดได้ทั้งสองทาง เราจำลองซ้ำ 1,000 ชุดด้วยกติกาเดียวกัน คู่ที่ cointegrated ผ่าน 99.9% ส่วนคู่ที่ไม่ใช่ ก็ยังผ่านโดยบังเอิญ 4.3% ใกล้กับ 5% ที่ระดับนัยสำคัญยอมให้ผิด ถ้าไล่ทดสอบ 100 คู่ จะมีคู่หลอกหลุดมาได้หลายคู่ เป็นปัญหาเดียวกับใน การทดสอบหลายครั้ง (data snooping)

Half-life: spread กลับมาเร็วแค่ไหน

แบบจำลองที่ใช้กันคือ Ornstein–Uhlenbeck อธิบายง่าย ๆ คือ ทุกแท่ง spread ถูกดึงกลับหาค่าเฉลี่ยเป็นสัดส่วนคงที่ของระยะห่าง บวกกับแรงสุ่ม ยิ่งห่างมาก แรงดึงยิ่งมาก เหมือนสปริง

Half-life คือจำนวนแท่งที่ระยะห่างโดยเฉลี่ยลดลงครึ่งหนึ่ง คำนวณจาก b ในขั้นที่สองได้เลย

half-life = −ln 2 ÷ ln(1 + b)

ตัวอย่างของเรา b = −0.2071 ได้ −0.6931 ÷ ln(0.7929) = −0.6931 ÷ (−0.2320) = 3.0 แท่ง (ค่าจริงที่เราใส่ไว้คือ 4.3 แท่ง ใน 1,000 ชุดจำลอง ค่ากลางที่ประมาณได้คือ 3.7 การประมาณจาก spread ที่ regression ปรับมาแล้วมักเห็นแรงดึงกลับเร็วกว่าความจริง)

ใช้ half-life ทำอะไร

  • เลือก timeframe half-life 3 แท่งของ H1 คือไม่กี่ชั่วโมง ของ D1 คือหลายวัน ซึ่งมีค่า swap ตามมา
  • ตั้ง time stop ถ้าถือนานเกินหลายเท่าของ half-life แล้ว spread ยังไม่กลับ นั่นคือสัญญาณว่าพฤติกรรมเปลี่ยน (เป็นหลักคิด ไม่ใช่ตัวเลขที่เราทดสอบในบทนี้)
  • ถ้า half-life ยาวมากเทียบกับข้อมูลที่มี เช่น 100 แท่งจากข้อมูล 250 แท่ง ผลทดสอบแทบไม่มีความหมาย

กติกา z-score: เข้า ±2 ออกที่ 0

z-score บอกว่า spread อยู่ห่างค่าเฉลี่ยกี่เท่าของ SD (ส่วนเบี่ยงเบนมาตรฐาน)

z = (spread − ค่าเฉลี่ย) ÷ SD

กติกาพื้นฐาน ค่าเฉลี่ยและ SD มาจากช่วงหาค่าเท่านั้น

  • z ≥ +2 → Sell spread คือ Sell B 1 หน่วย Buy A β หน่วย
  • z ≤ −2 → Buy spread คือ Buy B 1 หน่วย Sell A β หน่วย
  • ออกเมื่อ z กลับถึง 0
  • Stop เมื่อ |z| ≥ 4 แล้วหยุดเทรดคู่นี้จนกว่าจะทดสอบใหม่

ตัวอย่างคำนวณทีละขั้น

ราคาสมมติ 500 แท่ง ใช้ 250 แท่งแรกหาค่า แล้วทดลองเทรด 250 แท่งหลัง ต้นทุน 0.04 ต่อหน่วยต่อขาต่อรอบ (เข้าและออก)

  1. Regression ได้ α = 5.137 และ β = 0.8541 ค่าเฉลี่ยของ spread ≈ 0 และ SD = 0.7745
  2. แท่ง 278 ราคา B = 80.383 ราคา A = 85.021 spread = 80.383 − 5.137 − 0.8541 × 85.021 = 80.383 − 5.137 − 72.616 = 2.630 z = 2.630 ÷ 0.7745 = 3.40 (แท่งก่อนหน้า z = 1.79 แล้วกระโดดข้าม 2 ในแท่งเดียว)
  3. z ≥ 2 จึง Sell B 1 หน่วยที่ 80.383 และ Buy A 0.8541 หน่วยที่ 85.021
  4. แท่ง 293 z = −1.04 ข้าม 0 แล้ว ปิดทั้งสองขาที่ B = 75.627 และ A = 83.481
  5. ขา B: 80.383 − 75.627 = +4.756 ขา A: 0.8541 × (83.481 − 85.021) = 0.8541 × (−1.540) = −1.315 รวมก่อนต้นทุน = 4.756 − 1.315 = +3.44
  6. ต้นทุน = 0.04 × (1 + 0.8541) = 0.074 สุทธิ +3.37

สังเกตว่าขา A ขาดทุน แต่ขา B ได้มากกว่า กำไรมาจากส่วนต่างที่หดลง ไม่ได้มาจากการเดาทิศตลาด

ทั้งช่วงทดลอง ได้ 8 ไม้ กำไรก่อนต้นทุนรวม 18.78 ต้นทุน 8 × 0.074 = 0.59 สุทธิ +18.19 หน่วยราคาต่อ B 1 หน่วย ชนะครบ 8 ไม้ เพราะข้อมูลนี้เราสร้างให้ cointegrated จริงตลอด ตลาดจริงไม่ได้สะอาดแบบนี้

ราคา B 5.14 + 0.854 × ราคา A z-score ของ spread เริ่มทดลองเทรด → จุดเข้า (z แตะ ±2) จุดออก (z กลับถึง 0) 708090+20−2
ราคาสมมติ 500 แท่ง ไม่ใช่ตลาดจริง hedge ratio ค่าเฉลี่ย และ SD ของ spread คำนวณจาก 250 แท่งแรกเท่านั้น แล้วใช้ค่าเดิมกับ 250 แท่งหลัง จึงไม่มีการแอบดูข้อมูลอนาคต

เมื่อความสัมพันธ์พัง

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

เราใช้ราคาชุดเดิมทุกแท่ง แต่ตั้งแต่แท่ง 330 ให้ spread เลื่อนขึ้นทีละ 0.06 ต่อแท่ง (ความสัมพันธ์เดิมพัง) แล้วใช้กติกาเดิม

  • ไม่มี stop สองไม้แรกยังได้กำไร แต่ไม้ที่สามเปิด Sell spread ที่แท่ง 341 (z = 2.18) แล้ว spread ไม่กลับอีกเลย ถึงแท่ง 499 z = 12.64 ไม้นี้ขาดทุน −8.17 equity จากจุดสูงสุด +5.25 จบที่ −3.08 ที่น่าสนใจคือขาดทุนส่วนใหญ่มาจากขา A ที่ร่วง 8.76 แต่ B ไม่ตามลงมา
  • มี stop ที่ |z| = 4 ไม้ที่สามโดนปิดที่แท่ง 355 แต่ z กระโดดไปถึง 4.70 ในแท่งเดียว ขาดทุน −2.03 มากกว่าที่วางแผนไว้ราว (4 − 2) × 0.7745 = 1.55 แล้วหยุดเทรด จบที่ +3.07
  • ในชุดที่ความสัมพันธ์ไม่พัง stop เดียวกันไม่ถูกแตะเลย ผลยังเป็น +18.19
spread เริ่มเลื่อน (แท่ง 330) +18.19คงที่ +3.07พัง มี stop z ±4 −3.08พัง ไม่มี stop −505101520 แท่ง 250 ถึง 499 · หน่วยราคาต่อ B 1 หน่วย หักต้นทุนแล้ว
ราคาสมมติ ไม่ใช่ตลาดจริง equity คิดตามราคาปิดทุกแท่ง รวมไม้ที่ยังเปิดอยู่ หักต้นทุน 0.04 ต่อหน่วยต่อขาแล้ว ชุดที่พังใช้ราคาชุดเดียวกัน แต่ spread เลื่อนขึ้นทีละ 0.06 ต่อแท่งตั้งแต่แท่ง 330

ผลจากจำลองซ้ำ 1,000 ชุดด้วยกติกาเดียวกัน (สุทธิหลังต้นทุน หน่วยราคาต่อ B 1 หน่วย)

สถานการณ์ค่าเฉลี่ยชุดที่ขาดทุนแย่สุด
คงที่ ไม่มี stop+10.380.3%−0.94
คงที่ มี stop z ±4+9.152.9%−2.24
พัง ไม่มี stop−4.1992.6%−11.46
พัง มี stop z ±4+2.0519.2%−3.45
ไม่ cointegrated ตั้งแต่ต้น−0.5647.6%−33.45

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

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

แถวสุดท้ายสำคัญ คู่ที่ไม่ cointegrated เฉลี่ยแทบเท่าศูนย์ แต่บางชุดเสียหนักมาก กติกาเดียวกันดูดีหรือแย่ขึ้นกับว่าสมมติฐานจริงไหม ไม่ได้ขึ้นกับตัวกติกา

ต้นทุนของสองขา

ทุกไม้ของ pairs trading คือสองไม้ ต้นทุนจึงมาเป็นคู่

  • Spread สองครั้ง ต่อรอบ ดู ต้นทุน spread ต่อไม้
  • Swap สองขา ข้างหนึ่งอาจได้ อีกข้างอาจเสีย ผลสุทธิแล้วแต่ดอกเบี้ยของแต่ละสกุลและโบรกเกอร์ ดู ค่า swap ข้ามคืน
  • Margin สองขา บางที่คิด margin ลดลงเมื่อถือสถานะหักล้างกัน บางที่ไม่ ต้องดู contract specification ของบัญชีตัวเอง
  • ความเสี่ยงจากการส่งคำสั่งไม่พร้อมกัน ขาแรกเข้าแล้ว ขาที่สองราคาขยับก่อน กำไรที่คำนวณไว้หายไปบางส่วน

กำไรต่อไม้ของกลยุทธ์นี้มักเล็ก ในตัวอย่างของเรา เฉลี่ยไม้ละ 2.35 ก่อนต้นทุน

ต้นทุนต่อหน่วยต่อขาต้นทุนต่อไม้ต้นทุนรวม 8 ไม้สุทธิ
0.040.0740.59+18.19
0.250.463.71+15.07
0.500.937.42+11.37

ที่ต้นทุน 0.50 ต้นทุนกินไปราว 40% ของกำไรก่อนต้นทุน ยิ่งตั้ง threshold ใกล้ เช่น ±1 จะได้ไม้ถี่ขึ้น แต่กำไรต่อไม้เล็กลง และต้นทุนสัดส่วนสูงขึ้น

ตัวอย่างใน Forex: AUDUSD กับ NZDUSD

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

ถ้าจะทดสอบ

  1. ใช้ราคาปิดช่วงเดียวกันเป๊ะของทั้งสองคู่ จาก timeframe เดียวกัน
  2. Regression AUDUSD บน NZDUSD ในช่วงหาค่า ได้ β แล้วทดสอบ spread แบบ Engle–Granger
  3. ทั้งสองคู่ quote เป็นดอลลาร์ และ 1 lot เท่ากับ 100,000 หน่วยสกุลหน้า กำไรขาดทุนต่อจุดราคาจึงเท่ากันต่อ lot สัดส่วนจำนวน lot จึงเท่ากับ β ได้ตรง ๆ คือ AUDUSD 1 lot ต่อ NZDUSD β lot คู่ที่ quote คนละสกุลต้องแปลงมูลค่าก่อน
  4. ทดสอบต่อแบบ out-of-sample หรือ walk-forward แล้วทดสอบ cointegration ซ้ำเป็นระยะ

อีกทางคือเทรด AUDNZD ตรง ๆ ซึ่งราคาเท่ากับ AUDUSD ÷ NZDUSD จ่าย spread ครั้งเดียว แต่สัดส่วนจะถูกล็อกไว้แบบมูลค่าเท่ากัน ไม่ใช่ β จาก regression

คุมความเสี่ยงอย่างไร

  • วัดความเสี่ยงจาก spread ไม่ใช่จากขาใดขาหนึ่ง ระยะ stop คือ (z ของ stop − z ตอนเข้า) × SD ตัวอย่างนี้ (4 − 2) × 0.7745 = 1.55 หน่วยราคาต่อ B 1 หน่วย แล้วคำนวณขนาดไม้ให้ขาดทุนตรงนั้นไม่เกินที่ตั้งไว้ เช่น 1% ด้วย เครื่องคำนวณ lot
  • เผื่อกระโดดข้าม stop ตัวอย่างข้างบนเสีย 2.03 แทน 1.55 ในวันข่าวอาจไกลกว่านี้
  • นับเป็นเดิมพันเดียว ถ้าถือหลายคู่ที่มีสกุลร่วมกัน เช่น หลายคู่ที่มี AUD ความเสี่ยงซ้อนกันตามที่อธิบายใน บทเรื่อง Correlation
  • ทดสอบ β และ cointegration ใหม่ตามรอบ ถ้าไม่ผ่านแล้ว หยุดเทรดคู่นั้น ไม่ใช่เปลี่ยน threshold ให้ดูดี

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

  • เลือกคู่จาก Correlation ตัวเลขสูงไม่ได้แปลว่าส่วนต่างจะกลับมา
  • หา β และ SD จากข้อมูลทั้งหมด แล้วย้อนทดสอบในช่วงเดียวกัน ผลจะดีเกินจริง เพราะ spread ถูกปรับให้ดูนิ่งที่สุดในช่วงนั้นแล้ว
  • ใช้ค่าวิกฤต Dickey–Fuller ทั่วไป ทำให้คู่ที่ไม่ใช่หลุดผ่านง่ายขึ้น
  • ไล่ทดสอบหลายร้อยคู่แล้วเลือกคู่ที่ดีที่สุด โดยไม่ทดสอบต่อนอกช่วง จะได้คู่หลอกปนมา
  • ไม่มี stop เพราะเชื่อว่า “ต้องกลับแน่” ความสัมพันธ์ที่พังคือจุดที่บัญชีเสียหนักที่สุด ไม่ต่างจาก การถัวขาดทุน
  • ลืมต้นทุนขาที่สอง คิด spread และ swap แค่ขาเดียว
  • คิดว่าถือสองขาแล้วไม่มีความเสี่ยง ความเสี่ยงยังอยู่ แค่ย้ายจากทิศตลาดไปอยู่ที่ spread ดู การ hedge ไม้ที่ขาดทุน ประกอบ
ลองกับตัวเลขของคุณเอง

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

AUDUSD กับ NZDUSD เป็นคู่ที่ cointegrated ไหม

บทนี้ไม่ได้ทดสอบข้อมูลจริง และไม่ได้บอกว่าคู่นี้ cointegrated ตอนนี้ สองคู่นี้มักถูกยกเป็นตัวอย่างเพราะเศรษฐกิจออสเตรเลียกับนิวซีแลนด์ใกล้กัน แต่ความสัมพันธ์แบบนี้เปลี่ยนได้ ต้องทดสอบเองจากข้อมูลล่าสุด และทดสอบซ้ำเป็นระยะ

ใช้ Correlation แทนการทดสอบ cointegration ได้ไหม

ไม่ได้ Correlation ของผลตอบแทนบอกว่าสองตัวขยับพร้อมกันรายแท่งแค่ไหน แต่ไม่ได้บอกว่าส่วนต่างจะกลับมา ในตัวอย่างของบทนี้ คู่ที่ cointegrated กับคู่ที่ไม่ใช่ มี correlation ของผลตอบแทนใกล้กันมาก (0.79 กับ 0.75) แต่ spread ของคู่หลังเดินห่างไปได้เรื่อย ๆ

ถ้า spread วิ่งเกิน z = 4 ควรถัวเพิ่มไหม

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

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

อ่านต่อ

EA
EA และเทรดอัตโนมัติขั้นสูง

ทดสอบจุดเข้ากับการเข้าแบบสุ่ม สัญญาณของคุณดีกว่าโยนเหรียญจริงไหม

กำไรใน backtest อาจมาจาก Exit กับเทรนด์ของตลาด ไม่ใช่จุดเข้า วิธีเทียบกับการเข้าสุ่ม 1,000 รอบ หา p-value เอง และสร้างตัวคุม (placebo) ให้ยุติธรรม

อ่าน 13 นาที
EA
EA และเทรดอัตโนมัติกลาง

ดูผลงาน Copy trade สัญญาณเทรด และ EA ยังไง ก่อนเอาเงินไปตาม

วิธีตรวจผลงานคนขายสัญญาณ ต้นทาง Copy trade และคนขาย EA ทั้งบัญชียืนยันได้ อายุบัญชี Equity DD สัญญาณ Martingale โชคช่วย ฝากถอน และส่วนที่ผู้ตามได้ไม่เท่าต้นทาง

อ่าน 10 นาที
EA
EA และเทรดอัตโนมัติกลาง

Monte Carlo ทดสอบระบบเทรด สลับลำดับเทรดเพื่อดู Drawdown ที่ควรเผื่อ

Backtest ให้ผลแค่เส้นทางเดียว Monte Carlo สลับและสุ่มรายการเทรดซ้ำหลายพันรอบ ให้เห็นช่วงของ Drawdown แพ้ติด กำไรสุทธิ และความเสี่ยงล้างพอร์ต

อ่าน 10 นาที
เครื่องมือ ทักไลน์