Skip to content
Skip to content
← all research
STUDY

"FinBERT vs alternatives + ensemble — backtest on **FiQA-2018 (Pau Riba, test split)**"

2026-08-29

·

Source: FiQA-2018 (Pau Riba, test split). TRUE OUT-OF-SAMPLE — ProsusAI/finbert was NOT trained on this set (disjoint from Financial PhraseBank).

Sample: n=150. 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.3330.167
keyword proxy0.3870.345
finbert0.5670.562
cardiffnlp0.5600.554
bertweet0.5400.526
ENSEMBLE (mean of transformers)0.6400.639

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

ScorerDirection accuracyn
keyword0.79224
finbert0.85763
cardiffnlp0.86050
bertweet0.87046
ENSEMBLE0.83880

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.106
kw_vs_finbert0.197
ens_vs_finbert0.717
kw_vs_cardiffnlp0.073
ens_vs_cardiffnlp0.541
kw_vs_bertweet0.011
ens_vs_bertweet0.519
finbert_vs_cardiffnlp0.350
finbert_vs_bertweet0.338
cardiffnlp_vs_bertweet0.607

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

#keyword

true \ predpositiveneutralnegative
positive8402
neutral7394
negative33611

#finbert

true \ predpositiveneutralnegative
positive19256
neutral63113
negative31235

#cardiffnlp

true \ predpositiveneutralnegative
positive19292
neutral4415
negative52124

#bertweet

true \ predpositiveneutralnegative
positive14333
neutral3416
negative32126

#ensemble

true \ predpositiveneutralnegative
positive30137
neutral82913
negative6737

#Verdict

  • Best 3-class accuracy: ensemble (0.640).
  • Best direction accuracy: bertweet (0.870).
  • Ensemble beats the best single transformer by +0.073 on accuracy — keep the ensemble in production.
  • Ensemble direction accuracy 0.838 < best single 0.870; 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