Dashboard
T
Good afternoon.
10 need you · $75,839.71 · not reviewed yet
Nothing checked yet today. Run review pulls fresh prices, re-scores every holding and watchlist name, records any verdict that changed, and stamps any call that has reached its horizon. It is the one action that keeps the record accumulating, because a mark can only be taken while this app is open.
Track record · 90-day marks
-no expectancy yet
Nothing has been marked at 90 days. The app cannot claim an edge it has not measured, and it will not estimate one from a shorter window to fill the space.
0 of ~139 marked calls (assumes a 2pt edge at 12pt dispersion, an assumption, not a measurement)nothing logged yet · every call
Marks

Nothing falls due in the next fortnight. Marks are taken automatically whenever the app is open and a call crosses 30, 90, 180 or 365 days, so the only thing required of you is opening it.

RISKAAPL17.3% of portfolio, over your 10% capover cap▶
RISKMSFT12.1% of portfolio, over your 10% capover cap▶
RISKNVDA18.1% of portfolio, over your 10% capover cap▶
RISKKO10.5% of portfolio, over your 10% capover cap▶
RISKSPY25.5% of portfolio, over your 10% capover cap▶
CASH-$12,500 idle, 16.5% vs 3% targetover target▶
DATA-5 prices over 3 days oldstale▶
REVIEWMSFTNo thesis written, and it's 12.1% of the book▶
REVIEWNVDANo thesis written, and it's 18.1% of the book▶
REVIEWKONo thesis written, and it's 10.5% of the book▶

Click any row for the reasoning. Nothing here places a trade. PerceptFolio has no broker connection and reports only what your own rules flagged.

Good afternoon.
Here's where things stand today.
Track record · 90-day marks
-no expectancy yet
Nothing has been marked at 90 days. The app cannot claim an edge it has not measured, and it will not estimate one from a shorter window to fill the space.
0 of ~139 marked calls (assumes a 2pt edge at 12pt dispersion, an assumption, not a measurement)nothing logged yet · every call
Portfolio value
$75,839.71
No live prices yet. Hit Refresh data
Cash to invest$12,500
Today's gain / loss-refresh for live prices
Total gain / loss$27,048.81+74.53% vs cost basis

Portfolio growth

PerceptFolio can only track what happens from here; it has no record of your portfolio before today. Hit Refresh Data (or just keep using the app) and this fills in day by day.

Stocks, ETFs & cash

By holding

★ Favorites. Stocks you're watching closely
Star any stock in Portfolio, Watchlist, or the Analyzer to pin it here for a quick daily check. Separate from your full Watchlist, which can grow long.
Today's signals
AAPL, BUY candidate
Quality 9/12 · Price 4/6 · You own this
MSFT, BUY candidate
Quality 9/12 · Price 4/6 · You own this
NVDA, BUY candidate
Quality 9/12 · Price 4/6 · You own this
KO, BUY candidate
Quality 9/12 · Price 4/6 · You own this

Add Holding

Before You Trade: What this does to the portfolio

Every BUY verdict in this app tells you what and never how much, and size decides the outcome more than selection does, you can be right about the company and ruined by the position. Nothing here is a forecast. It is arithmetic on the portfolio you already have.

Enter a ticker and a dollar amount. You'll get the position size, the cash left, the market exposure and the policy check. Before the money moves, not after.

Cash Available to Invest

Investment Thesis

Write down why you bought something and what would make you sell it, while you still remember. Six months from now the price will have moved and you'll be tempted to invent a reason for whatever it did. A thesis written in advance is the only thing that stops that.

Written 2026-09-14 at 9/12
At $328.21: risking 11.6% to make 15.8%, payoff 1.36×. You need to be right 42% of the time just to break even.
Probability the target is reached by the deadline
Model. N(d2)
22%
Chance of reaching $380 from $328.21 within 120 days.
Volatility 31%, measured from 60 of your own logged closes.
Drift 8.0%/yr (CAPM, beta 1.00).
Your own estimate
%
What you actually believe, before you saw the model.
Gap, logged
-
Put your own number in and the gap is saved with the thesis, then graded at the deadline.

