Portfolio Analysis in SQL: Weights to Drawdown
Position weights from last close times share counttable ·
2026-10-07 · 6×6
Pairwise daily return correlation, trailing yearranking ·
2026-10-07 · 15×2
Weekly peak-to-trough drawdown of the blended portfolioseries ·
2026-10-07 · 53×4
Trailing twelve-month dividend income by holdingtable ·
2026-10-07 · 6×6
Cumulative weight and the Herfindahl concentration indexranking ·
2026-10-07 · 6×4
The Lowest-Volatility Stocks
The calmest large caps: annualized realized volatility over the past year, lowest firstranking ·
2026-10-04 · 15×2
Maximum drawdown of the calmest names: the worst peak-to-trough fall over the past yearranking ·
2026-10-04 · 8×2
Did Stocks Take 25 Years to Recover From 1929?
SPY cash distributions each year, as a percent of the year's opening share priceranking ·
2026-10-04 · 19×2
Price weight vs market-cap weight across eight large US namesranking ·
2026-10-04 · 8×4
SPY from its October 2007 peak month: price only vs dividends reinvestedtable ·
2026-10-04 · 75×4
The Real Risk of One Stock
Annualized volatility: the S&P 500 index versus six single stocks (last ~250 sessions)ranking ·
2026-10-04 · 7×2
Same $100 invested: one single stock versus the S&P 500 index, indexed to 100series ·
2026-10-04 · 14×3
Maximum drawdown: deepest peak-to-trough drop over the last yearranking ·
2026-10-04 · 7×2
How Long a Losing Streak Is Normal
Chance of at least one losing streak of five, eight or ten in a 200 trade seriesranking ·
2026-08-17 · 5×4
Chance of at least one five loss run at a 70 percent win rate, by series lengthranking ·
2026-08-17 · 5×2
One named window against somewhere in a 200 trade series, at a 70 percent win rateranking ·
2026-08-17 · 3×4
How long the worst losing run of a 200 trade series usually is, at a 70 percent win rateranking ·
2026-08-17 · 7×3
Drawdown from an eight and a ten loss streak, by risk per traderanking ·
2026-08-17 · 4×4
What Is Maximum Drawdown? Depth vs Recovery
Same fund, five lookback windows: SPY maximum drawdown by sample length to July 31, 2026ranking ·
2026-08-05 · 5×3
Completed SPY drawdowns since 2016: depth, days falling, days climbing backtable ·
2026-08-05 · 8×5
SPY underwater curve: month end close against its running peak, 2016 to 2026series ·
2026-08-05 · 127×2
Maximum drawdown against annualized volatility: eight large caps, five years to July 31, 2026ranking ·
2026-08-05 · 8×3
Kelly Criterion Position Sizing, Measured
Kelly inputs from daily closes, 2016 through 2025: win rate, average gain, average loss, and the fraction the formula returnstable ·
2026-07-31 · 6×5
The same Kelly calculation on the S&P 500 tracker, year by year, 2016 through 2025table ·
2026-07-31 · 10×5
One decade of S&P 500 daily returns compounded at eight fixed bet sizes: ending wealth and worst drawdownranking ·
2026-07-31 · 8×3
Position weights from last close times share count
Position weights from last close times share count
| ticker | shares | last_close | position_value | weight_pct | priced_through |
|---|---|---|---|---|---|
| AAPL | 120 | 336.17 | 40341 | 25.71 | Oct 7, 2026 |
| KO | 300 | 86.57 | 25971 | 16.55 | Oct 7, 2026 |
| XOM | 150 | 165.88 | 24881 | 15.86 | Oct 7, 2026 |
| MSFT | 45 | 525.69 | 23656 | 15.08 | Oct 7, 2026 |
| JNJ | 90 | 255.89 | 23030 | 14.68 | Oct 7, 2026 |
| NVDA | 80 | 237.61 | 19009 | 12.12 | Oct 7, 2026 |
the exact SQL behind every number
WITH holdings AS
(
SELECT 'AAPL' AS ticker, 120 AS shares
UNION ALL SELECT 'MSFT', 45
UNION ALL SELECT 'NVDA', 80
UNION ALL SELECT 'KO', 300
UNION ALL SELECT 'JNJ', 90
UNION ALL SELECT 'XOM', 150
),
marks AS
(
SELECT
ticker,
argMax(toFloat64(close), (date, _ingest_time)) AS last_close,
max(date) AS last_session
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'JNJ', 'XOM')
AND date >= today() - 30
GROUP BY ticker
),
positions AS
(
SELECT
h.ticker AS ticker,
h.shares AS shares,
round(m.last_close, 2) AS last_close,
round(h.shares * m.last_close, 0) AS position_value,
m.last_session AS last_session
FROM holdings AS h
INNER JOIN marks AS m ON m.ticker = h.ticker
)
SELECT
ticker,
shares,
last_close,
position_value,
round(100 * position_value / sum(position_value) OVER (), 2) AS weight_pct,
formatDateTime(last_session, '%b %e, %Y') AS priced_through
FROM positions
ORDER BY weight_pct DESC
More from this analysisPortfolio Analysis in SQL: Weights to Drawdown
Trailing twelve-month dividend income by holding
table 6×6
→
Weekly peak-to-trough drawdown of the blended portfolio
series 53×4
→
Pairwise daily return correlation, trailing year
ranking 15×2
→
Cumulative weight and the Herfindahl concentration index
ranking 6×4
→
See all 3,256 queries →