FactFolioSRC-AVAILABLE · MIT

Open source · runs 100% local · free forever

Every number,
traced.

FactFolio is a locally-run advisory system for Indian equity and mutual fund portfolios. Every BUY / SELL / HOLD / TRIM call is checked against your policy, before you ever see it — and traceable back to the exact tool call that produced it. No black box, no guesswork, no fees.

$ uvx factfolio init
$ cd factfolio
$ uvx factfolio report

No clone, no virtualenv — uv runs it. Prefer a single file? Grab a standalone executable →

needs a `claude` login for report/chat · not investment advice

Why trust it

What makes a number trustworthy here

Five things this system won't do, and one gate that enforces all of them.

  1. 01

    Every claim is checked before you see it

    A code-level gate rejects any recommendation citing a number that isn't present in that run's actual tool-call log — not a model promising to double-check itself.

    validator reads the audit trail
  2. 02

    The LLM never computes a number

    Weights, returns, tax, correlations, risk — all deterministic Python, same result every time. Agents reason and call tools; they never do arithmetic.

    reasoning ≠ arithmetic
  3. 03

    Seven agents, adversarially reviewed

    Six specialists analyse your portfolio from their own angle, then a devil's-advocate agent tries to tear every finding apart before it's allowed into the report.

    review before publish
  4. 04

    Your portfolio never leaves your machine

    Holdings, values, and quantities stay local, always. Market data providers see ticker symbols only — nothing more.

    0 uploads
  5. 05

    No forecasts, no predictions, ever

    No tool in this system outputs a price target. It hands you evidence — consensus, trend, ratios, correlation — and lets a policy and a panel of agents reason about it in the open.

    evidence, not prophecy

How it works

How a recommendation earns its citation

Six specialists analyse your portfolio in parallel. A seventh tries to tear their findings apart. Nothing reaches the report without a receipt.

holdings.csv + investment_policy.md reads market- analyst portfolio- auditor stock- researcher mf- analyst tax- strategist risk- officer six specialists, in parallel — each calls its own tools devil's-advocate adversarial review of every finding validator gate cites a real tool call? no citation rejected cited & passed reports/*.md
Findings that survive the devil's-advocate still don't reach the report unless the validator can trace every number in them back to a tool call in that run's own log.

Privacy

What leaves your machine — and what doesn't

Holdings, values, and quantities never cross the boundary. Market data providers only ever see the ticker.

your machine external services holdings.csv investment_policy.md memory/ + reports/ factfolio local process holdings, quantities, ₹ values — never sent NSE / BSE / yfinance ticker symbol only prices, fundamentals claude CLI report / chat only question + evidence analysis back
The only things that ever cross the boundary: ticker symbols out / prices & fundamentals back from market data providers, and — only when you explicitly run report or chat — a question plus its supporting evidence out / analysis back from the claude CLI you already control. Your holdings file never does.

Getting it

Pick how much you want installed

Three ways to run it, in order of how much ends up on your machine.

how much do you want on your machine? nothing persistent recommended no clone, no venv no Python at all single file, ~130MB unsigned build — OS will warn reading the code clone + dev setup for contributing uvx factfolio init cd factfolio && report download for your OS, then ./factfolio init git clone && uv sync --extra dev
All three run the same engine — the only difference is how much sits on disk. Every path still needs a separate claude login for report/chat.

uvx / pip

no clone, no dependency management

uvx factfolio init
cd factfolio
uvx factfolio report

standalone executable

no Python at all, ~130MB

chmod +x factfolio-macos-arm64
./factfolio-macos-arm64 init

clone + dev setup

for contributing or reading the code

git clone github.com/pankajads/factfolio
uv sync --extra dev