How this can be wrong
It assumes returns are lognormal and volatility stays at 31% until the deadline. Both are false: real returns have fat tails, and this app's own GARCH panel exists because volatility clusters. Treat it as an order of magnitude, not a figure to two significant figures. It checks whether your target is plausible; it is not a forecast.

Four of these the app can act on
the target, the stop, the deadline and the quality threshold. The free text it can store but never read. The stop is what actually limits a loss, it turns "how often am I right" into "how much do I make when I'm right versus lose when I'm wrong", which is the number that decides whether the account grows. The deadline handles the third outcome nobody plans for: the thesis was neither right nor wrong, it just never happened, and the money sat there.
Your Holdings
Ticker Type Broker Shares Avg Cost Price Now Market Value Total Gain/Loss Verdict My Call
AAPLStockundefined40$171.2
auto
$13,128.4$6,280.4
+91.71%
BUY candidate
MSFTStockundefined18$402.55
auto
$9,182.16$1,936.26
+26.72%
BUY candidate
NVDAStockundefined60$64.8
auto
$13,707$9,819
+252.55%
BUY candidate
KOStockundefined90$61.1
auto
$7,992.9$2,493.9
+45.35%
BUY candidate
SPYETFundefined25$512.4
auto
$19,329.25$6,519.25
+50.89%
ETF

Price column is editable. Click in and type to set/override any price (required for mutual funds, useful if an auto lookup fails). Click any column header to sort, click again to reverse.

Quality Drift, which businesses are getting better or worse
Nothing logged yet. Hit Refresh data and PerceptFolio starts recording each holding's checklist score daily. The first comparison needs about a week.
What this list is for
Your sell rule fires when a company is already bad. This shows the ones on the way there, a score sliding from 10 to 7 across two quarters is a business deteriorating on your own criteria, often before the price reflects it. The scores were always being calculated; only the latest one used to be kept. This reads the daily log instead, so it starts thin and gets more useful every week you run a refresh.

Add a ticker

Everything here is auto-scored on every refresh, in a list or not. When one passes your buy criteria, you get an alert.

Watchlistdefault4

Every ticker is scored on each refresh whether or not it is filed into a list. Deleting a list keeps its tickers; they return to Watchlist.

New list

A ticker can sit in several lists or none. Deleting a list never deletes its tickers, they move to Unlisted and carry on being scored.

↓ Bought (logged here)$0
↑ Sold (logged here)$0
✓ Realized gain / loss$0
Dividends accrued (projected)$0never received, accrued at declared rates
Bought
and Sold add up the rows in the ledger below, nothing else. They only count trades you recorded inside PerceptFolio, so a position you typed in before the ledger existed won't appear, and Bought never goes down when you sell. They're a record of activity, not a statement of what you currently have in. For that, use Portfolio value and Unrealized gain / loss on the dashboard.

Dividend Income

How this is worked out
Worked out from your holdings automatically, nothing to log. The Dividends accrued figure above is a projection, not income, it accrues day by day from the rates below, so it grows the longer you hold, whether or not a payment ever lands. Finnhub's free tier doesn't expose actual payment dates or amounts, so this is an estimate at each company's current declared rate; it can't see a cut, a raise, or tax withheld.
No dividend-paying stocks detected yet. Analyze your holdings and any that pay a dividend will show up here automatically.
Transaction History
DateActionTickerSharesPriceAmountRealizedNote
No transactions yet. Every buy, sell, and dividend you record from here on shows up in this ledger, including buying more of something you already own.

This ledger starts from the moment you record a trade in PerceptFolio; it can't reconstruct purchases you made before adding them here. Deleting a row only removes the history entry; it does not change your current holdings.

