Enhancing Trading Performance Through Sentiment Analysis with Large Language Models: Evidence from the S&P 500

ArXiv ID: 2507.09739 “View on arXiv”

Authors: Haojie Liu, Zihan Lin, Randall R. Rojas

Abstract

This study integrates real-time sentiment analysis from financial news, GPT-2 and FinBERT, with technical indicators and time-series models like ARIMA and ETS to optimize S&P 500 trading strategies. By merging sentiment data with momentum and trend-based metrics, including a benchmark buy-and-hold and sentiment-based approach, is evaluated through assets values and returns. Results show that combining sentiment-driven insights with traditional models improves trading performance, offering a more dynamic approach to stock trading that adapts to market changes in volatile environments.

Keywords: Sentiment analysis, GPT-2, FinBERT, ARIMA, Technical indicators

Complexity vs Empirical Score

  • Math Complexity: 4.5/10
  • Empirical Rigor: 7.5/10
  • Quadrant: Street Traders
  • Why: The paper uses established time-series models (ARIMA, ETS) and basic technical indicators, but lacks advanced mathematical derivations, focusing instead on practical implementation. Empirical rigor is high due to real-time data integration, benchmarking against buy-and-hold, and evaluation of trading performance on S&P 500.
  flowchart TD
    A["Research Goal: Enhance S&P 500 Trading Performance"] --> B["Data Acquisition & Sentiment Analysis"]
    B --> C{"Data Processing"}
    C --> D["Computational Models & Integration"]
    D --> E["Backtesting & Benchmarking"]
    E --> F["Key Findings & Outcomes"]
    
    B --> B1["Financial News Data"]
    B --> B2["GPT-2 & FinBERT Models"]
    
    C --> C1["Technical Indicators"]
    C --> C2["Real-time Sentiment Scores"]
    
    D --> D1["ARIMA & ETS Time-Series Models"]
    D --> D2["Momentum/Trend Metrics"]
    
    E --> E1["Buy-and-Hold Benchmark"]
    E --> E2["Sentiment-Based Strategy"]
    
    F --> F1["Improved Trading Performance"]
    F --> F2["Dynamic Market Adaptation"]
    F --> F3["Superior Volatility Handling"]