Strasmore Research

เรียนรู้ Quant Trading จากหนังสือโอเพนซอร์ส

หนังสือ Quant Trading แบบโอเพนซอร์สสรุปหลักสูตรครบถ้วน ตั้งแต่ข้อมูลดิบถึงการส่งคำสั่งซื้อขาย ดูว่าแต่ละขั้นสอนอะไร ผู้เริ่มต้นมักหยุดที่จุดใด และส่วนใดใช้กับหุ้นสหรัฐฯ ได้

หนังสือการซื้อขายเชิงปริมาณแบบโอเพนซอร์สคือหลักสูตรสาธารณะที่เปิดให้ใช้งานฟรี โดยบันทึกเส้นทางทั้งหมดตั้งแต่ข้อมูลดิบไปจนถึงการส่งคำสั่งซื้อขายจริงตามลำดับที่ผู้เริ่มต้นมักพบเจอ ต้นฉบับ XQuant: Everyone Can Be a Quantitative Trader ซึ่งเผยแพร่บน GitHub โดย xingwudao เป็นตัวอย่างที่ชัดเจน โดยมี 686 ดาว ณ เดือนสิงหาคม 2026 และทั้งเก้าบทครอบคลุมลำดับขั้นที่หลักสูตรด้านการซื้อขายเชิงปริมาณเกือบทุกหลักสูตรใช้ หน้านี้จะติดตามลำดับดังกล่าวทีละขั้น ระบุความล้มเหลวเฉพาะที่เกิดขึ้นในแต่ละขั้น และชี้ให้เห็นว่าส่วนใดบ้างที่ยังใช้ได้เมื่อนำจากหุ้น A ของจีนไปใช้กับหุ้นสหรัฐฯ

หนังสือการเทรดเชิงปริมาณแบบโอเพนซอร์สมีเนื้อหาอะไรบ้าง?

หากตัดชื่อแบรนด์ออกจากหลักสูตรสำหรับผู้เริ่มต้น จะเหลือห้าขั้นตอนตามลำดับนี้: จัดหาและทำความสะอาดข้อมูล สร้างสัญญาณจากข้อมูล ทดสอบสัญญาณนั้นกับข้อมูลในอดีต ตัดสินใจว่าจะจัดสรรเงินเดิมพันมากเพียงใด จากนั้นส่งคำสั่งซื้อขายและชำระต้นทุนต่าง ๆ เนื้อหาของ XQuant ณ commit 016b66e เมื่อวันที่ 14 กรกฎาคม 2026 ครอบคลุมเนื้อหาเดียวกันในเก้าบท

  • การเตรียมการ จากนั้นบทที่หนึ่ง: รันกลยุทธ์หนึ่งชุดตั้งแต่ต้นจนจบ
  • บทที่สอง จะซื้ออะไร: เริ่มต้นด้วย ETF สามกอง
  • บทที่สาม จะซื้อในสัดส่วนเท่าใด: วิธีจัดสรรสามวิธีที่นำมาเปรียบเทียบกัน
  • บทที่สี่ จะซื้อขายเมื่อใด: การปรับพอร์ต การตั้งจุดตัดขาดทุน และการทำกำไร
  • บทที่ห้า จะประเมินว่ากลยุทธ์มีคุณภาพหรือไม่อย่างไร: มองจากสี่มุม
  • บทที่หก อย่าเพิ่งฉลองเร็วเกินไป: การป้องกัน overfitting
  • บทที่เจ็ด จากอุดมคติสู่ความเป็นจริง: การดำเนินการซื้อขาย
  • บทที่แปด ชีวิตหลังเปิดใช้งาน: การติดตาม การวินิจฉัย และการปรับปรุงซ้ำ
  • บทที่เก้า การค้นหาโอกาสใหม่: บทนำสู่การวิจัยปัจจัย

