EdgeLab คืออะไร
EdgeLab เป็นระบบ Algorithmic Trading Backtester สำหรับทดสอบ strategy บน historical data ก่อนนำไปใช้จริง โดยใช้ราคาย้อนหลังจาก Yahoo Finance
ขั้นตอนการใช้งาน
- 1. ค้นหา Symbol — พิมพ์ชื่อหุ้นหรือ ticker ในช่อง Symbol แล้วเลือกจาก dropdown
- 2. เลือก Strategy — เลือก strategy ที่ต้องการทดสอบ (ดูรายละเอียดในแท็บ Strategy)
- 3. เลือก Period — ช่วงเวลาของข้อมูลย้อนหลัง (1–5 ปี)
- 4. ตั้งค่า Capital & Risk — เงินทุนตั้งต้น และ % risk ต่อ trade
- 5. กด Run Backtest — ระบบจะรัน และแสดงผลใน terminal ด้านล่าง
- 6. ดู Report — คลิก card ใน Reports เพื่อดู equity curve และสถิติ
การค้นหา Symbol
รองรับทุกตลาดใน Yahoo Finance เช่น
- US Stocks:
AAPL, MSFT, GOOGL, NVDA
- ETF:
SPY, QQQ, GLD
- Thai Stocks:
PTT.BK, ADVANC.BK, AOT.BK
- Crypto:
BTC-USD, ETH-USD
- Forex:
EURUSD=X, GBPUSD=X
💡 พิมพ์ชื่อบริษัทภาษาอังกฤษก็ได้ เช่น "Apple" หรือ "Tesla" ระบบจะค้นหาให้อัตโนมัติ
BOS + Retest Trend-Following
เหมาะกับตลาดที่มี trend ชัดเจน
- ระบบหา Break of Structure (BOS) — ราคาทะลุ swing high/low สำคัญ
- รอราคา Retest กลับมาที่ระดับ BOS (±1.5×ATR)
- เข้า trade เมื่อมี price action pattern ยืนยัน + confluence ≥ 65
- Stop Loss: ต่ำ/สูงกว่า swing ก่อนหน้า | Take Profit: S/R ถัดไป
💡 ผลดีที่สุดบน Daily timeframe กับหุ้นที่มี trend ชัด เช่น AAPL, MSFT, NVDA
EMA Pullback Trend-Following
เหมาะกับตลาด trending ที่ราคา pullback มาที่ EMA
- เงื่อนไข Trend:
close > EMA50 > EMA200 (buy) หรือกลับกัน (sell)
- รอราคา pullback มาชิด EMA50 (±0.8×ATR)
- ยืนยันด้วย ADX > 18 (trend ยังแข็ง) + confluence ≥ 62
- Stop Loss: EMA50 − 1.5×ATR
RSI Mean-Reversion Range-Bound
เหมาะกับตลาดที่ sideway หรือ range-bound
- เงื่อนไข Ranging: ADX < 30 (ไม่มี trend)
- Buy: RSI ≤ 40 หรือ BB%B ≤ 0.25 (oversold) | Sell: RSI ≥ 60 หรือ BB%B ≥ 0.75
- Take Profit: กลับมาที่ BB midline
⚠️ Strategy นี้ไม่เหมาะกับหุ้น Tech ช่วง bull market เพราะ ADX สูงตลอด ลองใช้กับ ETF Bond หรือ Commodity แทน
Confluence Score คืออะไร
ระบบให้คะแนน 0–100 จากหลาย factor ก่อนเปิด trade:
| Factor | น้ำหนัก | เงื่อนไข |
| Market Structure (HTF) | 30% | BOS/CHoCH ตรงทิศทาง |
| S/R Zone Strength | 25% | ราคาอยู่ใกล้ zone แข็งแกร่ง |
| Price Action Pattern | 20% | Pin bar, Engulfing, Morning star ฯลฯ |
| Momentum (RSI/ADX) | 15% | RSI/ADX ยืนยันทิศทาง |
| Volume | 10% | Volume สูงกว่าค่าเฉลี่ย 20 bar |
Period (ระยะเวลาข้อมูล)
| ค่า | ข้อมูล | เหมาะกับ |
1y | ~252 bars | ทดสอบเร็ว, market condition ล่าสุด |
2y | ~504 bars | ครอบคลุม cycle ปกติ |
3y | ~756 bars | แนะนำสำหรับ BOS & EMA |
5y | ~1260 bars | Walk-forward validation ครบถ้วน |
Capital (เงินทุน)
เงินทุนตั้งต้นสำหรับ simulation (ค่า default $10,000) ไม่ใช่เงินจริง — ใช้คำนวณ position size และ P&L เท่านั้น
Risk per Trade (%)
% ของ portfolio ที่ยอมเสียต่อ trade หนึ่ง ระบบคำนวณ qty อัตโนมัติจาก:
qty = (capital × risk%) ÷ |entry - stop_loss|
| Risk % | ความเสี่ยง | เหมาะกับ |
| 0.5% | ต่ำมาก | ทดสอบระบบ conservative |
| 1.0% | ต่ำ (แนะนำ) | มาตรฐาน institutional |
| 2.0% | ปานกลาง | Aggressive retail |
Walk-Forward Validation
แบ่งข้อมูลออกเป็น 5 ช่วง ทดสอบแบบ expanding window เพื่อวัดว่า strategy robust จริงหรือ overfit:
- Fold 1: train ปี 1–2, test ปี 2 Q3–Q4
- Fold 2: train ปี 1–3, test ปี 3 Q3–Q4
- … (ขยาย train ทุก fold)
💡 ถ้า ≥ 3 ใน 5 fold กำไร = strategy น่าเชื่อถือ. ถ้า fold ต้นๆ ดีแต่หลังๆ แย่ = overfit
ตัวชี้วัดหลัก
| ตัวชี้วัด | ความหมาย | เกณฑ์ดี |
| Win Rate | % ของ trade ที่กำไร | > 40% (ถ้า R:R ดี) |
| Profit Factor | gross profit ÷ gross loss | > 1.5 |
| Sharpe Ratio | return ÷ volatility (รายปี) | > 1.0 |
| Sortino Ratio | เหมือน Sharpe แต่นับแค่ downside | > 1.5 |
| Max Drawdown | ขาดทุนสูงสุดจาก peak | < 15% |
| CAGR | ผลตอบแทนรายปีทบต้น | > 10% |
| Expectancy $ | กำไรเฉลี่ยต่อ trade | > $0 |
IS vs OOS คืออะไร
- IN-SAMPLE (IS) — ข้อมูล 70% แรก: strategy "เห็น" ข้อมูลนี้ตอน optimize
- OUT-OF-SAMPLE (OOS) — ข้อมูล 30% หลัง: เสมือน "อนาคต" ที่ strategy ไม่เคยเห็น
💡 ให้ดู OOS เป็นหลัก — ถ้า IS ดีแต่ OOS แย่มาก = overfit
Cost Deduction (AC-01)
ทุก trade หักค่าใช้จ่ายอัตโนมัติ รวม ~0.12% ต่อ side:
- Commission: 0.05%
- Slippage: 0.05%
- Spread: 0.02%
HTML Report
คลิก card ใน Reports เพื่อเปิด report ที่มี:
- Equity Curve — กราฟมูลค่า portfolio ตามเวลา
- Metric Boxes — Win Rate, PF, Sharpe, Drawdown, CAGR
- Trade Table — รายการ trade ทุกอัน พร้อม entry/exit/P&L
แหล่งข้อมูล
ระบบดึงข้อมูลจาก Yahoo Finance ผ่าน library yfinance อัตโนมัติเมื่อกด Run Backtest
Cache
- ข้อมูล Daily (1D): cache 18 ชั่วโมง
- ข้อมูล Intraday (1H/15M): cache 6 ชั่วโมง
- ถ้า cache ยังไม่หมดอายุ → ใช้ข้อมูลเดิม (รวดเร็วกว่า)
ข้อจำกัดของ Yahoo Finance
| Timeframe | ข้อมูลย้อนหลังสูงสุด | หมายเหตุ |
| Daily (1D) | ไม่จำกัด (10+ ปี) | แนะนำสำหรับ backtest |
| 1 Hour (1H) | 730 วัน (~2 ปี) | - |
| 15 Minute (15M) | 60 วัน | เหมาะ intraday เท่านั้น |
Alpaca API (Phase 2)
สำหรับ live trading และข้อมูล intraday ยาวขึ้น ต้องสมัคร Alpaca (ฟรี) และเพิ่ม key ใน /opt/TradingBot/.env:
ALPACA_API_KEY=your_key
ALPACA_SECRET_KEY=your_secret
⚠️ ห้าม hardcode key ในโค้ด ใช้ .env เท่านั้น และ .env ถูก .gitignore แล้ว