← สารบัญหนังสือ
2.2 — SQL + ฐานข้อมูล
ดึงข้อมูลที่อยากได้
ภาค 2 · เครื่องมือ · อ่าน ~5 นาที · ถามข้อมูลด้วยภาษาที่อ่านเหมือนภาษาคน
สมมติข้อมูลราคาหุ้น SET ทุกตัวทุกวันย้อนหลัง 10 ปีอยู่ในคอมพิวเตอร์ · ปัญหาไม่ได้อยู่ที่มีข้อมูลไหม — แต่อยู่ที่ "จะเอาข้อมูลที่ต้องการออกมายังไง โดยไม่ต้องเปิด Excel ไล่กรองมือ"
คำตอบคือ SQL — ภาษาที่ใช้ "ถามข้อมูล" ได้ตรงๆ เหมือนถามคน
1. ฐานข้อมูล (database) คืออะไร — และต่างจาก Excel ยังไง
Excel เก็บข้อมูลเป็นไฟล์ ไฟล์เดียว sheet เดียว · ฐานข้อมูลคือ "คลังข้อมูลที่จัดระเบียบ" — เก็บได้หลาย table พร้อมกัน เชื่อมกันได้ และดึงข้อมูลออกมาได้เร็วมากแม้ข้อมูลจะใหญ่แค่ไหน
ลองนึกภาพแบบนี้:
Excel = สมุดบัญชีกระดาษ · เปิดดูได้ กรองได้ แต่ถ้าข้อมูลเป็นล้านแถวก็จบ เครื่องแฮง
ฐานข้อมูล = ห้องสมุดที่มีบรรณารักษ์เทพ · ข้อมูลเป็นพันล้านแถวก็บอกได้ในวินาทีว่า "หนังสือที่ชื่อ X อยู่ชั้น Y ตำแหน่ง Z" · บรรณารักษ์ตัวนั้นคือ SQL
ใน quant ฐานข้อมูลเก็บสิ่งเหล่านี้: ราคา OHLCV รายนาที/รายวัน · ข้อมูลปัจจัยพื้นฐาน · ผลการเทรดของระบบ · ข้อมูล alternative data (sentiment, economic data) · ทั้งหมดอยู่ใน table แยกกัน ดึงมาเชื่อมกันได้ตามต้องการ
2. SQL คืออะไร — ภาษาถามข้อมูล
SQL ย่อมาจาก Structured Query Language — ฟังดูน่ากลัว แต่จริงๆ มันคือ "ประโยคภาษาอังกฤษที่ถามข้อมูลเป็นขั้นตอน" · ไม่มีภาษาโปรแกรมไหนที่อ่านง่ายกว่า SQL อีกแล้ว
-- ถามข้อมูลแบบบ้านๆ ที่สุด: "เอาทุกอย่างจากตาราง gold_prices"
SELECT * FROM gold_prices
-- ถามเฉพาะที่: "เอาวันที่กับราคาปิด ที่ volume เกิน 100,000"
SELECT date, close
FROM gold_prices
WHERE volume > 100000
-- ถามพร้อมเรียงลำดับ: "เอา 10 วันที่ volume สูงที่สุด"
SELECT date, close, volume
FROM gold_prices
ORDER BY volume DESC
LIMIT 10
อ่านบรรทัดสุดท้าย: SELECT วันที่-ราคาปิด-volume จาก gold_prices เรียงตาม volume มากไปน้อย เอาแค่ 10 แถวแรก · นี่คือ SQL จริงๆ — ไม่ต้องเขียนเป็น แค่อ่านออก เดาทางได้ ก็พอ
3. คำสั่งหลักที่ต้องรู้จัก (ไม่ต้องจำ แค่รู้ว่ามีอยู่)
SELECT — "เอาอะไร" · เลือกคอลัมน์ที่ต้องการ
FROM — "จากที่ไหน" · ชื่อ table
WHERE — "เงื่อนไขไหน" · กรองแถวที่ต้องการ
ORDER BY — "เรียงยังไง" · มากไปน้อย (DESC) หรือน้อยไปมาก (ASC)
LIMIT — "เอากี่แถว" · ตัดให้เหลือเท่าที่ต้องการ
GROUP BY — "จัดกลุ่ม" · เช่น สรุปยอดรายเดือน รายปี
JOIN — "เชื่อมสองตาราง" · รวม table ราคากับ table ปัจจัยพื้นฐาน
4. ตัวอย่างที่ quant ใช้จริง
ลองดูโจทย์จริงที่หลิวเจอทุกวัน — "อยากรู้ว่า RVOL สูงเกิน 1.5 พร้อมกับราคาปิดเหนือค่าเฉลี่ยมีกี่วัน กี่เดือนที่ผ่านมา":
-- สรุปรายเดือน: นับวันที่ RVOL > 1.5 และ close > ma20
SELECT
strftime('%Y-%m', date) AS month,
COUNT(*) AS signal_days,
AVG(close) AS avg_close
FROM gold_prices
WHERE
rvol > 1.5
AND close > ma20
GROUP BY month
ORDER BY month
ผลที่ได้คือตาราง: เดือน | วันที่มีสัญญาณ | ราคาเฉลี่ย · ทั้งหมดนี้ SQL ทำให้ใน 0.1 วินาที ถ้าทำมือใน Excel คงใช้เวลาครึ่งวัน
-- JOIN: เชื่อมราคากับ economic calendar
-- "อยากรู้ว่าวันประกาศ Fed ทองวิ่งเฉลี่ยกี่ %"
SELECT
e.event_name,
AVG(ABS(p.close - p.open) / p.open * 100) AS avg_move_pct
FROM gold_prices p
JOIN econ_events e ON p.date = e.date
WHERE e.event_name LIKE '%Fed%'
GROUP BY e.event_name
JOIN คือคำสั่งที่ทรงพลังที่สุด — เชื่อมข้อมูลสองแหล่งได้ในบรรทัดเดียว · ถ้าจะทำแบบนี้ด้วย Excel ต้องใช้ VLOOKUP นับสิบรอบ และยังผิดง่ายด้วย
5. SQL ใช้ตอนไหนในชีวิต quant จริงๆ
ก่อน backtest: ดึงข้อมูลช่วงเวลาที่ต้องการออกมาก่อน ไม่โหลดทั้งหมดเข้า RAM (ลดเวลา)
ระหว่าง research: ถามข้อมูลแบบ exploratory — "วันที่ ATR ต่ำกว่าเปอร์เซ็นไทล์ 20 มีกี่วัน?" "ทองตกหลัง Fed เฉลี่ยกี่จุด?"
หลัง backtest: บันทึกผลการเทรดจำลองลง database แล้วใช้ SQL ถามสถิติ — win rate รายเดือน / drawdown รายปี / performance แยกตาม regime
Live trading: ดึงข้อมูลสดจาก database เพื่อส่งให้ระบบตัดสินใจ
💡 จุดที่ quant ต่างจากคนทั่วไป: คนทั่วไปเปิด Excel กรองมือ · quant เขียน SQL ประโยคเดียว ได้คำตอบทันที · พอข้อมูลเยอะขึ้น Excel ล่ม SQL ยังทำงานได้ · หลิวไม่ต้องเขียน SQL เป็นทุกคำสั่ง — แค่รู้จักพอบอก AI ว่า "อยากได้ข้อมูลแบบนี้จาก table นี้" AI จะเขียนให้ หลิวแค่ตรวจว่าตรงทิศไหม
6. ฐานข้อมูลที่ quant ใช้จริงมีอะไรบ้าง
ไม่ต้องรู้ลึก แค่รู้ชื่อไว้คุยรู้เรื่อง:
SQLite — เล็กสุด ใช้ง่ายที่สุด ไม่ต้องติดตั้ง server · ดีมากสำหรับงาน solo ข้อมูลไม่เกินหลักล้านแถว · จุดเริ่มต้นที่แนะนำสำหรับหลิว
PostgreSQL — ใหญ่ขึ้น แรงขึ้น เชื่อถือได้ · ใช้ใน production จริงที่บริษัทส่วนใหญ่
DuckDB — ตัวใหม่มาแรง เร็วมากสำหรับข้อมูล time-series · เหมาะ quant มาก
ClickHouse / TimescaleDB — ระดับ enterprise สำหรับข้อมูล tick ที่ใหญ่มหาศาล