Explore more topics
News sentiment · Methodology

Stock news sentiment analysis: fine-tuning a cross-encoder for trading

Fine-tuned DeBERTa agreed with reference labels on 87.9% of 434 company validation examples, versus 74.5% for frozen Qwen embeddings. I scored 67.8M target pairs; trading results are next.

As of October 20, 2026

Jump to a section

TL;DR

Fine-tuning a model to read the company or industry together with the headline resolved target-specific errors that frozen Qwen embeddings retained. On a fresh test panel of 161 company and 351 industry examples, the final classifier agreed with Claude Haiku sentiment labels, written under my investor rubric, on 85.7% and 87.2% of them. Those are agreement rates with an AI teacher, and a human-graded acceptance set is the next step.

The backfill scored 67.79 million of 71.86 million target pairs. Estimated scoring fell to $3 to $5 after measured batches, compared with about $8,754 for the same distinct inputs using my language-model setup. Part 2 will test whether these scores improve trading returns after costs.

The results at a glance

Sentiment agreement on the same validation examples: frozen Qwen + MLP 74.5% and DeBERTa v1 87.9% on 434 company examples, 84.0% and 87.8% on 378 industry examples, 92.0% and 96.7% on 50 recent industry examples
Validation panel: agreement rates with the existing reference labels, frozen Qwen + MLP (Before) versus the mean of three DeBERTa v1 runs (After). The 434 company examples use SEntFiN's own labels. The TL;DR and the facts below use a different panel, the fresh v3 test.
Final v3 sentiment agreement, fresh test panel
Company: 85.7% (138/161). Industry: 87.2% (306/351).Agreement with Claude Haiku labels under my rubric, on stories outside training.
Final v3 relevance precision, fresh test panel
Company: 84.0%. Industry: 82.3%.Relevance asks whether a headline concerns the target; sentiment asks which direction it points.
Archive coverage
67.79M scored / 71.86M target pairs.4.07M pairs carry an unscored non-ASCII status.
Estimated scoring cost
$3 to $5 classifier / about $8,754 language model.Same 61.62M distinct inputs; the classifier estimate awaits the settled bill.

The final rubric improved company sentiment agreement from 82.6% to 85.7% and industry agreement from 82.9% to 87.2%. Company relevance precision moved from 86.6% to 84.0%, while industry precision rose from 77.8% to 82.3%. Each metric keeps its own task and evaluation population.

These results establish a practical way to measure news at archive scale. Trading returns after realistic costs are the subject of the follow-up experiment.

1. The question: can news sentiment improve a trading strategy?

News can move billions in one trading day
After the Cambridge Analytica revelations. Contemporaneous figures from CNNMoney; the move was measured over a trading day.

After the Cambridge Analytica revelations, Facebook shares fell nearly 7% on March 19, 2018. CNNMoney reported about $37 billion erased from the company's market value and about $5 billion from Mark Zuckerberg's estimated net worth that Monday.

I want to measure how company-specific news relates to later stock returns and whether a strategy can use it after costs. That requires consistent headline classification before the trading test.

Watch part 1: the methodology

Austin explains the methodology, model comparisons and cost estimates.

The dataset: headlines, targets and labels

GDELT's Global Knowledge Graph supplies the headline archive. The selected batches span September 22, 2019 through October 18, 2026. This is a headline-only model: each input pairs a headline with one company or industry.

The scoring archive holds 71.86 million deduplicated target pairs: 67.79 million scored and 4.07 million with an unscored non-ASCII status.

The v3 training file contains 21,703 rows, combining SEntFiN's human entity-sentiment annotations, cached Massive news labels, and labeled company/industry samples. Haiku relabeled selected examples under my investor rubric; SEntFiN author labels stayed unchanged. Unknown labels are masked per task.

For fresh data, I sampled 12,138 candidate pairs across 9,940 stories from the October 18 and 19 collector. Grouping related titles and URLs kept all targets for a story in the same split: approximately 80% training, 10% validation and 10% testing. Sampling excluded previously labeled stories, repeated pairs and non-ASCII headlines.

  1. One headline creates two labeled examples

    For "Extreme Networks' Agentic AI Push Is Fueling Gains Against Cisco, HPE", the saved HPE example has a negative reference label, while the Extreme Networks example has a positive reference label. The model receives the requested target with the headline, so each pair has its own answer.

