obv_trace
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-10-01, from do-volume-indicators-predict-anything.
| date | price_change_pct | obv_ratio | vpt_ratio |
|---|---|---|---|
| 2026-04-01 | 0 | 0 | 0 |
| 2026-04-02 | 0.11 | 0.59 | 0.07 |
| 2026-04-06 | 1.26 | 1.14 | 0.7 |
| 2026-04-07 | -0.83 | -0.03 | -1.72 |
| 2026-04-08 | 1.28 | 0.74 | -0.08 |
| 2026-04-09 | 1.9 | 1.27 | 0.25 |
| 2026-04-10 | 1.9 | 0.68 | 0.25 |
| 2026-04-13 | 1.4 | 0 | -0.09 |
| 2026-04-14 | 1.25 | -0.91 | -0.22 |
| 2026-04-15 | 4.22 | 0.03 | 2.54 |
| 2026-04-16 | 3.04 | -0.79 | 1.61 |
| 2026-04-17 | 5.71 | 0.37 | 4.62 |
| 2026-04-20 | 6.81 | 1.06 | 5.33 |
| 2026-04-21 | 4.12 | 0.12 | 2.95 |
| 2026-04-22 | 6.86 | 0.93 | 5.09 |
| 2026-04-23 | 6.96 | 1.56 | 5.15 |
| 2026-04-24 | 6.04 | 0.84 | 4.53 |
| 2026-04-27 | 4.69 | 0.06 | 3.54 |
| 2026-04-28 | 5.9 | 0.82 | 4.42 |
| 2026-04-29 | 5.69 | 0.26 | 4.3 |
| 2026-04-30 | 6.15 | 1.99 | 5.06 |
| 2026-05-01 | 9.59 | 3.49 | 9.94 |
| 2026-05-04 | 8.29 | 2.61 | 8.9 |
| 2026-05-05 | 11.17 | 3.54 | 11.36 |
| 2026-05-06 | 12.47 | 4.64 | 12.65 |
| 2026-05-07 | 12.44 | 3.79 | 12.63 |
| 2026-05-08 | 14.74 | 4.78 | 14.66 |
| 2026-05-11 | 14.49 | 3.98 | 14.49 |
| 2026-05-12 | 15.32 | 4.85 | 15.11 |
| 2026-05-13 | 16.92 | 5.84 | 16.48 |
| 2026-05-14 | 16.66 | 5.17 | 16.34 |
| 2026-05-15 | 17.45 | 6.21 | 17.04 |
| 2026-05-18 | 16.51 | 5.56 | 16.52 |
| 2026-05-19 | 16.95 | 6.35 | 16.82 |
| 2026-05-20 | 18.24 | 7.07 | 17.61 |
| 2026-05-21 | 19.31 | 7.88 | 18.34 |
| 2026-05-22 | 20.81 | 8.71 | 19.38 |
| 2026-05-26 | 20.62 | 7.8 | 19.23 |
| 2026-05-27 | 21.6 | 8.76 | 20.02 |
| 2026-05-28 | 22.25 | 9.68 | 20.51 |
| 2026-05-29 | 22.07 | 8.36 | 20.32 |
| 2026-06-01 | 19.83 | 7.44 | 18.62 |
| 2026-06-02 | 23.3 | 8.29 | 21.07 |
| 2026-06-03 | 21.37 | 7.33 | 19.57 |
| 2026-06-04 | 21.75 | 8.17 | 19.83 |
| 2026-06-05 | 20.23 | 6.94 | 18.29 |
| 2026-06-08 | 17.96 | 5.47 | 15.52 |
| 2026-06-09 | 13.66 | 4.15 | 10.71 |
| 2026-06-10 | 14.06 | 5.15 | 11.06 |
| 2026-06-11 | 15.65 | 5.95 | 12.17 |
| 2026-06-12 | 13.89 | 5.22 | 11.06 |
| 2026-06-15 | 15.96 | 6.08 | 12.63 |
| 2026-06-16 | 17.06 | 6.83 | 13.34 |
| 2026-06-17 | 15.77 | 6.03 | 12.46 |
| 2026-06-18 | 16.58 | 7.65 | 13.58 |
| 2026-06-22 | 16.19 | 6.8 | 13.3 |
| 2026-06-23 | 15.13 | 5.82 | 12.41 |
| 2026-06-24 | 14.65 | 4.82 | 11.99 |
| 2026-06-25 | 7.64 | 2.8 | -0.37 |
| 2026-06-26 | 11.01 | 7.73 | 15.1 |
| 2026-06-29 | 10.21 | 6.48 | 14.2 |
| 2026-06-30 | 13.19 | 7.71 | 17.51 |
- Rows × columns
- 62 × 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 | 2026-04-01 to 2026-06-30 | |
price_change_pct |
number | -0.83 to 23.3 | percent |
obv_ratio |
number | -0.91 to 9.68 | ratio or rate |
vpt_ratio |
number | -1.72 to 21.07 | ratio or rate |
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.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
WITH
bars AS
(
SELECT
date,
max(toFloat64(close)) AS close,
max(toFloat64(volume)) AS volume
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2026-04-01'
AND date <= '2026-06-30'
GROUP BY date
),
stepped AS
(
SELECT
date,
close,
volume,
lagInFrame(close, 1) OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
FROM bars
),
running AS
(
SELECT
date,
close,
first_value(close) OVER (ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS first_close,
avg(volume) OVER (ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS avg_volume,
sum(if(prev_close = 0, 0, if(close > prev_close, volume, if(close < prev_close, -volume, 0))))
OVER (ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS obv_shares,
sum(if(prev_close = 0, 0, 100 * volume * (close / prev_close - 1)))
OVER (ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS vpt_shares
FROM stepped
)
SELECT
toString(date) AS date,
round(100 * (close / first_close - 1), 2) AS price_change_pct,
round(obv_shares / avg_volume, 2) AS obv_ratio,
round(vpt_shares / avg_volume, 2) AS vpt_ratio
FROM running
ORDER BY date ASC
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.