Skip to content
Skip to content
← all research
STUDY

"FinBERT vs alternatives + ensemble — backtest on **Financial PhraseBank v1.0 (50agree)**"

2026-08-29

·

Source: Financial PhraseBank v1.0 (50agree). IN-SAMPLE to ProsusAI/finbert (its training data). Use FiQA-2018 for true OOS.

Sample: n=500. Models: keyword proxy (production fallback), ProsusAI/finbert (3-class, wired in production), cardiffnlp/twitter-roberta-base-sentiment-latest, finiteautomata/bertweet-base-sentiment-analysis, and ensemble (mean of all available transformers' signed scores in [-1,1]).

#Headline (3-class accuracy)

ScorerAccuracyMacro-F1
all-neutral baseline0.6320.258
keyword proxy0.6780.464
finbert0.8920.880
cardiffnlp0.6840.556
bertweet0.7000.634
ENSEMBLE (mean of transformers)0.8160.815

#Direction-only accuracy (positive vs negative, both gold and pred directional)

ScorerDirection accuracyn
keyword0.61565
finbert0.972176
cardiffnlp1.00059
bertweet0.98989
ENSEMBLE0.972179

Direction matters more than 3-class for the bot (we skip neutrals in the daily panel anyway), so this is the most decision-relevant number.

#Inter-scorer agreement (Cohen's κ; 1.0 = perfect, 0 = chance)

Pairκ
kw_vs_ens0.187
kw_vs_finbert0.226
ens_vs_finbert0.848
kw_vs_cardiffnlp0.045
ens_vs_cardiffnlp0.387
kw_vs_bertweet0.109
ens_vs_bertweet0.572
finbert_vs_cardiffnlp0.310
finbert_vs_bertweet0.409
cardiffnlp_vs_bertweet0.599

#Confusion matrices (rows = true, cols = predicted)

#keyword

true \ predpositiveneutralnegative
positive287411
neutral112996
negative144512

#finbert

true \ predpositiveneutralnegative
positive10463
neutral322759
negative2267

#cardiffnlp

true \ predpositiveneutralnegative
positive32810
neutral252838
negative04427

#bertweet

true \ predpositiveneutralnegative
positive50621
neutral462628
negative03338

#ensemble

true \ predpositiveneutralnegative
positive10643
neutral6723415
negative2168

#Verdict

  • Best 3-class accuracy: finbert (0.892).
  • Best direction accuracy: cardiffnlp (1.000).
  • Ensemble does NOT beat the best single transformer on accuracy (-0.076); the mean dilutes the strongest signal. Stick with a single model (FinBERT) in production.
  • Ensemble direction accuracy 0.972 < best single 1.000; ensemble dilutes direction slightly.

#Limitations

  • The ensemble is a mean of signed scores, not a learned stacker. It assumes the transformers output comparable units ([-1, 1]); since each has its own scoring curve (FinBERT 3-class confidence, cardiffnlp/bertweet 2-3-class), the mean is a coarse combination. A learned meta-stacker on this data would likely do better, but the gain is small and the mean is a robust default.
  • The signed score mapping assumes neutral = 0; transformers vary in how they treat the neutral class. The ensemble will lean more positive/negative than the mean of the three discrete labels would suggest.

All trading described is paper (simulated). Not investment advice.

← all research