Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-07-24

สรุปผลตอบแทน options เดือนมิถุนายน 2026

สัญญา options ที่ดีที่สุดในเดือนมิถุนายน 2026 ให้ผลตอบแทน 495x ขณะที่การขายสัญญาเดียวกันทำให้ขาดทุน 494,000 dollars จากเงินลงทุนหนึ่งพันดอลลาร์

การซื้อขาย options ที่ดีที่สุดเพียงรายการเดียวในเดือนมิถุนายน 2026 คืออะไร และเงินหนึ่งพันดอลลาร์ที่ลงทุนไปจะมีมูลค่าเพิ่มขึ้นเป็นเท่าใด คำตอบที่แท้จริงประกอบด้วยสี่ส่วน ได้แก่: ผลตอบแทนสูงสุด (jackpot); รายการซื้อขาย penny print จำนวนสองสัญญาที่เป็นหัวใจสำคัญของพาดหัวข่าว; รายการขาดทุนเกือบทั้งหมดจำนวนเก้าพันรายการที่เกิดขึ้นรอบๆ รายการนั้น; และรายการเทรดที่ตรงกันข้ามกัน หรือการขาย (selling) ในสิ่งที่ผู้ชนะซื้อ ซึ่งทำให้เงินค่า premium หนึ่งพันดอลลาร์กลายเป็นผลขาดทุนระดับหกหลัก ข้อมูลทั้งหมดนี้เป็นการคำนวณย้อนหลังจากข้อมูลบันทึกการซื้อขาย (tape) การวัดผลการเทรดแบบ hindsight-optimal คือการวัดสิ่งที่เกิดขึ้นจริงในเดือนนั้น ไม่ใช่กลยุทธ์ที่ใครจะสามารถนำไปใช้ได้ ทุกตัวเลขเป็นผลลัพธ์จากการสืบค้นข้อมูล (query) ที่ถูกบันทึกไว้ คุณสามารถขยายแถบข้อมูลเพื่อดูคำสั่ง SQL ที่แม่นยำได้

เดือนมิถุนายน 2026 ผันผวนเพียงใด?

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

