Strasmore Research

วิธีคำนวณ Portfolio Delta และ Beta Weighting

อธิบายหลักการคำนวณ Portfolio Delta และการทำ Beta weighting เพื่อปรับค่าความเสี่ยงให้เป็นจำนวนหุ้น SPY ที่เทียบเท่ากัน ช่วยให้เข้าใจภาพรวมพอร์ตลงทุนในเดือนมิถุนายน 2026

Portfolio delta คือตัวเลขเพียงหนึ่งเดียวที่ตอบคำถามว่า หากตลาดในภาพรวมเคลื่อนไหวหนึ่งเปอร์เซ็นต์ พอร์ตการลงทุนทั้งหมดจะเคลื่อนไหวประมาณเท่าใด การนำค่า delta ของทุกสถานะมารวมกันจะได้ตัวเลขหนึ่งออกมา แต่ไม่ใช่ตัวเลขที่ตอบคำถามดังกล่าว การทำ Beta weighting คือการปรับค่าเพื่อให้ผลรวมนั้นมีความหมาย โดยเป็นการแปลงการถือครองทุกอย่างให้เป็นจำนวนหุ้น SPY ที่เทียบเท่ากัน

เหตุใด Portfolio delta จึงไม่สามารถนำมารวมกันข้าม Ticker ได้

Delta คือค่าที่ใช้วัดว่ามูลค่าของสถานะจะเปลี่ยนแปลงไปเท่าใดเมื่อราคาของสินทรัพย์อ้างอิงปรับตัวขึ้นหรือลงหนึ่งดอลลาร์ หุ้นหนึ่งหุ้นมีค่า Delta เท่ากับหนึ่ง สัญญา Option หนึ่งสัญญาครอบคลุมหุ้นหนึ่งร้อยหุ้น ดังนั้น Call option ที่แสดงค่า Delta 0.30 จึงมีสถานะความเสี่ยง (Exposure) เท่ากับ 30 Delta มุมมองในระดับสถานะเดี่ยวนี้เป็นหัวข้อที่กล่าวถึงใน สิ่งที่ Option delta วัดค่า

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

Beta weighted delta คืออะไร

Beta weighting คือการปรับค่า delta ของทุกหลักทรัพย์ในพอร์ตให้เป็นค่า delta ของดัชนีอ้างอิงที่กำหนด โดยปกติจะใช้ SPY สำหรับพอร์ตหุ้นสหรัฐฯ การคำนวณนี้ใช้ตัวคูณสองตัว

ตัวแรกคือค่า beta ซึ่งเป็นความอ่อนไหวในอดีตของหุ้นต่อดัชนีอ้างอิง วัดจากความชันของผลตอบแทนรายวันของหุ้นเทียบกับผลตอบแทนรายวันของดัชนีในช่วงเวลาที่กำหนด ค่า beta ที่ 1.4 หมายความว่าหุ้นตัวนั้นเคลื่อนไหวเฉลี่ยประมาณ 1.4% ต่อการเคลื่อนไหว 1% ของดัชนีในช่วงเวลาดังกล่าว

ตัวที่สองคืออัตราส่วนราคา (price ratio) ซึ่งได้จากราคาหุ้นหารด้วยราคาดัชนีอ้างอิง ค่า delta นับจำนวนหุ้น และหุ้นที่ราคาต่างกันย่อมมีมูลค่าเงินต่างกัน อัตราส่วนนี้จึงช่วยปรับให้ทุกอย่างอยู่บนมาตรวัดเดียวกัน

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