ลำดับของเนื้อหานี้ควรได้รับความสนใจ การกำหนดขนาดการลงทุนอยู่ในบทที่สาม ก่อนหน้าทั้งสองบทที่เกี่ยวกับการทดสอบย้อนหลัง ส่วนการวิจัยปัจจัยอยู่ในบทสุดท้าย เส้นทางการเรียนรู้ด้วยตนเองมักเรียงลำดับตรงกันข้าม คือเริ่มจากแนวคิดด้านปัจจัย ต่อด้วยการทดสอบย้อนหลัง และไม่มีกฎการกำหนดขนาดการลงทุนเลย คลังแบบฝึกหัดประกอบ ซึ่งมี 333 ดาว ณ วันเดียวกัน จัดระเบียบตามข้อกำหนดงานที่เขียนไว้ ไม่ใช่โค้ดที่เสร็จสมบูรณ์ โดยให้ผู้อ่านสั่งผู้ช่วย AI ให้พัฒนาโค้ดตามข้อกำหนดดังกล่าว ความสามารถในการอ่านโค้ดที่คุณไม่ได้เขียนเองยังคงเป็นทักษะที่ชี้ขาดทุกอย่างในขั้นตอนต่อไป เพราะความล้มเหลวแต่ละประการซ่อนอยู่ในรายละเอียดการนำไปใช้งานเพียงจุดเดียว

ขั้นที่หนึ่ง: ดึงข้อมูล แล้วกำหนดขอบเขตหลักทรัพย์

การทำความสะอาดข้อมูลเป็นส่วนที่มองเห็นได้ของงานข้อมูล ได้แก่ การจัดการรายการซื้อขายที่ผิดปกติ ช่วงการซื้อขายที่ขาดหาย และการปรับข้อมูลจากการแตกพาร์และเงินปันผล การเลือกว่าจะศึกษาหลักทรัพย์ใดเป็นส่วนที่มองไม่เห็น และเป็นจุดที่อคติจากการอยู่รอดเข้ามาตั้งแต่ยังไม่มีโค้ดกลยุทธ์แม้แต่บรรทัดเดียว ให้นำ ticker ของสหรัฐฯ ทุกตัวที่มีรายการซื้อขายในสัปดาห์หนึ่งของเดือนมิถุนายนในแต่ละปีมาพิจารณา แล้วตรวจสอบว่ามีกี่ตัวที่ยังซื้อขายอยู่ในสัปดาห์เดียวกันของปี 2026

คำสั่งดึงข้อมูลหุ้นสหรัฐฯ ที่ซื้อขายในหนึ่งสัปดาห์ของเดือนมิถุนายน และจำนวนที่ยังคงซื้อขายในเดือนมิถุนายน 2026
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH june_week AS (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS year,
           ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE toMonth(toTimeZone(window_start, 'America/New_York')) = 6
      AND toDayOfMonth(toTimeZone(window_start, 'America/New_York')) BETWEEN 10 AND 16
      AND toYear(toTimeZone(window_start, 'America/New_York')) BETWEEN 2016 AND 2026
      AND volume > 0
    GROUP BY year, ticker
),
survivors AS (
    SELECT ticker FROM june_week WHERE year = 2026
)
SELECT year,
       uniqExact(ticker) AS tickers_traded,
       uniqExactIf(ticker, ticker IN (SELECT ticker FROM survivors)) AS still_trading_2026,
       round(100 * uniqExactIf(ticker, ticker IN (SELECT ticker FROM survivors))
             / uniqExact(ticker), 1) AS still_trading_pct
FROM june_week
GROUP BY year
ORDER BY year
Run this yourself

จาก ticker จำนวน 8224 ตัวที่มีการซื้อขายในสัปดาห์ดังกล่าวของปี 2016 มี 50% ตัวที่ยังซื้อขายอยู่ในสัปดาห์เดียวกันของปี 2026 ส่วนที่เหลือถูกซื้อกิจการ ควบรวมกิจการ เปลี่ยนชื่อ หรือถูกถอดออกจากตลาด การทดสอบย้อนหลังที่สร้างจากรายชื่อหลักทรัพย์ในปัจจุบันจะศึกษาคัดเฉพาะตัวที่อยู่รอด และทำให้กลยุทธ์ได้ประโยชน์จากการถือครองบริษัทที่ถูกเลือกโดยอาศัยข้อมูลในภายหลัง ฟีดข้อมูลสำหรับผู้เริ่มต้นจะส่งมอบรายชื่อผู้รอดดังกล่าวโดยไม่มีคำเตือนว่าเป็นข้อมูลที่มีอคติ: คู่มือ API ข้อมูลตลาดหุ้นฟรี อธิบายว่าฟีดเหล่านั้นมีและไม่มีข้อมูลประเภทใดบ้าง