How You Behave, the pattern in your own trading
Why this one analyses you
Everything else in PerceptFolio analyses companies. This analyses you. Anyone can get price history; nobody else has yours. These are the four questions the ledger can answer about your habits. How long you actually hold, whether you sell too early, whether you keep to your own cash rule, and whether you trade more when things get loud.
How long you actually hold
Needs at least three closed positions recorded in the ledger. You have 0. Sells of positions you added before the ledger existed can't be matched to a buy, so they don't count here.
Whether you sell too early
Nothing to measure yet. Once you sell something through PerceptFolio, it gets checked 30 and 90 days later to see whether it kept going without you.
Whether you keep to your own rules
Needs at least five daily snapshots. Those accumulate every time you run a refresh. Today your largest position is 25.5% against your 10% cap.
Whether you trade in bursts
Needs trades recorded across at least three different months.
Read the limits
All of this measures only what is in the ledger, which starts when you began recording trades here. Positions carried in from before are invisible to it. Sample sizes will be small for a long time, and a handful of trades cannot distinguish a habit from a coincidence. Nothing here is advice; it is a mirror.

Layer Deep: Who a company depends on

Put a company in the middle and map what it depends on. Suppliers to the left, customers to the right, similar companies below. Bubble size reflects how much of its business each relationship represents.

Enter a ticker above to build its map.

Add a Relationship

What's automatic and what isn't
Supplier and customer links have to be entered by hand. That data is assembled by vendors from filings and transcripts and sold at institutional rates, no free API publishes it. The 10-K is where to find it: any customer worth more than 10% of revenue must be disclosed, usually under "Concentration of Credit Risk" or in the risk factors.

The summary describes the relationship, not the company, so it reads correctly from both ends and is copied to the other company's map automatically. Edit it later on either side and the other side follows, unless you've already written something different there.

What's automatic and what isn't
The centre company's profile and the "similar companies" row come from Finnhub and fill in on their own. Suppliers and customers are yours to enter. Institutional holders were deliberately left out: the free source for that is quarterly 13F filings, which are up to four months stale, exclude short positions entirely, and would list Vanguard, BlackRock and State Street at the top of nearly every company you could look up. A list that says the same thing about everything isn't worth the screen space.

The Move, In Context

Loading
How the ruler works
The VIX is an annualised expectation of volatility. Divide it by the square root of 252 trading days (15.87, near enough 16) and you get the size of a typical day. This says whether today's move is ordinary or unusual for the current level of fear. It says nothing about direction, it's a ruler, not a forecast.

Calendar effects: Context, not a signal

not used in any verdict

Hindsight

Market Weather. Long-run valuation
Loading

Figures With No Free Feed

CAPE comes from Robert Shiller's spreadsheet and margin debt from FINRA. Neither publishes a free API, so these are typed in. Update them monthly; the cards show how stale they are.

Entering your own figure
A Buffett figure entered here overrides the one calculated from FRED. Worth doing. FRED's Wilshire series is a price index rather than a dollar market cap, so the calculated version tracks the right direction but isn't the textbook percentage. A number from a source that computes it properly is more trustworthy.
Read these as long-run expectations, not crash warnings
All three describe what returns over the next ten to fifteen years are likely to look like from today's prices. They have almost no power to time the next twelve months. The Buffett indicator has read "expensive" since roughly 2013 and CAPE has been above 30 since 2017, through years of large gains. Use them to decide how much to put in, not when to get out.
Your Call Scorecard. Is the checklist actually working?
TickerCalledCallScoresHeldPrice thenAt markStockSPYvs SPY (raw)βαVerdict
No calls recorded yet. PerceptFolio logs a call every time its verdict on a ticker changes, from the next Refresh onward; it can't grade calls it never wrote down.
How marks are captured
Marks are captured live: when a call crosses its 30/90/180/365-day anniversary and the app is open, the price and SPY at that moment are stamped onto the call permanently. Finnhub's free plan has no historical price lookup, so this is the only way to get a true fixed-horizon record, which means the record starts from today and builds forward. If a call's anniversary passes while the app is closed for too long, it is marked unmarkable and dropped rather than graded at the wrong holding period.

