OPEN-SOURCE SCRIPT
PSL/TTA-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 โดยตรง
🔴 +2sd → PSL Overvalued มากผิดปกติ
🟠 +1sd → เริ่มแพงกว่าที่ควร
⬜ Mean → Fair Value ตาม BDI ณ ปัจจุบัน
🟢 -1sd → เริ่มถูกกว่าที่ควร
💚 -2sd → PSL Undervalued มากผิดปกติ
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 โดยตรง
🔴 +2sd → PSL Overvalued มากผิดปกติ
🟠 +1sd → เริ่มแพงกว่าที่ควร
⬜ Mean → Fair Value ตาม BDI ณ ปัจจุบัน
🟢 -1sd → เริ่มถูกกว่าที่ควร
💚 -2sd → PSL Undervalued มากผิดปกติ
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 เสมอ
Script open-source
Nello spirito di TradingView, l'autore di questo script lo ha reso open source, in modo che i trader possano esaminarne e verificarne la funzionalità. Complimenti all'autore! Sebbene sia possibile utilizzarlo gratuitamente, ricordiamo che la ripubblicazione del codice è soggetta al nostro Regolamento.
Declinazione di responsabilità
Le informazioni e le pubblicazioni non sono intese come, e non costituiscono, consulenza o raccomandazioni finanziarie, di investimento, di trading o di altro tipo fornite o approvate da TradingView. Per ulteriori informazioni, consultare i Termini di utilizzo.
Script open-source
Nello spirito di TradingView, l'autore di questo script lo ha reso open source, in modo che i trader possano esaminarne e verificarne la funzionalità. Complimenti all'autore! Sebbene sia possibile utilizzarlo gratuitamente, ricordiamo che la ripubblicazione del codice è soggetta al nostro Regolamento.
Declinazione di responsabilità
Le informazioni e le pubblicazioni non sono intese come, e non costituiscono, consulenza o raccomandazioni finanziarie, di investimento, di trading o di altro tipo fornite o approvate da TradingView. Per ulteriori informazioni, consultare i Termini di utilizzo.