2. The model comparison: read the headline with its target

A headline can help one company and hurt another. I therefore ask two questions about each company or industry: is the headline relevant, and is the news negative, neutral or positive for that target?

I first used Qwen3-Embedding-8B to turn headlines into vectors, froze those vectors, and trained a small neural-network classifier on top. Cached vectors made each new classifier fit take about a second. The retained company model reached 73.9% agreement even on its own 4,789 training pairs.

The winner-and-loser distinction exposed the problem. On the Extreme Networks headline below, the frozen approach called the news positive for both Extreme Networks and HPE. Fine-tuned DeBERTa-v3-base reads the target and headline together, allowing those words to interact before classification.

The fine-tuned model separated the two targets in this saved diagnostic example. The matched validation comparison above measures the broader change.

  1. Extreme Networks' Agentic AI Push Is Fueling Gains Against Cisco, << HPE >>

    Target: HPE. Right answer: negative. Embeddings approach: positive ✗. Fine-tuned model: negative ✓.

  2. << Extreme Networks >>' Agentic AI Push Is Fueling Gains Against Cisco, HPE

    Target: Extreme Networks. Right answer: positive. Embeddings approach: positive ✓. Fine-tuned model: positive ✓.

3. The measured results and their trade-offs

Read the explanation

The final model matched Haiku on 138 of 161 company sentiment examples and 306 of 351 industry examples. Stories were grouped before splitting so the same story did not appear in both training and evaluation. Validation chose the candidate before its fresh test was read. These numbers measure agreement with Claude Haiku labels under my stated rubric. I shaped that rubric by reviewing individual misses myself. For example, I decided that a Warren Buffett headline can be about Berkshire Hathaway and that an Elon Musk headline can be about DOGE. A human-graded acceptance set is the next step, and it will turn agreement into an accuracy estimate.

The rubric improved sentiment agreement while company relevance precision fell by 2.6 percentage points. Neutral company examples scored negative fell from 8 to 2; negative-to-positive reversals increased from 1 to 2 of 161 examples. The test panel had already been inspected under the previous rubric before it was relabeled.

The model also inherits the teacher's investor policy. Its commodity labels follow producers, routine product launches and law-firm notices are neutral, and acquisitions are neutral for the acquirer and positive for the target. Those choices define the trading input.

4. What else I tested, including fine-tuned baselines

Read the explanation

I fine-tuned other models before DeBERTa. On October 18 and 19, a fine-tuned ModernBERT encoder lost to the embedding classifiers: 75.5% versus 84.7% on 72 company test references, and 73.5% versus 85.8% on 54 industry references. That pilot had only 552 company and 412 industry direction labels to learn from. DeBERTa v1 trained on 7,635 direction labels.

On October 15, I also adapted a MiniLM relevance encoder and an earlier ModernBERT sentiment encoder to cached GDELT labels. Later I benchmarked a local Qwen3-4B model without fine-tuning, and compared XGBoost with the neural-network head on the same cached Qwen vectors. None of them replaced the frozen-embedding baseline at the time.

Each row uses its own evaluation panel. None of these panels is the 434 and 378 example validation panel or the 161 and 351 example fresh test behind the headline results, so compare each row only with the baseline numbers in the same row.

I did not test FinBERT. The ProsusAI FinBERT weights are licensed for noncommercial use only, which rules them out for NexusTrade. I also did not test LoRA fine-tuning of the Qwen embedding model itself, which would keep the 8B model's inference cost.

Show the table · 6 rows, 4 columns

Scroll sideways to compare all columns. Select a heading to sort.

