News labeler (RoBERTa student, v1)
Labels a news headline for financial-market relevance, in one pass:
- relevance gate: is this market-relevant news (probability)
- domains, multi-label, 12: geopolitics_conflict, tech_semis, equities_earnings, trade_supply, macro_growth, energy, banking_credit, monetary_rates, commodities_metals, crypto, housing_realestate, other
- impact: low / medium / high
- region: US, Europe, Europe_UK, China, Japan_Korea, EM_Asia, Gulf_MENA, LatAm, Russia_Ukraine, Global, other
One roberta-base encoder with four heads, distilled from 28,298 headlines labeled by an LLM
(Claude). It labels a live GDELT news stream on CPU. Code, training notebook and the pipeline that
runs it: github.com/barisarat/llm-labeled-news-pipeline.
Files
model.pt: PyTorchstate_dictof theMultiTaskclass in the repo's pipeline/student.py (not atransformerscheckpoint), about 500 MB.label_space.json: vocabularies, per-domain thresholds, gate threshold and validation metrics. The weights only load against this file.
Use
from pipeline.student import StudentLabeler # from the GitHub repo
m = StudentLabeler("models/student") # model.pt and label_space.json in this folder
m.label([{"source": "reuters.com", "title": "Oil jumps as Strait of Hormuz shipping halts"}])
Input is "source: title", at most 128 tokens.
Training
- 28,298 headlines labeled by the LLM teacher, from five windows across market regimes (crisis, calm, geopolitics-heavy, a crypto-catalyst week, a housing-settlement week): 5,341 relevant, 2,904 borderline, 20,053 not relevant.
- Training notebook: ml/training/train_student.ipynb; the labels: ml/data/training_data.jsonl.
Scores
Against the teacher on a held-out 15% split (seed=42), gate cutoff 0.86:
| Head | Metric | Score |
|---|---|---|
| Relevance gate | F1 / precision / recall | 0.83 / 0.80 / 0.86 |
| Domains | macro F1 | 0.80 |
| Impact | macro F1 | 0.66 |
| Region | accuracy | 0.76 |
Limits
- Scores are agreement with the LLM teacher, not with human labels.
- Trained on headlines from 184 outlets in five market-regime windows. Other sources and styles are out of distribution.
Model tree for barisarat/news-labeler-roberta
Base model
FacebookAI/roberta-base