From the QuantCrawler teardown (#193, §1.5). A testable critique of existing keel code, not a feature request.
Their stated design rule for multi-indicator scoring is one indicator per category (trend / momentum / volume / volatility) with 3-of-4 agreement, and an explicit warning that stacking redundant same-category indicators (RSI + Stochastic) manufactures false confirmation — they call it "confluence, not consensus".
keel's CTS (keel/strategy/indicators_cts.py) scores an 11-factor context that includes RSI extreme, RSI divergence, and deceleration — arguably three reads of one momentum axis, plus EMA-fan alignment and condition alignment which may both be reading trend.
If those factors are collinear, the score overstates confluence exactly when they agree — because they agree by construction, not because independent evidence accumulated. That would systematically inflate CTS on precisely the setups it is meant to discriminate.
Proposed check
Cheap, and keel already has the machinery:
- Dump per-factor contributions for historical signals from the
signals table (already an audit trail).
- Correlation matrix across factor contributions.
- Feed it through
keel/research/independence.py — the §80.16 harness already measures whether two streams add independent evidence, and this is the same question one level down.
If factors cluster, the options are to collapse each cluster to one representative, or to weight by cluster rather than by factor.
Caveats
- This is research, so it belongs in the trials ledger (
docs/experiments/trials-ledger.jsonl) with the multiple-testing budget accounted for — not a drive-by tweak to the scoring weights.
- Their 3-of-4 rule is itself unvalidated SEO-adjacent content. The critique is worth taking seriously; their specific ratio is not evidence of anything.
From the QuantCrawler teardown (#193, §1.5). A testable critique of existing keel code, not a feature request.
Their stated design rule for multi-indicator scoring is one indicator per category (trend / momentum / volume / volatility) with 3-of-4 agreement, and an explicit warning that stacking redundant same-category indicators (RSI + Stochastic) manufactures false confirmation — they call it "confluence, not consensus".
keel's CTS (
keel/strategy/indicators_cts.py) scores an 11-factor context that includes RSI extreme, RSI divergence, and deceleration — arguably three reads of one momentum axis, plus EMA-fan alignment and condition alignment which may both be reading trend.If those factors are collinear, the score overstates confluence exactly when they agree — because they agree by construction, not because independent evidence accumulated. That would systematically inflate CTS on precisely the setups it is meant to discriminate.
Proposed check
Cheap, and keel already has the machinery:
signalstable (already an audit trail).keel/research/independence.py— the §80.16 harness already measures whether two streams add independent evidence, and this is the same question one level down.If factors cluster, the options are to collapse each cluster to one representative, or to weight by cluster rather than by factor.
Caveats
docs/experiments/trials-ledger.jsonl) with the multiple-testing budget accounted for — not a drive-by tweak to the scoring weights.