ขั้นที่สอง: เปลี่ยนข้อมูลให้เป็นสัญญาณ

สัญญาณคือกฎที่ใช้ให้คะแนนหุ้น ณ จุดหนึ่งของเวลา ส่วนปัจจัยคือสัญญาณที่คุณเชื่อว่าใช้ได้กับหุ้นจำนวนมากในเวลาเดียวกัน ตัวอย่างตามตำราคือโมเมนตัม หุ้นคุณค่า และความผันผวนต่ำ

ข้อผิดพลาดในขั้นนี้คือการทดสอบกฎไปเรื่อย ๆ จนกว่าจะพบกฎที่ใช้ได้ การทดสอบรูปแบบต่าง ๆ ของการตัดกันของเส้นค่าเฉลี่ยเคลื่อนที่จำนวนยี่สิบรูปแบบกับดัชนีเดียวเป็นเวลาหนึ่งทศวรรษ ย่อมให้ผลว่ามีรูปแบบหนึ่งชนะเสมอ และรูปแบบที่ชนะก็คือรูปแบบที่ปรับเข้ากับสัญญาณรบกวนได้ดีที่สุด

แนวทางป้องกันอาจไม่น่าตื่นเต้น แต่มีความสำคัญ ได้แก่ กำหนดกฎให้แน่นอนก่อนวัดผล กันข้อมูลประวัติส่วนหนึ่งไว้โดยไม่เปิดดู นับรูปแบบทั้งหมดที่ทดลอง และเลือกใช้ตัวเลขที่ต้องปรับให้น้อยลง XQuant จัดทำเนื้อหาเต็มหนึ่งบทเกี่ยวกับเรื่องนี้ก่อนเข้าสู่การวิจัยปัจจัย ซึ่งเป็นลำดับที่ถูกต้อง

ระยะที่สาม: การทดสอบย้อนหลัง ซึ่งผู้เริ่มต้นส่วนใหญ่หยุดอยู่ที่นี่

นี่คือระยะที่ทำให้โครงการส่วนใหญ่ของผู้ศึกษาด้วยตนเองสิ้นสุดลง โดยสิ้นสุดอย่างเงียบ ๆ พร้อมเส้นมูลค่าพอร์ตที่ดูดีมาก อคติจากการคัดเลือกเฉพาะหลักทรัพย์ที่ยังอยู่รอดซึ่งกล่าวถึงข้างต้น เป็นข้อผิดพลาดข้อแรกจากสองข้อ อคติจากการมองไปข้างหน้าเป็นข้อที่สอง กล่าวคือ กลยุทธ์ใช้ตัวเลขที่เวลานั้นยังไม่เกิดขึ้น เมื่อควรส่งคำสั่งซื้อขาย เวอร์ชันที่พบบ่อยที่สุดคือการคำนวณกฎจากราคาปิดของวันนี้ แล้วดำเนินการซื้อขายที่ราคาปิดเดียวกันนั้น ควรวัดระยะห่างที่สมมติฐานดังกล่าวข้ามไป

คำสั่งดึงข้อมูลระยะห่างเฉลี่ยระหว่างราคาปิดของช่วงการซื้อขายหนึ่งกับราคาเปิดของช่วงถัดไป รายเดือน
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH sessions AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMin(open, window_start) AS session_open,
           argMax(close, window_start) AS session_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'NVDA')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2024-08-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session
),
gaps AS (
    SELECT ticker,
           session,
           toFloat64(session_open) AS open_px,
           toFloat64(lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY session)) AS prev_close
    FROM sessions
)
SELECT formatDateTime(toStartOfMonth(session), '%Y-%m') AS month,
       formatDateTimeInJodaSyntax(toStartOfMonth(session), 'MMMM yyyy') AS month_label,
       round(avgIf(abs(open_px / prev_close - 1) * 10000, ticker = 'SPY'), 1) AS spy_gap_bps,
       round(avgIf(abs(open_px / prev_close - 1) * 10000, ticker = 'NVDA'), 1) AS nvda_gap_bps
