← Back to Research
Horizon sweep: predictability across 1–10 day horizons
Panel FE regressions of cumulative forward returns on score_mean across multiple horizons.
Updated: 2026-04-05
Study
Predictability • Status: LIVE
Updated: 2026-04-05
Horizons
1,2,5,10
Signal
score_mean
Tickers
507
Obs
261179
Sample ticker
—
Tickers (panel)
507
Obs (panel)
261179
R² (TS)
—
R² (FE)
—
Key findings
- Horizon profiles show whether any predictability is short-lived or persists over longer windows.
- Interpretation: if coefficients decay quickly with horizon, sentiment behaves like a short-term reaction; persistent coefficients are more consistent with slow diffusion.
Specification
- For each horizon h: r_{t+1..t+h} ~ score_mean(t) (+ controls), within-ticker FE.
Data
- Universe: S&P 500 tickers in your snapshot pipeline.
- Frequency: Daily.
- Returns: log(P_t) − log(P_{t−1}) from ticker JSON prices.
- Sentiment: score_mean from your sentiment pipeline (ticker JSON).
Limitations
- Timing: after-close articles can contaminate same-day results; predictive tests mitigate this but do not fully solve it.
- Causality: results are descriptive; omitted variables and measurement error remain.
- Trading: no transaction costs / slippage / capacity modeled.
References (minimal)
- Newey, W. K., & West, K. D. (1987). A simple, positive semi-definite, heteroskedasticity and autocorrelation consistent covariance matrix.
- Petersen, M. A. (2009). Estimating standard errors in finance panel data sets.
Methodology
- For each horizon h: compute cumulative forward return r_{t+1..t+h}.
- Run panel FE regression on score_mean(t) (+ controls), cluster SE by ticker.
Figures
Charts are from the sample ticker (not the full panel).
Series (sample)
No series available.
Sentiment (sample)
score_mean
No sentiment series available. Export
results.series.score_mean.Tables
Horizon sweep (panel FE): cumulative forward returns vs signal
| Horizon (days) | β(score_mean) | t | p | Sig | R² |
|---|---|---|---|---|---|
| 1 | -1.332e-4 | -1.28352 | 0.19931 | 0 | 6.083e-6 |
| 2 | -4.885e-4 | -3.476598 | 5.078e-4 | *** | 4.214e-5 |
| 5 | -6.161e-4 | -2.56404 | 0.010346 | ** | 2.755e-5 |
| 10 | -8.094e-4 | -2.305663 | 0.021129 | ** | 2.487e-5 |
Note: exported by the Python builder; formatting is intentionally compact.
Models
This study is primarily descriptive (figures/tables). No regression model outputs were exported.
Appendix
Raw exported objects (reproducibility / debugging).
Raw exported JSON (collapsed)
{
"results": {
"tables": [
{
"title": "Horizon sweep (panel FE): cumulative forward returns vs signal",
"columns": [
"Horizon (days)",
"β(score_mean)",
"t",
"p",
"Sig",
"R²"
],
"rows": [
[
1,
-0.00013323464208029765,
-1.2835202416152551,
0.1993098726609117,
"",
0.000006083300493009425
],
[
2,
-0.0004885304137229944,
-3.4765983823071616,
0.0005078178783719178,
"***",
0.000042138168820704536
],
[
5,
-0.000616066069436158,
-2.564039541387773,
0.010346175703174898,
"**",
0.000027554434735455047
],
[
10,
-0.0008094489397038605,
-2.305663139586866,
0.021129462266930646,
"**",
0.000024865467736723268
]
]
}
],
"horizon_sweep": {
"table": {
"title": "Horizon sweep (panel FE): cumulative forward returns vs signal",
"columns": [
"Horizon (days)",
"β(score_mean)",
"t",
"p",
"Sig",
"R²"
],
"rows": [
[
1,
-0.00013323464208029765,
-1.2835202416152551,
0.1993098726609117,
"",
0.000006083300493009425
],
[
2,
-0.0004885304137229944,
-3.4765983823071616,
0.0005078178783719178,
"***",
0.000042138168820704536
],
[
5,
-0.000616066069436158,
-2.564039541387773,
0.010346175703174898,
"**",
0.000027554434735455047
],
[
10,
-0.0008094489397038605,
-2.305663139586866,
0.021129462266930646,
"**",
0.000024865467736723268
]
]
},
"stats": {
"horizons": [
1,
2,
5,
10
],
"signal": "score_mean"
}
},
"n_tickers": 507,
"n_obs_panel": 261179
},
"methodology": [
"For each horizon h: compute cumulative forward return r_{t+1..t+h}.",
"Run panel FE regression on score_mean(t) (+ controls), cluster SE by ticker."
],
"sections": [
{
"title": "Specification",
"bullets": [
"For each horizon h: r_{t+1..t+h} ~ score_mean(t) (+ controls), within-ticker FE."
]
},
{
"title": "Data",
"bullets": [
"Universe: S&P 500 tickers in your snapshot pipeline.",
"Frequency: Daily.",
"Returns: log(P_t) − log(P_{t−1}) from ticker JSON prices.",
"Sentiment: score_mean from your sentiment pipeline (ticker JSON)."
]
},
{
"title": "Limitations",
"bullets": [
"Timing: after-close articles can contaminate same-day results; predictive tests mitigate this but do not fully solve it.",
"Causality: results are descriptive; omitted variables and measurement error remain.",
"Trading: no transaction costs / slippage / capacity modeled."
]
},
{
"title": "References (minimal)",
"bullets": [
"Newey, W. K., & West, K. D. (1987). A simple, positive semi-definite, heteroskedasticity and autocorrelation consistent covariance matrix.",
"Petersen, M. A. (2009). Estimating standard errors in finance panel data sets."
]
}
],
"conclusions": [
"Horizon profiles show whether any predictability is short-lived or persists over longer windows.",
"Interpretation: if coefficients decay quickly with horizon, sentiment behaves like a short-term reaction; persistent coefficients are more consistent with slow diffusion."
]
}