Fine-tuned ModernBERT, October 18 to 19Pilot test: 72 company and 54 industry known directions, two-teacher AI labels, mean of 3 seedsCompany 75.5% versus 84.7% for the joint-embedding MLP (75.0% for the earlier MLP). Industry 73.5% versus 85.8% for the validation-selected MLP (95.1% for the earlier MLP).Lost. Trained on 552 company and 412 industry direction labels.
Fine-tuned MiniLM relevance encoder and ModernBERT sentiment encoder, October 15Fixed regression limits on Massive and GDELT validationMiniLM finished 1,024 steps, and every adapted checkpoint failed the regression limits. ModernBERT's evaluated step-128 checkpoint failed its Massive validation guard before I paused the run.Original weights kept for both.
Local Qwen3-4B (Q4_K_M), not fine-tuned, October 1972 recent company, 54 recent industry and 368 historical industry known labelsSentiment agreement 69.4%, 40.7% and 55.7%, versus 85.6%, 95.7% and 81.4% for the fitted MLPs. About 1.39 pairs per second on 1,147 pairs.Not promoted.
XGBoost on the same Qwen vectors, October 151,267 article and ticker reference pairs from 2,000 common test headlines, cached teacher scoresSentiment mean absolute error 0.1306 versus 0.1170 for the MLP at 20,000 articles (lower is better). Sign agreement 60.3% versus 65.5%.MLP kept.
FinBERTNot testedNo resultProsusAI weights are licensed CC BY-NC-SA 4.0, noncommercial.
LoRA fine-tuning of Qwen3-Embedding-8BNot testedNo resultWould keep the 8B inference cost.

Each row is scored on its own panel, so its numbers compare only with the baseline in the same row. None of these panels is the panel behind the headline results.

5. Production and cost: score the archive once, then catch up

What the completed backfill actually processed
All 64 completed bucket receipts agree with the partition total. The writer retained 4,066,324 rows with a non-ASCII status instead of emitting a score. Repeated text/target inputs reused inference within a bucket.

The completed backfill reconciles across all 64 partitions: 103.06 million raw headline-target matches became 71.86 million unique target pairs. It scored 67.79 million pairs and kept 4.07 million with a non-ASCII status. Repeated target/text inputs reused inference within a partition.

The classifier processed 61.62 million distinct inputs in 3.60 summed GPU-hours, averaging 4,756 inputs per GPU-second. The working scoring estimate fell from an initial $5 to $15 GPU budget to $3 to $5 including preparation after the measured buckets. The final provider bill is still outstanding.

Sending those same 61.62 million distinct inputs to Claude Haiku 5.5 Batch would cost about $8,754 at the recorded job prices. That estimate uses my measured average of 2,367 input and 95 output tokens per judgment, priced at $0.05 per million input tokens and $0.25 per million output tokens.

Teacher labels cost $4.38 in recorded spend. The v2 rented training run cost about $0.18; v1 and v3 trained on the M3 Max. Storage, collection, engineering and future relabeling sit outside the scoring estimate. Daily collection scores new unmatched work instead of rereading the archive.

6. What Part 2 will test

The next question is whether target-specific news sentiment adds useful information about later stock returns. Part 2 will report the trading experiment and its costs.

The comparison needs a strategy with sentiment and a baseline under the same trading rules, using a period held outside strategy selection. It must account for fees and execution costs, use news only after it was available, and decide how to handle missing coverage and syndicated copies. Returns, drawdowns and trading activity will show what the signal changes.

You can inspect the inputs now: open Apple's sentiment history, compare its positive, neutral and negative headlines, and check which days have coverage before choosing a rule.

Technical appendix: evidence and methodology

The final classifier agrees on 85.7% of company examples

The rubric improved sentiment, with a relevance trade-off
v2 selected model versus v3 selected model, evaluated under the v3 rubric. The sentiment rows measure agreement with Haiku labels on unseen stories. Company relevance precision fell by 2.6 percentage points.

The selected v3 model matched Haiku's sentiment labels on 138 of 161 company examples (85.7%) and 306 of 351 industry examples (87.2%). Stories were grouped before splitting so the same story did not appear in training and evaluation. Selection used validation; the candidate was frozen before this fresh test was read.

These figures measure agreement with a single AI teacher under a stated rubric. The stories remained outside training, but the test panel had already been inspected under the previous rubric before relabeling. A new future-source test will measure how the classifier handles later news.

