{"slug":"dow-theory-and-transport-confirmation","qid":"confirmation_lag","label":"confirmation_lag","post_title":"dow-theory-and-transport-confirmation","post_url":"/blog/lang/th/dow-theory-and-transport-confirmation#q-confirmation_lag","columns":["lag_bucket","signal_count","share_pct"],"rows":[{"lag_bucket":"0 ถึง 2 วัน","signal_count":405,"share_pct":64.8},{"lag_bucket":"3 ถึง 5 วัน","signal_count":74,"share_pct":11.8},{"lag_bucket":"6 ถึง 10 วัน","signal_count":57,"share_pct":9.1},{"lag_bucket":"11 ถึง 15 วัน","signal_count":47,"share_pct":7.5},{"lag_bucket":"16 ถึง 20 วัน","signal_count":42,"share_pct":6.7}],"shape":"ranking","sql":"WITH\npx AS\n(\n    SELECT\n        ticker,\n        date,\n        toFloat64(max(close)) AS close_px\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker IN ('DIA', 'IYT')\n    GROUP BY ticker, date\n),\njoint AS\n(\n    SELECT\n        date,\n        anyIf(close_px, ticker = 'DIA') AS dia,\n        anyIf(close_px, ticker = 'IYT') AS iyt\n    FROM px\n    GROUP BY date\n    HAVING countIf(ticker = 'DIA') = 1 AND countIf(ticker = 'IYT') = 1\n),\nrolled AS\n(\n    SELECT\n        date,\n        dia,\n        iyt,\n        row_number() OVER (ORDER BY date) AS i,\n        count() OVER () AS n,\n        max(dia) OVER (ORDER BY date ROWS BETWEEN 62 PRECEDING AND 1 PRECEDING) AS dia_prior_high,\n        max(iyt) OVER (ORDER BY date ROWS BETWEEN 62 PRECEDING AND 1 PRECEDING) AS iyt_prior_high\n    FROM joint\n),\nmarked AS\n(\n    SELECT\n        date,\n        i,\n        n,\n        if(i > 62 AND dia > dia_prior_high, 1, 0) AS dia_signal,\n        if(i > 62 AND iyt > iyt_prior_high, 1, 0) AS iyt_signal\n    FROM rolled\n),\nscanned AS\n(\n    SELECT\n        i,\n        n,\n        dia_signal,\n        indexOf(groupArray(iyt_signal) OVER (ORDER BY date ROWS BETWEEN CURRENT ROW AND 20 FOLLOWING), 1) - 1 AS confirm_lag\n    FROM marked\n),\nconfirmed_signals AS\n(\n    SELECT\n        confirm_lag,\n        count() OVER () AS n_confirmed\n    FROM scanned\n    WHERE dia_signal = 1 AND i + 20 <= n AND confirm_lag >= 0\n)\nSELECT\n    multiIf(confirm_lag <= 2, '0 ถึง 2 วัน',\n            confirm_lag <= 5, '3 ถึง 5 วัน',\n            confirm_lag <= 10, '6 ถึง 10 วัน',\n            confirm_lag <= 15, '11 ถึง 15 วัน',\n            '16 ถึง 20 วัน')                        AS lag_bucket,\n    count()                                         AS signal_count,\n    round(100 * count() / any(n_confirmed), 1)      AS share_pct\nFROM confirmed_signals\nGROUP BY lag_bucket\nORDER BY min(confirm_lag)","computed_at":"2026-09-28T15:33:31.581356+00:00","elapsed":0.026657075}