{"slug":"how-much-to-risk-per-trade","qid":"down_streaks","label":"down_streaks","post_title":"how-much-to-risk-per-trade","post_url":"/blog/lang/pcm/how-much-to-risk-per-trade#q-down_streaks","columns":["ticker","longest_losing_run","runs_of_4_or_more"],"rows":[{"ticker":"KO","longest_losing_run":8,"runs_of_4_or_more":69},{"ticker":"MSFT","longest_losing_run":8,"runs_of_4_or_more":54},{"ticker":"SPY","longest_losing_run":8,"runs_of_4_or_more":55},{"ticker":"AAPL","longest_losing_run":8,"runs_of_4_or_more":61},{"ticker":"NVDA","longest_losing_run":8,"runs_of_4_or_more":54}],"shape":"ranking","sql":"SELECT\n    ticker,\n    max(run_len)          AS longest_losing_run,\n    countIf(run_len >= 4) AS runs_of_4_or_more\nFROM\n(\n    SELECT\n        ticker,\n        grp,\n        count() AS run_len\n    FROM\n    (\n        SELECT\n            ticker,\n            down,\n            sum(if(down = 0, 1, 0)) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS grp\n        FROM\n        (\n            SELECT\n                ticker,\n                date,\n                if(toFloat64(close) < toFloat64(prev_close), 1, 0) AS down\n            FROM\n            (\n                SELECT\n                    ticker,\n                    date,\n                    close,\n                    lagInFrame(close) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close\n                FROM global_markets.stocks_daily_aggs\n                WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO')\n                  AND date >= '2016-09-01'\n                  AND date <  '2026-09-01'\n            )\n            WHERE toFloat64(prev_close) > 0\n        )\n    )\n    WHERE down = 1\n    GROUP BY ticker, grp\n)\nGROUP BY ticker\nORDER BY longest_losing_run DESC","computed_at":"2026-09-27T15:40:50.006251+00:00","elapsed":0.00841922}