FROM gaps
WHERE prev_close > 0
GROUP BY month, month_label
HAVING countIf(ticker = 'SPY') > 0 AND countIf(ticker = 'NVDA') > 0
ORDER BY month
Run this yourself

ใน July 2026 ระยะห่างเฉลี่ยระหว่างราคาปิดครั้งหนึ่งกับราคาเปิดครั้งถัดไปอยู่ที่ 40.8 basis points สำหรับ SPY และ 107.4 สำหรับ NVDA basis point คือหนึ่งในร้อยของจุดเปอร์เซ็นต์ เดือนทั้ง 24 เดือนในชุดข้อมูล เริ่มตั้งแต่ August 2024 อยู่เหนือศูนย์ทั้งหมด การทดสอบย้อนหลังที่ตัดสินใจ ณ ราคาปิดและดำเนินการที่ราคาปิดนั้น จะได้รับประโยชน์จากระยะห่างดังกล่าวโดยไม่เสียต้นทุนในการซื้อขายทุกครั้ง ขณะที่คำสั่งซื้อขายจริงไม่เคยทำได้เช่นนั้น อคติจากการมองไปข้างหน้าในการทดสอบย้อนหลัง แยกกลไกดังกล่าวออกเป็นส่วน ๆ และ เหตุใดราคาหุ้นจึงกระโดดข้ามคืน อธิบายสาเหตุของช่องว่างราคาโดยตรง

ขั้นที่สี่: ตัดสินใจว่าจะซื้อเท่าใด

ปัญหาในขั้นนี้คือการไม่มีหลักเกณฑ์ เทรดเดอร์ที่เรียนรู้ด้วยตนเองส่วนใหญ่ไม่เคยเขียนกฎการกำหนดขนาดสถานะไว้ ซึ่งหมายความว่าพวกเขามีหลักเกณฑ์โดยบังเอิญ โดยทั่วไปคือใช้เงินจำนวนเท่ากันกับหุ้นแต่ละตัว หรือใช้เงินสดที่มีอยู่ ไม่ได้หมายความว่าการใช้เงินจำนวนเท่ากันจะมีความเสี่ยงเท่ากัน

คำสั่งดึงข้อมูลการเคลื่อนไหวรายวันตลอดสิบสองเดือน: ความผันผวนแบบปรับเป็นรายปีและช่วงการซื้อขายที่แย่ที่สุด หุ้น 8 รายการ
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(close, window_start) AS session_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'KO', 'JNJ', 'MSFT', 'AAPL', 'NVDA', 'TSLA', 'COIN')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2025-08-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session
),
rets AS (
    SELECT ticker,
           toFloat64(session_close) AS close_px,
           toFloat64(lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY session)) AS prev_close
    FROM daily
)
SELECT ticker,
       round(stddevSamp(close_px / prev_close - 1) * sqrt(252) * 100, 1) AS annualized_vol_pct,
       round(abs(min(close_px / prev_close - 1)) * 100, 2) AS worst_day_pct
FROM rets
WHERE prev_close > 0
GROUP BY ticker
ORDER BY annualized_vol_pct DESC
Run this yourself

ในช่วงสิบสองเดือนสิ้นสุดวันที่ 31 กรกฎาคม 2026 COIN มีความผันผวนต่อปีที่ระดับ 68% เทียบกับ 12.7% ของ SPY ซึ่งอยู่ที่ปลายช่วงที่มีความผันผวนต่ำของกลุ่มตัวอย่าง ในวันที่มีผลการซื้อขายแย่ที่สุด ราคาปิดลดลง 13.34% จากราคาปิดวันก่อนหน้า ขณะที่วันที่แย่ที่สุดของ SPY ลดลง 2.69% การใช้เงินจำนวนเท่ากันกับหุ้นแต่ละตัวทำให้เผชิญกับการแกว่งตัวรายวันที่แตกต่างกันมาก และสิ่งที่ผู้เริ่มต้นพบจริงคือการแกว่งตัวดังกล่าว ไม่ใช่สัญญาณ การกำหนดขนาดสถานะตามเกณฑ์ Kelly นำเสนอคำตอบอย่างเป็นทางการรูปแบบหนึ่ง ขณะที่ ความเสี่ยงจากการกระจุกตัว แสดงให้เห็นลักษณะของคำตอบแบบไม่เป็นทางการ

