← สารบัญหนังสือ
2.1 — Python · pandas · numpy
เครื่องมือที่ quant พิมพ์ทุกวัน
ภาค 2 · เครื่องมือ · อ่าน ~6 นาที · รู้จักสามตัวนี้ = คุยกับ AI ได้ สั่งงานได้ ไม่ต้องเขียนเองก็ได้
คนได้ยินคำว่า Python แล้วนึกถึงโปรแกรมเมอร์นั่งพิมพ์โค้ดหน้าจอสีดำตลอดคืน
ความจริงคือ: หลิวไม่ต้องเขียน Python เป็น — แค่ต้องรู้จักมันพอ "อ่านออก" และ "สั่ง AI ให้เขียนถูกทิศ"
บทนี้ไม่ใช่คอร์สโปรแกรมมิ่ง — มันคือแผนที่ว่าสิ่งเหล่านี้คืออะไร ทำไมถึงสำคัญ และหน้าตาเป็นยังไง
1. ทำไม Python ถึงกลายเป็นภาษาหลักของ quant ทั้งโลก
ก่อน Python จะครองโลก quant ใช้หลายภาษา — R, MATLAB, C++, Excel VBA · แต่ Python ชนะเพราะสามเหตุที่ต่างจากชาวบ้านทั่วไป:
1. อ่านง่ายเหมือนภาษาคน — โค้ด Python อ่านคล้ายประโยคภาษาอังกฤษ ไม่มีวงเล็บซ้อนซับซ้อนแบบภาษาอื่น · คนไม่ได้เรียนโปรแกรมยังไล่อ่านตามได้ (ซึ่งสำคัญมากตอน AI เขียนให้แล้วหลิวต้องตรวจ)
2. มีไลบรารีสำเร็จรูปที่ทำงานหนักให้ทั้งหมด — ไม่ต้องสร้างอะไรจากศูนย์ · คนอื่นเขียนเครื่องมือไว้ให้หมดแล้ว ดึงมาใช้ได้เลย · pandas, numpy, matplotlib, scikit-learn — ทุกอย่างฟรี
3. AI เขียน Python เก่งที่สุด — เพราะมี Python โค้ดในอินเทอร์เน็ตมากกว่าภาษาอื่น · สั่ง AI ให้เขียน Python = ได้งานที่ถูกและเชื่อถือได้มากกว่าภาษาอื่นหลายเท่า
สรุปง่ายๆ: Python คือ "ภาษากลาง" ที่ quant ทั้งโลกตกลงใช้ร่วมกัน · เรียนรู้แค่พอ "อ่านออก" ก็พอแล้วสำหรับจุดที่หลิวอยู่ตอนนี้
2. pandas — ตารางข้อมูลที่ quant ใช้ทุกวัน
ถ้า Python คือ "เครื่องยนต์" แล้ว pandas คือ "โต๊ะทำงาน" · หัวใจของ pandas คือสิ่งที่เรียกว่า DataFrame — มันคือตารางข้อมูล เหมือน Excel แต่เร็วกว่า และสั่งได้ซับซ้อนกว่ามาก
ลองนึกภาพข้อมูลราคาทองวันละแท่ง: คอลัมน์ Date · Open · High · Low · Close · Volume — นั่นแหละคือ DataFrame · quant เอา DataFrame มาทำทุกอย่าง: กรองวันที่, คำนวณค่าเฉลี่ย, หา pattern, สร้าง signal
# สร้าง DataFrame จากข้อมูลราคา 3 วัน
import pandas as pd
data = {
'date' : ['2024-01-01', '2024-01-02', '2024-01-03'],
'close' : [2050, 2067, 2055],
'volume': [120000, 185000, 98000],
}
df = pd.DataFrame(data)
# ดู DataFrame — พิมพ์ df แล้วได้ตาราง
# หาค่าเฉลี่ย close ทุก 3 วัน
df['ma3'] = df['close'].rolling(3).mean()
โค้ดข้างบนนี้ไม่ต้องเขียนเป็น — แค่ อ่านออก ว่ามันทำอะไร · rolling(3).mean() = ค่าเฉลี่ยเคลื่อนที่ 3 วัน · ถ้าหลิวบอก AI ว่า "เอา DataFrame ที่มี OHLCV มา หา MA20" — AI จะเขียนแบบนี้ให้ทันที · หลิวรู้แค่นี้ก็สั่งงานได้
💡 pandas ช่วยอะไรในงานจริง:
• โหลดไฟล์ CSV ราคาหุ้น/forex/crypto เข้ามาเป็นตารางในวินาทีเดียว
• กรองข้อมูล เช่น "เอาแค่วันจันทร์" หรือ "เฉพาะ volume เกิน 100,000"
• คำนวณ indicator ทุกตัว (MA, RSI, ATR, RVOL) บนข้อมูลหลายปีพร้อมกัน
• เอาผล backtest มาสรุปเป็นสถิติ: win rate, profit factor, max drawdown
3. numpy — เลขและ array ที่อยู่เบื้องหลังทุกอย่าง
numpy อยู่ "ใต้" pandas อีกชั้น · ถ้า pandas คือโต๊ะทำงาน numpy คือ "เครื่องคิดเลขที่เร็วที่สุดในโลก" · มันเก่งเรื่องเดียว: คำนวณตัวเลขจำนวนมากพร้อมกันอย่างรวดเร็วมาก
ในชีวิตจริงของ quant ส่วนใหญ่ไม่ได้แตะ numpy ตรงๆ บ่อยนัก เพราะ pandas ใช้ numpy เบื้องหลังอยู่แล้ว · แต่รู้จักไว้เพราะจะเห็นชื่อมันในโค้ดทุกที่
# numpy ทำงานบน "array" — อาร์เรย์ = กล่องตัวเลขเรียงกัน
import numpy as np
closes = np.array([2050, 2067, 2055, 2080, 2060])
# คำนวณทีเดียวทุกตัว — ไม่ต้องวนลูป
returns = np.diff(closes) / closes[:-1] # % เปลี่ยนแปลงรายวัน
std_dev = np.std(returns) # ค่าเบี่ยงเบนมาตรฐาน
print(std_dev) # → ตัวเลขเดียว ใช้ต่อได้เลย
สิ่งที่น่าทึ่งคือ numpy คำนวณตัวเลขล้านตัวได้ใน มิลลิวินาที · ตรงนี้แหละที่ทำให้ backtest ที่ต้องวิ่งผ่านข้อมูลหลายปีทำได้เร็ว ไม่ใช่รอข้ามคืน
ความแตกต่างในภาพเดียว:
numpy = กล่องตัวเลขขนาดยักษ์ + เครื่องคิดเลขเทพ · ดิบ เร็ว ตรงไปตรงมา
pandas = ตารางข้อมูลมีหัวคอลัมน์ มีวันที่ มีชื่อ · ใช้งานสะดวก อ่านผลง่าย
ในงานจริง: ใช้ pandas เป็นหลัก · numpy โผล่เมื่อต้องการคณิตศาสตร์หนักๆ
4. หน้าตาของโค้ดจริงๆ ในงาน quant
นี่คือตัวอย่างโค้ดที่ quant ใช้จริง — อ่านแล้วเดาได้ว่าทำอะไร ไม่ต้องเข้าใจทุกบรรทัด:
# โหลดข้อมูลราคาทอง
df = pd.read_csv('gold_daily.csv', parse_dates=['date'])
# คำนวณ indicator
df['ma20'] = df['close'].rolling(20).mean()
df['atr'] = (df['high'] - df['low']).rolling(14).mean()
df['vol_ma'] = df['volume'].rolling(20).mean()
df['rvol'] = df['volume'] / df['vol_ma']
# กรอง: หา "วันที่ RVOL สูงกว่า 1.5 และราคาปิดเหนือ MA20"
signals = df[(df['rvol'] > 1.5) & (df['close'] > df['ma20'])]
print(f"พบสัญญาณ {len(signals)} ครั้ง ใน {len(df)} วัน")
อ่านบรรทัดสุดท้าย: "กรองวันที่ RVOL เกิน 1.5 และปิดเหนือ MA20" — นี่คือ signal แบบ Wyckoff ที่หลิวใช้ด้วยตาทุกวัน เพิ่งถูกแปลงเป็นโค้ด · หลิวบอก AI ว่า "อยากหาวันที่ RVOL เกิน 1.5 และปิดเหนือ MA20" AI จะเขียนได้ทันที · หลิวแค่ต้องอ่านออกว่าโค้ดทำถูกทิศไหม
5. ไม่ต้องเขียนเป็น — แค่ต้องรู้จักพอสั่ง AI ได้
นี่คือจุดที่ต่างจากคอร์สโปรแกรมมิ่งทั่วไป: หลิวไม่ต้องนั่งจำ syntax ไม่ต้องผ่าน coding bootcamp · โลกเปลี่ยนไปแล้ว — AI เขียนโค้ดให้ได้ · แต่ถ้าหลิวไม่รู้จักสิ่งเหล่านี้เลย จะ:
• บอก AI ผิดทิศ → ได้โค้ดที่ไม่ตอบโจทย์ แล้วก็งง ไม่รู้จะแก้ยังไง
• ตรวจโค้ดที่ AI เขียนไม่ออก → เอาไปรันโดยไม่รู้ว่ามันทำอะไร = อันตราย
• คุยกับคนในทีม (หรือ AI) ไม่รู้เรื่อง เพราะไม่รู้ว่า DataFrame คืออะไร
📌 เป้าหมายของหลิวในบทนี้: รู้จัก Python/pandas/numpy ในระดับที่ "เห็นแล้วไม่กลัว · อ่านแล้วเดาทางได้ · สั่ง AI ได้ถูกทิศ" · แค่นั้นพอแล้วสำหรับตอนนี้ · ฝีมือเขียนโค้ดค่อยมาทีหลัง ถ้าอยากได้