The change has a measurable cost: company relevance precision fell from 86.6% to 84.0%. Neutral company examples scored negative fell from 8 to 2, while negative-to-positive reversals increased from 1 to 2 of 161 examples. The older industry validation, still labeled under the old policy, fell from 88.1% to 81.0%.

  1. Levi & Korsinsky Urges GoDaddy Inc. (GDDY) Shareholders to Act Before ...

    GoDaddy, law-firm notice. Labeled neutral. Before: negative. After: neutral.

  2. Did You Lose Money on Beta Bionics, Inc. (BBNX)? Levi & Korsinsky Urges ...

    Beta Bionics, law-firm notice. Labeled neutral. Before: negative. After: neutral.

  3. Lost Money on Innventure, Inc. (INV)? Join Class Action Before October ...

    Innventure, law-firm notice. Labeled neutral. Before: negative. After: neutral.

  4. Nvidia denies RTX 5090 discontinued claims amid ongoing supply shortages

    Nvidia, still wrong. Labeled neutral. Before: negative. After: positive.

  5. Alector (NASDAQ: ALEC) prices shares at a 7.3% premium in stock sale

    Alector, still wrong. Labeled neutral. Before: positive. After: positive.

A model call per match is the wrong cost structure

The frozen archive contained 103,055,832 headline-target matches. A target is the company or industry named by a match. One headline can have several targets, and repeated observations add more rows. The expensive unit is the headline-target judgment, not just a unique article.

Even a cheap language model has to read each input and produce an answer. The labels can differ too. For the same Google Play Fest headline and the same Alphabet target, my saved pilot has Claude Haiku 5.5 calling it positive while Claude Sonnet 5.5 calls it neutral. I needed an explicit investor rubric and a repeatable classifier.

I can put a price on that choice using my own relabeling job. Its 21,464 successful Claude Haiku 5.5 Batch requests used 50,801,133 input tokens and 2,037,386 output tokens. At the job's $0.05 per million input tokens and $0.25 per million output tokens, the sample cost $3.0494. That is about 2,367 input tokens and 95 output tokens per judgment.

  1. The saved model disagreement

    Google Play Fest is coming to shower app lovers with sweepstakes and big discounts. Target: Alphabet. Claude Haiku 5.5: positive. Claude Sonnet 5.5: neutral.

  2. Use the language model as a teacher

    Label a selected training sample and state the investor rubric.

  3. Use the specialist model at archive scale

    Train on those examples, test on separate stories, then save a score for each eligible target pair.

Show the table · 7 rows, 2 columns
Claude Haiku 5.5 BatchRecorded usage or price
Input rate$0.05 per 1M tokens
Output rate$0.25 per 1M tokens
Successful sample21,464 requests
Average input / output2,366.81 / 94.92 tokens
103,055,832 raw matches$14,641 estimated
71,858,132 unique target pairs$10,209 estimated
61,618,694 distinct model inputs$8,754 estimated

Archive costs extrapolate the measured sample's token lengths and recorded Batch prices. Repeated inputs, prompt length and model choice determine the total.

The classifier has two jobs

First it decides whether the headline is really about the requested company or industry. Then it classifies the news as negative, neutral or positive for that target. A headline about a rival winning business can have opposite answers for the winner and loser.

The continuous score is P(positive) minus P(negative), from -1 to +1. Relevance filters passing mentions before those scores become an indicator. A value near zero can reflect neutrality or offsetting class probabilities; it is useful to inspect the direction and coverage alongside the average.

Qwen made the first experiment quick and cheap

I started with Qwen3-Embedding-8B. It converts text into numerical vectors. I froze and cached those vectors, then trained small neural-network classifiers on top. Once the vectors existed, fitting another small head took about a second, making model variants inexpensive to compare.

That was a sensible first experiment: test whether an existing text representation already contains the distinctions this task needs. The earlier XGBoost-versus-MLP comparison used the same cached features and favored the MLP for sentiment.

The first model could not fit its own training data

The retained company MLP scored 73.9% on its own 4,789 training pairs. This training result exposed a fitting problem before I could even ask how well it generalized. Longer fitting and reweighting did not repair the examples that depended on which company benefited.

For MTNL's narrowing-loss headline, the nearest vectors grouped MTNL stories with mixed sentiment. My interpretation was that the frozen representation emphasized identity and topic more strongly than the relationship the classifier needed.

  1. MTNL snaps 18% post block deal on NSE

    Labeled negative. Similarity 0.93.

  2. MTNL fails to deliver every time: Hemen Kapadia

    Labeled negative. Similarity 0.93.

  3. MTNL on a roll, hits 52-week high; up 70% in 2012

    Labeled positive. Similarity 0.92.

  4. MTNL raises Rs 3,768.97 crore through bonds this fiscal: Government

    Labeled positive. Similarity 0.92.

  5. MTNL raises Rs 1.5k crore through 10-year Bonds

    Labeled positive. Similarity 0.91.

