← cd ../

Tesla vs. Rivian NLP

An NLP study of what Tesla's and Rivian's own language reveals about how each frames risk, performance, and outlook.

year
2025
status
shipped
role
Analysis & NLP pipeline
stack
Python, pandas, scikit-learn, NLTK, spaCy, PyPDF2, matplotlib, Loughran-McDonald, Google Colab

// the problem

Financial disclosures are written to be read, but nobody reads two years of 10-Ks and a pair of earnings calls line by line to see what changed. The question was whether the language itself — not the numbers — could be measured: does a company's framing of risk and performance shift year over year, and does it differ between a formal filing and a live call? Answering it meant getting clean text out of PDFs first, which is most of the work.

// approach

  • 01Extract: pull Item 1A and Item 7 out of each 10-K PDF by page range, and split each earnings transcript on its section markers into management discussion and Q&A. A callback that drops text by vertical position strips running headers and footers, which otherwise land in the middle of sentences and wreck the sentence counts everything downstream depends on.
  • 02Clean: multi-pass regex for HTML escapes, markdown artifacts, URLs, bullets, timestamps, ticker-date stamps, speaker labels, and parentheticals. Tables were pulled out of the 10-K sections by hand — a PDF table extracted as text is a stream of numbers that every one of these measures would happily score as prose.
  • 03Score: two sentiment lexicons rather than one — the finance-specific Loughran-McDonald dictionary, which exists because general word lists read 'liability' and 'aggressive' as negative when in a filing they are neutral, plus the general-purpose Bing Liu lexicon as an independent check, paired with a negation count as a hedging proxy. Then Gunning Fog for readability, TF-IDF cosine similarity for year-over-year drift, and TF-IDF keyword ranking for topics.
  • 04Compare: line the scores up across company, section, and fiscal year — the numbers are only interpretable against each other, since none of them has a meaningful absolute value.

// results

Net tone, full call
0.0 vs +1.3
Gunning Fog
12.2 vs 14.9
Item 7 topics kept YoY
8/10 vs 3/10

// reading the results

The most interesting number isn't the tone of either call — it's the gap inside Tesla's. Tesla scores net-neutral across the full call and net-positive in prepared remarks, but its Q&A is the only net-negative section anywhere in the study, carrying 89 negation-word hits against Rivian's 31. Prepared remarks are written in advance and reviewed by counsel; Q&A is not. The distance between the two is a rough measure of how much of a company's message survives contact with people asking questions it didn't choose. Worth flagging: those negation counts aren't normalized by length, so if Tesla's Q&A simply ran longer, part of the 89-vs-31 gap is word count rather than hedging. It points the same direction as the sentiment score, but the two aren't independent confirmations of each other.

Rivian is net-positive in every section and for every speaker, and its CEO's remarks are the most net-positive single measurement in the study (1.68, against 0.16 for Tesla's CEO). Read one way that's message discipline. Read another, it's exactly what you'd expect from a company that still depends on external capital: consistency is cheap, and the incentive to vary is close to zero. Low variance in tone can mean a business is going well or that its communications are tightly managed, and sentiment scoring cannot distinguish the two.

Rivian's call is measurably harder to read — 14.9 on the Gunning Fog index against Tesla's 12.2 — and the tempting reading is the one the finance literature on annual-report readability suggests, that denser language is where bad news gets buried. Here the boring explanation is more likely correct. Fog counts any word of three or more syllables as complex, and 'depreciation,' 'amortization,' 'profitability,' and 'incremental' all qualify. Rivian's call is denser because it's a call about accounting. The metric is partly measuring the subject matter, not the intent — a case where the number is real and the obvious interpretation is wrong.

Risk Factors barely move for either company between 2023 and 2024 (cosine similarity ≥ 0.98). That's less a finding about Tesla and Rivian than a finding about Item 1A: risk factor sections are lawyer-maintained boilerplate updated by exception. The similarity score's real value isn't the score, it's what it isolates — when 98% of the text is unchanged, the remaining 2% is a short list of what counsel decided was newly worth disclosing. Item 7 is where management explains its own results, and it moves more, asymmetrically: 8 of Tesla's top 10 topics carried over year to year against 3 of Rivian's. Tesla told the same story two years running; Rivian's operating narrative was substantially rewritten. Whether that's a company adapting or a company without a settled story is not something the text can answer by itself.

The keyword lists are the cleanest split in the study. Tesla's call ranks fsd, optimus, autonomy, unsupervised, lidar. Rivian's ranks cogs, capex, ebitda, gaap, incremental. Two companies in the same industry, in the same quarter, having almost entirely different conversations — with 'autonomy' the only word both lists share. The lists also expose a flaw worth stating plainly: several of the extracted 'topics' are proper nouns — Tesla's CFO, and analysts and their firms. TF-IDF rewards rarity, and a name mentioned twice on one call is rare. They're artifacts of who happened to be on the line, and a named-entity filter would remove them.

// what it says about two companies in one industry

Tesla and Rivian build the same product for the same buyers, and their language tracks lifecycle stage far more than it tracks quality. Rivian talks about COGS, capex, EBITDA, and GAAP because those numbers determine whether it reaches profitability before it runs out of money — that vocabulary belongs to a company whose job on a call is to demonstrate a credible path. Tesla talks about FSD, Optimus, and unsupervised autonomy because its valuation detached from the margin on this quarter's vehicles a long time ago — its job on a call is to keep the option value believable. Neither vocabulary is evidence of a better business. Each is evidence of a different burden of proof.

