← Work

In the lab · 2026 · Solo build

Finance Research OS

A nightly research pipeline for my own portfolio process.

A de-identified version — no real holdings — is headed for GitHub. Want an early look, or the architecture in detail?

What it is
A local system that pulls daily prices and news for every position, reads it against the thesis I've written for each, and files it into my knowledge base. A de-identified version, with no real holdings, is headed for GitHub.
The problem
My positions live across several brokerage apps, and my research and industry work lives somewhere else entirely. I wanted one place that held all of it — the theses, the sector work, and the holdings they're about.
What I built
A nightly pipeline pulls prices and news for every position, then reads it against the thesis I've written for each — flagging what's noise and what actually moves the argument. Everything files into the same knowledge base, where an AI agent can pull it up when I want to dig deeper. No real holdings or figures are shown here.
How it runs
What goes inThe data — bring your own
My records

The facts only I can supply — the system never guesses them.

  • Every trade, written down once
  • The companies I'm watching, and why
  • Cash in each account
The outside world

What the market publishes every day.

  • Prices and exchange rates
  • News and company announcements
  • Who reports earnings next
Every night, while I sleepThe engine — headed for GitHub
  1. Fetch the prices

    Pulls the day's closing price for every holding — and rejects numbers that look wrong, so one bad feed can't quietly poison the records.

  2. Rebuild the portfolio

    Recalculates what I own and what it's worth, straight from the trade record. Nothing is edited by hand, so the numbers can't drift from the truth.

  3. Read the news against my reasoning

    I keep a written case for every position — why I own it, what would change my mind. Each night's news is read against that case, with one question: does this change the argument?

    Most of it doesn't — dropped.
    What's left is kept, with a note on what it changes.
  4. File what matters

    What survives lands in one knowledge base, next to the research it belongs to — so nothing lives in a browser tab I'll never reopen.

  5. Send me the short version

    Evening and morning, an AI reads what the night produced and writes a briefing to my phone. Two minutes of reading instead of two hours of checking.

It fixes itself

A failed run retries on its own — later that night, and again in the morning.

It checks itself

Once a week the books are re-verified end to end, and an AI writes up what it noticed.

What comes out
A dashboard

Every position and the reasoning behind it, on one screen.

Briefings

They come to me — I never go looking.

Answers

Ask about any holding; the AI answers from the same records.

What lands on my phone
☀️ Morning brief — Tue 06:31
  • Portfolio — overnight −0.4% · TW 58% / US 34% / cash 8%
  • One holding reported after the US close — beat, guidance raised. Feeds thesis argument #2: pricing power holds.
  • Ahead — two earnings dates in the next seven days.
  • Worth a thought — if that guidance holds, the bear case loses its main leg. Re-read it before adding.

Translated from the Chinese original. Numbers and positions are illustrative — the real ones stay on my phone.

Stack
Pythonlaunchd (scheduled)JSONMarket + news retrieval
Results
  • Runs unattended; live for months
  • Thesis-as-a-ruler filtering: noise vs. what actually moves the argument
  • A de-identified version, with no real holdings, is headed for GitHub
What it shows
The same instinct as the builds above — build the tool instead of doing the work by hand — applied to my own investing process.