คำสั่งดึงข้อมูลBeta, อัตราส่วนราคา และจำนวนหุ้นเทียบเท่า SPY ต่อหุ้นที่ถือครอง
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH
    sessions AS
    (
        SELECT
            ticker                                               AS ticker,
            toDate(toTimeZone(window_start, 'America/New_York')) AS d,
            toFloat64(argMax(close, window_start))               AS px
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN ('SPY', 'NVDA', 'AAPL', 'MSFT', 'XOM', 'JNJ', 'KO')
          AND window_start >= toDateTime('2025-07-01 04:00:00')
          AND window_start <  toDateTime('2026-07-01 04:00:00')
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
             + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
             + toMinute(toTimeZone(window_start, 'America/New_York'))) <  960
        GROUP BY ticker, d
    ),
    steps AS
    (
        SELECT
            ticker,
            d,
            px,
            any(px) OVER (PARTITION BY ticker ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
        FROM sessions
    ),
    daily_ret AS
    (
        SELECT ticker, d, (px / prev_px) - 1 AS r
        FROM steps
        WHERE prev_px > 0
    ),
    bench AS
    (
        SELECT d, r AS spy_r
        FROM daily_ret
        WHERE ticker = 'SPY'
    ),
    betas AS
    (
        SELECT
            s.ticker                                 AS ticker,
            covarPop(s.r, b.spy_r) / varPop(b.spy_r) AS beta_vs_spy,
            1                                        AS k
        FROM daily_ret AS s
        INNER JOIN bench AS b ON b.d = s.d
        GROUP BY s.ticker
    ),
    prices AS
    (
        SELECT ticker, argMax(px, d) AS close_px
        FROM sessions
        GROUP BY ticker
    ),
    spy_price AS
    (
        SELECT argMax(px, d) AS spy_close, 1 AS k
        FROM sessions
        WHERE ticker = 'SPY'
    )
SELECT
    betas.ticker                                                        AS ticker,
    round(betas.beta_vs_spy, 2)                                         AS beta_vs_spy,
    round(prices.close_px / spy_price.spy_close, 3)                     AS price_vs_spy,
    round(betas.beta_vs_spy * prices.close_px / spy_price.spy_close, 3) AS spy_shares_per_share
FROM betas
INNER JOIN prices ON prices.ticker = betas.ticker
INNER JOIN spy_price ON spy_price.k = betas.k
ORDER BY beta_vs_spy DESC
Run this yourself

NVDA อยู่บนสุดของรายการด้วยค่า beta ที่ 1.86 โดยซื้อขายอยู่ที่ 0.268 เท่าของราคา SPY เมื่อคูณทั้งสองค่าเข้าด้วยกัน หุ้นตัวนี้หนึ่งหุ้นจึงมีสถานะความเสี่ยงเทียบเท่ากับหุ้น SPY จำนวน 0.498 หุ้น ส่วนปลายสุดของรายชื่อ 7 หลักทรัพย์นั้นมีค่าต่ำกว่าศูนย์ XOM มีค่า beta อยู่ที่ -0.36 ในช่วงเวลานี้ ซึ่งแสดงถึงความชันที่เป็นลบเล็กน้อยเมื่อเทียบกับดัชนี ไม่ใช่แค่การเคลื่อนไหวที่เบากว่าดัชนี และหุ้นหนึ่งหุ้นจะแปลงค่าได้เป็น -0.067 หุ้น SPY แม้ว่าทั้งสองกรณีจะมีค่า delta ในสมุดบัญชีเท่ากับหนึ่ง แต่กลับมีความแตกต่างอย่างมากในแง่ของความเสี่ยงที่ delta นั้นเผชิญอยู่ ซึ่งเป็นสัญญาณเตือนเบื้องต้นว่าค่า beta ที่แสดงทศนิยมสองตำแหน่งนั้นเป็นเพียงค่าประมาณการที่ขึ้นอยู่กับช่วงเวลาที่เลือกใช้ ซึ่งจะมีการอภิปรายเพิ่มเติมในช่วงท้ายของบทความนี้

ที่มาของค่า Delta ของ Option

ค่า Delta ของหุ้นถูกกำหนดไว้ที่หนึ่งต่อหนึ่งหุ้น แต่ค่า Delta ของ Option ไม่ได้คงที่ โดยจะเปลี่ยนแปลงไปตามราคาใช้สิทธิ (strike price) ระยะเวลาคงเหลือจนถึงวันหมดอายุ ราคาของสินทรัพย์อ้างอิง และค่าความผันผวนแฝง (implied volatility) ตารางด้านล่างแสดงค่า Delta ของสัญญา AAPL ทุกรายการที่มีการซื้อขายในวันที่ มิถุนายน 2026 โดยมีระยะเวลาคงเหลือยี่สิบถึงสี่สิบห้าวัน ซึ่งจัดกลุ่มตามระยะห่างของราคาใช้สิทธิจากราคาปิดเป็นช่วงละสองเปอร์เซ็นต์

คำสั่งดึงข้อมูลDelta ของ Call และ Put สำหรับ AAPL ตามช่วงราคาใช้สิทธิ (Strike) ที่ระยะเวลาคงเหลือ 20 ถึง 45 วัน
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
    concat(if(bucket_pct > 0, '+', ''), toString(bucket_pct), '%') AS strike_vs_spot,
    round(avgIf(contract_delta, contract_delta > 0), 3)            AS call_delta,
    round(avgIf(contract_delta, contract_delta < 0), 3)            AS put_delta,
    count()                                                        AS contract_count
FROM
(
    SELECT
        toInt32(round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 50)) * 2 AS bucket_pct,
        toFloat64(delta)                                                                     AS contract_delta
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'AAPL'
      AND date >= toDate('2026-06-30')
      AND date <  toDate('2026-07-01')
      AND iv_converged = 1
      AND volume > 0
      AND days_to_expiry BETWEEN 20 AND 45
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.12
)
GROUP BY bucket_pct
HAVING countIf(contract_delta > 0) > 0 AND countIf(contract_delta < 0) > 0
ORDER BY bucket_pct
Run this yourself

