VibeTrader

How It Works

A plain-language walk-through of the pipeline, with the exact formulas behind every number; click any number anywhere in the app to see its math.

The pipeline, step by step

1
Find stocks worth watching
Instead of only following a fixed list of big names, the app pulls fresh candidates from market screeners every day: small caps that just moved, stocks with unusual short interest, and the day's biggest gainers and losers. This is how it catches names most watchlists never would.
2
Read the news and chatter
Every run, it fetches fresh articles from financial news sites, official SEC filings, and social posts (Reddit, StockTwits). Each source has a "how much do we trust this" rating built in: a regulatory filing counts for far more than an anonymous forum post. Anything it's already seen (same source, same article) gets skipped.
3
Figure out which stock it's about
Each piece of text is scanned for stock symbols: a "$NVDA" cashtag, a bare "NVDA" mentioned near other stock talk, or the company's name spelled out ("Nvidia announced..."). One article can be about several stocks at once.
4
Score the text on 7 scales
For each stock mentioned, the text gets scored 7 different ways: how positive or negative it sounds (sentiment), how excited (excitement) or scared (fear) the language is, how certain the writer sounds (confidence), how fresh the news actually is (novelty), how much to trust the source (credibility), and how strongly retail traders are likely to react (retail reaction). This step blends a general sentiment model with a finance-specific one built to catch things like "beat estimates but cut guidance": wording that sounds positive but usually isn't.
5
Combine into one Vibe Score
All the recent scores for a stock (last 3 days) get averaged (weighted so more trustworthy sources count for more) and combined into a single 0–100 number. Click any Vibe Score in the app to see the exact arithmetic behind it.
6
Notice when something's unusual
A ticker's chatter is compared against its own normal baseline, not against other tickers, so an obscure stock jumping from 0 mentions a day to 15 stands out even though a mega-cap gets 15 mentions on a slow day. The overall market mood (trending up or down, how nervous options traders are) is also tracked, because the same setup means different things in a calm market versus a jumpy one.
7
Predict what happens next
Before saying anything about the future, the app looks for past situations that looked similar (same kind of sentiment, same kind of excitement, same kind of attention) and reports what actually happened to those stocks afterward. If fewer than 12 similar past cases exist, it says nothing rather than guess. This is intentionally the opposite of a bold, unfounded prediction.
8
Turn strong scores into trade ideas
A stock whose Vibe Score clears 62 becomes a concrete idea: buy at roughly this price, get out if it drops to this price, aim for this target. Each idea also gets a confidence number, which controls how large a position it's allowed to become.
9
Screen for well-timed options
Separately, the app looks for call and put options across the same Vibe-scored universe: the most bullish names get scanned for calls, the most bearish for puts, from about a week out to a few months out, no expiry cutoff. It ranks these by whether the contract is actually worth its price under the app's own Black-Scholes-based forecast, not by how easily the contract could double, which is a trap (cheap far-out-of-the-money contracts always look easy to double, and they usually expire worthless).
10
Practice with fake money
Every idea can be paper-traded (bought and sold with a simulated account, under the same position-size and stop-loss rules a real account would use) so the strategy can be judged on results before any real money is involved.
11
Grade itself honestly
A few days after each score and prediction, the app checks what the stock actually did and grades itself: was the direction right? How far off was the number? Once enough of these graded outcomes pile up, the weights in step 5 shift toward whatever has actually been predictive, rather than staying fixed at the original guesses forever.

A worked example

Why step 4 exists: a case that fools a plain sentiment model

"Acme Corp beats Q2 earnings estimates but lowers full-year guidance"

Shares fell in early trading as investors focused on the softer outlook despite the earnings beat.

A general sentiment model reads the word "beats" and calls this positive. But the app also runs a finance-specific check for guidance language: it detects "lowers full-year guidance" right next to an earnings event, recognizes that pattern as a "beat and lower", historically a case where the market reacts to the guidance cut, not the beat, and applies a penalty that flips the final sentiment negative.

This exact scenario is covered by an automated test, so a future code change can't silently break it without a test failing first.

Known limits

Read this before acting on a score

The scoring is rules, not a trained model. Weights started as hand-set guesses. They only begin adapting to real outcomes after 30 scored signals have matured, so early scores reflect assumptions rather than evidence.

Coverage is uneven. A ticker with two signals and one with twenty both get a score, but they are not equally reliable. The signal count is shown everywhere for that reason; click any Vibe Score to see exactly how many signals and what weights produced it.

Sentiment analysis can still misread text. It catches the classic "beats estimates, guides lower" trap (see the worked example), but it is not a person: sarcasm, unusual phrasing, or a genuinely novel situation can still fool it.

Predictions decline to guess when evidence is thin. Fewer than 12 historically similar cases and the forecast doesn't get made at all, rather than being made up.

Paper fills are optimistic. The simulator fills instantly at the last quote with a small slippage assumption. Real fills are worse, especially for thin names and options.

Novelty decays by clock, not by content. Twenty outlets rewriting the same wire story register as twenty documents, not one event.

Options scores can be negative on purpose. A contract can match the screened-for setup perfectly and still be a bad bet once its price is accounted for; see the Options Scanner page.

Signal weights

How much each of the 7 dimensions counts toward the Vibe Score. Click a row for the math. Lookback 72h.

Example: turning components into a score

The exact math behind every Vibe Score

Risk limits

Enforced on every paper entry; click any value for the sizing formula

Data sources

Connectors that need credentials are marked
yahoo_finance
Yahoo Finance market news RSS
cnbc
CNBC top news and markets RSS
marketwatch
MarketWatch top stories RSS
sec_edgar
SEC EDGAR current 8-K filings feed
stocktwits
StockTwits trending symbol stream
reddit
Subreddit hot posts: OAuth in production, public RSS locally
needs key
finnhub
Finnhub general market news with resolved tickers
needs key
x
X (Twitter) recent search
needs key
newsapi
NewsAPI aggregated headlines
needs key

Reddit blocks datacenter IPs on both its JSON and RSS endpoints, so it runs locally without credentials but needs OAuth keys to work on Vercel. X removed free read access. Connectors that fail are logged and skipped; the rest of the run continues. See the Sources page to add your own subreddits or RSS feeds, or to see exactly which subreddits and feed URLs each connector is pulling from right now.