View Source on GitHub ↗

The Daily Finance Brief

$0.60total LLM cost
Dailyruns before market open
0%best source win rate

The Problem

Every day, useful trade ideas are buried inside my Twitter timeline: scattered across dozens of accounts, diluted by noise, and surfaced by an algorithm that optimizes for engagement, not alpha.

Manual browsing takes hours and still misses things. The signal is there; the infrastructure to extract it isn't.

So I built a project to give me a Daily Briefing.

What lands in my inbox each morning

Daily Briefing — Mar 15, 2026
High Conviction Ideas
CRWD3 credible sources · high convictionstrong momentum
TTD2 credible sources · medium convictionemerging
Sector Themes
Defense / AI5 mentions across proven sources · ITA, BOTZ
Nuclear Energy3 mentions · URA, NLR
Watchlist
ABNBtop-tier source · worth a look
MELItop-tier source · catalyst upcoming

How It Works

Starting from 15 accounts I've traded from, the system maps their social graph to discover new sources worth tracking. The network grows continuously as new connections surface.

1

Discover

Map the social graph of seed accounts to find new sources

15 seeds → 45+ tracked, growing continuously
2

Collect

Pull tweets from all tracked accounts, only fetching new content

~90% reduction in API calls on daily runs
3

Extract

Two-pass LLM: quick filter, then structured data for tickers, direction, and conviction

6,080 tweets → 1,956 actionable calls
4

Score

Check each call against actual market performance at 30, 60, and 90 days

Bayesian composite builds source credibility over time
5

Deliver

Email a morning briefing with the highest-conviction ideas, sector themes, and watchlist

Daily via Resend, before market open

Network Discovery

Seed accounts Proven Established Preliminary

Decisions That Shaped the Project

Local LLM → API

Started with a free local model to avoid cost. But with 6,000+ tweets, 'free' meant a full day of runtime. Switching to gpt-4o-mini cut processing time by 95% for less than a dollar.

Before8-25 hours (Ollama, 5-15s/call)
After~50 min, $0.60 total (gpt-4o-mini)

Two-Pass Extraction

Most tweets aren't stock calls. A lightweight yes/no classifier runs first. Only the ~30% that pass get the expensive structured extraction.

BeforeStructured extraction on all 6,080 tweets
AfterFilter first, extract 30%, 70% cost savings

Why Idea Generation, Not Trading Signals

This tool tells me where to look, not what to buy. The scoring windows (30/60/90 days) are too short for rigorous quant research, and Twitter data isn't reliable enough for automated trading. But as a research filter that surfaces the ideas worth spending time on each morning, it's exactly what I needed.

Does the Scoring Work?

The whole system depends on credibility scoring actually separating signal from noise. Here's what the first run showed:

Top-Ranked Source
0%win rate
+0.0%avg excess return vs S&P 500
73 callsstatistically significant (p < 0.001)
vs
Lowest-Ranked Source
46%win rate
-2.1%avg excess return vs S&P 500
83 callsunderperforms market

That spread is the point. The scoring weights ideas from sources with proven track records, so the briefing naturally surfaces better ideas first.

Open Questions

Seed Bias

Network reflects my corner of fintwit. Broader seeding needed to generalize.

Out-of-Sample Validation

Need to split by time period to confirm scoring holds on unseen data.

Risk Adjustment

Measures return, not the drawdown path to get there.

Tech Stack

PythonPipeline orchestration
gpt-4o-miniClassification & extraction
SQLiteSingle-file database
yfinanceMarket data for scoring
RapidAPITwitter data collection
ResendEmail delivery
GitHub ActionsDaily scheduled runs
scipy / numpyBayesian statistics