ขั้นที่ห้า: การส่งคำสั่งและต้นทุนที่การทดสอบย้อนหลังมักละเลย

ต้นทุนมีอยู่สองประเภท แต่มองเห็นได้เพียงประเภทเดียว ค่าคอมมิชชันและค่าธรรมเนียมตามกฎเกณฑ์จะแสดงในใบแจ้งรายการซื้อขาย ส่วน slippage ไม่แสดง เพราะเป็นส่วนต่างระหว่างราคาบนหน้าจอกับราคาที่ได้รับ ต้นทุนขั้นต่ำของ slippage คือ bid-ask spread หรือระยะห่างระหว่างราคาเสนอซื้อที่ดีที่สุดกับราคาเสนอขายที่ดีที่สุดในขณะนั้น ผู้ซื้อจ่ายที่ราคาเสนอขาย ส่วนผู้ขายขายที่ราคาเสนอซื้อ ดังนั้นการซื้อแล้วขายกลับจึงต้องข้าม spread สองครั้ง spread ไม่ได้คงที่

คำสั่งดึงข้อมูลสเปรดเสนอซื้อขายเฉลี่ยรายครึ่งชั่วโมง ET: AAPL และ KO วันศุกร์ที่ 17 กรกฎาคม 2026
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH quotes AS (
    SELECT ticker,
           toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE) AS bucket,
           toFloat64(ask_price - bid_price) / toFloat64((ask_price + bid_price) / 2) * 10000 AS spread_bps
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('AAPL', 'KO')
      AND sip_timestamp >= toDateTime('2026-07-17 13:00:00')
      AND sip_timestamp < toDateTime('2026-07-17 21:00:00')
      AND bid_price > 0
      AND ask_price > bid_price
)
SELECT formatDateTime(bucket, '%H:%i') AS et_time,
       round(avgIf(spread_bps, ticker = 'AAPL'), 2) AS aapl_spread_bps,
       round(avgIf(spread_bps, ticker = 'KO'), 2) AS ko_spread_bps
FROM quotes
WHERE spread_bps > 0 AND spread_bps < 500
GROUP BY et_time
HAVING countIf(ticker = 'AAPL') > 0 AND countIf(ticker = 'KO') > 0
ORDER BY et_time
Run this yourself

แผงข้อมูลนี้ครอบคลุมช่วงเวลาครึ่งชั่วโมง 16 ช่วงของวันศุกร์หนึ่งวัน ตั้งแต่ช่วง 09:00 ก่อนระฆังเปิดตลาด จนถึงช่วง 16:30 หลังตลาดปิด AAPL มี spread กว้าง 10.53 basis points ในช่วงแรก และ 3.27 ในช่วงสุดท้าย ขณะที่ KO อยู่ที่ 28.87 และ 8.04 ตามลำดับ ราคาเสนอซื้อขายที่แคบที่สุดของวันอยู่บริเวณกึ่งกลางกราฟ ระหว่างปลายทั้งสองด้านนั้น กลยุทธ์ที่ซื้อขายตอนตลาดเปิดในหุ้นที่มีสภาพคล่องสูงสองตัวของตลาด ย่อมมีต้นทุนแตกต่างจากกลยุทธ์เดียวกันที่ซื้อขายช่วงกลางวัน และการทดสอบย้อนหลังที่สมมติให้ต้นทุนเป็นศูนย์ก็ไม่สะท้อนต้นทุนของทั้งสองกรณี bid-ask spread เป็นตัวกำหนดตัวเลขดังกล่าว ส่วน เหตุใด spread จึงกว้างขึ้นตอนตลาดเปิด อธิบายรูปแบบของเส้นกราฟ และ ต้นทุนการซื้อขายหุ้น แสดงต้นทุนรวมของการซื้อขายไปกลับทั้งหมด ระหว่างการทดสอบย้อนหลังที่สะอาดกับการใช้เงินจริง ยังมีอีกหนึ่งขั้นตอน นั่นคือ การซื้อขายจำลองก่อนใช้เงินจริง

ส่วนใดของหลักสูตรหุ้น A สามารถนำไปใช้กับหุ้นสหรัฐฯ ได้บ้าง

