FinSense
Financial news sentiment, done properly. The modern FinBERT alternative: newer architectures, a published evaluation split, and numbers you can reproduce.

Models
FinSense ModernBERT
FlagshipAccuracy 0.8675 / F1 0.8589 on the published FPB split - beats FinBERT's reproducible 0.8423
FinSense DistilBERT v2
LightweightAccuracy 0.8447 / F1 0.8316
Benchmarks
Financial PhraseBank, published held-out split, identical harness for every row:
| Model | Accuracy | Macro-F1 |
|---|---|---|
| FinSense ModernBERT | 0.8675 | 0.8589 |
| FinSense DistilBERT v2 | 0.8447 | 0.8316 |
| FinBERT (independently reproduced) | 0.8423 | 0.8439 |
| distilbert financial v1 | 0.8323 | 0.8064 |
The split script and raw eval outputs ship in the model repo, so every number is reproducible end-to-end. Across three training seeds the flagship recipe averages 0.854; the best validated checkpoint ships and every seed's result is published.
Use it
from transformers import pipeline
clf = pipeline(
"text-classification",
model="AnkitAI/FinSense-ModernBERT-Financial-News-Sentiment-Analysis",
)
clf("The company's quarterly earnings surpassed all estimates.")
# [{'label': 'positive', 'score': 0.99}]Reproducibility
There is no official train/test split for the Financial PhraseBank dataset, so most published FinBERT-era numbers cannot be compared against each other. Ours is different: the exact evaluation split we use is published, together with the eval scripts, so every number above can be re-run and checked.