ประวัติการเทรดของ AI ตรวจสอบได้หรือไม่
เช็กลิสต์หกหลักฐานที่ผู้อ่านขอได้ เพื่อยืนยันประวัติการเทรดของ AI พร้อมเหตุผลว่าทำไมผลลัพธ์เพียงหนึ่งไตรมาสแบบ live จึงยังพิสูจน์อะไรไม่ได้
ประวัติผลการซื้อขายของ AI จะตรวจสอบได้ก็ต่อเมื่อบุคคลภายนอกสามารถสร้างประวัตินั้นขึ้นใหม่จากบันทึกที่มีอยู่ก่อนผลลัพธ์จะเกิดขึ้น ข้อมูลที่เผยแพร่ทางออนไลน์มีน้อยมากที่ผ่านเกณฑ์นี้ ต่อไปนี้คือเช็กลิสต์ที่ผู้อ่านใช้ตรวจสอบได้ภายในประมาณสองนาที โดยมีข้อมูลตลาดรองรับสี่รายการ ได้แก่ benchmark, timestamps, ต้นทุนการซื้อขาย และความยาวของกลุ่มตัวอย่าง
อะไรทำให้ประวัติผลการซื้อขายของ AI ตรวจสอบได้?
มีคุณสมบัติหกข้อ แต่ละข้อเป็นสิ่งที่ตรวจหาได้ ไม่ใช่เรื่องของการใช้ดุลยพินิจ
- เผยแพร่จุดเข้าเทรดก่อนทราบผลลัพธ์ Timestamp ต้องอยู่ในสถานที่ที่ผู้เขียนไม่สามารถแก้ไขย้อนหลังได้ เช่น commit ที่ push ณ เวลานั้น หรือ statement จากโบรกเกอร์ ไฟล์ที่แสดงรายการซื้อขายในอดีตเป็นเพียงคำกล่าวอ้างเกี่ยวกับอดีต ไม่ใช่บันทึกเหตุการณ์
- ใช้ benchmark เดียว โดยระบุตั้งแต่ต้นและไม่เปลี่ยนภายหลัง คำว่า “ชนะตลาด” ไม่มีความหมายจนกว่าจะกำหนดกองทุนและช่วงเวลาที่ใช้เปรียบเทียบอย่างชัดเจน
- รวมต้นทุนไว้ในตัวเลขที่รายงาน ได้แก่ ค่าคอมมิชชั่น ค่าธรรมเนียมตามกฎระเบียบ ค่าการยืมหุ้นสำหรับสถานะ Short และ spread ที่จ่ายทั้งตอนเปิดและปิดสถานะ
- ใช้ runbook ที่มีการควบคุมเวอร์ชัน ไม่ใช่ไฟล์ที่แก้ไขไปเรื่อย ๆ หากมี public repository รองรับประวัติ ลิงก์ที่มีประโยชน์ควรชี้ไปยัง tagged release หรือ commit hash ลิงก์ไปยัง default branch แสดงกลยุทธ์ของวันนี้ ซึ่งอาจไม่ใช่กลยุทธ์ที่ซื้อขายในเดือนมีนาคม
- แสดงทุกสถานะและทุกบัญชี รวมถึงรายการที่ขาดทุน การเผยแพร่เพียงหนึ่งบัญชีจากทั้งหมดห้าบัญชีที่ใช้งานอยู่ ถือเป็นการคัดเลือกข้อมูล
- มีเงินทุนเริ่มต้นมากพอให้ราคาที่จับคู่ซื้อขายมีความเป็นไปได้ มูลค่าการถือครองเพียงไม่กี่ร้อยดอลลาร์อาจทำให้ดูเหมือนเปิดสถานะได้ ทั้งที่คำสั่งซื้อจริงไม่มีทางจับคู่ได้ในราคาที่แสดง
ประวัติที่ขาดข้อใดข้อหนึ่งไม่ได้หมายความว่าไม่ซื่อสัตย์โดยอัตโนมัติ แต่หมายความว่าตรวจสอบไม่ได้ ซึ่งพบได้บ่อยกว่า และไม่มีประโยชน์ต่อผู้อ่านไม่แพ้กัน
เหตุใดจึงต้องระบุ benchmark ล่วงหน้า
การเลือก benchmark หลังทราบผลลัพธ์แล้วคือข้อได้เปรียบที่ต้นทุนต่ำที่สุดในตลาดการเงิน กองทุนดัชนีสหรัฐฯ แบบ broad-market หกกองทุน ในช่วงหกเดือนเดียวกันของปี 2026 วัดจากการเปลี่ยนแปลงของราคาเท่านั้น:
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH rets AS (
SELECT ticker,
round(100 * (toFloat64(argMax(close, window_start))
/ toFloat64(argMin(close, window_start)) - 1), 2) AS return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'IWM', 'DIA', 'RSP', 'MDY')
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-02')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker
)
SELECT ticker,
return_pct,
round(return_pct - min(return_pct) OVER (), 2) AS points_above_worst
FROM rets
ORDER BY return_pct DESCIWM ให้ผลตอบแทน 21.12% ขณะที่ DIA ให้ผลตอบแทน 8.42% ทำให้ 12.7 จุดคั่นระหว่างอันดับสูงสุดและต่ำสุดของ 6 ในช่วงเวลาเดียวกัน การเลือกว่าจะใช้กองทุนใดเป็น benchmark หลังช่วงเวลาสิ้นสุดลงมีมูลค่าเท่ากับส่วนต่างทั้งหมดนี้ โดยที่กลยุทธ์ไม่ต้องทำอะไรเพื่อให้ได้ข้อได้เปรียบดังกล่าว ตัวเลขเหล่านี้เป็นผลตอบแทนจากราคาโดยยังไม่รวมเงินปันผล ซึ่งเป็นกฎการวัดอีกข้อที่ควรระบุล่วงหน้า (วิธีวัดผลตอบแทนรายเดือน อธิบายการคำนวณ total return)
เหตุใด timestamp ของจุดเข้าจึงเป็นหัวใจของข้ออ้างทั้งหมด
จุดเข้าที่ปรากฏหลังราคาขยับแล้วเป็นเพียงคำอธิบายกราฟ ระยะทางที่ตลาดเคลื่อนที่ภายในหนึ่งเซสชันกว้างพอที่ความแตกต่างระหว่าง “โพสต์เวลา 09:35” กับ “โพสต์เวลา 15:55” จะกลบข้อได้เปรียบส่วนใหญ่ที่อ้างไว้ ต่อไปนี้คือระยะทางดังกล่าว โดยวัดจากราคา Print แรกของแต่ละเซสชันในช่วงครึ่งแรกของปี 2026:
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH minute_px AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
toTimeZone(window_start, 'America/New_York') AS et,
toFloat64(close) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-02')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
),
opens AS (
SELECT session_date, argMin(px, et) AS open_px
FROM minute_px
GROUP BY session_date
),
buckets AS (
SELECT session_date,
toStartOfInterval(et, INTERVAL 30 MINUTE) AS bucket,
argMax(px, et) AS bucket_px
FROM minute_px
GROUP BY session_date, bucket
)
SELECT formatDateTime(b.bucket, '%H:%i') AS et_time,
count() AS session_count,
round(quantileDeterministic(0.5)(abs(100 * (b.bucket_px / o.open_px - 1)),
cityHash64(b.session_date)), 3) AS median_abs_move_pct
FROM buckets AS b
INNER JOIN opens AS o ON b.session_date = o.session_date
GROUP BY et_time
ORDER BY et_timeในช่วงเวลา 09:30 ET ค่ามัธยฐานของเซสชันสิ้นสุดลงที่ 0.216% จากราคาเปิด ในช่วง 15:30 ค่ามัธยฐานของระยะห่างอยู่ที่ 0.415% สิ่งที่ตัวแทนรู้ ณ เวลาเปิดตลาดไม่รวมการเคลื่อนไหวเกือบทั้งหมดนั้น ประวัติ commit หรือ public feed ที่มีวันที่จะยืนยันลำดับเวลา (รายงานวิจัยตลาดรายวันของ AI จะน่าเชื่อถือหรือไม่ก็ขึ้นอยู่กับคุณสมบัติเดียวกันนี้) ส่วนภาพหน้าจอของ equity curve ไม่ได้ยืนยันลำดับเวลาเลย
ตัวเลขต้องรวมอะไรไว้บ้าง
ผลตอบแทนขั้นต้นอธิบายพอร์ตที่ไม่มีใครสามารถถือได้จริง ทุกการเปิดและปิดสถานะต้องข้าม bid-ask spread ซึ่งเป็นส่วนต่างระหว่างราคาที่ดีที่สุดสำหรับซื้อกับราคาที่ดีที่สุดสำหรับขาย และส่วนต่างนี้ไม่เท่ากันในหุ้นทุกตัว:
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT ticker,
round(quantileDeterministic(0.5)(20000 * (toFloat64(ask_price) - toFloat64(bid_price))
/ (toFloat64(ask_price) + toFloat64(bid_price)),
cityHash64(sip_timestamp)), 2) AS median_spread_bps,
round(25000 * quantileDeterministic(0.5)(2 * (toFloat64(ask_price) - toFloat64(bid_price))
/ (toFloat64(ask_price) + toFloat64(bid_price)),
cityHash64(sip_timestamp)), 2) AS round_trip_cost_per_25k_usd
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'MSTR')
AND sip_timestamp >= toDateTime('2026-07-15 15:00:00')
AND sip_timestamp < toDateTime('2026-07-15 16:00:00')
AND bid_price > 1
AND ask_price > bid_price
GROUP BY ticker
ORDER BY median_spread_bps DESCในช่วงหนึ่งชั่วโมงกลางวันที่พิจารณา ค่ามัธยฐานของ quoted spread อยู่ที่ 10.08 basis points สำหรับ MSTR เทียบกับ 0.27 สำหรับ SPY หนึ่ง basis point เท่ากับหนึ่งในร้อยของจุดเปอร์เซ็นต์ สำหรับสถานะมูลค่า $25,000 การข้าม spread หนึ่งครั้งตอนเปิดและอีกหนึ่งครั้งตอนปิดสถานะ มีต้นทุน $25.2 ในกรณีที่ spread กว้างที่สุดของรายการนี้ และ $0.66 ในกรณีที่แคบที่สุด ก่อนรวมค่าคอมมิชชั่น หากพอร์ตมีการหมุนเวียนเต็มจำนวนสัปดาห์ละหนึ่งครั้ง ต้นทุนดังกล่าวจะเกิดขึ้นประมาณห้าสิบครั้งต่อปี และประวัติที่ไม่รวมต้นทุนนี้ก็เท่ากับบันทึกเงินจำนวนดังกล่าวเป็นเครดิตให้ตัวเองอย่างเงียบ ๆ (ต้นทุนการซื้อขายหุ้น แจกแจงต้นทุนส่วนที่เหลือ)
ต้องมีผลการซื้อขายจริงนานเท่าใดจึงจะมีความหมาย?
การซื้อขายจริงเป็นเวลาหนึ่งไตรมาสเป็นเพียงหนึ่งตัวอย่างจากการกระจายผลลัพธ์ที่กว้าง และเราสามารถวัดความกว้างนั้นได้ สำหรับทุกช่วงเวลาสามเดือนที่ทับซ้อนกันนับตั้งแต่เดือนมกราคม 2015 ของ SPY ซึ่งเป็นกองทุนที่ติดตามดัชนี S&P 500 ที่มีขนาดใหญ่ที่สุด แล้วเรียงผลลัพธ์เป็นเปอร์เซ็นไทล์:
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
toFloat64(argMax(close, window_start)) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2015-01-02')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY session_date
),
series AS (
SELECT groupArray(close_px) AS px
FROM (SELECT close_px FROM daily ORDER BY session_date)
),
horizons AS (
SELECT arrayJoin([21, 63, 126, 252]) AS sessions, px
FROM series
),
windows AS (
SELECT sessions,
arrayJoin(arrayMap(i -> (i, 100 * (px[i + sessions] / px[i] - 1)),
range(1, length(px) - sessions + 1))) AS w
FROM horizons
),
measured AS (
SELECT sessions,
w.1 AS window_index,
w.2 AS window_return_pct
FROM windows
)
SELECT multiIf(sessions = 21, '1 month',
sessions = 63, '3 months',
sessions = 126, '6 months',
'12 months') AS holding_period,
count() AS window_count,
round(quantileDeterministic(0.05)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS p05_return_pct,
round(quantileDeterministic(0.50)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS median_return_pct,
round(quantileDeterministic(0.95)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS p95_return_pct,
round(quantileDeterministic(0.95)(window_return_pct,
cityHash64(window_index * 1000 + sessions))
- quantileDeterministic(0.05)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS spread_pct,
round(stddevSamp(window_return_pct), 1) AS stdev_pct
FROM measured
GROUP BY sessions
ORDER BY sessionsจากช่วงเวลาสามเดือนที่ทับซ้อนกันจำนวน 2826 ช่วง ผลลัพธ์มัธยฐานจากการถือครองโดยไม่ทำอะไรอยู่ที่ 3.9% ขณะที่เปอร์เซ็นไทล์ที่ 5 อยู่ที่ -8.8% และเปอร์เซ็นไทล์ที่ 95 อยู่ที่ 12.2% คิดเป็นช่วงกว้าง 21.1 จุด ผลลัพธ์รายไตรมาสใด ๆ ที่อยู่ในช่วงนี้สอดคล้องกับการถือดัชนีแล้วหยุดติดตามตลาด นักลงทุนสามารถเปิดใช้ตัวแทนยี่สิบตัวเป็นเวลาหนึ่งไตรมาส แล้วเผยแพร่ตัวที่ดีที่สุดได้ ตัวเลขที่แสดงย่อมมาจากด้านบนของช่วงลักษณะนี้ตามโครงสร้าง
การคำนวณเรื่องความยาวของกลุ่มตัวอย่างไม่ผ่อนปรน ผลลัพธ์ระยะสิบสองเดือนในชุดข้อมูลเดียวกันมีส่วนเบี่ยงเบนมาตรฐาน 13.6 จุด การแยกข้อได้เปรียบที่มีอยู่จริงออกจากสัญญาณรบกวนต้องใช้ผลการซื้อขายจริงประมาณ (2 × ความผันผวน ÷ ข้อได้เปรียบ)² ปี ด้วยระดับความผันผวนดังกล่าว ข้อได้เปรียบสมมติที่ 3 จุดต่อปีต้องใช้เวลาหลายทศวรรษ และแม้แต่ข้อได้เปรียบ 10 จุดก็ยังต้องใช้เวลาหลายปี ไม่ใช่เพียงไม่กี่เดือน ช่วงเวลาข้างต้นทับซ้อนกัน ดังนั้น 2826 จึงเป็นจำนวนช่วงเวลา ไม่ใช่จำนวนตัวอย่างอิสระ
เงินทุนจริง $25,000 เพียงพอที่จะยุติข้อสงสัยหรือไม่?
เงินทุนจริงช่วยเพิ่มน้ำหนักให้หลักฐานในด้านหนึ่งโดยเฉพาะ การซื้อขายจำลอง จับคู่คำสั่งที่ราคาซึ่งไม่มีคู่สัญญารายใดตกลง และไม่มีคำสั่งถูกปฏิเสธ บัญชีเงินจริง $25,000 จับคู่คำสั่งกับราคาเสนอซื้อขายจริงและจ่ายค่าคอมมิชชั่นจริง โดยมี statement ที่บุคคลภายนอกตรวจสอบได้ อีกทั้งขนาดสถานะมากพอให้การจับคู่คำสั่งเป็นเรื่องปกติ ไม่ใช่ตัวเลขที่สร้างขึ้น
อย่างไรก็ดี เงินทุนจริงไม่ได้แก้ปัญหาเรื่องกลุ่มตัวอย่าง การซื้อขายด้วยเงิน $25,000 เป็นเวลาสี่เดือนยังคงเป็นเพียงหนึ่งตัวอย่างจากการกระจายผลลัพธ์ข้างต้น และบัญชีจริงอาจถูกปิดหลังเกิด drawdown แล้วเปิดบัญชีใหม่โดยเริ่มนับประวัติอีกครั้ง ขนาดเงินทุนทำให้การจับคู่คำสั่งมีความสมจริง แต่มีเพียงเวลาเท่านั้นที่ทำให้ผลลัพธ์มีข้อมูลเพียงพอ
ความล้มเหลวสี่รูปแบบที่ควรสังเกต
- Backtest ที่สวมเสื้อผ้าของประวัติผลการซื้อขายจริง ผลลัพธ์จำลองจากข้อมูลในอดีตเป็นเพียงสมมติฐานเกี่ยวกับอดีต Look-ahead bias แสดงให้เห็นว่าการจำลองสามารถดูดซับข้อมูลที่กลยุทธ์ไม่อาจมีได้ในเวลานั้น และสัญญาณที่เห็นได้ชัดที่สุดคือ equity curve ที่เริ่มต้นหลายปีก่อนโค้ดจะถูกสร้างขึ้น
- มีเพียงผู้รอดชีวิตที่ถูกนำเสนอ เปิดใช้ตัวแทนสิบตัว แต่เผยแพร่เพียงหนึ่งตัว ระบบการซื้อขาย AI แบบหลายตัวแทน ทำให้เกิดกรณีนี้ได้โดยไม่ตั้งใจ เพราะ framework ที่ใช้รันหลายรูปแบบยังเป็นผู้เลือกตัวที่นำมาเขียนถึงด้วย
- การเริ่มต้นใหม่ เกิด drawdown หยุดดำเนินการ เปิดบัญชีใหม่ แล้วเริ่ม equity curve จากวันที่เริ่มต้นใหม่ คำถามที่ใช้ตัดสินได้คือ จงแสดง equity curve ตั้งแต่เงินดอลลาร์แรกของบัญชีแรก
- Runbook ที่ถูกเขียนใหม่ Prompts และข้อจำกัดด้านขนาดสถานะถูกแก้ไขระหว่างวันที่ซื้อขายกับวันที่เขียนบทความ ปัจจัย alpha ที่สร้างโดย LLM สามารถผลิตได้เป็นจำนวนนับพัน ดังนั้นกฎการคัดเลือกต้องเผยแพร่ก่อนการคัดเลือก มิฉะนั้นประวัติจะกลายเป็นเรื่องเล่าว่าปัจจัยใดบังเอิญใช้การได้
คำถามที่พบบ่อย
ประวัติผลการซื้อขายของ AI สามารถตรวจสอบได้หรือไม่?
ได้ หากมีการเผยแพร่จุดเข้าก่อนทราบผลลัพธ์ กำหนด benchmark ไว้ล่วงหน้า รวมต้นทุนไว้ในตัวเลข และแสดงทุกบัญชี การตรวจสอบเป็นขั้นตอนเชิงกลไกและใช้เวลาไม่กี่นาที ประวัติที่เผยแพร่ส่วนใหญ่ไม่ผ่านข้อแรก
ประวัติผลการซื้อขายจริงของ AI ต้องดำเนินการนานเท่าใด?
นานกว่าประวัติส่วนใหญ่ที่เผยแพร่ ผลลัพธ์ระยะสิบสองเดือนของดัชนีมีส่วนเบี่ยงเบนมาตรฐาน 13.6 จุดในช่วงเวลาที่วัดได้ ดังนั้นการแยกข้อได้เปรียบเพียงเล็กน้อยออกจากโชคด้วยระดับความเชื่อมั่นทั่วไปจึงต้องใช้เวลาอย่างน้อยหลายปี และอาจถึงหลายทศวรรษสำหรับข้อได้เปรียบขนาดเล็ก
เงิน $25,000 เพียงพอที่จะทำให้ผลลัพธ์ของพอร์ต AI มีความหมายหรือไม่?
เพียงพอที่จะทำให้การจับคู่คำสั่งเป็นของจริง ได้แก่ ราคาเสนอซื้อขายจริง ค่าคอมมิชชั่นจริง และ statement ที่ตรวจสอบได้ แต่ไม่เพียงพอที่จะทำให้ผลลัพธ์ในช่วงไม่กี่เดือนมีนัยสำคัญทางสถิติ เพราะเรื่องนี้ขึ้นอยู่กับเวลาที่ผ่านไป ไม่ใช่ขนาดของบัญชี
Backtest กับประวัติผลการซื้อขายจริงแตกต่างกันอย่างไร?
Backtest นำกฎไปใช้กับข้อมูลที่มีอยู่แล้ว ส่วนประวัติผลการซื้อขายจริงคือชุดการตัดสินใจที่เผยแพร่ก่อนผลลัพธ์จะเกิดขึ้น มีเพียงอย่างหลังที่สามารถถูกพิสูจน์หักล้างได้ด้วยเหตุการณ์ถัดไป ซึ่งเป็นเหตุผลที่ทำให้ประวัตินั้นเป็นหลักฐาน
เหตุใดการเลือก benchmark จึงมีความสำคัญมาก?
ในช่วงครึ่งแรกของปี 2026 กองทุนดัชนีทั้งหกกองทุนข้างต้นมีผลลัพธ์จากราคาแตกต่างกัน 12.7 จุด Benchmark ที่เลือกหลังช่วงเวลาสิ้นสุดสามารถสร้างส่วนต่างทั้งหมดนี้ได้โดยไม่ต้องมีกลยุทธ์เข้ามาเกี่ยวข้อง
ตัวเลขทุกตัวในหน้านี้มาจาก stored query ที่เรียกใช้ข้อมูลตลาด และมี SQL อยู่ใต้แต่ละ panel คุณสามารถนำช่วงเวลาเดียวกันไปใช้กับวันที่ของคุณเองบน Strasmore terminal