Ano ang Market Volatility at Paano Ito Sinusukat
Ano ang market volatility? Ito ang tipikal na laki ng araw-araw na galaw ng presyo. Tingnan ang aktwal na numero para sa SPY, AAPL, NVDA at KO, nakasalin sa piso.
Ang market volatility ay ang tipikal na laki ng araw-araw na galaw ng presyo, hindi ang direksyon nito. Kapag narinig mong "volatile ang market", ang ibig sabihin ay mas malalaki ang pang-araw-araw na paggalaw kaysa sa karaniwan, pataas man o pababa. Sinusukat ito bilang porsyento kada taon, at kayang ibalik sa piso para makita mo kung magkano talaga iyon sa laki ng posisyon mong hawak.
Ano ang market volatility sa simpleng salita?
Isipin mo ang lahat ng pagbabago ng presyo ng isang stock sa loob ng isang taon, araw kada araw. Karamihan ay maliliit. Ilan ay malalaki. Ang volatility ang sumusukat kung gaano kalayo sa zero ang tipikal na galaw na iyon.
Sa teknikal na salita, standard deviation ito ng daily returns. Ang standard deviation ay isang sukat ng kalat: kung gaano kalayo sa average ang karaniwang obserbasyon. Ini-annualise ito sa pamamagitan ng pag-multiply sa square root ng 252, ang bilang ng trading sessions sa isang taon ng US market. Kaya ang "25% volatility" ay taunang bilang, hindi araw-araw na bilang.
Dalawang linaw agad. Una, walang sinasabi ang volatility tungkol sa direksyon: ang stock na tumaas ng 3% at ang bumaba ng 3% ay pareho ang ambag sa sukat. Pangalawa, dalawang panig ang inilalarawan nito, hindi pagkalugi lamang. Ang expected move ay isang range sa paligid ng kasalukuyang presyo, hindi isang hula kung saan pupunta.
Gaano kalaki ang galaw ng mga pamilyar na pangalan?
Sa halip na abstraktong halimbawa, narito ang aktwal na realized volatility ng apat na pangalang madalas hawak ng mga Pilipinong bumibili ng US shares. Ang realized volatility ay kinalkula mula sa mga naganap nang daily closing prices. Dalawang window ang ipinares: ang huling 30 sessions (mga anim na linggo) at ang huling 252 sessions (mga isang taon).
| ticker | rv_30d_pct | rv_252d_pct |
|---|---|---|
| NVDA | 38.8 | 37.6 |
| AAPL | 20.5 | 24.6 |
| KO | 15.2 | 18.8 |
| SPY | 9.8 | 13 |
Ang eksaktong SQL sa likod ng bawat numero
WITH bars AS
(
SELECT
ticker,
date,
any(toFloat64(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'KO')
AND date >= today() - 430
AND date < today()
GROUP BY ticker, date
),
rets AS
(
SELECT
ticker,
date,
log(c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY date)) AS r
FROM bars
),
ranked AS
(
SELECT
ticker,
r,
row_number() OVER (PARTITION BY ticker ORDER BY date DESC) AS sessions_back
FROM rets
WHERE isFinite(r)
)
SELECT
ticker,
round(stddevSampIf(r, sessions_back <= 30) * sqrt(252) * 100, 1) AS rv_30d_pct,
round(stddevSampIf(r, sessions_back <= 252) * sqrt(252) * 100, 1) AS rv_252d_pct
FROM ranked
GROUP BY ticker
HAVING countIf(sessions_back <= 30) >= 20
AND countIf(sessions_back <= 252) >= 200
ORDER BY rv_252d_pct DESCSa 4 na pangalan sa panel, ang NVDA ang may pinakamataas na taunang realized volatility sa nakaraang 252 sessions, nasa 37.6%. Sa kabilang dulo ng listahan, ang SPY ay nasa 13% lamang. Parehong stock ang tinutukoy, parehong kalkulasyon, at halos triple ang agwat.
Pansinin din ang dalawang column na magkatabi. Ang 30-session na bersyon para sa NVDA ay nasa 38.8%, samantalang ang isang-taong bersyon ay 37.6%. Kapag mas mataas ang maikling window kaysa sa mahaba, ibig sabihin mas magulo ang mga nakaraang linggo kaysa sa karaniwang taon ng stock na iyon. Kapag mas mababa, kalmado ang nakaraang buwan at kalahati.
Magkano ang volatility na iyon sa ₱50,000?
Dito nagiging totoo ang numero. Hatiin ang taunang volatility sa square root ng 252 at makukuha mo ang tipikal na galaw sa isang session. I-multiply iyon sa laki ng posisyon mo at piso na ang sagot. Ginamit ng panel sa ibaba ang isang posisyong nagkakahalaga ng ₱50,000 bilang halimbawa.
| ticker | peso_1sd | peso_2sd |
|---|---|---|
| NVDA | 1185 | 2370 |
| AAPL | 774 | 1548 |
| KO | 592 | 1185 |
| SPY | 409 | 817 |
Ang eksaktong SQL sa likod ng bawat numero
WITH bars AS
(
SELECT
ticker,
date,
any(toFloat64(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'KO')
AND date >= today() - 430
AND date < today()
GROUP BY ticker, date
),
rets AS
(
SELECT
ticker,
date,
log(c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY date)) AS r
FROM bars
),
ranked AS
(
SELECT
ticker,
r,
row_number() OVER (PARTITION BY ticker ORDER BY date DESC) AS sessions_back
FROM rets
WHERE isFinite(r)
),
vol AS
(
SELECT
ticker,
stddevSampIf(r, sessions_back <= 252) AS sd_daily
FROM ranked
GROUP BY ticker
HAVING countIf(sessions_back <= 252) >= 200
)
SELECT
ticker,
round(sd_daily * 50000, 0) AS peso_1sd,
round(sd_daily * 2 * 50000, 0) AS peso_2sd
FROM vol
ORDER BY peso_1sd DESCSa ₱50,000 na nakalagay sa NVDA, ang tipikal na isang-araw na galaw ay nasa ₱1185 paitaas o paibaba. Sa SPY, ang parehong ₱50,000 ay gumagalaw ng mga ₱409 sa isang session. Iyon ang buong punto ng pagsukat: hindi mo kailangang manghula kung gaano kalaki ang "malaki".
Ang peso_2sd column ay dalawang beses ang sukat na iyon. Sa ilalim ng simpleng palagay na normal ang distribusyon ng returns, mga dalawa sa bawat tatlong araw ay nasa loob ng 1 sigma, at mga 19 sa bawat 20 araw ay nasa loob ng 2 sigma. Para sa NVDA, ang 2 sigma na araw ay nagkakahalaga ng mga ₱2370. Sa totoong data, mas madalas mangyari ang napakalalaking araw kaysa sa hinuhulaan ng normal na palagay, kaya tratuhin ang mga bilang na ito bilang sukat ng laki at hindi bilang garantiya.
Ulitin natin dahil mahalaga: dalawang panig ang range na ito. Ang ₱1185 ay pwedeng pataas at pwedeng pababa. Sukat ito ng galaw, hindi sukat ng lugi.
Realized kumpara sa implied: dalawang magkaibang tanong
Ang realized volatility ay nakaraan: naganap na ito at nabilang na. Ang implied volatility ay ang bilang na nakapaloob sa presyo ng options ngayon, ang sinisingil ng options market para sa volatility sa mga susunod na linggo. Magkaibang tanong ang sinasagot ng dalawa, kaya bihirang magkatugma ang mga ito.
| ticker | rv_30d_pct | iv_30_45d_pct | gap_pct |
|---|---|---|---|
| NVDA | 38.8 | 35.1 | -3.7 |
| AAPL | 20.5 | 24.7 | 4.2 |
| KO | 15.2 | 18.3 | 3.1 |
| SPY | 9.8 | 13.3 | 3.5 |
Ang eksaktong SQL sa likod ng bawat numero
WITH bars AS
(
SELECT
ticker,
date,
any(toFloat64(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'KO')
AND date >= today() - 90
AND date < today()
GROUP BY ticker, date
),
rets AS
(
SELECT
ticker,
date,
log(c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY date)) AS r
FROM bars
),
ranked AS
(
SELECT
ticker,
r,
row_number() OVER (PARTITION BY ticker ORDER BY date DESC) AS sessions_back
FROM rets
WHERE isFinite(r)
),
realized AS
(
SELECT
ticker,
round(stddevSampIf(r, sessions_back <= 30) * sqrt(252) * 100, 1) AS rv_30d_pct
FROM ranked
GROUP BY ticker
HAVING countIf(sessions_back <= 30) >= 20
),
implied AS
(
SELECT
underlying_symbol AS ticker,
round(avg(implied_volatility) * 100, 1) AS iv_30_45d_pct,
count() AS sample_count
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'NVDA', 'KO')
AND date >= today() - 45
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND underlying_close > 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY ticker
HAVING sample_count >= 25
)
SELECT
rl.ticker AS ticker,
rl.rv_30d_pct AS rv_30d_pct,
im.iv_30_45d_pct AS iv_30_45d_pct,
round(im.iv_30_45d_pct - rl.rv_30d_pct, 1) AS gap_pct
FROM realized AS rl
INNER JOIN implied AS im ON im.ticker = rl.ticker
ORDER BY iv_30_45d_pct DESCPinili ng panel ang mga kontratang malapit sa kasalukuyang presyo, may 20 hanggang 45 araw bago mag-expire, at may aktwal na volume, kaya hindi ito basta quote na walang nakikipagkalakalan. Ang pinakamataas na implied volatility sa apat ay sa NVDA, nasa 35.1%, habang ang realized volatility nito sa nakaraang 30 sessions ay 38.8%. Ang gap_pct column ang nagpapakita ng agwat sa bawat pangalan. Kapag positibo ang agwat, mas mahal ang sinisingil ng options market kaysa sa aktwal na naganap kamakailan. Ang patuloy na positibong agwat na ito ang tinatawag na variance risk premium.
Hindi na ito uulitin dito dahil may sariling pahina ang bawat isa. Ang mekanismo ng pagpepresyo ay nasa ano ang implied volatility, at ang buong paghahambing ng dalawa ay nasa historical volatility kumpara sa implied volatility. Kung gusto mong gawing konkretong range ang isang IV number, nasa paano kunin ang expected move mula sa implied volatility ang aritmetika.
At ang VIX? Isa lamang itong index, isang market: ang 30-araw na implied volatility ng S&P 500 options. Hindi ito sukat ng volatility ng stock na hawak mo. Nasa ano ang VIX ang detalye kung ano ang aktwal nitong sinusukat.
Hindi nananatiling pareho ang volatility
Karaniwang pagkakamali ang ituring na permanenteng katangian ng isang stock ang volatility nito. Gumagalaw ito. Narito ang buwan-buwang realized volatility ng SPY, ang pinakamalaking S&P 500 ETF, sa nakaraang dalawang taon.
| month | month_label | rv_annualised_pct | session_count |
|---|---|---|---|
| 2024-09-01 | Sep 2024 | 13.8 | 20 |
| 2024-10-01 | Oct 2024 | 11.2 | 23 |
| 2024-11-01 | Nov 2024 | 11.8 | 20 |
| 2024-12-01 | Dec 2024 | 14.1 | 21 |
| 2025-01-01 | Jan 2025 | 13.9 | 20 |
| 2025-02-01 | Feb 2025 | 13.2 | 19 |
| 2025-03-01 | Mar 2025 | 20.7 | 21 |
| 2025-04-01 | Apr 2025 | 51.9 | 21 |
| 2025-05-01 | May 2025 | 16.8 | 21 |
| 2025-06-01 | Jun 2025 | 10.2 | 20 |
| 2025-07-01 | Jul 2025 | 6.6 | 22 |
| 2025-08-01 | Aug 2025 | 12 | 21 |
| 2025-09-01 | Sep 2025 | 7.1 | 21 |
| 2025-10-01 | Oct 2025 | 13.8 | 23 |
| 2025-11-01 | Nov 2025 | 15.4 | 19 |
| 2025-12-01 | Dec 2025 | 8.4 | 22 |
| 2026-01-01 | Jan 2026 | 10.3 | 20 |
| 2026-02-01 | Feb 2026 | 13.4 | 19 |
| 2026-03-01 | Mar 2026 | 18.2 | 22 |
| 2026-04-01 | Apr 2026 | 11.6 | 21 |
Ang eksaktong SQL sa likod ng bawat numero
WITH bars AS
(
SELECT
date,
any(toFloat64(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= today() - 790
AND date < today()
GROUP BY date
),
rets AS
(
SELECT
date,
log(c / lagInFrame(c) OVER (ORDER BY date)) AS r
FROM bars
)
SELECT
toString(toStartOfMonth(date)) AS month,
formatDateTime(toStartOfMonth(date), '%b %Y') AS month_label,
round(stddevSamp(r) * sqrt(252) * 100, 1) AS rv_annualised_pct,
count() AS session_count
FROM rets
WHERE isFinite(r)
AND date >= toStartOfMonth(today() - 730)
AND date < toStartOfMonth(today())
GROUP BY month, month_label
HAVING session_count >= 15
ORDER BY monthAng serye ay sumasaklaw sa 24 na kumpletong buwan. Noong Sep 2024 ang taunang realized volatility ng SPY ay 13.8%, at noong Aug 2026 ay 10.3%. Sundan ang linya at makikita mo ang paulit-ulit na anyo: mahahabang panahon ng kalmado, tapos maiikling pagsabog na mabilis din naman kumalma. Ang teknikal na pangalan nito ay volatility clustering, ang pagkakasunod-sunod ng magugulong araw sa isa't isa sa halip na magkalat nang pantay sa kalendaryo.
Dalawang praktikal na bunga. Una, ang volatility number na nabasa mo noong isang buwan ay maaaring hindi na ang volatility ngayon. Pangalawa, ang isang malaking araw ay hindi bihirang pangyayari na nag-iisa, madalas may kasamang ilan pang malalaking araw sa paligid nito.
Bakit iba ang timpla nito kapag nasa Pilipinas ka
Ang regular na US session ay 9:30 a.m. hanggang 4:00 p.m. Eastern Time. Sa oras ng Pilipinas, iyon ay mga 9:30 p.m. hanggang 4:00 a.m. kapag daylight saving time sa US, at isang oras na mas huli, mga 10:30 p.m. hanggang 5:00 a.m., kapag standard time na sila mula Nobyembre hanggang Marso.
Ibig sabihin, tulog ka sa halos buong buhay ng volatility na pag-aari mo. Hindi mo nakikita ang galaw habang nangyayari. Ang nakikita mo ay ang resulta pagkagising, at ang buong araw-araw na range ay naganap na. Kaya ang paghawak ng US stock mula rito ay mas malapit sa pagtingin sa isang bukas na posisyon isang beses kada araw kaysa sa pagbabantay ng tape. Ang mga panel sa itaas ang nagbibigay sa iyo ng laki ng galaw na iyon nang maaga, sa piso, bago ka pa matulog.
May isa pang layer na hindi sukat ng stock: ang palitan ng USD at piso. Ang posisyon mo ay nakapresyo sa dolyar, kaya ang halaga nito sa piso ay may sariling paggalaw sa ibabaw ng volatility ng stock. Hiwalay na usapin iyon, pero totoo, at hindi kasama sa mga numero sa pahinang ito.
FAQ
Mataas ba ang 25% na volatility?
Nakadepende sa kung ano ang pinag-uusapan. Para sa isang malawak na index ETF tulad ng SPY, mataas na ang 25%, dahil ang karaniwan nito ay nasa mas mababang bahagi ng teens. Para sa isang solong growth stock, pwedeng ordinaryo ito. Ikumpara palagi ang isang ticker sa sarili nitong kasaysayan, at hindi sa isang unibersal na threshold.
Paano gawing araw-araw na galaw ang taunang volatility?
Hatiin ang taunang porsyento sa square root ng 252, na mga 15.9. Kaya ang 25% na taunang volatility ay humigit kumulang 1.6% na tipikal na galaw kada session. Sa ₱50,000 na posisyon, iyon ay mga ₱790 sa isang araw, pataas o pababa.
Pareho ba ang volatility at risk?
Hindi eksakto. Ang volatility ay sukat ng laki ng paggalaw sa magkabilang direksyon. Ang risk, sa pang-araw-araw na gamit ng salita, ay tungkol sa posibilidad ng permanenteng pagkalugi. Magkaugnay sila, pero may mga mahigpit na kumikilos na asset na mababa ang volatility, at may mga pabago-bagong asset na hindi naman nawawalan ng halaga.
Bakit magkaiba ang realized at implied volatility ng parehong stock?
Dahil magkaibang panahon ang sinusukat ng dalawa. Ang realized ay bilang ng nangyari na. Ang implied ay presyo ng mangyayari pa. Ang agwat sa pagitan nila ay ipinapakita sa gap_pct column ng ikatlong panel sa itaas, at nagbabago ito buwan-buwan.
Lahat ng numero sa pahinang ito ay may nakabukas na SQL sa ilalim ng panel nito, kaya makikita mo mismo kung paano ito binilang. Kung gusto mong patakbuhin ang parehong tanong sa ibang ticker o ibang laki ng posisyon, maitatanong mo ito sa plain English sa Strasmore terminal.