The replacement reads the target and headline together

Read the words with the target: matched validation
Focused frozen-embedding MLP versus the mean of three v1 cross-encoder runs, on the same validation views. These validation results guided selection; the fresh test below is a separate population.

I fine-tuned DeBERTa-v3-base, a model with about 184 million parameters, to read a target such as 'Company: HPE' together with the headline and its matched mention marked. A cross-encoder lets those words interact before it makes the classification.

On matched validation views, it improved on the focused MLP. The earlier ModernBERT pilot had lost with roughly 550 company and 410 industry direction labels. This run started with 7,635 direction labels and 8,639 relevance labels. Architecture and supervision changed together.

The training labels had bugs too

Changing the model also required cleaning the supervision. I masked 621 imported SEntFiN rows whose target binding was wrong, such as a stock index mapped to a company. Unknown direction stayed masked rather than becoming neutral. The author-provided sentiment labels were not rewritten.

  1. Sensex rangebound; top 20 intraday trading ideas

    Imported as National Spot Exchange Limited. Actually names a stock index.

  2. Nifty likely to trade in 7500-7700 range

    Imported as National Spot Exchange Limited. Actually names a stock index.

  3. Dow drops 300 points as US stocks plunge

    Imported as Dow. Actually names the Dow Jones index.

  4. FMC mulls centre-specific commodity forward trades

    Imported as FMC. Actually names a commodities regulator.

  5. LIC likely to pick 5 per cent stake in BHEL

    Imported as Lic Housing Finance Ltd.. Actually names Life Insurance Corporation.

Real news traffic broke relevance

Fresh collector traffic exposed irrelevant matches that curated training data barely contained. A sports headline mentioning silver medals is not evidence about the silver industry. Adding 12,138 fresh candidate pairs made the relevance classifier confront the actual traffic.

On the 850-pair fresh industry test, the old-data model accepted 811 pairs, including 333 labeled irrelevant. The fresh-data candidate accepted 562, including 104 labeled irrelevant. Precision rose from 58.9% to 81.5%. These are v1-versus-v2 relevance results, separate from the v3 sentiment results below.

  1. Para Asian Games: Mona Agarwal, Avani Lekhara secure gold, << silver >> in 10m air rifle standing

    Target: silver. Labeled not relevant.

  2. Analysis: For Trump, results have often revealed the << art >> of no deal

    Target: art. Labeled not relevant.

  3. Trump's << intel >> chief warns AI companies over rogue agents hacking websites

    Target: Intel. Labeled not relevant.

  4. Quakes clinch << playoff >> spot with draw vs. MLS-leading Nashville

    Target: sports and fitness. Labeled not relevant.

Show the table · 2 rows, 5 columns

Scroll sideways to compare all columns. Select a heading to sort.

Industry pairs (850, 481 truly relevant)333 of 811104 of 56258.9%81.5%
Company pairs (374, 248 truly relevant)82 of 33025 of 26475.1%90.5%

Before: trained on the old data. After: added the fresh labels. Counts derive from recorded precision and recall.

The labeler disagreed with itself

The teacher itself needed a policy. Reports of the same oil-facility strikes received opposite original labels for oil. I wrote an investor rubric, then had Haiku relabel 21,464 pairs for $3.05.

The rubric makes commodity prices follow producers, treats facility damage as negative, and keeps routine product launches and law-firm notices neutral. Buy, Hold and Sell ratings follow their stated direction. An acquisition is neutral for the acquirer and positive for the target.

  1. Russian oil sites ablaze as Ukraine launches more than 1,000 drones

    Original label for oil: positive.

  2. Ukrainian strike sparks major fire at Saint Petersburg oil refinery

    Original label for oil: positive.

  3. St Petersburg on fire as Zelensky defies Trump again with massive strike hitting oil depot

    Original label for oil: negative.

  4. Ukraine launches 1,000+ drones at St. Petersburg oil sites after Trump's energy ceasefire claim

    Original label for oil: negative.