Loaded on demand, not on every page view. Each holding costs one API call and Finnhub's free tier allows sixty a minute. Cached for thirty minutes.

Scan a list of tickers

PerceptFolio doesn't browse the market on its own. Give it a list and it scores each ticker against your checklist. Scoring takes a few seconds per ticker to stay within Finnhub's free-tier rate limit, so this runs in the background; you can leave the tab and come back.

Presets are a fixed snapshot, not a live index feed. Membership can drift over time.
What this screener can and cannot see
Not a live scan of the entire market. Finnhub's free tier doesn't offer that. These are curated snapshots per sector (10–20 well-known names each), same honest caveat as the Dow 30/Mega-cap Tech presets above. Loading a sector fills the box below; you still hit Run screen to score them. Or just paste your own list below.
A rotating batch of ~20 from the ~350-ticker built-in universe, minus anything already in your Portfolio or Watchlist. Refreshes on a weekly cycle, some names carry over, some rotate out. Instead of dumping the whole list at once. Still just fills the box below. Hit Run screen to actually score them.
Results
TickerShare PriceQuality /12Value /6Momentum /4VerdictMy Call
Run a screen to see results here. Anything scoring at or above your buy bar (Settings) will sort to the top.

Analyze a Stock

ETFs: quality checks apply to companies, not ETFs. Use this for individual stocks.
Nothing analysed yet.
Enter a US ticker above. The Analyzer runs the 22 checks, shows what each one measured and whether it passed, and records the verdict as a call so it can be graded later. It is deliberately not a recommendation.

Compare Two Stocks

Are you paid for being different?

Two benchmarks. One asks whether your sizing beats doing nothing clever with the same stocks; the other asks whether any of it beats the index.

Portfolio Risk

Your single-stock scores can't see this: how concentrated you are in one sector, and how correlated your holdings are with each other (owning 5 stocks that all move together isn't 5 bets. It's 1). This uses extra API calls per stock, so it's calculated on demand rather than on every refresh.

Where your risk actually sits

Every holding's share of the portfolio's variance, against its share of the money. A 6% position in a violent name can own 20% of your risk, and no position-size percentage will ever show you that.

Sizing counterfactual. Same trades, different size
This is not a backtest, and the difference matters
It does not choose different stocks, trade on different days, or use a single price that was not already recorded here. Every ticker is one you hold, every date is one this app logged a close for, and every entry and exit stays exactly where it happened. The only thing changed is how many dollars sat in each position. A backtest has to invent prices for trades you never made; this invents nothing, which is why it is allowed to exist here and a backtest is not.
Check any stock's risk

Doesn't need to be in your Portfolio or Watchlist. Just check the risk/volatility profile of any ticker before you decide whether to add it.

Risk-adjusted return
What Sharpe measures here
Return per unit of volatility, from your own daily snapshots. Shown with its confidence interval, because a Sharpe ratio computed on a few months of data carries an error bar usually wider than the number itself, and a point estimate without one is the same false precision as a hit rate without a sample size.
Loss severity. VaR and Expected Shortfall

How bad a bad day gets, measured from your own daily history. These do not predict returns. They describe severity, which is what risk machinery is for, surviving being wrong, not being right more often.

01
Ranges. What the spread of outcomes looks like

These answer "where might this end up", not "what should I do today". Every one is a distribution under stated assumptions, and every one is wrong in a way the assumptions decide.

Monte Carlo projection

Simulates thousands of random possible futures based on estimated return and volatility, to show a realistic range of outcomes instead of a single guess. The return/volatility inputs below are assumptions you're setting. Adjust them to match your own view, they're not guaranteed numbers.

02
Signals. Rules that emit a position today

Not forecasts. A signal reads the prices in front of it and tells you how much to hold right now. It says nothing about where the price is going, and it is separated from the section above for exactly that reason.