That reframes the tone results too. Rivian's unbroken positivity and Tesla's section-dependent swings aren't really the same measurement taken on two companies: a challenger raising capital and an incumbent defending a narrative are playing different games, and the same sentiment score means something different in each. It also makes the pairing itself shakier than it looks — these two differ in scale, product mix, profitability, capital structure, and whether they run energy and services businesses at all, so any language difference is confounded with everything else that's different about them.

The one genuinely portable takeaway is about attention rather than value. Language is a leading indicator of emphasis, and emphasis tells you what management expects to be judged on next. A company that spends its call on cost per vehicle is telling you the next several quarters will be scored on gross margin, not deliveries. That's useful for knowing which line to watch — and it is a claim about where to look, not about what anything is worth.

// why this isn't an investment case

Nothing in this study is connected to price. It never asks whether any of these measures relates to what the stock subsequently did, so every number is descriptive. Making even a weak claim would require an event study — abnormal returns around the filing and call dates, drift over the following weeks — with the hypothesis fixed before looking. Absent that, 'Tesla's Q&A was net-negative' is a fact about a transcript, not a fact about the stock. And the transcripts are public and machine-readable: any signal this simple is already being extracted by everyone else running the same dictionary, most likely within minutes of the call ending.

The sample is two companies, two fiscal years, one call each, with no baseline. A Fog score of 14.9 is uninterpretable on its own — high for an automaker, or ordinary? Only a percentile rank against dozens of peers across many quarters would say. The same is true of the sentiment percentages, which have no natural zero to sit against. Every comparison here is one number against exactly one other number.

Measurement error runs through all of it and is nowhere quantified. Both lexicons are bag-of-words: they score 'not strong' as positive and have no idea who is speaking. Gunning Fog is highly sensitive to sentence counts, and sentence boundaries in a transcript are an artifact of the vendor's punctuation. Syllables are estimated by counting vowel clusters rather than looked up. Page ranges and table removal were done by hand per document — fine for four filings, not reproducible for four hundred, and a place where the two companies' documents could easily be treated inconsistently. There isn't a confidence interval anywhere in the study.

Most fundamentally, the source is endogenous. This is management's own language about management's own performance, written by people who know it will be parsed exactly this way — by funds running this same Loughran-McDonald dictionary. It measures communication strategy, not the underlying business, and the companies with the strongest incentive to sound positive are precisely the ones that most need the capital. A firm can be upbeat and failing at the same time; nothing in this pipeline would catch that.

// what would complete the picture

Fundamentals and liquidity first, because they dominate everything else here. Gross margin split by segment (vehicles versus regulatory credits versus energy and services), average selling price against cost per vehicle, operating expense, free cash flow — and for Rivian the single number that outweighs every sentiment score in this study: cash on hand divided by quarterly burn, plus debt maturities and a history of dilution. No amount of tone analysis substitutes for a runway calculation.

Then operating results against promises: deliveries and production, ramp and capacity utilization, warranty and recall rates, capex against plan. Tracking guidance versus actuals over many quarters is also what would make the text work — with a multi-quarter series of tone alongside a multi-quarter series of guidance accuracy, you can finally ask whether optimistic language leads or lags delivery, per company. That turns a description into something testable.

Valuation and positioning, because being right about sentiment pays nothing if the price already reflects it: EV/sales and EV/gross profit, the growth rate implied by the current price, analyst estimate revisions and their dispersion, short interest, and the options-implied move into earnings.

A far wider corpus to make any of it statistically meaningful: every listed peer — GM, Ford, Lucid, and BYD and NIO for context — across 20-plus quarters, including 10-Qs and 8-Ks, plus proxy statements, since how executives are actually compensated predicts what they optimize better than what they say. That's the corpus that makes percentile ranks and return tests possible.

Data the companies don't produce, as an independent check on their story: vehicle registration data, configurator pricing and inventory, used-vehicle residual values, insurance and repair data, battery input costs, supplier commentary, and hiring postings. Plus the policy and macro layer that sets the ceiling for both — EV tax credit availability, tariffs, charging standards, and interest rates, since affordability of a $50k vehicle is largely a rates story.

And method upgrades: normalize every count per thousand words before comparing anything, filter named entities so analysts stop appearing as topics, replace TF-IDF with embeddings for similarity, run a finance-tuned transformer alongside the dictionary scores, and diff Item 1A at the sentence level so the output is the handful of sentences that changed rather than a single similarity number.

Which is the honest summary of what this is for. The output of this pipeline isn't 'buy Rivian' — it's 'read Tesla's Q&A closely, and read the topics Rivian dropped between 2023 and 2024.' That's a reading list, and it's a good one: a language layer is a triage tool that points a human at the paragraphs worth their time. The decision has to come from the numbers underneath them.

// notes

  • The bottleneck was never the modeling — it was getting clean text out of PDFs. Header and footer stripping, table removal, and section splitting took the majority of the work, and every measure downstream inherits whatever those steps got wrong.
  • A language study, not investment advice. Every figure here describes a document, not a company.