More training made validation worse

Training loss fell every epoch, but validation peaked at epoch 3 on all three runs, so I kept epoch 3.

Show the table · 6 rows, 4 columns

Scroll sideways to compare all columns. Select a heading to sort.

Epoch 11.0950.8359discarded
Epoch 20.6510.8636discarded
Epoch 30.4630.8677kept
Epoch 40.3340.8524discarded
Epoch 50.2410.8592discarded
Epoch 60.1830.8643discarded

One v3 training run. Higher validation score is better.

The cost comparison: about $8,754 versus a $5 to $15 GPU budget

For the same 61.62 million distinct inputs, the language-model estimate is about $8,754. The specialist classifier's initial GPU budget was $5 to $15, or roughly $8.74 thousand less estimated compute. After the first measured buckets, the working scoring estimate fell to $3 to $5 including preparation. The provider's settled bill will give the final scoring cost.

Fresh labels cost $1.33, and the rubric relabel cost $3.05: $4.38 in recorded labeling spend. The v2 training run cost about $0.18 on a rented RTX A4500. The v1 and v3 runs trained on the M3 Max without an additional cloud GPU charge.

The daily CPU probe measured roughly 120 to 140 pairs per second. Actual daily cost depends on incoming volume, model load time, catch-up work and the machine's billed runtime. The archive estimate excludes storage, collection, engineering and future relabeling.

Show the table · 7 rows, 3 columns

Scroll sideways to compare all columns. Select a heading to sort.

Haiku 5.5 Batch, 61.62M inputsAbout $8,754Measured token usage extrapolated at the recorded Batch prices
Fresh teacher labels$1.33Recorded spend
Rubric relabel$3.05Recorded spend
v2 rented trainingAbout $0.18Recorded GPU estimate
Historical scoring, initial$5 to $15 GPU + about $1 CPUPre-benchmark estimate
Historical scoring, revised$3 to $5 totalWorking estimate after measured buckets
Historical scoring, final billUnverifiedExecution receipts do not settle billing

Dollar estimates and measured execution are kept distinct.

All eight saved diagnostic target cases

  1. Extreme Networks' Agentic AI Push Is Fueling Gains Against Cisco, << HPE >>

    Target: HPE. Right answer: negative. Embeddings approach: positive ✗. Fine-tuned model: negative ✓.

  2. << Extreme Networks >>' Agentic AI Push Is Fueling Gains Against Cisco, HPE

    Target: Extreme Networks. Right answer: positive. Embeddings approach: positive ✓. Fine-tuned model: positive ✓.

  3. Macquarie initiates neutral rating on Lupin

    Target: Lupin. Right answer: neutral. Embeddings approach: positive ✗. Fine-tuned model: neutral ✓.

  4. << TTML >> narrows down net loss to Rs 156.36 crore in Q3

    Target: TTML (Tata Teleservices). Right answer: positive. Embeddings approach: negative ✗. Fine-tuned model: positive ✓.

  5. << MTNL >>'s Q2 loss narrows to Rs 947 crore

    Target: MTNL. Right answer: positive. Embeddings approach: negative ✗. Fine-tuned model: positive ✓.

  6. Manufacturing, << Construction >> Add Jobs in New September Report

    Target: Construction industry. Right answer: positive. Embeddings approach: neutral ✗. Fine-tuned model: positive ✓.

  7. << Google >> antitrust lawsuit: Google wins dismissal of Chegg, Penske Media lawsuits over AI overviews

    Target: Alphabet (Google). Right answer: positive. Embeddings approach: positive ✓. Fine-tuned model: positive ✓.

  8. Google antitrust lawsuit: Google wins dismissal of << Chegg >>, Penske Media lawsuits over AI overviews

    Target: Chegg. Right answer: negative. Embeddings approach: negative ✓. Fine-tuned model: positive ✗.

Complete backfill timing and publication scope

The completed receipts reconcile exactly: 103,055,832 raw matches became 71,858,132 unique headline-target pairs. Of those, 67,791,808 received scores and 4,066,324 carried a non-ASCII status. That filter is a real coverage limit.

