{"slug":"dragonfly-doji-follow-through","qid":"forward_median","label":"forward_median","post_title":"dragonfly-doji-follow-through","post_url":"/blog/lang/ta/dragonfly-doji-follow-through#q-forward_median","columns":["pattern","sample_count","sample_size","median_1d_pct","median_5d_pct","median_20d_pct"],"rows":[{"pattern":"dragonfly","sample_count":436,"sample_size":"436","median_1d_pct":-0.061,"median_5d_pct":0.422,"median_20d_pct":1.232},{"pattern":"gravestone","sample_count":306,"sample_size":"306","median_1d_pct":0.213,"median_5d_pct":0.365,"median_20d_pct":1.569},{"pattern":"other_days","sample_count":95839,"sample_size":"96 ஆயிரம்","median_1d_pct":0.092,"median_5d_pct":0.327,"median_20d_pct":1.193}],"shape":"table","sql":"WITH bars AS\n(\n    SELECT\n        ticker,\n        date,\n        toFloat64(open)  AS o,\n        toFloat64(high)  AS h,\n        toFloat64(low)   AS l,\n        toFloat64(close) AS c\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','META','JPM','XOM','JNJ','KO','PG','WMT','HD','UNH','CVX','MRK','CSCO','PEP','SPY','QQQ')\n      AND date >= '2006-01-01'\n      AND date <  '2026-10-01'\n      AND high > low\n      AND low > 0\n),\nshaped AS\n(\n    SELECT\n        ticker,\n        date,\n        c,\n        h - l                  AS rng,\n        abs(c - o)              AS body,\n        h - greatest(o, c)      AS upper_wick,\n        least(o, c) - l         AS lower_wick,\n        0.01 * o                AS min_range,\n        leadInFrame(c, 1)  OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN CURRENT ROW AND 20 FOLLOWING) AS c_fwd1,\n        leadInFrame(c, 5)  OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN CURRENT ROW AND 20 FOLLOWING) AS c_fwd5,\n        leadInFrame(c, 20) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN CURRENT ROW AND 20 FOLLOWING) AS c_fwd20\n    FROM bars\n),\ntagged AS\n(\n    SELECT\n        ticker,\n        date,\n        c,\n        c_fwd1,\n        c_fwd5,\n        c_fwd20,\n        multiIf(\n            rng >= min_range AND body <= 0.10 * rng AND upper_wick <= 0.10 * rng, 'dragonfly',\n            rng >= min_range AND body <= 0.10 * rng AND lower_wick <= 0.10 * rng, 'gravestone',\n            'other_days') AS pattern\n    FROM shaped\n)\nSELECT\n    pattern,\n    count()                   AS sample_count,\n    if(count() >= 10000,\n       concat(toString(round(count() / 1000)), ' ஆயிரம்'),\n       toString(count()))     AS sample_size,\n    round(100 * (quantileDeterministic(0.5)(c_fwd1  / c, cityHash64(concat(ticker, toString(date)))) - 1), 3) AS median_1d_pct,\n    round(100 * (quantileDeterministic(0.5)(c_fwd5  / c, cityHash64(concat(ticker, toString(date)))) - 1), 3) AS median_5d_pct,\n    round(100 * (quantileDeterministic(0.5)(c_fwd20 / c, cityHash64(concat(ticker, toString(date)))) - 1), 3) AS median_20d_pct\nFROM tagged\nWHERE c_fwd1 > 0 AND c_fwd5 > 0 AND c_fwd20 > 0\nGROUP BY pattern\nORDER BY pattern","computed_at":"2026-10-07T15:36:25.286252+00:00","elapsed":0.007455769}