Guides implementation of new deterministic Shredder strategies: StrategyInput, StrategySignal, pure evaluate(), tests, and optional StrategyTool wrapping. Use when adding strategies under packages/strategies or wiring tools in packages/ai for orchestration.
StrategyInput from @shredder/core (symbol, candles, indicators, portfolio).StrategySignal — action: BUY | SELL | HOLD, confidence 0–1, reason string.readonly id and evaluate(input): StrategySignal (sync, no I/O).evaluate (no fetch, no filesystem, no global mutation).@shredder/core indicators, (OHLCV matrix via ), or derive from consistently.@shredder/indicatorscoreCandlesToOhlcvMatrixcandlespackages/strategies/src/index.ts.strategyIdSchema in packages/config when the strategy is user-selectable.runBacktest for smoke scenarios.wrapStrategy(name, s.evaluate.bind(s)) in packages/ai for async tool calls; orchestration still cannot skip risk.