← all research

Signal: 50-name S&P pilot, yfinance Ticker.news title+summary scored with FinBERT (keyword fallback). Daily news_sent_market = mean across the panel for the day (forward-fill 3d to bridge sparse headlines).

Window: 2026-08-03 .. 2026-08-12 (9 calendar days, 8 days with at least one headline). Honest caveat: yfinance news depth is ~10 headlines per ticker spanning days-weeks, so this is a 5-month exploratory backtest, NOT a 20y OOS. The question being asked: does news_sent direction correlate with future EqMom returns at all?

EqMom baseline: 12-1 momentum top decile, monthly rebal, net 10bps next_open (validated Sharpe 1.06 OOS on 20y).

Results (window where news data exists)

VariantSegmentnRet (cum)Sharpe(252)MaxDDp
EqMom baseline (no gate)ALL8+5.76%5.82-3.18%nan
EqMom baseline (no gate)H15+2.93%4.19-3.18%nan
NEWS_GATE_POSITIVE (news_sent>0)ALL8+3.89%7.410.00%nan
NEWS_GATE_POSITIVE (news_sent>0)H15+0.96%7.100.00%nan
NEWS_GATE_NEGATIVE (news_sent<0)ALL8+0.31%0.48-3.50%nan
NEWS_GATE_NEGATIVE (news_sent<0)H15+0.46%0.80-3.18%nan
NEWS_WEIGHT (1+news_sent clip 0-1.5)ALL8+7.40%9.31-0.09%nan
NEWS_WEIGHT (1+news_sent clip 0-1.5)H15+2.96%11.66-0.09%nan
NEWS_GATE_STRONG (news_sent>0.3)ALL8+4.21%4.35
NEWS_GATE_STRONG (news_sent>0.3)H15+1.42%2.16

Verdict

  • NEWS_GATE_POSITIVE (news_sent>0): MARGINAL (Sharpe 7.41 vs baseline 5.82, p=nan, corrEqMom 0.46, resid 7.84) -- lifts Sharpe by +1.58 but slight.
  • NEWS_GATE_NEGATIVE (news_sent<0): REJECT (Sharpe 0.48 vs baseline 5.82, p=nan, corrEqMom 0.84, resid -15.28) -- no edge: Sharpe 0.48 vs baseline 5.82, p=nan.
  • NEWS_WEIGHT (1+news_sent clip 0-1.5): MARGINAL (Sharpe 9.31 vs baseline 5.82, p=nan, corrEqMom 0.55, resid 7.98) -- lifts Sharpe by +3.49 but slight.
  • NEWS_GATE_STRONG (|news_sent|>0.3): REJECT (Sharpe 4.35 vs baseline 5.82, p=nan, corrEqMom 0.96, resid -4.17) -- no edge: Sharpe 4.35 vs baseline 5.82, p=nan.

Limitations

  • Tiny sample (5 months): not a real OOS test. The verdict here is 'does news_sent have ANY directional information about future equity momentum?' -- bootstrap p is unreliable on <50 observations.
  • yfinance news depth is shallow: ~10 headlines per ticker, biased to recent. Real production needs paid news history (RavenPack, Benzinga, Alpaca News) for a robust verdict.
  • FinBERT is in-sample to the news domain in this test (it wasn't trained on these specific headlines, but its training set was PhraseBank which is similar in style to yfinance headlines). The FinBERT scoring is biased toward positive (it predicts positive/neutral 80% of the time on positive-leaning headlines).
  • No transaction cost on the gate (the signal change is free, only the underlying EqMom trades pay 10bps). The 10bps cost on EqMom is already included.

Per-day CSV with news_sent_market, spy_ret, eqmom, and all four gate variants at reports/edge_hunt14_per_row.csv. Restart corrtrack daily so the live data/correlation_tracker/history.csv accumulates -- after 60+ days of live data we can re-run with real (not yfinance) observations.