XQuant และแนวทางของผู้พัฒนารายอื่นจัดทำขึ้นสำหรับหุ้น A และ ETF ของจีน แต่หลักการสามารถถ่ายโอนได้ครบถ้วน ได้แก่ ลำดับของแต่ละขั้น คำนิยาม วินัยในการหลีกเลี่ยงการปรับให้เข้ากับข้อมูลมากเกินไป การบันทึกต้นทุนเป็นรายการแยกแทนการคิดภายหลัง และองค์ประกอบทั้งหมดของการคำนวณขนาดสถานะ แท่งราคาเป็นแท่งราคา สิ่งที่ถ่ายโอนไม่ได้คือกฎเกณฑ์ที่กำกับตลาดเหล่านั้น

  • หุ้น A อยู่ภายใต้ข้อจำกัด T+1 อย่างแท้จริง กล่าวคือ หุ้นที่ซื้อวันนี้จะขายไม่ได้จนกว่าจะถึงช่วงการซื้อขายถัดไป ส่วน T+1 ของสหรัฐฯ เป็นเพียงหลักเกณฑ์การชำระราคาและไม่ห้ามการซื้อขายระหว่างวัน อย่างไรก็ตาม กฎ pattern day trader จำกัดบัญชีมาร์จิ้นที่มีเงินต่ำกว่า $25,000 ให้ทำ day trade ได้ไม่เกินสามครั้งภายในห้าวันทำการ
  • หุ้น A ในกระดานหลักมีกรอบการเคลื่อนไหวรายวันที่ 10% และกระดานเติบโตมีกรอบ 20% หุ้นสหรัฐฯ ไม่มีเพดานรายวัน แต่การหยุดซื้อขายจะเกิดจากกรอบความผันผวนและการหยุดซื้อขายเนื่องจากข่าวแทน
  • คำสั่งซื้อขายหุ้น A ทำเป็นล็อต ล็อตละ 100 หุ้น โบรกเกอร์สหรัฐฯ หลายแห่งรองรับการซื้อขายหุ้นแบบเศษส่วน ซึ่งทำให้กฎการกำหนดขนาดสถานะสามารถแสดงผลได้แตกต่างกัน
  • จีนเรียกเก็บอากรแสตมป์จากฝั่งขาย ส่วนผู้ขายในสหรัฐฯ จ่ายค่าธรรมเนียมตามกฎระเบียบในอัตราและรูปแบบที่แตกต่างกัน
  • โครงสร้างช่วงเวลาซื้อขายแตกต่างกัน รวมถึงการพักการซื้อขายช่วงกลางวันในเซี่ยงไฮ้และเซินเจิ้น เวลาทำการของตลาดหุ้นสหรัฐฯ ดำเนินต่อเนื่องและสิ้นสุดด้วยการประมูลราคาปิด

ค่าคงที่ด้านต้นทุนหรือเวลาที่คัดลอกจากหลักสูตรไปใส่ในโค้ดของคุณเอง คือข้อผิดพลาดที่รอให้คำสั่งซื้อขายจริงครั้งแรกเปิดเผยออกมา

ปักหมุดข้อมูลอ้างอิง ไม่ใช่ README

ณ เดือนสิงหาคม 2026 ที่เก็บโค้ดยังไม่มีรีลีสที่ติดแท็ก ดังนั้นข้อมูลอ้างอิงที่คงทนคือ commit: 016b66e ซึ่งลงวันที่ 14 กรกฎาคม 2026 เรื่องนี้มีความสำคัญสำหรับหนังสือที่ยังอยู่ระหว่างการเขียน หมายเลขบทเปลี่ยนแปลงได้ ไฟล์ README ถูกเขียนใหม่ได้ หัวข้ออาจย้ายตำแหน่ง และลิงก์ที่เคยชี้ไปยังบทที่เจ็ดอาจเปลี่ยนไปชี้ยังเนื้อหาอื่นโดยไม่มีใครสังเกตเห็น ให้อ้างอิง commit และวันที่ พร้อมบันทึก ชื่อ บทที่อ่านแทนหมายเลขบท แล้วบันทึกของคุณจะยังตรวจสอบได้ในอีกหนึ่งปีต่อมา ต้นฉบับเผยแพร่ภายใต้สัญญาอนุญาต CC BY-NC-SA 4.0 ส่วนสคริปต์สำหรับ build อยู่ภายใต้ MIT หลักการเดียวกันนี้คือบทเรียนสุดท้ายของหลักสูตรเอง นั่นคือ กลยุทธ์ที่ไม่สามารถรันซ้ำได้จาก snapshot ของข้อมูลที่ปักหมุดไว้ เป็นเพียงเรื่องเล่า ไม่ใช่ผลลัพธ์

