User repository on GitHub
One number per ticker from the week's news. Async Python library + CLI, pluggable scorer, Jev by default.
- Forks
- 0
- Last pushed
- Updated Sep 2026
Repo stats from the GitHub API, cached Oct 2026.
Pulls financial news from configurable sources, scores every article with Jev on a -1 to +1 scale with confidence and relevance weighting, and aggregates one number per symbol, from Python, sync or async, or the CLI.
User repository on GitHub
One number per ticker from the week's news. Async Python library + CLI, pluggable scorer, Jev by default.
Repo stats from the GitHub API, cached Oct 2026.
News sentiment scoring for stocks, powered by TypeSafe Jev by default. Mainstream financial news APIs go in, a pluggable scoring function (TypeSafe's Jev by default) scores every article, and one aggregate number per symbol comes out. Use it from Python (sync or async) or from the newsscore command line. Or with uv: uv add "newsscore[jev]", or uv tool install "newsscore[jev]" for the CLI only. The latest unreleased code is on GitHub, and a clone is the way to hack on it:
Quoted from the project's README. Read the full README.
Watch out
Two fallbacks and one alpha endpoint are worth knowing about. NewsScorer() uses Jev only when the SDK is importable and TYPESAFE_API_KEY is set, and otherwise drops to a keyword lexicon scorer with a log line; the README calls that a test double and not a trading signal, and newsscore doctor reports which one you have. OpenRouter's Decisions endpoint is alpha and can change without a deprecation period. The agreement measurement, 310 AAPL articles scored down both routes with 97.1 percent impact-label agreement at kappa 0.934, 97.7 percent category agreement and a 0.095 maximum absolute sentiment difference, is offered as evidence that the provider gap is no wider than the model's own run-to-run variation, and the README correctly calls that evidence rather than a guarantee, since OpenRouter resolves typesafe/jev-1.13 to a dated build it is free to move later. Two caching consequences: switching provider means rescoring, and asking for a floating alias such as ~typesafe/jev-latest switches caching off entirely instead of filing answers under a name that may mean something else tomorrow. Aggregation weight is the product of confidence and relevance, and the headline confidence figure in the sample output is 1.000, so treat it as a normalization rather than a signal. Copy reviewed against the repository README on 2026-10-04, not from running it.
Original write-ups on what this entry is for.
Posts from builders shipping with Jev right now.