213bb911e3
scoring.py docstring promises: 'Missing indicators are excluded and the remaining weights renormalised — so a single dead API doesn't drag the whole score toward zero.' But _stablecoin_supply_signal and _open_interest_signal returned 0.0 (not None) as placeholders — so they stayed in the alive set, kept their combined 0.10 weight in the denominator, and contributed 0, systematically compressing the composite toward zero by ~10%. Example: ahr999 deeply cheap (+1) alone should score +100, but the two 0.0 placeholders dragged it to 80. Now they return None → excluded + renormalised, matching the module's own stated design. Verified: same input now scores 100. Re-activate either by returning a real [-1,+1] signal once a trend lookup is wired in. 72 tests pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>