Inference used 61,618,694 distinct inputs. The saved buckets report 3.60 summed GPU-hours and a weighted 4,756 inputs per GPU-second, with bucket rates from 4,382 to 5,415. Partitioning took 529 seconds. GPU-hours add time across devices; they are different from elapsed time and billed machine-hours.

The production cutover record reports about 20.6 million headlines and 22.1 million ticker rows republished for 2019 through 2026. That ticker table is narrower than the company-and-industry scoring archive. Each daily collector pass scores new unmatched work rather than rereading the entire archive.

Dataset inventory and split ownership

Read the explanation

The archive retains GDELT observation times separately from publisher publication times, which need their own validation before a trading test. The archive counts describe several units. A GDELT observation is an occurrence in a source batch. A headline version is identified by its original URL and raw title. A headline-target pair adds a company or industry target. Story groups connect related titles or URLs for the training split, and repeated model inputs can share inference.

The initial training mixture included SEntFiN entity judgments, cached Massive/Haiku article-derived and headline-only labels, and separately labeled industry samples. The 621 imported SEntFiN rows with invalid issuer bindings were masked without rewriting the authors' sentiment labels. Missing target annotations were not treated as negative examples.

The fresh sample produced 12,101 valid Haiku labels. Its original labeled split contained 9,599 training rows, 1,230 validation rows and 1,272 test rows. The later 21,464-pair rubric relabel covered the fresh pool plus older pilot and industry examples. The v3 training file combines the training-owned rows with the retained earlier supervision; these job and file counts describe different populations.

Keyword matching limits candidate recall: an unnamed company may be absent even when the headline affects it. Syndicated headlines require story grouping or weighting, and the non-ASCII exclusion leaves 4,066,324 archive pairs unscored. The final test panel's previous inspection under the earlier rubric is recorded in the evaluation section.

Show the table · 9 rows, 3 columns

Scroll sideways to compare all columns. Select a heading to sort.

Historical GDELT observations330,330,294Source-batch observations in the completed raw archive
Unique URL + raw-title versions329,292,748Headline versions before target matching
Raw candidate associations103,055,832Headline observations matched to candidate targets
Unique target pairs in scoring output71,858,13267,791,808 scored; 4,066,324 non-ASCII status
Distinct model inputs61,618,694Repeated target/text combinations reuse inference
Final v3 TRAIN file21,703 rowsCombined training examples, with task-specific label masks
Fresh candidate sample12,138 pairs / 9,940 storiesOctober 18 and 19 collector additions
Valid fresh teacher labels12,101 pairs9,599 TRAIN; 1,230 validation; 1,272 TEST
Investor-rubric relabel job21,464 pairsFresh pool plus earlier pilot and industry examples

The labeled training collection and the archive being scored have separate roles. Counts come from the saved preparation, labeling and completed backfill records.

Methodology, data and costs

Input
"Company: name" or "Industry: name", plus the headline with the matched mention wrapped in << >>
Outputs
Relevance and sentiment, each loss masked when the label is unknown
Frozen-embedding approach
Frozen Qwen3-Embedding-8B vectors with a 3,079 to 128 to 64 to 3 classifier
Cross-encoder approach
microsoft/deberta-v3-base (184M parameters), 6 epochs, learning rate 2e-5, batch 32, max length 96
v1 training labels
7,635 direction and 8,639 relevance labels
Label repair
621 SEntFiN rows masked (Sensex and Nifty bound to an exchange, the Dow index, the FMC regulator, bare LIC, Nasdaq as an index); none relabeled
Fresh data
Collector additions for October 18 and 19: 89,509 headlines, 27,566 matches, 12,138 pairs in 9,940 stories, split 80/10/10 by story
Rubric
Commodities follow producers; facility damage is negative; premium rises help insurers; routine launches, filings and law-firm notices are neutral; ratings follow their direction
Versions
v1 old data; v2 adds fresh labels; v3 adds the investor rubric. Validation chose the checkpoint before the v3 test read. The same out-of-training test stories had already been inspected under the previous rubric.
Costs
Fresh labels $1.33; rubric relabel $3.05; v2 training on a rented RTX A4500 about $0.18; v1 and v3 trained on an Apple M3 Max

Continue exploring

Discussion

Sign in or create a free account to join the discussion.

No comments yet.