answerdotai/ModernBERT-base, fine-tuned for financial news sentiment
This is not ModernBERT-base, which is a general encoder with no classification head. It is ModernBERT fine-tuned on the Financial PhraseBank for three-class sentiment on financial text.

FinSense
AnkitAI/FinSense-ModernBERT-Financial-News-Sentiment-AnalysisThe Financial PhraseBank is CC BY-NC-SA. The weights are Apache-2.0; commercial users should check the dataset terms.
FinBERT was released in 2019 on a BERT backbone and it is still the default choice for financial sentiment. This is the same task on ModernBERT, an encoder released five years later, fine-tuned on the Financial PhraseBank and emitting three classes — negative, neutral, positive. That corpus is professionally written English financial news at sentence level, so earnings-call transcripts and social finance chatter sit outside it, and the errors concentrate where the corpus itself is contested: the positive-versus-neutral boundary, where human annotators disagree around a quarter of the time. Every model on this task hits that ceiling, FinBERT included.
Its card reports 0.8675 accuracy and 0.8589 macro-F1, about 2.5 points above an independently reproduced FinBERT. That comparison is only meaningful because of how it was constructed: the Financial PhraseBank has no official train/test split, so most published numbers in this area were measured on incomparable data, and some of FinBERT's higher published scores come from evaluating on sentences that overlap its own training set. Here the split script and the raw evaluation outputs are published, and the FinBERT row was reproduced under the same harness.
One more thing the card does that most do not: it publishes the seed spread. Across three training seeds the recipe averages 0.854 accuracy with a range of 0.845 to 0.868. The shipped checkpoint is the best validated one — which is the normal practice — but the distribution it was drawn from is published alongside it, so you can see how much of that headline number is recipe and how much is luck. Measured on the seed mean rather than the shipped checkpoint, the gap to FinBERT is still there and it is smaller than the headline: 0.854 against 0.8423.
The numbers
Financial PhraseBank, published held-out test split, identical harness for every row.
| Model | Accuracy | Macro-F1 |
|---|---|---|
| This model | 0.8675 | 0.8589 |
| FinBERT (reproduced) | 0.8423 | 0.8439 |
| FinSense DistilBERT v2 | 0.8447 | 0.8316 |
| Three-seed mean of this recipe | 0.854 | — |
Figures as reported on the model's own Hugging Face card. Quoted here, not re-measured. The FinBERT row is that card's independent reproduction of the public FinBERT checkpoint.
Run 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}]Try others
- distilbert/distilbert-base-uncased — financial news sentimentThe small/fast option: 67M parameters against FinBERT's 110M, and it still edges past FinBERT's reproducible score.
- answerdotai/ModernBERT-base — general sentiment analysisA drop-in upgrade for the distilbert-sst2 default: 0.9461 against 0.9130 on the same validation set.
Where to get it
- Base model
- answerdotai/ModernBERT-base