Open-source · Self-hosted alpha

Easy to buy.
Hard to know when to sell.

Plenty of tools help you find the next 10x stock. This one is for the harder question: what to do with the positions you already own.

MIT licensed OpenAI-compatible Docker ready
The PortVise app part-way through a review: the nine-agent pipeline shows eight of nine stages complete with their run times, and the progress panel streams each agent's output.
A real review of the sample book, eight of nine agents in. See what it decided
Why I built it

You bought it for a reason.
Does that reason still hold?

Once you own something it stops being an idea. It has a price you paid, a chart you have watched, and a story you have defended out loud. PortVise runs the argument again on every holding, without the sunk cost.

The thesis drifted

News, a competitor, or plain execution moved. Now you defend the position for a different reason than the one you bought it for.

A drawdown feels like being wrong

So you sell into it, even when nothing about the case has actually changed. Volatility is not the same thing as a broken thesis.

How a review runs

Nine agents. One decision you can audit.

A single prompt gives you a polished answer. It also blends facts, calculations, and opinion until you cannot tell where the conclusion came from. PortVise splits the review into three passes and keeps the reasoning channels apart, so they get the chance to disagree.

01

Collect

Prices, headlines, your portfolio, and the macro backdrop.

02

Challenge

Separate passes for risk, regime, and theme, then a check for contradictions.

03

Decide

Findings become ranked actions: reduce, exit, hedge, rotate, add, or monitor.

01

Planner

Sets the review plan and search priorities.

02

Data

Fetches live prices, headlines, and macro data.

03

News

Builds the macro and market context.

04

Risk

Concentration, factor exposure, and what breaks in a bad scenario.

05

Regime

Finds past periods that rhyme with this one.

06

Theme

Asks whether several holdings are saying the same thing.

07

Validation

Flags contradictions and missing inputs before anything ships.

08

Allocation

Argues the opportunity cost of sitting in cash.

09

Manager

Weighs it all and writes the ranked actions.

Make every position earn its place.

The memo says what to do, what the main risk is, when to look again, and what would change the answer. If it cannot make that case, it says so.

  • Reduce, exit, hedge, rotate, add, or monitor
  • A reason and a size for every position
  • The case for doing nothing, written down
This week

Keep the thesis. Reduce the concentration.

The AI case still holds up. The problem is that these holdings move together, so the downside is larger than any single thesis suggests.

Posture
Selective trim
Primary risk
Factor concentration
Revisit
After earnings
UrgentReduceNVDATrim toward 18-20%
WatchHoldMSFTThesis remains intact

Ten tickers can still be one bet.

Owning a lot of names does little when they all ride the same rates, the same liquidity, the same theme. This measures that.

Growth factorHigh
ConcentrationElevated
Rate sensitivityModerate

History rhymes often enough.

Match today's macro state against past periods and see what the portfolio did next. Context, not a forecast.

Match78%Q4 2018
Avg return+4.8%21 days
Max drawdown−9.2%21 days
The PortVise Daily Brief

Three small portfolios.
One review after the close.

Three portfolios in different styles, held in the open. PortVise reviews all three after the U.S. close and sends what it would do about them.

Run it your way

Your machine, your models,
your portfolio data.

Point PortVise at any OpenAI-compatible endpoint, whether that is a local LLM or a bigger hosted model. Run the web app with Python, or put the whole thing in Docker.

MIT licensed OpenAI-compatible Cloud or local models CLI and MCP access
portvise / quickstartbash
# Install dependencies
$ uv sync
$ npm install

# Start the portfolio advisor
$ uv run python run.py

✓ PortVise running at http://localhost:7860
Review the evidence

I open-sourced this because
I want to hear where it is wrong.

Follow the three portfolios after every market day, or read the code and tell me what it is missing.