คำถามที่พบบ่อย

สามารถเรียนรู้การเทรดเชิงปริมาณจากหนังสือโอเพนซอร์สฟรีได้หรือไม่

ได้ หากใช้เป็นแผนที่นำทาง และต้นฉบับที่เปิดเผยให้คุณตรวจสอบทุกข้อกล่าวอ้างกับแหล่งที่มาได้ สิ่งที่หนังสือไม่สามารถจัดเตรียมให้ได้คือข้อมูล ต้นทุน และกฎเกณฑ์ของตลาดที่คุณลงทุนอยู่ ซึ่งเป็นจุดที่หลักสูตรซึ่งเขียนขึ้นสำหรับตลาดใดตลาดหนึ่งเริ่มไม่สอดคล้องกับโบรกเกอร์ของคุณ

ขั้นตอนใดของหลักสูตรการเทรดเชิงปริมาณที่ทำให้ผู้เริ่มต้นส่วนใหญ่ไปต่อไม่ได้

การทดสอบย้อนหลัง ข้อผิดพลาดสองประการมักเกิดขึ้นในขั้นตอนนี้ และทั้งคู่ทำให้ผลลัพธ์ดูดีเกินจริง ได้แก่ survivorship bias จากการสร้างจักรวาลหลักทรัพย์ขึ้นภายหลัง และ look-ahead bias จากการเติมคำสั่งซื้อขายที่ราคาซึ่งยังไม่ปรากฏในตลาด ณ เวลานั้น มีเพียง 50% ของ ticker ที่ซื้อขายอยู่ในสัปดาห์เดือนมิถุนายนดังกล่าวของ 2016 ที่ยังคงซื้อขายอยู่ในอีกหนึ่งทศวรรษต่อมา

Survivorship bias แตกต่างจาก look-ahead bias อย่างไร

Survivorship bias เป็นปัญหาของจักรวาลหลักทรัพย์ กล่าวคือ ชื่อหลักทรัพย์ที่นำมาทดสอบถูกคัดเลือกเพราะยังคงอยู่รอดมาได้ ส่วน look-ahead bias เป็นปัญหาด้านเวลา กล่าวคือ กลยุทธ์ใช้ตัวเลขที่ยังไม่มีอยู่ในขณะที่ควรส่งคำสั่งซื้อขาย อคติแรกทำให้รายชื่อหลักทรัพย์ดูแข็งแกร่งเกินจริง ส่วนอคติที่สองทำให้ราคาที่จับคู่ได้ดูดีเกินจริง

หลักสูตรการเทรดเชิงปริมาณสำหรับหุ้น A ของจีนใช้กับหุ้นสหรัฐฯ ได้หรือไม่

ใช้ได้ในด้านวิธีการ แต่ใช้ไม่ได้ในด้านกฎเกณฑ์ของตลาด ให้คงลำดับขั้นตอน วินัยในการหลีกเลี่ยงการปรับให้เข้ากับข้อมูลมากเกินไป และการบันทึกต้นทุนไว้ จากนั้นเปลี่ยนระบบจัดการข้อมูล ข้อจำกัดการขายแบบ T+1 เพดานราคาประจำวัน และขนาดล็อตให้เป็นมาตรฐานของสหรัฐฯ ก่อนนำเงินไปลงทุน


แผงข้อมูลทุกส่วนข้างต้นเป็น stored query ที่มี SQL อยู่ด้านล่าง เปิดรายการใดรายการหนึ่ง เปลี่ยน ticker หรือวันที่ แล้วเรียกใช้ด้วยตนเองบนเทอร์มินัล Strasmore

#quant#learning path#backtesting#open source#beginners