{"slug":"dragonfly-doji-follow-through","qid":"hit_rate","label":"hit_rate","post_title":"dragonfly-doji-follow-through","post_url":"/blog/lang/ta/dragonfly-doji-follow-through#q-hit_rate","columns":["pattern","up_1d_pct","up_5d_pct","up_20d_pct"],"rows":[{"pattern":"dragonfly","up_1d_pct":46.6,"up_5d_pct":55.3,"up_20d_pct":60.3},{"pattern":"gravestone","up_1d_pct":55.2,"up_5d_pct":54.9,"up_20d_pct":61.4},{"pattern":"other_days","up_1d_pct":52.1,"up_5d_pct":55.2,"up_20d_pct":58.9}],"shape":"ranking","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        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    round(100 * countIf(c_fwd1  > c) / count(), 1) AS up_1d_pct,\n    round(100 * countIf(c_fwd5  > c) / count(), 1) AS up_5d_pct,\n    round(100 * countIf(c_fwd20 > c) / count(), 1) AS up_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.399467+00:00","elapsed":0.005785487}