confirmed_vs_not
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-09-28, from dow-theory-and-transport-confirmation.
| label | signal_count | share_pct | median_fwd_3m_pct | median_fwd_6m_pct | up_after_3m_pct |
|---|---|---|---|---|---|
| ยืนยันภายใน 20 วันทำการ | 609 | 77.9 | 2.45 | 4.17 | 72.2 |
| ไม่ยืนยัน | 173 | 22.1 | -0.15 | 3.92 | 49.1 |
- Rows × columns
- 2 × 6
- 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 |
|---|---|---|---|
label |
text | 2 distinct values (ยืนยันภายใน 20 วันทำการ, ไม่ยืนยัน) | |
signal_count |
number | 173 to 609 | count |
share_pct |
number | 22.1 to 77.9 | percent |
median_fwd_3m_pct |
number | -0.15 to 2.45 | percent |
median_fwd_6m_pct |
number | 3.92 to 4.17 | percent |
up_after_3m_pct |
number | 49.1 to 72.2 | 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.
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
px AS
(
SELECT
ticker,
date,
toFloat64(max(close)) AS close_px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('DIA', 'IYT')
GROUP BY ticker, date
),
joint AS
(
SELECT
date,
anyIf(close_px, ticker = 'DIA') AS dia,
anyIf(close_px, ticker = 'IYT') AS iyt
FROM px
GROUP BY date
HAVING countIf(ticker = 'DIA') = 1 AND countIf(ticker = 'IYT') = 1
),
rolled AS
(
SELECT
date,
dia,
iyt,
row_number() OVER (ORDER BY date) AS i,
count() OVER () AS n,
max(dia) OVER (ORDER BY date ROWS BETWEEN 62 PRECEDING AND 1 PRECEDING) AS dia_prior_high,
max(iyt) OVER (ORDER BY date ROWS BETWEEN 62 PRECEDING AND 1 PRECEDING) AS iyt_prior_high
FROM joint
),
marked AS
(
SELECT
date,
dia,
i,
n,
if(i > 62 AND dia > dia_prior_high, 1, 0) AS dia_signal,
if(i > 62 AND iyt > iyt_prior_high, 1, 0) AS iyt_signal
FROM rolled
),
scanned AS
(
SELECT
dia,
i,
n,
dia_signal,
indexOf(groupArray(iyt_signal) OVER (ORDER BY date ROWS BETWEEN CURRENT ROW AND 20 FOLLOWING), 1) - 1 AS confirm_lag,
leadInFrame(dia, 63) OVER (ORDER BY date ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS dia_plus_63,
leadInFrame(dia, 126) OVER (ORDER BY date ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS dia_plus_126
FROM marked
),
signals AS
(
SELECT
i,
confirm_lag >= 0 AS confirmed,
100 * (dia_plus_63 / dia - 1) AS fwd_3m_pct,
100 * (dia_plus_126 / dia - 1) AS fwd_6m_pct,
count() OVER () AS n_signals
FROM scanned
WHERE dia_signal = 1 AND i + 126 <= n
)
SELECT
if(confirmed, 'ยืนยันภายใน 20 วันทำการ', 'ไม่ยืนยัน') AS label,
count() AS signal_count,
round(100 * count() / any(n_signals), 1) AS share_pct,
round(quantileDeterministic(0.5)(fwd_3m_pct, toUInt32(i)), 2) AS median_fwd_3m_pct,
round(quantileDeterministic(0.5)(fwd_6m_pct, toUInt32(i)), 2) AS median_fwd_6m_pct,
round(100 * countIf(fwd_3m_pct > 0) / count(), 1) AS up_after_3m_pct
FROM signals
GROUP BY confirmed
ORDER BY confirmed DESC
ใช้ข้อมูลนี้ในผู้ช่วย AI ของคุณ
เปิดพร้อมคิวรีได้ทันที พร้อมข้อมูลของหน้านี้ ฟรี ไม่ต้องมีบัญชี