Ano ang Beta ng Stock at Paano Ito Basahin
Ano ang beta ng stock? Isang slope kontra index, hindi permanenteng katangian. Tingnan ang beta at R squared ng anim na US na pangalan sa tatlong taon ng datos.
Ang beta ng isang stock ay isang slope, hindi isang marka ng kalidad. Sinusukat nito kung ilang porsiyento ang karaniwang galaw ng isang pangalan sa tuwing gumagalaw ng isang porsiyento ang isang napiling index, batay sa nakaraang datos sa loob ng isang napiling window. Kaya ang unang trabaho sa pahinang ito ay patayin ang ideyang may iisa at permanenteng beta ang isang stock. Wala. Ang beta ay laging beta kontra isang bagay, sa loob ng isang panahon.
Beta ng stock: tatlong pagpili sa loob ng isang numero
Bago ka makakuha ng kahit anong beta, may tatlong bagay kang napili na, sinasadya man o hindi:
- Ang index na pinagbabatayan. Iba ang lalabas na beta kontra SPY, iba kontra isang sektor na ETF, at iba rin kontra isang lokal na index.
- Ang haba at posisyon ng window. Ang tatlong taong window na nagtatapos ngayon ay ibang-iba sa tatlong taong window na nagtapos noong 2022.
- Ang dalas ng return. Ang pang-araw-araw na return ay nagbibigay ng ibang slope kaysa sa buwanang return para sa eksaktong parehong panahon.
May simpleng disiplina rito. Tuwing babanggit ka ng beta, isama mo ang index at ang window. Ang beta ng AAPL ay hindi pa kumpletong pangungusap. Ang beta ng AAPL kontra SPY sa pang-araw-araw na return mula Oktubre 2023 hanggang Setyembre 2026 ay kumpleto na, at kaya nang suriin ng iba.
Beta at R² ng anim na US na pangalan kontra SPY
Narito ang slope mismo. Kinuha ang pang-araw-araw na pagbabago ng closing price ng anim na malawakang hawak na US na pangalan at ng SPY mula Oktubre 1, 2023 hanggang Setyembre 30, 2026, at mula roon kinalkula ang beta at ang R².
| ticker | beta_vs_spy | r_squared |
|---|---|---|
| TSLA | 2.25 | 0.35 |
| NVDA | 2.04 | 0.45 |
| AAPL | 1.05 | 0.36 |
| MSFT | 0.97 | 0.32 |
| KO | 0.02 | 0 |
| JNJ | 0 | 0 |
Ang eksaktong SQL sa likod ng bawat numero
WITH
daily AS
(
SELECT
ticker,
date,
toFloat64(close) AS px,
lagInFrame(toFloat64(close)) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO', 'JNJ')
AND date >= '2023-10-01'
AND date <= '2026-09-30'
),
rets AS
(
SELECT ticker, date, px / prev_px - 1 AS ret
FROM daily
WHERE prev_px > 0
)
SELECT
s.ticker AS ticker,
round(covarPop(s.ret, m.ret) / varPop(m.ret), 2) AS beta_vs_spy,
round(pow(corr(s.ret, m.ret), 2), 2) AS r_squared
FROM rets AS s
INNER JOIN (SELECT date, ret FROM rets WHERE ticker = 'SPY') AS m ON s.date = m.date
WHERE s.ticker != 'SPY'
GROUP BY ticker
ORDER BY beta_vs_spy DESCSa window na ito, ang TSLA ang may pinakamatarik na slope sa 2.25. Pababa ang pagkakasunod ng listahan mula roon, kaya mas malumanay ang slope ng mga pangalan sa ibabang hilera kontra parehong index. 6 na pangalan, iisang index, iisang window.
Ang pangalawang kolum ang madalas nakakalimutan. Ang R² ay nasa pagitan ng 0 at 1, at sinasabi nito kung gaano kalaking bahagi ng pang-araw-araw na pagkakaiba-iba ng isang pangalan ang nasusundan ng galaw ng index. Nasa 0.35 ang R² ng pangalang may pinakamataas na beta. Hiwalay na kolum ito, hindi sukat ng tarik. Puwedeng mataas ang beta at mababa pa rin ang R². Ang ibig sabihin noon ay magaspang ang linya, hindi malinis: isang slope na may napakaraming kalat sa paligid.
Lumilipat ang beta kapag inilipat ang window
Ang pinakamalinaw na patunay na walang iisang beta ay ang kalkulahin ang parehong pangalan nang paulit-ulit, kada taon, sa parehong index at parehong dalas ng return. Isang bagay lang ang pinalitan sa panel na ito: ang taon.
| year | beta_vs_spy | r_squared |
|---|---|---|
| 2019 | 1.55 | 0.55 |
| 2020 | 1.16 | 0.69 |
| 2021 | 1.31 | 0.47 |
| 2022 | 1.3 | 0.78 |
| 2023 | 1.1 | 0.51 |
| 2024 | 0.97 | 0.29 |
| 2025 | 1.25 | 0.56 |
Ang eksaktong SQL sa likod ng bawat numero
WITH
daily AS
(
SELECT
ticker,
date,
toFloat64(close) AS px,
lagInFrame(toFloat64(close)) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL')
AND date >= '2018-12-01'
AND date <= '2025-12-31'
),
rets AS
(
SELECT ticker, date, px / prev_px - 1 AS ret
FROM daily
WHERE prev_px > 0
AND date >= '2019-01-01'
)
SELECT
toYear(s.date) AS year,
round(covarPop(s.ret, m.ret) / varPop(m.ret), 2) AS beta_vs_spy,
round(pow(corr(s.ret, m.ret), 2), 2) AS r_squared
FROM rets AS s
INNER JOIN (SELECT date, ret FROM rets WHERE ticker = 'SPY') AS m ON s.date = m.date
WHERE s.ticker = 'AAPL'
GROUP BY year
HAVING count() > 150
ORDER BY yearNoong 2019, nasa 1.55 ang taunang beta, na may R² na 0.55. Noong 2025, nasa 1.25 ito. 7 na buong taon ang nasa panel, at walang dalawang taon ang nagbigay ng parehong sagot. Kapag may nagsabi sa iyo ng isang beta na walang kasamang petsa, hindi mo alam kung alin sa mga numerong ito ang hawak mo.
Mahalaga rin ang direksyon ng oras. Ang beta ay sukat ng nangyari na. Ang implied volatility naman ay hango sa presyo ng options ngayon para sa darating na panahon, at magkaibang klase ng impormasyon ang dalawa. Pinaghahambing sila nang mas detalyado sa implied volatility kontra beta.
Ang 1 - R²: ang bahaging hindi sakop ng index
Kung ang R² ang bahaging nasusundan ng index, ang natitira, ang 1 - R², ang bahaging hindi. Ito ang tinatawag na specific o idiosyncratic na bahagi: ang galaw na sarili ng kompanya. Ito rin ang bahaging kayang paliitin ng paghahati sa maraming magkakaibang hawak, at ang bahaging nananatiling buo kapag kakaunti lang ang pangalan sa portfolio.
| ticker | total_vol_pct | idio_vol_pct | unexplained_share_pct |
|---|---|---|---|
| TSLA | 58.1 | 46.8 | 64.9 |
| NVDA | 46.8 | 34.9 | 55.4 |
| AAPL | 26.8 | 21.4 | 63.9 |
| MSFT | 26.3 | 21.7 | 68 |
| JNJ | 18 | 18 | 100 |
| KO | 16.7 | 16.7 | 100 |
Ang eksaktong SQL sa likod ng bawat numero
WITH
daily AS
(
SELECT
ticker,
date,
toFloat64(close) AS px,
lagInFrame(toFloat64(close)) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO', 'JNJ')
AND date >= '2023-10-01'
AND date <= '2026-09-30'
),
rets AS
(
SELECT ticker, date, px / prev_px - 1 AS ret
FROM daily
WHERE prev_px > 0
)
SELECT
s.ticker AS ticker,
round(100 * stddevPop(s.ret) * sqrt(252), 1) AS total_vol_pct,
round(100 * stddevPop(s.ret) * sqrt(252) * sqrt(greatest(1 - pow(corr(s.ret, m.ret), 2), 0)), 1) AS idio_vol_pct,
round(100 * (1 - pow(corr(s.ret, m.ret), 2)), 1) AS unexplained_share_pct
FROM rets AS s
INNER JOIN (SELECT date, ret FROM rets WHERE ticker = 'SPY') AS m ON s.date = m.date
WHERE s.ticker != 'SPY'
GROUP BY ticker
ORDER BY total_vol_pct DESCIpinapakita ng panel ang taunang volatility, ibig sabihin ang standard deviation ng pang-araw-araw na return na ginawang taunang sukat, katabi ng bahagi nitong hindi kasabay ng SPY. Para sa TSLA, ang kabuuang taunang volatility ay 58.1 porsiyento, at 46.8 porsiyento ang natitira pagkatapos alisin ang bahaging kasabay ng index. Sa madaling salita, 64.9 porsiyento ng pagkakaiba-iba nito ang hindi sakop ng index sa window na ito.
Dito tumatawid ang usapan papunta sa konsentrasyon ng panganib. Ang bahaging hindi sakop ng index ang mismong bahaging nananatili kapag tatlo o apat lang na pangalan ang hawak mo, gaano man kaganda ang beta ng bawat isa. Pansinin din na magkaiba ang beta at volatility. Puwedeng mababa ang beta ng isang pangalan at magulo pa rin ang sarili nitong galaw, at ang mas malalim na bersyon ng obserbasyong ito ay nasa low volatility anomaly.
Mayroon bang beta kontra PSEi sa mga panel na ito?
Wala, at mas mabuting sabihin ito nang diretso kaysa gumawa ng numero. Ang datos sa likod ng bawat panel dito ay galing sa mga US na venue lamang.
| venue | venue_count | operating_groups |
|---|---|---|
| US / exchange | 38 | 12 |
| US / TRF | 6 | 3 |
| GLOBAL / exchange | 6 | 1 |
| US / SIP | 3 | 3 |
| US / ORF | 1 | 1 |
Ang eksaktong SQL sa likod ng bawat numero
SELECT
concat(upper(locale), ' / ', type) AS venue,
count() AS venue_count,
countDistinct(operating_mic) AS operating_groups
FROM global_markets.stocks_exchanges
GROUP BY venue
ORDER BY venue_count DESC5 na grupo ng venue ang lumalabas, at ang pinakamalaki ay ang US / exchange na may 38 na talaan. Walang lokal na index series dito at walang palitan ng dolyar at piso, kaya walang beta kontra PSEi na maipapakita sa pahinang ito.
Ganito naman ang paraan kung mayroon kang datos: palitan ang pang-araw-araw na return ng SPY ng pang-araw-araw na return ng lokal na index, panatilihin ang parehong window at parehong dalas, at ang lalabas na slope ang beta kontra lokal na index. Isa itong ibang numero, hindi bersyon ng nasa itaas, at maaaring malayo rin ang R² ng parehong pangalan kontra dalawang magkaibang index. Kapag may nabasa kang beta sa isang lokal na ulat, dalawang tanong lang ang kailangan bago mo ito paniwalaan: anong index, at anong window.
Ang piso ay hiwalay na exposure, hindi pampalamig
Para sa isang namumuhunan na ang sahod at gastos ay nasa piso, dalawang linya ang gumagalaw sa isang US na posisyon: ang presyo ng hawak sa dolyar, at ang halaga ng dolyar kapag ibinalik sa piso. Hiwalay ang dalawa. Ang beta na 1.8 kontra SPY ay nananatiling 1.8 kahit ano pa ang pera ng kita mo. Hindi pinapalambot ng palitan ang slope. Nagdadagdag ito ng pangalawang gumagalaw na bahagi sa kabuuang hawak mo, at kailangan itong sukatin nang hiwalay sa beta.
Kapag pinagsasama mo ang maraming posisyon sa iisang bilang, karaniwang ginagamit ang beta weighting: kino-convert ang bawat posisyon sa katumbas nitong sukat sa index. Mabuting pampaikli iyon, pero dala-dala nito ang lahat ng limitasyon sa itaas, kasama na ang window na pinili. Nasa beta weighting at delta ng portfolio ang buong mekanika.
FAQ
Ano ang magandang beta para sa isang stock?
Walang beta na maganda sa sarili nito. Ang beta na mas mataas sa 1 ay nangangahulugang mas malaki ang nakaraang galaw ng pangalan kaysa sa index, at ang mas mababa sa 1 ay mas maliit. Ang tamang tanong ay kung tugma ang sukat ng galaw na iyon sa haba ng panahong kaya mong hawakan ang posisyon, at kung anong index at window ang sinukat.
Pareho ba ang beta at volatility?
Hindi. Ang volatility ay sukat ng laki ng galaw ng isang pangalan mag-isa. Ang beta ay sukat ng ugnayan ng galaw nito sa isang index. Puwedeng mababa ang beta at mataas pa rin ang volatility kapag mababa ang R², ibig sabihin kakaunti sa galaw ng pangalan ang kasabay ng index.
Bakit magkaiba ang beta na nakikita ko sa dalawang website?
Malamang magkaiba ang tatlong pagpili nila: ibang index, ibang haba ng window, o ibang dalas ng return. Bihirang pareho ang tatlo sa dalawang provider. Hingin ang tatlong detalyeng iyon bago ihambing ang dalawang numero.
Ano ang ibig sabihin ng R² na 0.30?
Nangangahulugan ito na humigit kumulang 30 porsiyento ng pagkakaiba-iba ng pang-araw-araw na return ng pangalan ang nasusundan ng galaw ng index sa window na sinukat, at ang natitirang 70 porsiyento ay galaw na sarili nito. Mababa ang R² kapag malaki ang bahaging sarili.
Gumagana ba ang beta sa mga araw ng biglaang malaking galaw?
Ang beta ay average sa buong window. Sa mga araw na malaki ang galaw ng buong merkado, maaaring malayo ang aktuwal na galaw ng isang pangalan sa hinuha ng slope. Buod ito ng isang panahon, hindi panuntunan para sa bawat araw.
Mga tala sa datos
Lahat ng beta at R² dito ay galing sa pang-araw-araw na closing price. Oktubre 1, 2023 hanggang Setyembre 30, 2026 ang window ng dalawang panel na pang-anim na pangalan, at buong taon ng kalendaryo mula 2019 hanggang 2025 naman ang taunang panel. Narito ang bilang ng pang-araw-araw na return na pumasok sa bawat pangalan.
| ticker | return_obs |
|---|---|
| AAPL | 751 |
| JNJ | 751 |
| KO | 751 |
| MSFT | 751 |
| NVDA | 751 |
| SPY | 751 |
| TSLA | 751 |
Ang eksaktong SQL sa likod ng bawat numero
SELECT
ticker,
count() AS return_obs
FROM
(
SELECT
ticker,
date,
lagInFrame(toFloat64(close)) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO', 'JNJ')
AND date >= '2023-10-01'
AND date <= '2026-09-30'
)
WHERE prev_px > 0
GROUP BY ticker
ORDER BY ticker7 na pangalan ang sakop, kasama ang SPY bilang index, at 751 ang bilang ng return para sa unang pangalan sa listahan. Hindi pare-pareho ang bilang ng return kada pangalan, at kapag maikli ang talaan ng isang pangalan sa loob ng window, manipis din ang basehan ng slope nito. Isa itong dahilan kung bakit laging kasama ang window kapag binabanggit ang beta. May isa hanggang dalawang araw na pagkahuli ang pinakabagong datos sa dulo ng window, kaya hindi ito dapat basahin bilang sukat ng kahapon.
May buong SQL sa ilalim ng bawat panel dito, kaya makikita mo mismo kung paano binilang ang bawat numero. Kung gusto mong palitan ang window o ang listahan ng pangalan, maitatanong mo ito sa plain English sa Strasmore terminal.