คำสั่งดึงข้อมูลการปรับค่า: คำนวณเหมือนกันทุกเดือนในปี 2026 — SPY และ NVDA, ราคาเปิดถึงราคาปิด และช่วงราคา
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT toString(toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York')))) AS period_start,
    round((argMaxIf(toFloat64(close), window_start, ticker = 'SPY' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / argMinIf(toFloat64(open), window_start, ticker = 'SPY' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS spy_month_pct,
    round((maxIf(toFloat64(high), ticker = 'SPY' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - minIf(toFloat64(low), ticker = 'SPY' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / argMinIf(toFloat64(open), window_start, ticker = 'SPY' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) * 100, 1) AS spy_range_pct,
    round((argMaxIf(toFloat64(close), window_start, ticker = 'NVDA' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / argMinIf(toFloat64(open), window_start, ticker = 'NVDA' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS nvda_month_pct,
    round((maxIf(toFloat64(high), ticker = 'NVDA' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - minIf(toFloat64(low), ticker = 'NVDA' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / argMinIf(toFloat64(open), window_start, ticker = 'NVDA' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) * 100, 1) AS nvda_range_pct,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), ticker = 'SPY') AS trading_days
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'NVDA')
  AND window_start >= toDateTime('2026-01-01 05:00:00') AND window_start < toDateTime('2026-07-01 04:00:00')
GROUP BY period_start
HAVING uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), ticker = 'SPY') >= 17
ORDER BY period_start ASC

SPY ปิดเดือนมิถุนายนโดยมีราคาเปลี่ยนแปลงจากราคาเปิด -1.2% ภายใต้ช่วงความผันผวน 5.8% ซึ่งแคบกว่าเดือนมีนาคม (8.7%) หรือเมษายน (11.4%) ในขณะที่ความผันผวนที่แท้จริงเกิดขึ้นในระดับถัดลงมา โดย NVDA ปิดตลาดห่างจากราคาเปิดในเดือนมิถุนายน -7.4% หลังจากเคลื่อนที่อยู่ในช่วงความผันผวน 19.7% (สรุปภาพรวมตลาดเดือนมิถุนายน 2026 มีข้อมูลภาพรวมของทั้งตลาด) การทำกำไรหนึ่งร้อยเท่าไม่จำเป็นต้องอาศัยเดือนที่ตลาดดิ่งเหว เพียงแค่มีหุ้นขนาดใหญ่ตัวเดียวที่ราคาตกลงอย่างรุนแรงภายในสองสัปดาห์ก็เพียงพอแล้ว

อัตราส่วนกำไรสูงสุดประจำเดือน

ขอบเขตข้อมูล: สัญญาซื้อขายทั้งหมดใน 6 สินทรัพย์หลักที่มีสภาพคล่องสูง โดยมีจำนวนการซื้อขายอย่างน้อยห้าสิบครั้งในเดือนมิถุนายน — 30951 สัญญา — โดยคำนวณราคาตั้งแต่ราคาแรกของวันที่หนึ่งมิถุนายนจนถึงราคาล่าสุดจากทั้งสองฝั่ง: คำนวณจากมูลค่าที่ซื้อ ณ ราคาแรกเทียบกับราคาล่าสุด และคำนวณจากมูลค่าที่ต้องจ่ายหากขายด้วยพรีเมียมหนึ่งพันดอลลาร์

คำสั่งดึงข้อมูล5 อันดับค่าทวีคูณจากราคาแรกถึงราคาสุดท้ายที่สูงที่สุดในเดือนมิถุนายน โดยคำนวณจากทั้งสองฝั่ง (6 รากฐานที่มีสภาพคล่อง, 50+ รายการซื้อขาย)
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT ticker AS contract,
    substring(ticker, -9, 1) = 'P' AS is_put,
    round(first_px, 2) AS first_price,
    round(last_px, 2) AS last_price,
    round(last_px / first_px, 1) AS multiple,
    toUInt32(floor(1000 / (first_px * 100))) AS contracts_for_a_thousand,
    round(floor(1000 / (first_px * 100)) * last_px * 100, 0) AS bought_end_value_usd,
    round(1000 * (last_px / first_px) - 1000, 0) AS sold_net_loss_usd,
    trades
FROM (
    SELECT ticker,
        toFloat64(argMin(price, (sip_timestamp, price))) AS first_px,
        toFloat64(argMax(price, (sip_timestamp, price))) AS last_px,
        count() AS trades
    FROM global_markets.options_trades
    WHERE ((startsWith(ticker, 'O:MU') AND length(ticker) = 19) OR (startsWith(ticker, 'O:NVDA') AND length(ticker) = 21) OR (startsWith(ticker, 'O:TSLA') AND length(ticker) = 21) OR (startsWith(ticker, 'O:SPY') AND length(ticker) = 20) OR (startsWith(ticker, 'O:QQQ') AND length(ticker) = 20) OR (startsWith(ticker, 'O:AAPL') AND length(ticker) = 21))
      AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
    GROUP BY ticker
    HAVING count() >= 50 AND argMin(price, (sip_timestamp, price)) > 0
)
ORDER BY multiple DESC, contract ASC
LIMIT 5

สัญญาที่ทำกำไรสูงสุดคือ put option: O:NVDA260629P00200000 โดยราคาแรกอยู่ที่ $0.01 และราคาล่าสุดอยู่ที่ $4.95 — คิดเป็นอัตราส่วน 495x ข้อมูลระบุว่าเป็น NVDA put option ที่ราคา strike $200 หมดอายุวันที่ 29 มิถุนายน การใช้เงินหนึ่งพันดอลลาร์ซื้อ ณ ราคาแรกจะได้มา 1000 สัญญา และเมื่อราคาล่าสุดมาถึง สถานะนี้จะมีมูลค่า $495000 ราคาหุ้น NVDA ปรับตัวลดลงอย่างหนักในช่วงครึ่งหลังของเดือนมิถุนายน — รายละเอียดการดิ่งลงของราคา แสดงข้อมูลการลดลงในแต่ละวัน — และสัญญานี้คือการใช้ leverage เพื่อทำกำไรจากการลดลงดังกล่าว การคาดการณ์ล่วงหน้าได้นั้นเป็นสิ่งที่ไม่มีตารางข้อมูลใดขายให้คุณได้ ส่วนรายละเอียดเชิงลึกของราคาแรกจะอยู่ในส่วนถัดไปด้านล่าง

สัญญาอื่น ๆ ที่ติดอันดับ

สัญญาที่ติดอันดับทั้งห้าเป็น put option ทั้งหมด — โดยคอลัมน์ is_put คือหลักฐานยืนยัน — และแม้แต่อัตราส่วนที่ต่ำที่สุดก็ยังสูงกว่าสิบเท่า ในแถวที่สองคือ AAPL put option ที่ราคา strike $240 หมดอายุวันที่ 24 กรกฎาคม โดยราคาเคลื่อนที่จาก $0.01 ไปยัง $0.34 คิดเป็นอัตราส่วน 34x และยังมีสถานะค้างอยู่เมื่อสิ้นเดือน (เนื่องจากเป็นสัญญาที่หมดอายุในเดือนกรกฎาคม ราคาล่าสุดจึงเป็นราคาประเมิน ไม่ใช่ราคา settlement) แถวที่สามคือ MU put option ที่ราคา strike $100 หมดอายุวันที่ 10 กรกฎาคม ทำอัตราส่วนได้ 20x และมีสถานะค้างไปจนถึงเดือนกรกฎาคมเช่นกัน ส่วนแถวที่สี่และห้าคือ TSLA put option ที่ราคา strike $397.50 และ QQQ put option ที่ราคา strike $707 ซึ่งทั้งคู่หมดอายุวันที่ 10 มิถุนายน โดยทำอัตราส่วนได้ 12.5x และ 11.7x จากการปรับตัวลดลงในช่วงต้นเดือน สรุปคือทั้งห้าสัญญาคือการเดิมพันว่าราคาจะลดลง

การขาย: วิธีที่เงินหนึ่งพันดอลลาร์กลายเป็นลบครึ่งล้าน

การซื้อหุ้นผู้ชนะมีความเสี่ยงเพียงหนึ่งพันดอลลาร์ แต่การขายเพื่อรับค่า Premium จำนวนหนึ่งพันดอลลาร์เท่ากันนั้น คือการรับความเสี่ยงจากการเคลื่อนที่ของราคา คอลัมน์ sold_net_loss_usd แสดงข้อมูลทุกแถวในมุมมองของผู้ขาย โดยไม่คำนวณ Margin, การถูก Assign และการถูกบังคับซื้อคืน การขาย 1000 สัญญา ที่ราคา $0.01 ทำให้ได้รับเงินหนึ่งพันดอลลาร์ แต่ราคาล่าสุดระบุว่าสถานะนี้ทำให้ผู้ขายขาดทุนสุทธิ $494,000 โดยมีมูลค่าปัจจุบันอยู่ที่ $495000 กรณีที่เลวร้ายที่สุดของผู้ซื้อคือราคาของตั๋ว แต่กรณีที่เลวร้ายที่สุดของผู้ขายคือการเคลื่อนที่ของราคา ซึ่งการเคลื่อนที่ครั้งใหญ่ที่สุดในเดือนมิถุนายนคือห้าร้อยตั๋ว

ปัญหาจากการบันทึกราคาแบบ penny print

ตัวคูณ 495x มาจากไหน? ข้อมูลด้านล่างนี้ได้สรุปรายการซื้อขายทั้งหมดของผู้ชนะในช่วงเดือนมิถุนายนไว้ในแถวเดียว ซึ่งประกอบด้วยราคาที่บันทึกครั้งแรก ราคาครั้งที่สอง และจำนวนการบันทึกราคาแบบ penny print ทั้งหมดที่เคยเกิดขึ้น

คำสั่งดึงข้อมูลบันทึกการเข้าซื้อ: ราคาแรก, ราคาที่สอง และทุกราคาที่ขยับในเดือนมิถุนายน (1 แถว)
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
    toString(toDate(min(sip_timestamp))) AS first_print_date,
    formatDateTime(toTimeZone(min(sip_timestamp), 'America/New_York'), '%H:%i:%S') AS first_print_et,
    round(anyIf(price, rn = 1), 2) AS first_price,
    toUInt64(anyIf(size, rn = 1)) AS first_print_contracts,
    countIf(price <= 0.011) AS penny_prints_in_june,
    toUInt64(sumIf(size, price <= 0.011)) AS penny_contracts_in_june,
    round(anyIf(price, rn = 2), 2) AS second_price,
    toUInt32(dateDiff('second', min(sip_timestamp), anyIf(sip_timestamp, rn = 2))) AS seconds_to_second_print,
    round(argMax(price, (sip_timestamp, price)), 2) AS month_last_price,
    round(argMax(price, (sip_timestamp, price)) / anyIf(price, rn = 2), 1) AS second_print_multiple_to_last,
    round(floor(1000 / (anyIf(price, rn = 2) * 100)) * argMax(price, (sip_timestamp, price)) * 100, 0) AS thousand_at_second_print_end_usd
FROM (
    SELECT sip_timestamp, toFloat64(price) AS price, size,
        row_number() OVER (ORDER BY sip_timestamp, price) AS rn
    FROM global_markets.options_trades
    WHERE ticker = 'O:NVDA260629P00200000'
      AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
)

สัญญาดังกล่าวไม่มีการซื้อขายในรายการของเดือนมิถุนายนจนกระทั่งถึง 2026-06-15 โดยการบันทึกราคาครั้งแรกที่เวลา 09:49:30 ET คือ 2 contracts ที่ราคา $0.01 หรือคิดเป็นค่า premium ประมาณสองดอลลาร์ การบันทึกราคาครั้งถัดไปในอีก 101 วินาทีต่อมาคือ $2.44 และหลังจากนั้นไม่มีการบันทึกราคาที่ระดับ penny อีกเลย (มีเพียง 1 penny print จำนวน 2 contracts ตลอดทั้งเดือน) ขนาดสถานะหนึ่งพันสัญญาที่พาดหัวข่าวระบุไว้นั้น สูงกว่าขนาดที่มีการซื้อขายจริงที่ราคานั้นถึงห้าร้อยเท่า หากพิจารณาจากการเข้าซื้อที่ราคาครั้งที่สอง เงินหนึ่งพันดอลลาร์จะกลายเป็น $1980 เมื่อถึงการบันทึกราคาครั้งสุดท้ายของเดือน ซึ่งคิดเป็น 2x ไม่ใช่ 495x การเคลื่อนที่ของราคาจากราคาครั้งที่สอง ซึ่งเพิ่มขึ้นประมาณสองเท่าภายในสองสัปดาห์ด้วยความผันผวนสูงนั้นเป็นเหตุการณ์ที่เกิดขึ้นจริงและสามารถทำกำไรได้ แต่ผลตอบแทนมหาศาลตามที่บันทึกไว้นั้นไม่ใช่เรื่องจริง

เส้นทางราคา: สิบเซสชันตั้งแต่เริ่มจดทะเบียนจนถึงวันหมดอายุ

หากคำสั่งซื้อขายที่เหลืออยู่ถูกจับคู่จนเต็ม ให้ถือครองไว้จนสิ้นสุด: ทุกเซสชันจะแสดงข้อมูลการซื้อขาย turnover, ราคาล่าสุด และมูลค่าปัจจุบันของสถานะ

คำสั่งดึงข้อมูลเส้นทางรายเซสชัน: ปริมาณการซื้อขายรายวัน, ราคาล่าสุด และมูลค่าสถานะ $1,000
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH (
    SELECT (ticker, first_px)
    FROM (
    SELECT ticker,
        toFloat64(argMin(price, (sip_timestamp, price))) AS first_px,
        toFloat64(argMax(price, (sip_timestamp, price))) AS last_px,
        count() AS trades
    FROM global_markets.options_trades
    WHERE ((startsWith(ticker, 'O:MU') AND length(ticker) = 19) OR (startsWith(ticker, 'O:NVDA') AND length(ticker) = 21) OR (startsWith(ticker, 'O:TSLA') AND length(ticker) = 21) OR (startsWith(ticker, 'O:SPY') AND length(ticker) = 20) OR (startsWith(ticker, 'O:QQQ') AND length(ticker) = 20) OR (startsWith(ticker, 'O:AAPL') AND length(ticker) = 21))
      AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
    GROUP BY ticker
    HAVING count() >= 50 AND argMin(price, (sip_timestamp, price)) > 0
    )
    ORDER BY last_px / first_px DESC, ticker ASC
    LIMIT 1
) AS winner
SELECT toDate(sip_timestamp) AS date,
    toUInt64(sum(size)) AS contracts_traded,
    round(sum(toFloat64(price) * toFloat64(size)) * 100 / 1e6, 2) AS day_premium_usd_m,
    round(toFloat64(argMax(price, (sip_timestamp, price))), 2) AS day_last_price,
    round(floor(1000 / (winner.2 * 100)) * toFloat64(argMax(price, (sip_timestamp, price))) * 100, 0) AS position_value_usd,
    round(100 * toFloat64(argMax(price, (sip_timestamp, price))) / max(toFloat64(argMax(price, (sip_timestamp, price)))) OVER (), 1) AS pct_of_peak
FROM global_markets.options_trades
WHERE ticker = winner.1
  AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
GROUP BY date
ORDER BY date ASC

สัญญาถูกซื้อขายในทุก 10 เซสชันตลอดอายุสัญญา ตั้งแต่ 2026-06-15 จนถึงวันหมดอายุใน 2026-06-29 วันแรกปิดที่ $1.4 โดยมูลค่าที่บันทึกไว้คือ $140000 จากราคาเริ่มต้น ต่อมาทิศทางราคาเปลี่ยนไป: มูลค่า $287000 ใน 2026-06-17 ลดลงเหลือ $106000 ภายใน 2026-06-22 คิดเป็นการขาดทุนสะสมเกือบสองในสาม จุดสูงสุดที่ $745000 เกิดขึ้นใน 2026-06-26 หรือหนึ่งเซสชันก่อนวันหมดอายุ ราคาปิดสุดท้ายอยู่ที่ $495000 ซึ่งคิดเป็น 66.4% ของจุดสูงสุด แม้แต่การซื้อขายที่ดีที่สุดของเดือนนี้ยังปิดต่ำกว่าจุดสูงสุดของตัวเองอยู่หนึ่งในสาม Turnover: วันแรกมีการซื้อขายทั้งหมด 385 สัญญา ซึ่งใกล้เคียงกับขนาดสถานะที่คาดการณ์ไว้เมื่อรวมสามเซสชันแรกเข้าด้วยกัน ในขณะที่วันที่ซื้อขายสูงสุดคือ 2026-06-23 มีปริมาณการซื้อขาย 9718 สัญญา และมูลค่า premium อยู่ที่ $2.86 ล้าน ปริมาณการซื้อขายขนาดใหญ่เกิดขึ้นหลังจากราคาเริ่มเคลื่อนไหวแล้วเท่านั้น

อีกด้านหนึ่งของบัญชี

คำสั่งดึงข้อมูลการกระจายตัวทั้งหมด: สำหรับทุกผลตอบแทนมหาศาล จะมีการขาดทุนเกือบทั้งหมดจำนวนหลายพันรายการ (รวมการแยก put/call)
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
    count() AS contracts_with_50_trades,
    countIf(substring(ticker, -9, 1) = 'P') AS put_contracts,
    countIf(last_px / first_px >= 100) AS up_100x_plus,
    countIf(last_px / first_px >= 10) AS up_10x_plus,
    countIf(last_px / first_px >= 10 AND substring(ticker, -9, 1) = 'P') AS up_10x_puts,
    countIf(last_px / first_px >= 10 AND substring(ticker, -9, 1) = 'C') AS up_10x_calls,
    countIf(last_px / first_px <= 0.1) AS down_90_pct_plus,
    countIf(last_px / first_px <= 0.1 AND substring(ticker, -9, 1) = 'C') AS down_90_calls,
    round(100.0 * countIf(last_px / first_px <= 0.1 AND substring(ticker, -9, 1) = 'C') / countIf(last_px / first_px <= 0.1), 1) AS down_90_call_share_pct,
    countIf(last_px <= 0.02) AS ended_at_two_cents_or_less
FROM (
    SELECT ticker,
        toFloat64(argMin(price, (sip_timestamp, price))) AS first_px,
        toFloat64(argMax(price, (sip_timestamp, price))) AS last_px,
        count() AS trades
    FROM global_markets.options_trades
    WHERE ((startsWith(ticker, 'O:MU') AND length(ticker) = 19) OR (startsWith(ticker, 'O:NVDA') AND length(ticker) = 21) OR (startsWith(ticker, 'O:TSLA') AND length(ticker) = 21) OR (startsWith(ticker, 'O:SPY') AND length(ticker) = 20) OR (startsWith(ticker, 'O:QQQ') AND length(ticker) = 20) OR (startsWith(ticker, 'O:AAPL') AND length(ticker) = 21))
      AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
    GROUP BY ticker
    HAVING count() >= 50 AND argMin(price, (sip_timestamp, price)) > 0
)
คำสั่งดึงข้อมูลสัญญาที่มีต้นทุนสูงที่สุดสู่ศูนย์: สัญญาที่มีราคาสูงที่สุดที่ปิดที่ $0.02 หรือน้อยกว่า
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT ticker AS contract,
    round(first_px, 2) AS first_price,
    round(last_px, 2) AS last_price,
    toUInt32(floor(1000 / (first_px * 100))) AS contracts_a_thousand_bought,
    round(floor(1000 / (first_px * 100)) * last_px * 100, 0) AS ending_value_usd
FROM (
    SELECT ticker,
        toFloat64(argMin(price, (sip_timestamp, price))) AS first_px,
        toFloat64(argMax(price, (sip_timestamp, price))) AS last_px,
        count() AS trades
    FROM global_markets.options_trades
    WHERE ((startsWith(ticker, 'O:MU') AND length(ticker) = 19) OR (startsWith(ticker, 'O:NVDA') AND length(ticker) = 21) OR (startsWith(ticker, 'O:TSLA') AND length(ticker) = 21) OR (startsWith(ticker, 'O:SPY') AND length(ticker) = 20) OR (startsWith(ticker, 'O:QQQ') AND length(ticker) = 20) OR (startsWith(ticker, 'O:AAPL') AND length(ticker) = 21))
      AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
    GROUP BY ticker
    HAVING count() >= 50 AND argMin(price, (sip_timestamp, price)) > 0
)
WHERE last_px <= 0.02 AND floor(1000 / (first_px * 100)) >= 1
ORDER BY first_px DESC, contract ASC
LIMIT 1

ตัวเลขที่อยู่คู่กับรางวัลแจ็กพอตคือ: จากสัญญาที่มีสภาพคล่องทั้งหมด 30951 สัญญา มีเพียง 1 เท่านั้นที่ทำกำไรได้หนึ่งร้อยเท่า — และมี 9385 ที่ขาดทุนร้อยละเก้าสิบหรือมากกว่า โดยมีสัญญาจำนวน 8949 จากทุกผลิตภัณฑ์ในตลาดที่มีราคาล่าสุดอยู่ที่สองเซนต์หรือน้อยกว่า การสุ่มเลือกจากข้อมูลชุดนี้พบว่า กลุ่มที่ขาดทุนร้อยละเก้าสิบมีจำนวนมากกว่ากลุ่มแจ็กพอตหลายพันเท่า กรณีที่ขาดทุนหนักที่สุดคือ: O:MU260612C01350000 ซึ่งเป็น MU call ที่ราคา strike $1,350 หมดอายุวันที่ 12 มิถุนายน โดยเปิดตลาดในเดือนมิถุนายนที่ราคา $10 และปิดที่ราคา $0.01 ส่งผลให้เงินหนึ่งพันดอลลาร์กลายเป็น $1

Calls หรือ puts: ฝั่งไหนเป็นผู้ชนะ?

ผลลัพธ์ทั้งสองด้านไม่สอดคล้องกัน ฝั่งที่ชนะคือ put ทั้งหมด: โดยทุกสัญญาในกลุ่ม ten-baggers จำนวน 14 สัญญา เป็น put (14 puts, 0 calls) จากจำนวนสัญญาในตลาดทั้งหมดที่มี put จำนวน 14994 จากทั้งหมด 30951 สัญญา ฝั่งที่ขาดทุนมีสัดส่วนใกล้เคียงกัน: จากการขาดทุนเกือบทั้งหมดจำนวน 9385 สัญญา พบว่าเป็น call จำนวน 4403 — หรือ 46.9% — โดยมี put เป็นส่วนใหญ่เพียงเล็กน้อย แม้การคาดการณ์ทิศทางจะถูกต้องในกลุ่มผู้ชนะรายใหญ่ แต่การคาดการณ์ทิศทางเพียงอย่างเดียวไม่สามารถช่วยใครได้เลย เนื่องจากมี put จำนวนหลายพันสัญญาที่ตกไปอยู่ในกลุ่มขาดทุน เนื่องจากคาดการณ์ strike ผิด หรือคาดการณ์สัปดาห์ที่หมดอายุผิด หรือผิดทั้งสองอย่าง

จุดที่มีการขาดทุนสะสมมากที่สุด

สินทรัพย์อ้างอิงใดที่ทำให้เกิดการขาดทุนจำนวนมาก? ไม่ใช่ชื่อของหุ้นที่เกิดการดิ่งลงของราคา

คำสั่งดึงข้อมูลยอดขาดทุนแยกตามรากฐาน: สัญญาที่ขาดทุน 90%+ จากราคาแรก, สัดส่วนของยอดรวม และ ten-baggers ของแต่ละรากฐาน
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
    multiIf(startsWith(ticker, 'O:NVDA'), 'NVDA', startsWith(ticker, 'O:TSLA'), 'TSLA', startsWith(ticker, 'O:AAPL'), 'AAPL', startsWith(ticker, 'O:SPY'), 'SPY', startsWith(ticker, 'O:QQQ'), 'QQQ', 'MU') AS root,
    count() AS contracts,
    countIf(last_px / first_px <= 0.1) AS down_90_pct_plus,
    round(100.0 * countIf(last_px / first_px <= 0.1) / count(), 1) AS pct_of_root_wiped,
    round(100.0 * countIf(last_px / first_px <= 0.1) / sum(countIf(last_px / first_px <= 0.1)) OVER (), 1) AS share_of_all_down_90_pct,
    countIf(last_px / first_px >= 10) AS up_10x_plus
FROM (
    SELECT ticker,
        toFloat64(argMin(price, (sip_timestamp, price))) AS first_px,
        toFloat64(argMax(price, (sip_timestamp, price))) AS last_px,
        count() AS trades
    FROM global_markets.options_trades
    WHERE ((startsWith(ticker, 'O:MU') AND length(ticker) = 19) OR (startsWith(ticker, 'O:NVDA') AND length(ticker) = 21) OR (startsWith(ticker, 'O:TSLA') AND length(ticker) = 21) OR (startsWith(ticker, 'O:SPY') AND length(ticker) = 20) OR (startsWith(ticker, 'O:QQQ') AND length(ticker) = 20) OR (startsWith(ticker, 'O:AAPL') AND length(ticker) = 21))
      AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
    GROUP BY ticker
    HAVING count() >= 50 AND argMin(price, (sip_timestamp, price)) > 0
)
GROUP BY root
ORDER BY down_90_pct_plus DESC, root ASC

QQQ เป็นสินทรัพย์ที่มีการขาดทุนสะสมมากที่สุด: มีการขาดทุนเกือบทั้งหมดจำนวน 2923 — คิดเป็น 31.1% ของการขาดทุนทั้งหมด — โดยมีสัญญาที่มีสภาพคล่องจำนวน 35.7% ถูกล้างมูลค่า เมื่อรวมกับ 24.7% ของ SPY จะพบว่าดัชนีหลักมีสัดส่วนมากกว่าครึ่งหนึ่งของการขาดทุนทั้งหมด อัตราการขาดทุนที่น้อยที่สุดสองอันดับแรกเป็นของ NVDA และ AAPL (21.8% และ 21.8%) โดยตัวแรกคือ NVDA ซึ่งเป็นสินทรัพย์อ้างอิงของหุ้นที่ทำกำไรได้สูงสุดในเดือนนี้ การขาดทุนสะสมจะเพิ่มขึ้นมากที่สุดในจุดที่ค่า premium ไม่มีการเคลื่อนไหว ในทางกลับกัน ข้อมูลชุดเดียวกันระบุว่า: QQQ สร้าง ten-baggers จำนวน 9 จากทั้งหมด 14 สัญญาของเดือนนี้ ส่วน SPY ที่มีสัญญาในกลุ่มขาดทุนจำนวน 2319 ได้สร้างการขาดทุนจำนวน 0

สิ่งที่ตารางนี้บอกเรา (และสิ่งที่บอกไม่ได้)

บทเรียนสี่ประการ Convexity คือเรื่องจริง: Option ที่มีราคาต่ำและ Out-of-the-money จะมีมูลค่าเพิ่มขึ้นอย่างมหาศาลเมื่อสินทรัพย์อ้างอิงเคลื่อนที่อย่างรวดเร็ว ซึ่งเป็นเหตุผลว่าทำไมตั๋วลอตเตอรี่จึงมีราคาเพียงไม่กี่สตางค์ ค่า Multiple ในพาดหัวข่าวจำเป็นต้องมีการตรวจสอบอย่างละเอียด: ค่า 495x ในเดือนมิถุนายน เกิดจากการทำรายการเพียงครั้งเดียวด้วยจำนวนสองล็อต แต่ผลตอบแทนที่ซื้อขายกันจริงนั้นอยู่ที่สองเท่า การกระจายตัวคือราคาที่ต้องจ่ายสำหรับ Convexity: มีหุ้นที่ทำกำไรได้สิบเท่าจำนวน 14 ตัว อยู่เคียงข้างกับหุ้นที่เกือบขาดทุนทั้งหมดจำนวน 9385 ตัว (สามารถอ่าน คำอธิบายเกี่ยวกับ market makers เพื่อดูว่าใครเป็นผู้ขายตั๋วเหล่านี้) และเราไม่สามารถซื้อขายข้อมูลย้อนหลังได้: ตั๋วที่ชนะรางวัลนั้นยังไม่มีอยู่จริงเมื่อวันที่ 1 มิถุนายน แต่มันเพิ่งปรากฏขึ้นในวันที่ 15 มิถุนายน ซึ่งการจะซื้อตั๋วใบนั้นได้หมายถึงต้องทราบทั้งทิศทางและจังหวะเวลาในช่วงสองสัปดาห์หลังจากนั้นตั้งแต่เช้าของวันที่ 1 มิถุนายน หน้าเพจนี้วัดผลสิ่งที่เกิดขึ้นในเดือนมิถุนายนเท่านั้น ไม่ได้เป็นการคาดการณ์สิ่งที่จะเกิดขึ้นในเดือนกรกฎาคม

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

การซื้อขาย options ที่ดีที่สุดในเดือนมิถุนายน 2026 คืออะไร?

จากการวัดราคาตั้งแต่ราคาแรกจนถึงราคาล่าสุดของสินทรัพย์ที่มีสภาพคล่องสูง 6 ประเภท พบว่า put option ของ NVDA ที่ราคา strike $200 ซึ่งจะหมดอายุในวันที่ 29 มิถุนายน 2026 มีราคาตั้งแต่ $0.01 ถึง $4.95 คิดเป็น multiple เท่ากับ 495x โดยอ้างอิงจากราคาแรกที่ซื้อขายเพียงสองลอตในราคา penny (ราคาถัดมาคือ $2.44)

การซื้อขาย options สามารถขาดทุนมากกว่าเงินที่ลงทุนได้หรือไม่?

สำหรับการซื้อ options นั้นไม่ได้: ผู้ซื้อสามารถขาดทุนได้สูงสุดเพียงเท่ากับค่า premium ที่จ่ายไป ส่วนการขาย options นั้นสามารถทำได้ — ข้อมูลในเดือนมิถุนายนแสดงให้เห็นว่าผู้ขายที่ได้รับค่า premium จำนวนหนึ่งพันดอลลาร์ ต้องเผชิญกับสภาวะขาดทุนถึง $494,000 ณ ราคาล่าสุด

ทำไม options ราคาถูกส่วนใหญ่จึงหมดอายุโดยไม่มีมูลค่า?

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

นักเทรดมืออาชีพจะสามารถทำกำไรได้ถึง 495x หรือไม่?

แทบจะเป็นไปไม่ได้เลยหากพิจารณาจากขนาดของคำสั่งซื้อขายที่ปรากฏ: มีสัญญาเพียง 2 เท่านั้นที่เคยซื้อขายที่ราคาเข้าซื้อ $0.01 และราคาได้ขยับไปที่ $2.44 ภายในเวลา 101 วินาที เงินหนึ่งพันดอลลาร์จากการซื้อขายครั้งที่สองมีมูลค่าประมาณ $1980 ณ ราคาล่าสุด — ถือเป็นการเทรดที่ดี แต่จะเป็นการทำกำไรที่เปลี่ยนชีวิตได้ก็ต่อเมื่อมองย้อนกลับไปเท่านั้น

หมายเหตุข้อมูล

หมายเหตุข้อมูลฉบับเต็ม
  • การคำนวณฝั่งผู้ขายไม่ได้รวม Margin, การได้รับมอบหมายหุ้น (Assignment) และการถูกบังคับปิดสถานะ (Forced liquidation) โดยตั้งใจ: สถานะ Short ที่แท้จริงควรจะถูกปิดหรือได้รับมอบหมายหุ้นไปนานแล้วก่อนการบันทึกราคาครั้งล่าสุด ข้อมูลนี้เป็นการวัดการเคลื่อนที่ของราคา ไม่ใช่รายงานจากโบรกเกอร์
  • เป็นการวิเคราะห์ย้อนหลัง ไม่ใช่คำแนะนำ: ตัวเลขทุกตัวถูกคำนวณหลังจากเหตุการณ์เกิดขึ้นแล้วจากรายการซื้อขายที่บันทึกไว้
  • เป็นการวัดระยะทางจากราคาแรกถึงราคาล่าสุด ไม่ใช่รายงานการทำรายการ: ด้วยเหตุนี้ข้อมูลจึงถูกระบุเป็นจำนวนเท่า (Multiples) ไม่ใช่ผลตอบแทน (Returns)
  • ข้อควรระวังเรื่องราคาต่ำสุด (Penny caveat) ใช้กับทุกกรณี: แถวใดก็ตามที่มีราคาเริ่มต้นเพียงหนึ่งเซนต์ (ผู้ชนะ และผู้ชนะอันดับสองของ AAPL) จะมีความเปราะบางในลักษณะเดียวกัน
  • ขอบเขตข้อมูล (Universe): หุ้นหลัก 6 ตัว ได้แก่ MU, NVDA, TSLA, SPY, QQQ, AAPL — ใช้เฉพาะสัญลักษณ์มาตรฐานของ OCC เท่านั้น (ไม่รวมสัญญาที่มีการปรับปรุงเนื่องจากความยาวสัญลักษณ์) โดยต้องมีการซื้อขายตั้งแต่ 50 รายการขึ้นไปในเดือน มิถุนายน และมีราคาเริ่มต้นที่ไม่ใช่ศูนย์

ระเบียบวิธี

  • ระยะเวลา: 1–30 มิถุนายน 2026; ข้อมูลเวลาถูกจัดเก็บในรูปแบบ UTC และกรองด้วยขอบเขต UTC ดั้งเดิม แผงข้อมูลการปรับเทียบ (calibration panel) คือบล็อกฐานข้อมูลอ้างอิง ซึ่งใช้วิธีการคำนวณแบบเดียวกันโดยย้อนดูข้อมูลตลอดทั้งปี 2026
  • ต่อหนึ่งสัญญา: ราคาแรกคือการซื้อขายที่มีการบันทึกเวลา SIP เร็วที่สุดในเดือนมิถุนายน และราคาสุดท้ายคือการซื้อขายที่มีการบันทึกเวลาล่าสุด หากราคาเท่ากันจะตัดสินด้วยราคาที่กำหนดไว้ล่วงหน้า สำหรับค่าทวีคูณ (multiples) จะใช้ค่าสุดท้ายแทนค่าแรก ซึ่งคำนวณผ่านการสืบค้นข้อมูล (in-query)
  • แผงข้อมูลเส้นทางรายวัน (daily-path panel) จะคำนวณหาผู้ชนะใหม่จากการสแกนลำดับเดียวกันในทุกการสร้างข้อมูล (generation) โดยการบันทึกข้อมูลขาเข้าจะยึดตามสัญลักษณ์ (symbol) และใช้ขอบเขตข้อมูลที่คงไว้หากข้อมูลทั้งสองไม่ตรงกัน
  • การสร้างข้อมูลทำผ่านเส้นทางอ่านอย่างเดียว (read-only path) แบบกลุ่ม (batch) เท่านั้น หน้าเว็บนี้ไม่มีการสืบค้นข้อมูลแบบเรียลไทม์ สถานะของคลังข้อมูล ณ วันที่ 12 กรกฎาคม 2026

ทุกแผงข้อมูลคือวัตถุที่จัดเก็บไว้หนึ่งชุด ซึ่งประกอบด้วย กราฟ ตาราง และ SQL ท่านสามารถตรวจสอบบัญชีแยกประเภทด้วยตนเองได้บนเทอร์มินัล Strasmore

#options#hindsight#convexity#risk#deepdive