ที่ช่วง -12% ค่า Delta เฉลี่ยของ Call option อยู่ที่ 0.924 จากจำนวนสัญญาที่มีการซื้อขาย 4 สัญญา ในขณะที่ Put option มีค่าเฉลี่ยอยู่ที่ -0.084 ส่วนที่ช่วง +10% ค่า Delta เฉลี่ยของ Call option อยู่ที่ 0.106 และ Put option อยู่ที่ -0.834 ทั้งนี้ Call option และ Put option ที่ราคาใช้สิทธิเดียวกันจะมีค่า Delta ที่มีเครื่องหมายตรงข้ามกัน ซึ่งเป็นเหตุผลว่าทำไมการเปิดสถานะ Short call และ Long put จึงช่วยลดความเสี่ยงของสถานะ Long หุ้นได้ทั้งคู่ สำหรับรายละเอียดว่าเส้นโค้งทั้งหมดจะเปลี่ยนทิศทางอย่างไรเมื่อใกล้ถึงวันหมดอายุ สามารถดูได้ที่ การเปลี่ยนแปลงของค่า Greeks ของ Option ตามกาลเวลา

การคำนวณพอร์ตการลงทุนขนาดเล็กให้เหลือตัวเลขเดียว

พิจารณาพอร์ตการลงทุนที่มีสามสถานะซึ่งถูกจัดสรรด้วยมือ ประกอบด้วยสถานะ Long หุ้น AAPL จำนวน 300 หุ้น, สถานะ Short Call option ของ AAPL จำนวน 3 สัญญา ที่ราคาใช้สิทธิสูงกว่าราคาตลาดประมาณร้อยละ 5 โดยมีอายุคงเหลือประมาณหนึ่งเดือน ซึ่งเป็นกลยุทธ์ covered-call overlay มาตรฐาน และสถานะ Long Put option ของ KO จำนวน 5 สัญญา ที่ราคาใกล้เคียงกับราคาตลาดในวันหมดอายุที่ใกล้เคียงกัน เพื่อป้องกันความเสี่ยงในหุ้นตัวที่สอง จำนวนหุ้นและสัญญาเหล่านี้เป็นเพียงสมมติฐาน โดยค่า Delta และ Beta ทุกตัวในตารางจะถูกวัดผล

