📖 คัมภีร์ Quant บท 4 — Data ทุกเรื่อง: วัตถุดิบ แหล่ง คุณภาพ และกับดักที่ทำให้ทั้งระบบโกหกเรา
ระดับ: สูง · กฎเหล็กของบท: ระบบไม่มีทางฉลาดกว่าข้อมูลที่ป้อนมัน — บั๊กใน data ไม่ทำให้ระบบพัง มันทำให้ระบบ "มั่นใจในสิ่งที่ผิด" ซึ่งแย่กว่าพังมาก แผนทั้งชุด · ← บท 11 สถิติ · บท 5 backtest →
1. แผนผังตระกูลข้อมูลทั้งหมดในจักรวาลเทรด (รู้ว่ามีอะไร ก่อนเลือกว่าใช้อะไร)
| ตระกูล | ตัวอย่าง | ใครใช้ | ราคา | เราใช้? |
|---|---|---|---|---|
| ราคา/volume (market data) | OHLCV รายวัน→tick | ทุกคน | ฟรี→แพงมาก (tick ระดับ exchange = หลักล้าน/ปี) | ✅ กระดูกสันหลัง |
| Flow/microstructure | order book, delta, footprint | ชั้น 1-2 + day trader จริงจัง | ฟรี (crypto) → แพง (futures/หุ้น) | ⚙️ บางส่วน (crypto ฟรี + ทองผ่าน futures) |
| Positioning | COT, 13F, broker sentiment | macro/swing | ฟรี | ✅ ชั้นบริบท |
| Fundamental/Macro | ดอกเบี้ย เงินเฟ้อ GDP งบบริษัท | ทุกคนที่ถือเกินสัปดาห์ | ฟรี (FRED/ปฏิทิน) → แพง (point-in-time) | ✅ ชั้นบริบท + ปฏิทินกันระเบิด |
| Alternative | บัตรเครดิต ดาวเทียม web-scraping การจ้างงาน | ชั้น 2 | แพงมาก + ขายเฉพาะกองทุน | ❌ รู้ไว้เข้าใจคู่แข่ง |
| On-chain (crypto) | flow เข้า-ออก exchange, กระเป๋าวาฬ | crypto natives | ฟรี→กลาง | ⚙️ เสริม |
| Sentiment/News | ดัชนีความกลัว, social volume, ข่าว (LLM อ่าน) | ยุคใหม่ทุกสาย | ฟรี→กลาง | ⚙️ เสริม + เป็นมุมที่ Fable ช่วยได้จริง |
หลักการเลือกของปลาเล็ก: ใช้ข้อมูลที่ (1) ฟรี/ถูก (2) คุณภาพตรวจสอบได้ (3) ตรงกับ timeframe ของ edge เรา — อย่าซื้อข้อมูลแพงก่อนมี edge ที่พิสูจน์แล้วว่า "ติดเพดานเพราะข้อมูล" (มือใหม่เกือบทั้งหมดติดเพดานเพราะอย่างอื่นทั้งนั้น)
2. มาตรวัดคุณภาพข้อมูล 5 ข้อ — checklist ก่อนเชื่อ dataset ไหนก็ตาม
- ครบ (completeness): มีรูไหม — วันหาย แท่งหาย ช่วงตลาดปิดที่ควรมี/ไม่ควรมี · วิธีเช็คเร็ว: นับแท่งต่อปีเทียบที่ควรเป็น (forex รายวัน ~260 แท่ง/ปี · crypto ~365 · หุ้น ~250) แล้วไล่ดูช่วงที่โหว่
- ถูก (accuracy): มี bad tick ไหม — แท่งที่ high พุ่ง 20% แวบเดียว (ข้อมูลผิด หรือ flash crash จริง? ต้องแยกได้!) · ราคาติดลบ · volume ศูนย์ผิดวิสัย · วิธีเช็ค: สแกนหา outlier เกิน X SD แล้ว "เปิดดูทีละตัว" เทียบแหล่งที่สอง — ห้ามลบอัตโนมัติ เพราะ บางตัวคือเหตุการณ์จริงที่สำคัญที่สุดในข้อมูล (น้ำมัน WTI ติดลบ −$37 เม.ย. 2020 = ข้อมูลจริง! ระบบที่ "ทำความสะอาด" ทิ้งไป จะไม่เคยรู้ว่าโลกแบบนี้มีอยู่)
- ตรงเวลา (point-in-time): ตัวเลขนี้คือสิ่งที่โลกเห็น ณ ตอนนั้นจริงไหม — ราคา adjusted ย้อนหลัง, งบ revised, ตัวเลขเศรษฐกิจฉบับแก้ — ใช้ฉบับแก้ทดสอบอดีต = แอบดูเฉลย (บท 2 ข้อ 29)
- ลึกพอ (history): ครอบกี่ regime — ข้อมูล 3 ปีที่เป็นกระทิงล้วน สอนระบบให้รู้จักแค่ฤดูร้อน · มาตรฐานขั้นต่ำ: 10 ปี (กิน 2-3 regime) — ของเราผ่าน (10 ปี ครอบ 2016 เงียบ / 2020 โควิด / 2022 หมี / 2024-25 กระทิงทอง)
- ไร้อคติผู้รอด (survivorship-free): universe นี้คัดตัวตายออกหรือยัง — ของเรามีปัญหานี้จริง (41 ตัว = ผู้ชนะของวันนี้) → ผลฝั่ง buy&hold ใน R2 (งานวิจัย trend baseline 41 ตัวของเรา — ดู research/) จึงสวยเกินจริง ระบุใน assumption ทุกครั้ง — และนี่คือตัวอย่างที่ดีว่า "รู้ข้อจำกัด แล้วแถลงตรงๆ" คือมาตรฐานวิชาชีพ ไม่ใช่ความอ่อนแอ
3. แหล่งข้อมูลจริงต่อตลาด — ตู้กับข้าวของเรา (สถานะ 2026)
Forex / ทองคำ
- ราคา spot ฟรี: yfinance (
EURUSD=X,GC=F) — คุณภาพ "พอใช้สำหรับ Daily/H4" · จุดอ่อน: เป็น feed เดียว ไม่มี volume จริง (spot ไม่มีตลาดกลาง — บท 9) - ระดับดีขึ้น (ฟรี): ราคา futures จาก CME ผ่าน yfinance (GC=F คือ futures อยู่แล้ว) ได้ volume จริงของตลาดกลางแถมมา — นี่คือเหตุผลที่ทองเราควรอิง GC ไม่ใช่ XAU spot ของโบรกใดโบรกหนึ่ง · ข้อควรรู้: yfinance ไม่มี open interest ของ futures (ต้องไปเอาจาก CME โดยตรงหรือบริการอื่น) และ GC=F เป็น continuous contract แบบ "ต่อดิบๆ" ไม่ได้ back-adjust — สัญญาณใกล้วันหมดอายุสัญญาต้องเช็คมือว่า gap ที่เห็นเป็น basis ปลอมหรือตลาดขยับจริง
- Dukascopy (ฟรี): tick data forex ย้อนหลังยาว คุณภาพดีเกินราคา (ฟรี) — เผื่ออนาคตต้องการละเอียดกว่ารายวัน
- COT: เว็บ CFTC ปล่อยทุกศุกร์ ฟรี — positioning ของ large spec/commercial ในทอง ค่าเงินทุกตัว
Crypto — ตลาดที่ข้อมูลฟรีดีที่สุดในโลก (ย้ำจากบท 9)
- Binance public API (ที่ระบบเราใช้อยู่): OHLCV ทุก timeframe + aggTrades (แยกฝั่งซื้อขาย = ทำ delta/CVD ได้!) + funding + OI — ฟรี ไม่ต้อง key · ระดับที่ตลาดอื่นต้องจ่ายแพงมาก
- เสริม: Coinglass (liquidation map/OI รวมข้าม exchange — ฟรีบางส่วน), on-chain ฟรีระดับพื้น (blockchain explorers)
หุ้น US
- yfinance ฟรี (adjusted — ระวังกับดักข้อ 3 ในหัวข้อถัดไป) · ระดับจ่ายถูก: Alpha Vantage/Polygon/Tiingo (หลัก $0-50/เดือน) ถ้าเอาจริงสายนี้ · 13F จาก SEC EDGAR ฟรี
- Macro: FRED (เว็บธนาคารกลางสหรัฐสาขา St. Louis) = ขุมทรัพย์ฟรีระดับที่กองทุนยังใช้ — ดอกเบี้ย เงินเฟ้อ การจ้างงาน ครบ · ปฏิทินเศรษฐกิจ: ForexFactory/Investing ฟรี (สำคัญกับกฎ "ห้ามถือผ่านข่าวใหญ่" ของระบบเรา)
หุ้นไทย — พูดตรงๆ
- ข้อมูลฟรีคุณภาพต่ำสุดใน 4 ตลาดของเรา: yfinance ครอบหุ้นไทยแบบหลวมๆ (
.BK) มีรู มี delay · ของจริงต้องผ่าน SETSMART (เสียเงิน) หรือ data จากโบรกไทย — ตามแผนเดิม: ทำ 3 ตลาดให้เนี้ยบก่อน หุ้นไทยรั้งท้าย และผล R2 ก็สนับสนุน (สัญญาณอ่อนสุดในหุ้นไทย ส่วนหนึ่งจาก data quality เอง)
🔬 เจาะลึก — ทำไม "หลาย feed ราคาไม่ตรงกัน" ถึงเป็นเรื่องปกติและต้องวางแผนรับ: forex/ทอง spot ไม่มีราคากลาง — โบรก A กับ B ต่างกันได้ 0.5-2 จุดตลอดเวลา และแท่งเทียน H4 "หน้าตาต่างกัน" ได้จริงเพราะตัดเวลาเปิด-ปิดแท่งคนละ timezone (โบรก GMT+2 vs GMT+3 ทำให้แท่ง Daily มี 5 หรือ 6 แท่ง/สัปดาห์ไม่เท่ากัน!) → กฎปฏิบัติ: (1) ระบบทั้งหมดอิง feed เดียวเสมอ ทั้งทดสอบทั้งใช้งาน (2) สัญญาณจาก feed เรา ต้องเผื่อใจว่าหน้าจอโบรกหลิวเห็นต่างเล็กน้อย — ความต่างนี้คือหนึ่งใน "backtest-to-live gap" ที่กินกำไรเงียบๆ และเหตุผลที่เทรดกระดาษ (จดจากราคาโบรกจริง) เป็นด่านที่ข้ามไม่ได้
4. กับดักข้อมูล 7 ตัวที่เจ็บจริงในทางปฏิบัติ (เรียงตามความถี่ที่คนโดน)
- Timezone & Daylight Saving: บั๊กอันดับ 1 ของระบบข้ามตลาด — ข้อมูล 2 ชุด timestamp คนละโซน ทำให้ "วันเดียวกัน" เหลื่อมกันจริง 1 วัน → ระบบเห็นราคาทองของ "พรุ่งนี้" เทียบกับดอลลาร์ของ "วันนี้" = look-ahead เงียบๆ ที่ทำให้ backtest เทพปลอม · สหรัฐ/ยุโรปสลับ DST คนละสัปดาห์ ปีละ 2 ครั้ง — ช่วงนั้นข้อมูล intraday เหลื่อมชั่วโมง · ยาแก้: normalize ทุกอย่างเป็น UTC ตั้งแต่ขาเข้า (ระบบเราทำแล้ว) และทดสอบ: สุ่มหยิบ 5 วัน เทียบกับชาร์ตจริงด้วยตา
- แท่ง Daily ของ forex "ปิดกี่โมง": ตลาด forex ไม่มีเวลาปิดจริง (วิ่ง 24/5) — "ราคาปิดวัน" คือ convention (มาตรฐานวงการ: 17:00 New York) · feed ที่ตัดเที่ยงคืน UTC จะให้ แท่ง/สัญญาณ คนละชุดกับชาร์ตโบรก → เช็คให้รู้ว่า feed เราตัดตรงไหน และยอมรับว่าต่างจากจอโบรกได้
- Adjusted vs Unadjusted (หุ้น): ปันผล/แตกพาร์ทำราคาดิบกระโดด — adjusted แก้ปัญหานี้แต่สร้างปัญหาใหม่: ราคา/แนวรับต้านในอดีตไม่ใช่เลขที่คนตอนนั้นเห็นจริง → สัญญาณ breakout จาก adjusted คือ breakout ที่ไม่เคยเกิด · แนวปฏิบัติ: ใช้ adjusted สำหรับคำนวณผลตอบแทน + unadjusted สำหรับ level จริง (หรือเลือกตลาดที่ไม่มีปัญหานี้ — forex/ทอง/crypto ของเราไม่มี)
- Contract roll (futures): สัญญา futures หมดอายุทุกเดือน/ไตรมาส — ราคา "ต่อเนื่อง" ที่เห็นคือหลายสัญญาเย็บต่อกัน รอยต่อมี gap เทียม (จาก basis ไม่ใช่ตลาดขยับ) → ระบบที่ไม่รู้จะเห็น "ราคากระโดด" ปลอมทุกเดือน · yfinance GC=F เย็บมาให้แล้วแบบหนึ่ง (พอใช้ระดับเรา) — แค่ต้องรู้ว่ารอยต่อมีอยู่ อย่าตีความ gap แถววันหมดอายุเป็นสัญญาณ
- Tick volume ≠ volume จริง (forex spot): จำนวน "ครั้งที่ราคาขยับ" ไม่ใช่ "ปริมาณเงิน" — ใช้แทนกันได้ระดับหยาบบน H1+ (สหสัมพันธ์สูงพอ) แต่ทุกครั้งที่ผลวิเคราะห์ "เซนซิทีฟกับ volume มากๆ" ให้ย้ายไปดู volume ของ futures ยืนยัน
- Weekend & Holiday mismatch: crypto เทรด 7 วัน forex 5 วัน หุ้น 5 วันมีวันหยุดไม่ตรงกันข้ามประเทศ → การ join ข้ามตลาด ("ทองกับ BTC วันเดียวกัน") ต้องตัดสินใจชัดๆ ว่าจัดการเสาร์อาทิตย์/วันหยุดยังไง ไม่งั้นสถิติ correlation เพี้ยนเงียบๆ
- API เปลี่ยน/ตาย: yfinance คือการ scrape Yahoo — โครงเว็บเปลี่ยน = ท่อแตกได้ทุกเมื่อ (ประวัติศาสตร์เกิดมาแล้วหลายรอบ) · วินัยของระบบ: เก็บ raw data ลงเครื่องทุกครั้งที่ดึง (ของเราทำแล้ว — data/ อยู่นอก git แต่อยู่ในเครื่อง) เพื่อให้ "ประวัติศาสตร์ของเรา" ไม่หายตาม API + มีแผนสำรอง (Stooq, Dukascopy, Binance ตรง)
5. สุขอนามัยข้อมูล — มาตรฐานที่แยกมือสมัครเล่นจากมืออาชีพ (และระบบเราทำตาม)
- Raw แยกจาก Processed เสมอ: ข้อมูลดิบที่ดึงมา = จดหมายเหตุ ห้ามแก้ · ทุกการ clean/แปลง เกิดในไฟล์ใหม่ด้วยโค้ดที่รันซ้ำได้ — เพราะวันที่เจอผลประหลาด คำถามแรกคือ "data หรือกฎ?" ถ้า raw ถูกเขียนทับ จะไม่มีวันตอบได้
- ทุกการลบ/แก้ ต้องมี log: "ลบ 3 แท่ง outlier วันที่ X เพราะเทียบ 2 แหล่งแล้วเป็น bad tick" — เขียนไว้ในโค้ด ไม่ใช่ในความทรงจำ
- Validation รันอัตโนมัติทุกครั้งที่ดึงใหม่: นับแท่ง · เช็ค NaN · เช็ค outlier · เช็ควันที่ล่าสุด — 20 บรรทัดที่ป้องกันการ "เทรดทั้งเดือนบนข้อมูลที่หยุดอัปเดตไปแล้ว" (เกิดจริงกับคนทำระบบทุกคนสักครั้ง)
- อย่าเชื่อ data ที่เพิ่งดึงจนกว่าจะผ่านตา 1 รอบ: plot ทุก series ใหม่ดูด้วยตาเสมอ 30 วินาที — ตามนุษย์จับ "ความผิดปกติประหลาดๆ" ได้ดีกว่า rule อัตโนมัติในรอบแรก
6. บันไดการลงทุนใน data ของเรา (เดินทีละขั้น — ขั้นต่อไปปลดล็อกเมื่อขั้นนี้ "ตัน" จริงเท่านั้น)
- ตอนนี้ (ฟรีทั้งหมด): yfinance + Binance + COT + FRED + ปฏิทินข่าว — เพียงพอสำหรับพิสูจน์ edge บน Daily/H4
- เมื่อระบบพิสูจน์แล้วและติดเพดานเรื่องความละเอียด: Dukascopy tick (ฟรี) / data โบรกตรง — ปลดล็อก intraday จริงจัง
- เมื่อมีกำไรจริงเลี้ยงระบบ: จ่าย data รายเดือนระดับ $30-100 (หุ้น US จริงจัง / crypto ลึก) — กฎ: ค่า data ต้องน้อยกว่า 5% ของกำไรที่ระบบทำได้ ไม่งั้นยังไม่ถึงเวลา
- ไกลกว่านั้น (เขียนไว้กันฝันหลุด): order flow futures (Databento/Rithmic หลัก $100-300/เดือน) — เฉพาะเมื่อ edge ที่มีต้องการมันจริงๆ — ย้ำ: อย่าซื้อข้อมูลแพงเพื่อ "หา" edge — ซื้อเพื่อ "ขยาย" edge ที่พิสูจน์แล้วเท่านั้น ลำดับนี้กลับด้านคือสูตรการเผาเงินมาตรฐานของ quant มือใหม่ทุนหนา
ประโยคขึ้นเพจจากบทนี้: - "ระบบไม่มีทางฉลาดกว่าข้อมูลที่ป้อนมัน — และบั๊กข้อมูลไม่ทำให้ระบบพัง มันทำให้ระบบมั่นใจในสิ่งที่ผิด" - "ก่อนลบข้อมูลประหลาดทิ้ง เช็คก่อนว่ามันคือความผิดพลาด หรือคือวันที่ตลาดบ้าจริงๆ — น้ำมันเคยติดลบมาแล้ว ระบบที่ไม่เคยเห็นข้อมูลนั้นคือระบบที่ไม่รู้ว่าโลกนี้ทำอะไรได้บ้าง" - "Forex ไม่มีราคาปิดจริง ไม่มี volume กลางจริง ไม่มีตลาดกลางด้วยซ้ำ — แท่งเทียนที่เห็นคือ 'มุมมองของโบรกคุณ' ไม่ใช่ 'ความจริงสากล'" - "อย่าซื้อข้อมูลแพงเพื่อหา edge — ซื้อเพื่อขยาย edge ที่พิสูจน์แล้ว ลำดับกลับด้านคือสูตรเผาเงินมาตรฐาน"
ถัดไป → บท 5: Backtest — ห้องสอบที่ทำให้ข้อมูลกลายเป็นหลักฐาน (หรือกลายเป็นเครื่องหลอกตัวเองชั้นดี)