Herizen momentum score
Four segments, not four lookbacks
The strategy as described draws lines from one week, two weeks, one month and two months ago to today, but those windows are nested, so the same recent days are counted in all four and a single sharp move pushes every line at once. A +4 built that way is one observation counted four times. This uses non-overlapping segments instead. Two months to one month, one month to two weeks, two weeks to one week, one week to today, so a +4 means four separate stretches each rose, which is a genuinely stronger statement.

Read this before you trust it

What the evidence actually says
The published evidence on price trends splits sharply by horizon. Momentum, winners keep winning. Is documented at roughly three to twelve months. At one week and one month the documented effect is the opposite: short-term reversal, where recent winners give it back. Three of this rule's four windows sit in that reversal band, which means the honest prior on it is somewhere between "no edge" and "negative edge", before costs.

That is why it is wired in as a position cap and nothing else. It can shrink a position the checklist already cleared. It cannot create a buy, block a sell, or change a verdict. A wrong cap costs you upside; a wrong verdict costs you capital, and this rule has not earned the right to cost you capital.

It is also being graded against two alternatives from today, checklist alone, this alone, and the two combined. On the Market tab. In ninety days that argument settles itself with numbers instead of citations.
Alerts
No alerts yet. Alerts fire when a watchlist stock becomes a buy candidate, a holding turns into a sell candidate, or a price target you set is hit.

Set a Price Alert

Price alerts you have set

No active price alerts.

Getting Started

A short pass over what each screen is for and the three things to do first. Shown automatically on a new account; replay it any time.

Appearance

☀ Light ☾ Dark

Market data API (Finnhub, free)

Prices, fundamentals and news come from Finnhub. Get a free key at finnhub.io/register (about two minutes) and paste it here, it stays in this browser and is never sent to NorthBridge.

Investment Policy

The limits this portfolio is run to. Command checks every holding against these and flags breaches. Set per account, so a client with a three-year horizon can run different limits from your own book, the same stock can be a buy in one portfolio and a hold in another.

How much of the whole portfolio a single position is allowed to put at risk. With a stop set; this is the most you lose if it hits. Without one, it sizes by volatility instead. A flat cap treats a quiet utility and a violent semiconductor as the same bet; this doesn't.

Buy / Sell Rules

Why changing a bar splits the record
Changing a buy or sell bar creates a different system. Every call graded before the change was made by one that no longer exists, so you'll be asked what you expect the change to do and what result would prove it wrong. Before you see any data. That's the only defence against searching a small sample until something looks significant.

Rule Change Log

Every change to the buy or sell bars, with the prediction you made at the time. Read it back when a change is a few months old and check whether what you expected is what happened.

No rule changes recorded. Every call in your scorecard was made by the same system, which is the cleanest a record can be.

Copy Holdings / Watchlist to Another Account

Copies from the account you're in right now into another one on this browser. Useful for cloning your own list into a second account. It copies the positions and tickers only; cash, transaction history, dividends, alerts, and settings are left alone.

Merge adds anything they don't already have and leaves their existing positions untouched. Replace wipes the selected lists on the target account first; that can't be undone, so it asks first.

Sync Across Your Devices

Keeps this account's holdings, watchlist, history and settings the same on your phone and your computer. Paste the same two values on every device. Setup instructions are in SYNC-SETUP.md.

Not connected on this device.

How sync behaves
Once connected it syncs automatically, when you open the app, a few seconds after you make changes, and when you close the tab. This is whole-account last-write-wins, not a merge. If you edit on your phone and your laptop without letting them sync in between, the device that saves last overwrites the other. It warns you before clobbering something newer, but the safe habit is to open the app on a device and let it sync before you start editing there.

Backup / Restore

Your data lives in this browser only. Export regularly, and import on a new device to move everything over.

Danger Zone

Audit

What this install actually is, as opposed to what any screen claims. Anything red is a promise this copy is not currently keeping.

Loading
0
PerceptFolio is an educational analysis tool, not financial advice. Data via Finnhub may be delayed or incomplete. Always verify before trading. Signals are rule-based scores of your own checklist, not predictions.