คำสั่งดึงข้อมูลพอร์ตการลงทุน 3 ขา, Delta ดิบเทียบกับ Delta ที่ถ่วงน้ำหนักด้วย Beta
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH
    sessions AS
    (
        SELECT
            ticker                                               AS ticker,
            toDate(toTimeZone(window_start, 'America/New_York')) AS d,
            toFloat64(argMax(close, window_start))               AS px
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN ('SPY', 'AAPL', 'KO')
          AND window_start >= toDateTime('2025-07-01 04:00:00')
          AND window_start <  toDateTime('2026-07-01 04:00:00')
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
             + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
             + toMinute(toTimeZone(window_start, 'America/New_York'))) <  960
        GROUP BY ticker, d
    ),
    steps AS
    (
        SELECT
            ticker,
            d,
            px,
            any(px) OVER (PARTITION BY ticker ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
        FROM sessions
    ),
    daily_ret AS
    (
        SELECT ticker, d, (px / prev_px) - 1 AS r
        FROM steps
        WHERE prev_px > 0
    ),
    bench AS
    (
        SELECT d, r AS spy_r
        FROM daily_ret
        WHERE ticker = 'SPY'
    ),
    betas AS
    (
        SELECT
            s.ticker                                 AS ticker,
            covarPop(s.r, b.spy_r) / varPop(b.spy_r) AS beta_vs_spy
        FROM daily_ret AS s
        INNER JOIN bench AS b ON b.d = s.d
        GROUP BY s.ticker
    ),
    prices AS
    (
        SELECT ticker, argMax(px, d) AS close_px, 1 AS k
        FROM sessions
        GROUP BY ticker
    ),
    spy_price AS
    (
        SELECT argMax(px, d) AS spy_close, 1 AS k
        FROM sessions
        WHERE ticker = 'SPY'
    ),
    opt_delta AS
    (
        SELECT
            underlying_symbol                       AS ticker,
            if(toFloat64(delta) > 0, 'call', 'put') AS kind,
            avg(toFloat64(delta))                   AS per_share_delta
        FROM global_markets.options_greeks
        WHERE date >= toDate('2026-06-30')
          AND date <  toDate('2026-07-01')
          AND iv_converged = 1
          AND volume > 0
          AND days_to_expiry BETWEEN 25 AND 40
          AND (
                (underlying_symbol = 'AAPL' AND toFloat64(delta) > 0
                 AND toFloat64(strike_price) / toFloat64(underlying_close) BETWEEN 1.03 AND 1.07)
             OR (underlying_symbol = 'KO' AND toFloat64(delta) < 0
                 AND toFloat64(strike_price) / toFloat64(underlying_close) BETWEEN 0.97 AND 1.03)
          )
        GROUP BY ticker, kind
    ),
    legs AS
    (
        SELECT
            tupleElement(leg, 1) AS leg_no,
            tupleElement(leg, 2) AS position,
            tupleElement(leg, 3) AS ticker,
            tupleElement(leg, 4) AS kind,
            tupleElement(leg, 5) AS qty,
            tupleElement(leg, 6) AS multiplier
        FROM
        (
            SELECT arrayJoin([
                (1, 'Long 300 AAPL',      'AAPL', 'stock', 300., 1.),
                (2, 'Short 3 AAPL calls', 'AAPL', 'call',   -3., 100.),
                (3, 'Long 5 KO puts',     'KO',   'put',     5., 100.)
            ]) AS leg
        )
    )
SELECT
    position                                                                                          AS position,
    round(raw_share_delta)                                                                            AS raw_share_delta,
    round(beta_vs_spy, 2)                                                                             AS beta_vs_spy,
    round(bw_delta)                                                                                   AS beta_weighted_delta,
    round(sum(bw_delta) OVER (ORDER BY leg_no ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW))       AS running_book_delta,
    round(sum(bw_delta) OVER (ORDER BY leg_no ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) * spy_close / 100.) AS dollars_per_1pct_spy
FROM
(
    SELECT
        l.leg_no                                                            AS leg_no,
        l.position                                                          AS position,
        l.qty * l.multiplier * if(l.kind = 'stock', 1., o.per_share_delta)  AS raw_share_delta,
        bt.beta_vs_spy                                                      AS beta_vs_spy,
        sp.spy_close                                                        AS spy_close,
        raw_share_delta * bt.beta_vs_spy * pr.close_px / sp.spy_close       AS bw_delta
    FROM legs AS l
    LEFT  JOIN opt_delta AS o  ON o.ticker = l.ticker AND o.kind = l.kind
    INNER JOIN betas     AS bt ON bt.ticker = l.ticker
    INNER JOIN prices    AS pr ON pr.ticker = l.ticker
    INNER JOIN spy_price AS sp ON sp.k = pr.k
)
ORDER BY leg_no
Run this yourself

ส่วนประกอบของหุ้นให้ค่า raw delta จำนวน 300 ซึ่งคิดเป็นหนึ่งต่อหนึ่งหุ้น ส่วนสถานะ Short Call ให้ค่า -98 และสถานะ Long Put ให้ค่า -217 การรวมตัวเลขทั้งสามส่วนนี้จะได้ค่าออกมาหนึ่งตัวเลข ในขณะที่การถ่วงน้ำหนักด้วยค่า Beta จะให้ผลลัพธ์ที่แตกต่างออกไป

AAPL มีค่า Beta อยู่ที่ 0.88 ในช่วงเวลาที่วัดผล และ KO อยู่ที่ -0.27 ซึ่งเป็นความชันที่เป็นลบเมื่อเทียบกับดัชนีตลอดสิบสองเดือนที่ผ่านมา หลังจากปรับสเกลแต่ละสถานะด้วยค่า Beta และราคาเมื่อเทียบกับ SPY แล้ว สถานะหุ้นจะกลายเป็น 103 หุ้นของ SPY, สถานะ Short Call เป็น -34 และสถานะ Put เป็น 6 สถานะ Put เป็นส่วนที่ควรหยุดพิจารณา ค่า raw delta จำนวน -217 ของมันคือสถานะ Short ในหุ้น KO และการคูณสถานะ Short ด้วยค่า Beta ที่เป็นลบจะทำให้ผลลัพธ์ไปอยู่ในฝั่งบวกที่ 6 หุ้นของ SPY ซึ่งเป็นค่าสถานะ Long ดัชนีเพียงเล็กน้อย หากไม่คำนึงถึงเครื่องหมายบวกหรือลบ ขนาดของตัวเลขคือประเด็นสำคัญ นั่นคือการป้องกันความเสี่ยงที่ดูมีนัยสำคัญในแง่ของ raw delta จะถูกแปลงเป็นสัดส่วนที่น้อยมากเมื่อเทียบกับดัชนี และการทำงานของมันเกิดขึ้นกับหุ้น KO มากกว่าที่จะเป็นตลาดโดยรวม คอลัมน์ยอดรวมสะสมจะแสดงสถานะแต่ละส่วนตามลำดับ และพอร์ตการลงทุนนี้จะมีค่า beta weighted deltas อยู่ที่ 76

ความหมายที่แท้จริงของค่า beta weighted delta ในระดับดังกล่าว

พอร์ตการลงทุนที่มีค่า beta weighted delta อยู่ที่ 76 มีพฤติกรรมในช่วงเวลาที่วัดผลเสมือนกับการถือครองหุ้น SPY ในจำนวนเท่ากัน ค่าที่เป็นบวกบ่งบอกถึงพอร์ตที่มีสถานะ long ในดัชนี ส่วนค่าที่เป็นลบหมายถึงพอร์ตที่มีสถานะ short ซึ่งเป็นสิ่งที่นักเทรดหมายถึงเมื่อกล่าวว่าการปรับ delta ให้เป็นลบ คอลัมน์สุดท้ายจะแปลงยอดรวมสะสมให้เป็นมูลค่าเงิน หาก SPY เคลื่อนไหวหนึ่งเปอร์เซ็นต์โดยที่ปัจจัยอื่นคงที่ จะส่งผลให้มูลค่าพอร์ตเปลี่ยนแปลงไป 565 ดอลลาร์

การปรับค่าดังกล่าวให้เป็นศูนย์ (flattening) หมายถึงการเพิ่มค่า beta weighted delta ที่มีขนาดเท่ากันแต่มีเครื่องหมายตรงกันข้ามเข้ามาหักล้าง การ short หุ้น SPY จะทำหน้าที่นี้แบบหนึ่งต่อหนึ่ง โดยหุ้น SPY หนึ่งหุ้นมีค่าเท่ากับหนึ่ง beta weighted delta ตามโครงสร้างของมัน ส่วน options ของ SPY จะทำหน้าที่นี้เป็นเศษส่วน ขึ้นอยู่กับค่า delta ของสัญญาที่เลือกใช้ การลดสถานะหุ้นอ้างอิงจะทำหน้าที่นี้ตามอัตราการแปลงค่าของหุ้นตัวนั้น ๆ จากตารางแรก แต่ละวิธีมีต้นทุนและค่า Greeks ที่แตกต่างกันไป

Where beta weighting breaks down

Beta is a regression estimate, and the window it is measured over changes the answer. The panel below recomputes the same two betas over six lookbacks, all ending on the same date.

คำสั่งดึงข้อมูลค่า Beta สองค่าเดียวกัน วัดผลผ่านช่วงเวลาการย้อนหลังที่แตกต่างกัน 6 ช่วง
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH
    sessions AS
    (
        SELECT
            ticker                                               AS ticker,
            toDate(toTimeZone(window_start, 'America/New_York')) AS d,
            toFloat64(argMax(close, window_start))               AS px
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN ('SPY', 'AAPL', 'KO')
          AND window_start >= toDateTime('2024-04-01 04:00:00')
          AND window_start <  toDateTime('2026-07-01 04:00:00')
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
             + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
             + toMinute(toTimeZone(window_start, 'America/New_York'))) <  960
        GROUP BY ticker, d
    ),
    steps AS
    (
        SELECT
            ticker,
            d,
            px,
            any(px) OVER (PARTITION BY ticker ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
        FROM sessions
    ),
    daily_ret AS
    (
        SELECT ticker, d, (px / prev_px) - 1 AS r
        FROM steps
        WHERE prev_px > 0
    ),
    bench AS
    (
        SELECT d, r AS spy_r
        FROM daily_ret
        WHERE ticker = 'SPY'
    ),
    paired AS
    (
        SELECT
            s.ticker                                                 AS ticker,
            s.r                                                      AS r,
            b.spy_r                                                  AS spy_r,
            row_number() OVER (PARTITION BY s.ticker ORDER BY s.d DESC) AS rn
        FROM daily_ret AS s
        INNER JOIN bench AS b ON b.d = s.d
        WHERE s.ticker IN ('AAPL', 'KO')
    ),
    windows AS
    (
        SELECT arrayJoin([30, 60, 90, 180, 252, 504]) AS lookback
    )
SELECT
    w.lookback                                                                                       AS lookback_sessions,
    round(covarPopIf(p.r, p.spy_r, p.ticker = 'AAPL') / varPopIf(p.spy_r, p.ticker = 'AAPL'), 2)     AS aapl_beta,
    round(covarPopIf(p.r, p.spy_r, p.ticker = 'KO')   / varPopIf(p.spy_r, p.ticker = 'KO'), 2)       AS ko_beta
FROM paired AS p
CROSS JOIN windows AS w
WHERE p.rn <= w.lookback
GROUP BY w.lookback
HAVING countIf(p.ticker = 'AAPL') > 0 AND countIf(p.ticker = 'KO') > 0
ORDER BY lookback_sessions
Run this yourself

Over the most recent 30 sessions AAPL measured 0.54, against 1.14 over 504 sessions. KO measured -1.04 on the short window and -0.03 on the long one. All 6 estimates are arithmetically correct. They answer different questions, and a beta weighted book delta inherits whichever window the platform happened to pick. A defensive name that prints a slightly negative beta on one window and a slightly positive one on the next is the ordinary case, not an anomaly, and every sign in the worked book above rests on that choice.

Correlation behaviour is the second limit. Beta is an average of ordinary sessions. During a broad selloff, names that usually travel at their own pace have tended to move together, and measured betas cluster toward 1. A book that looks balanced on a quiet-market beta can be far from balanced on the session where the hedge matters. Concentration risk describes the same blind spot from the other side: a summary statistic tells you about the middle of the distribution, not the tail.

Third, the calculation is first order and knows nothing about gamma. Beta weighted delta is the slope of the book's value at today's prices, and it assumes that slope holds. Gamma, the rate at which delta itself changes, appears nowhere in it. A book carrying short options can show a modest beta weighted delta and still change character quickly on a 3% index move. The deltas that fed the calculation no longer describe those positions at those prices. Treat the figure as a description of small moves. Positions built for the tail, such as the ones in protective puts, look tiny in beta weighted terms and are not doing their work in that range anyway.

The benchmark is also a choice. A book of small caps weighted against SPY buries whatever part of its movement belongs to company size rather than to the broad market. Delta is one greek among several, and the rest of the set is laid out in the option greeks explained.

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

Beta weighted delta คืออะไร

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

วิธีคำนวณ Beta weighted delta ด้วยตนเองทำอย่างไร

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

ค่า Beta weighted delta ที่เป็นลบหมายความว่าอย่างไร

หมายถึงพอร์ตการลงทุนที่มีสถานะซึ่งจะได้รับกำไรเมื่อดัชนีอ้างอิงปรับตัวลดลง และขาดทุนเมื่อดัชนีปรับตัวสูงขึ้น โดยมีอัตราการเปลี่ยนแปลงใกล้เคียงกับการเปิดสถานะ Short ในดัชนีอ้างอิงจำนวนเท่ากับค่าที่คำนวณได้ นักเทรดเรียกสภาวะนี้ว่าการปรับ Delta ให้เป็นลบ (tilting delta short) ทั้งนี้ตัวเลขดังกล่าวใช้ได้กับการเคลื่อนไหวของราคาในกรอบแคบเท่านั้น

หุ้นสามารถมีค่า Beta เป็นลบได้หรือไม่

ได้ ในช่วงเวลาที่กำหนด ค่า Beta คือความชันของผลตอบแทนรายวันของหุ้นเมื่อเทียบกับดัชนี หุ้นกลุ่มป้องกันความเสี่ยง (defensive) อาจมีค่าต่ำกว่าศูนย์เล็กน้อยในช่วงสิบสองเดือนหนึ่ง และอาจสูงกว่าศูนย์เล็กน้อยในช่วงถัดไป ค่า Beta ที่เป็นลบจะทำให้เครื่องหมายของ Beta weighted delta ของสถานะนั้นกลับด้าน นี่คือเหตุผลว่าทำไมจึงต้องอ่านค่านี้ควบคู่ไปกับช่วงเวลาที่ใช้ในการวัดผล

ช่วงเวลาการย้อนหลัง (lookback window) แบบใดที่ให้ค่า Beta ที่ถูกต้อง

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

Beta weighting ครอบคลุมถึง Gamma หรือความผันผวน (volatility) หรือไม่

ไม่ครอบคลุม Beta weighting เป็นการวัดผลลำดับที่หนึ่งที่คำนวณจากค่า Delta ปัจจุบันและค่า Beta ย้อนหลัง ส่วนค่า Gamma, Vega, Theta และ Rho จะไม่ถูกนำมาคำนวณด้วย ดังนั้นพอร์ตที่ถือสถานะ Short option อาจดูเหมือนมีค่า Beta weighted delta ที่สมดุล แต่ยังคงมีความเสี่ยงอย่างมีนัยสำคัญหากเกิดการเคลื่อนไหวของราคาครั้งใหญ่


ทุกแผงข้อมูลด้านบนมาพร้อมกับชุดคำสั่ง SQL ที่ใช้สร้างข้อมูลดังกล่าว คุณสามารถเปิดแผงข้อมูล เปลี่ยน Ticker หรือช่วงเวลาที่ใช้วัดผล แล้วระบบจะคำนวณด้วยหลักการ Beta weighted เดียวกันกับพอร์ตการลงทุนใดก็ตามที่คุณระบุไว้บน Strasmore terminal

#beta weighting#portfolio greeks#delta#hedging#options