/news: normalize rounded-zero score so "-0.00" renders as "+0.00"

A balanced feed (XAU and USD means nearly cancelling) yields a tiny
negative net that "+.2f" rendered as "-0.00" — seen live 2026-08-03.
Regression test uses that day's actual per-currency means (300 tests).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017975c1TufZ3xRYAq8iWTCS
This commit is contained in:
Harwinder Sekhon
2026-08-03 18:06:44 -04:00
parent cf84f7b1a7
commit 90801d665d
2 changed files with 13 additions and 0 deletions
+2
View File
@@ -1036,6 +1036,8 @@ async def cmd_status(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None
def _news_text(context: FundamentalContext, engine: NewsEngine) -> str: def _news_text(context: FundamentalContext, engine: NewsEngine) -> str:
net, desc = engine.get_pair_sentiment(XAUUSD, context) net, desc = engine.get_pair_sentiment(XAUUSD, context)
if round(net, 2) == 0:
net = 0.0 # a tiny negative mean would render as "-0.00"
lines = [ lines = [
"📰 *XAU/USD News Score*\n", "📰 *XAU/USD News Score*\n",
f"*Net score:* `{net:+.2f}` — {desc}", f"*Net score:* `{net:+.2f}` — {desc}",
+11
View File
@@ -1898,6 +1898,17 @@ def _():
assert "Bearish" in text assert "Bearish" in text
@test("_news_text never renders negative zero")
def _():
# Balanced feed: XAU and USD means nearly cancel → net -0.0035,
# which "+.2f" would render as "-0.00" without normalization.
ctx = FundamentalContext(news_sentiment={"XAU": 0.0238, "USD": 0.0273})
text = _news_text(ctx, NewsEngine(PlatformConfig().news))
assert "-0.00" not in text
assert "+0.00" in text
assert "Neutral" in text
@test("_news_text degrades on empty context") @test("_news_text degrades on empty context")
def _(): def _():
text = _news_text(FundamentalContext(), NewsEngine(PlatformConfig().news)) text = _news_text(FundamentalContext(), NewsEngine(PlatformConfig().news))