OPEN-SOURCE SCRIPT
PSL-BDI Spread-Based Z-Score Bands

PSL-BDI Spread-Based Z-Score Bands
════════════════════════════════════════
📌 ภาพรวม
─────────────────────────────────────────
Indicator นี้ใช้หลักการ Statistical Arbitrage (Stat-Arb) วัดความสัมพันธ์
ระหว่างราคาหุ้น PSL กับ Baltic Dry Index (BDI) ผ่านการคำนวณ Spread
แบบ Dynamic เพื่อหาจุด Overvalued / Undervalued เทียบกับ BDI ในเชิงสถิติ
รองรับ 2 กลยุทธ์ตามสภาวะ Correlation:
• Stat-Arb → Trade Spread เมื่อ PSL-BDI Correlated กันสูง
• Lead-Lag → Accumulate เมื่อ BDI นำ PSL ในช่วง Discorrelation
📐 วิธีคำนวณ
─────────────────────────────────────────
① Dynamic Hedge Ratio (Rolling OLS Regression)
ระบบคำนวณความสัมพันธ์แบบ Real-time ด้วยสมการ:
PSL = alpha + beta × BDI + ε
• beta (Hedge Ratio) = Corr(PSL,BDI) × Std(PSL) / Std(BDI)
• alpha (Intercept) = Mean(PSL) − beta × Mean(BDI)
ต่างจาก Fixed Hedge Ratio ตรงที่ค่าจะปรับตามสภาวะตลาดจริงทุก Bar
② Spread (OLS Residuals)
Spread = PSL − (beta × BDI) − alpha
→ ส่วนเกินของราคา PSL ที่ BDI อธิบายไม่ได้
③ Z-Score
Z = (Spread − Mean(Spread)) / StdDev(Spread)
→ วัดว่า Spread ห่างจากค่าเฉลี่ยกี่ Standard Deviation
📊 การอ่าน Bands บนกราฟ
─────────────────────────────────────────
Bands ทั้งหมดแสดง "ระดับราคา PSL" ที่ตำแหน่ง Z-Score นั้นๆ
โดยคำนวณจาก Spread ระหว่าง PSL และ BDI และเคลื่อนที่ตาม BDI ทุก Bar
🔴 +2sd → Z = +2.0 (PSL แพงเกินกว่า BDI จะอธิบายได้มาก)
🟠 +1sd → Z = +1.0
⬜ Mean → Z = 0.0 (Fair Value ตาม BDI ณ ขณะนั้น)
🟢 -1sd → Z = -1.0
💚 -2sd → Z = -2.0 (PSL ถูกเกินกว่า BDI จะอธิบายได้มาก)
Z-Score และค่า Hedge Ratio ปัจจุบันแสดงใน Label มุมขวาของกราฟ
🎨 สีพื้นหลัง (Correlation Regime)
─────────────────────────────────────────
ไม่มีสี Corr > 0.6 → Correlated — ใช้กลยุทธ์ Stat-Arb
🟡 เหลือง Corr 0–0.6 → Weak — ใช้กลยุทธ์ Lead-Lag ด้วยความระมัดระวัง
🟠 ส้ม Corr -0.4–0 → Discorrelated — ใช้กลยุทธ์ Lead-Lag เท่านั้น
🔴 แดง Corr ≤ -0.4 → Deep Dislocation — งดเทรด
📈 กลยุทธ์การใช้งาน
─────────────────────────────────────────
① Stat-Arb / Mean Reversion (พื้นหลังไม่มีสี)
เงื่อนไขเข้า Buy : Z-Score ≤ -2sd + Corr > 0.6
เงื่อนไขเข้า Sell : Z-Score ≥ +2sd + Corr > 0.6
Target : ราคากลับเข้า Mean Band
เหมาะกับ : Short-term, High Conviction
② Lead-Lag / Correlation Restoration (พื้นหลังเหลือง-ส้ม)
สัญญาณ : BDI Trend ชัดเจนแต่ PSL ยังไม่ตาม (Z-Score ต่ำ)
จังหวะเข้า : เริ่ม Accumulate เมื่อ Corr เริ่มกลับขึ้น
Target : PSL ตามทัน BDI เมื่อ Correlation Restore
เหมาะกับ : Swing Trade, Position Size เล็กกว่าปกติ
ความเสี่ยง : ถ้าเป็น Structural Break จะรอเปล่า
⚙️ พารามิเตอร์
─────────────────────────────────────────
BDI Symbol : Symbol ของ BDI (Default: INDEX:BDI)
Correlation Window : จำนวน Bar สำหรับคำนวณสีพื้นหลัง
ไม่กระทบ Signal — ใช้ดู Regime เท่านั้น
OLS / Z-Score Window : จำนวน Bar สำหรับคำนวณ Hedge Ratio, Spread และ Bands
• เพิ่มค่า → Signal ช้าลง เหมาะ Swing Trade
• ลดค่า → Signal เร็วขึ้น Bands แคบลง
แนะนำ: 30–45 (Short), 45–60 (Swing), 60–90 (Position)
Use Fixed HR & Intercept : เปิดเพื่อใช้ค่า Hedge Ratio และ Intercept แบบ Manual
📅 Timeframe ที่แนะนำ
─────────────────────────────────────────
✅ Daily เท่านั้น
BDI เป็น Daily Index ที่เผยแพร่วันละครั้ง
การใช้ใน TF ต่ำกว่า Daily จะทำให้ค่า BDI ซ้ำทุก Bar
และ Correlation ไม่มีความหมายทางสถิติ
⚠️ ข้อควรระวัง
─────────────────────────────────────────
• Indicator นี้ไม่ใช่ Buy/Sell Signal โดยตรง ใช้ประกอบการวิเคราะห์
• ประสิทธิภาพขึ้นอยู่กับความ Cointegrated จริงของ PSL และ BDI
• ช่วง Deep Dislocation (แดง) อาจเกิดจาก Fundamental Shift
ของอุตสาหกรรม Shipping ให้ตรวจสอบก่อนเสมอ
• Spread อาจ Drift ได้นานกว่าที่คาด — ใช้ร่วมกับ Risk Management เสมอ
════════════════════════════════════════
📌 ภาพรวม
─────────────────────────────────────────
Indicator นี้ใช้หลักการ Statistical Arbitrage (Stat-Arb) วัดความสัมพันธ์
ระหว่างราคาหุ้น PSL กับ Baltic Dry Index (BDI) ผ่านการคำนวณ Spread
แบบ Dynamic เพื่อหาจุด Overvalued / Undervalued เทียบกับ BDI ในเชิงสถิติ
รองรับ 2 กลยุทธ์ตามสภาวะ Correlation:
• Stat-Arb → Trade Spread เมื่อ PSL-BDI Correlated กันสูง
• Lead-Lag → Accumulate เมื่อ BDI นำ PSL ในช่วง Discorrelation
📐 วิธีคำนวณ
─────────────────────────────────────────
① Dynamic Hedge Ratio (Rolling OLS Regression)
ระบบคำนวณความสัมพันธ์แบบ Real-time ด้วยสมการ:
PSL = alpha + beta × BDI + ε
• beta (Hedge Ratio) = Corr(PSL,BDI) × Std(PSL) / Std(BDI)
• alpha (Intercept) = Mean(PSL) − beta × Mean(BDI)
ต่างจาก Fixed Hedge Ratio ตรงที่ค่าจะปรับตามสภาวะตลาดจริงทุก Bar
② Spread (OLS Residuals)
Spread = PSL − (beta × BDI) − alpha
→ ส่วนเกินของราคา PSL ที่ BDI อธิบายไม่ได้
③ Z-Score
Z = (Spread − Mean(Spread)) / StdDev(Spread)
→ วัดว่า Spread ห่างจากค่าเฉลี่ยกี่ Standard Deviation
📊 การอ่าน Bands บนกราฟ
─────────────────────────────────────────
Bands ทั้งหมดแสดง "ระดับราคา PSL" ที่ตำแหน่ง Z-Score นั้นๆ
โดยคำนวณจาก Spread ระหว่าง PSL และ BDI และเคลื่อนที่ตาม BDI ทุก Bar
🔴 +2sd → Z = +2.0 (PSL แพงเกินกว่า BDI จะอธิบายได้มาก)
🟠 +1sd → Z = +1.0
⬜ Mean → Z = 0.0 (Fair Value ตาม BDI ณ ขณะนั้น)
🟢 -1sd → Z = -1.0
💚 -2sd → Z = -2.0 (PSL ถูกเกินกว่า BDI จะอธิบายได้มาก)
Z-Score และค่า Hedge Ratio ปัจจุบันแสดงใน Label มุมขวาของกราฟ
🎨 สีพื้นหลัง (Correlation Regime)
─────────────────────────────────────────
ไม่มีสี Corr > 0.6 → Correlated — ใช้กลยุทธ์ Stat-Arb
🟡 เหลือง Corr 0–0.6 → Weak — ใช้กลยุทธ์ Lead-Lag ด้วยความระมัดระวัง
🟠 ส้ม Corr -0.4–0 → Discorrelated — ใช้กลยุทธ์ Lead-Lag เท่านั้น
🔴 แดง Corr ≤ -0.4 → Deep Dislocation — งดเทรด
📈 กลยุทธ์การใช้งาน
─────────────────────────────────────────
① Stat-Arb / Mean Reversion (พื้นหลังไม่มีสี)
เงื่อนไขเข้า Buy : Z-Score ≤ -2sd + Corr > 0.6
เงื่อนไขเข้า Sell : Z-Score ≥ +2sd + Corr > 0.6
Target : ราคากลับเข้า Mean Band
เหมาะกับ : Short-term, High Conviction
② Lead-Lag / Correlation Restoration (พื้นหลังเหลือง-ส้ม)
สัญญาณ : BDI Trend ชัดเจนแต่ PSL ยังไม่ตาม (Z-Score ต่ำ)
จังหวะเข้า : เริ่ม Accumulate เมื่อ Corr เริ่มกลับขึ้น
Target : PSL ตามทัน BDI เมื่อ Correlation Restore
เหมาะกับ : Swing Trade, Position Size เล็กกว่าปกติ
ความเสี่ยง : ถ้าเป็น Structural Break จะรอเปล่า
⚙️ พารามิเตอร์
─────────────────────────────────────────
BDI Symbol : Symbol ของ BDI (Default: INDEX:BDI)
Correlation Window : จำนวน Bar สำหรับคำนวณสีพื้นหลัง
ไม่กระทบ Signal — ใช้ดู Regime เท่านั้น
OLS / Z-Score Window : จำนวน Bar สำหรับคำนวณ Hedge Ratio, Spread และ Bands
• เพิ่มค่า → Signal ช้าลง เหมาะ Swing Trade
• ลดค่า → Signal เร็วขึ้น Bands แคบลง
แนะนำ: 30–45 (Short), 45–60 (Swing), 60–90 (Position)
Use Fixed HR & Intercept : เปิดเพื่อใช้ค่า Hedge Ratio และ Intercept แบบ Manual
📅 Timeframe ที่แนะนำ
─────────────────────────────────────────
✅ Daily เท่านั้น
BDI เป็น Daily Index ที่เผยแพร่วันละครั้ง
การใช้ใน TF ต่ำกว่า Daily จะทำให้ค่า BDI ซ้ำทุก Bar
และ Correlation ไม่มีความหมายทางสถิติ
⚠️ ข้อควรระวัง
─────────────────────────────────────────
• Indicator นี้ไม่ใช่ Buy/Sell Signal โดยตรง ใช้ประกอบการวิเคราะห์
• ประสิทธิภาพขึ้นอยู่กับความ Cointegrated จริงของ PSL และ BDI
• ช่วง Deep Dislocation (แดง) อาจเกิดจาก Fundamental Shift
ของอุตสาหกรรม Shipping ให้ตรวจสอบก่อนเสมอ
• Spread อาจ Drift ได้นานกว่าที่คาด — ใช้ร่วมกับ Risk Management เสมอ
סקריפט קוד פתוח
ברוח האמיתית של TradingView, יוצר הסקריפט הזה הפך אותו לקוד פתוח, כך שסוחרים יוכלו לעיין בו ולאמת את פעולתו. כל הכבוד למחבר! אמנם ניתן להשתמש בו בחינם, אך זכור כי פרסום חוזר של הקוד כפוף ל־כללי הבית שלנו.
כתב ויתור
המידע והפרסומים אינם מיועדים להיות, ואינם מהווים, ייעוץ או המלצה פיננסית, השקעתית, מסחרית או מכל סוג אחר המסופקת או מאושרת על ידי TradingView. קרא עוד ב־תנאי השימוש.
סקריפט קוד פתוח
ברוח האמיתית של TradingView, יוצר הסקריפט הזה הפך אותו לקוד פתוח, כך שסוחרים יוכלו לעיין בו ולאמת את פעולתו. כל הכבוד למחבר! אמנם ניתן להשתמש בו בחינם, אך זכור כי פרסום חוזר של הקוד כפוף ל־כללי הבית שלנו.
כתב ויתור
המידע והפרסומים אינם מיועדים להיות, ואינם מהווים, ייעוץ או המלצה פיננסית, השקעתית, מסחרית או מכל סוג אחר המסופקת או מאושרת על ידי TradingView. קרא עוד ב־תנאי השימוש.