Weekly realised volatility and the weight it implied, Nov 2019 to Apr 2020
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-08-22, from Volatility Targeting for Position Sizing.
| date | week_label | realised_vol_pct | weight_pct |
|---|---|---|---|
| 2019-11-01 | Nov 1, 2019 | 10.6 | 94 |
| 2019-11-08 | Nov 8, 2019 | 6.7 | 148.7 |
| 2019-11-15 | Nov 15, 2019 | 5.7 | 176.5 |
| 2019-11-22 | Nov 22, 2019 | 5.2 | 193.1 |
| 2019-11-29 | Nov 29, 2019 | 5.7 | 175 |
| 2019-12-06 | Dec 6, 2019 | 7.2 | 138.6 |
| 2019-12-13 | Dec 13, 2019 | 7.7 | 129 |
| 2019-12-20 | Dec 20, 2019 | 7.6 | 131.7 |
| 2019-12-27 | Dec 27, 2019 | 7.3 | 136.3 |
| 2020-01-03 | Jan 3, 2020 | 7.2 | 138.5 |
| 2020-01-10 | Jan 10, 2020 | 7 | 142.1 |
| 2020-01-17 | Jan 17, 2020 | 7.1 | 141.4 |
| 2020-01-24 | Jan 24, 2020 | 8 | 125.3 |
| 2020-01-31 | Jan 31, 2020 | 12.2 | 81.9 |
| 2020-02-07 | Feb 7, 2020 | 13.4 | 74.8 |
| 2020-02-14 | Feb 14, 2020 | 13.3 | 75.3 |
| 2020-02-21 | Feb 21, 2020 | 13.8 | 72.5 |
| 2020-02-28 | Feb 28, 2020 | 24.7 | 40.5 |
| 2020-03-06 | Mar 6, 2020 | 34.9 | 28.6 |
| 2020-03-13 | Mar 13, 2020 | 67.6 | 14.8 |
| 2020-03-20 | Mar 20, 2020 | 81.6 | 12.3 |
| 2020-03-27 | Mar 27, 2020 | 91.9 | 10.9 |
| 2020-04-03 | Apr 3, 2020 | 90.5 | 11.1 |
| 2020-04-17 | Apr 17, 2020 | 56.5 | 17.7 |
| 2020-04-24 | Apr 24, 2020 | 46.2 | 21.6 |
- Rows × columns
- 25 × 4
- Period covered
- to
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
date |
date | 2019-11-01 to 2020-04-24 | |
week_label |
text | 25 distinct values (Apr 17, 2020, Apr 24, 2020, Apr 3, 2020…) | |
realised_vol_pct |
number | 5.2 to 91.9 | percent |
weight_pct |
number | 10.9 to 193.1 | percent |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
the exact SQL behind every number
WITH
px AS
(
SELECT
date AS d,
toFloat64(any(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2019-09-01'
AND date < '2020-05-01'
GROUP BY d
),
px_sorted AS
(
SELECT arraySort(p -> p.1, groupArray((d, c))) AS pts
FROM px
),
rets AS
(
SELECT
arrayMap(p -> p.1, arraySlice(pts, 2)) AS ds,
arrayMap((a, b) -> log(b.2 / a.2),
arraySlice(pts, 1, length(pts) - 1),
arraySlice(pts, 2)) AS rs
FROM px_sorted
),
rolling AS
(
SELECT arrayJoin(arrayMap(i -> (ds[i],
arrayReduce('stddevSamp', arraySlice(rs, i - 20, 21)) * sqrt(252)),
range(21, length(rs) + 1))) AS pt
FROM rets
)
SELECT
tupleElement(pt, 1) AS date,
formatDateTime(tupleElement(pt, 1), '%b %e, %Y') AS week_label,
round(tupleElement(pt, 2) * 100, 1) AS realised_vol_pct,
round(100 * least(0.10 / tupleElement(pt, 2), 2.0), 1) AS weight_pct
FROM rolling
WHERE date >= '2019-11-01'
AND toDayOfWeek(date) = 5
ORDER BY date
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysisVolatility Targeting for Position Sizing
SPY realised volatility by month against a 10% target
series 72×4
→
One 10% risk budget, six names, six different weights
ranking 6×4
→
What the lookback window costs in daily turnover (SPY, 10% target, 2x cap)
ranking 4×4
→
SPY underwater curve: month end close against its running peak, 2016 to 2026
series 127×2
→
S&P 500 tracker (SPY): down sessions by calendar year, 2016 to mid-2026
table 11×5
→
Symbols that printed a final daily bar, by year
ranking 10×3
→
See all 2,170 queries →