st-ox
st-ox
Stock Portfolio Tracker

Sign in

No account? Register
Free · No credit card required

Know your portfolio.
Stay ahead of the market.

Track stocks across US and European markets, screen for quality across 12 exchanges, build with model portfolios, gauge whether the market is expensive, and monitor your returns in any currency — all in one private, secure app.

st-ox.com
Invested
€14,820
8 lots
Current Value
€17,340
live quotes
Total Return
+€2,520
+17.0%
Daily Change
−€84
−0.48%
Holdings
Ticker Shares Value Return Status
AAPL
Apple Inc.
10 €2,840 +12.4% Live
MSFT
Microsoft Corp.
5 €2,190 +8.7% Live
IBCH.DE
iShares Core MSCI World
20 €4,620 +22.1% Live

Everything you need. Nothing you don't.

Built for self-directed investors who want clarity without complexity.

New
Smart Screen
Find stocks across 12 markets — US, Europe, Tokyo, Hong Kong — ranked 0–100 on quality, growth, value and momentum, with Quality, Emerging Growth, Capital Preservation and Microcap Survivors presets. Plus opt-in US day-trading scans.
Multi-market quotes
US, European, and global stocks. Prices fetched live from Yahoo Finance with automatic currency conversion.
Multi-currency portfolio
Buy in USD, EUR, GBP — view everything in your chosen display currency. FX rates updated daily.
Technical analysis
RSI, RVI, Relative Volatility, OBV, HV, 200-day MA, 52-week range — 7 signals summarised into a single actionable verdict.
Trailing stop monitor
15% trailing stop calculated from your buy date. Visual alert when a position drops below its rolling high.
Rebalancing tool
Set target allocations and instantly see how much to buy or sell to bring your portfolio back into balance.
New
Model portfolios & What-if
Seven ready-made allocations — All-Weather, Permanent, Income and more. Load one into Rebalance, or use the What-if tab to project a lump sum or monthly plan into pessimistic / expected / optimistic outcomes.
New
Market valuation
See whether the market is expensive vs. its own history — price-vs-trend across the US, Europe and Japan, plus the Buffett Indicator and Tobin's Q, rolled into one verdict.
Private and secure
Your data is stored securely in your account. No ads, no tracking, no third-party auth — just you and your portfolio.

Frequently asked questions

Everything you need to know before you start.

Yes, completely free. No credit card required, no ads, no hidden fees. Create an account and start tracking immediately.

st-ox uses Yahoo Finance ticker format and supports all major exchanges: US (Nasdaq, NYSE), Germany (Xetra), UK (London), Estonia (Nasdaq Tallinn), Latvia (Nasdaq Riga), Lithuania (Nasdaq Vilnius), Finland (OMX Helsinki), Sweden (OMX Stockholm), and many more worldwide.

Live quotes are fetched from Yahoo Finance. Prices are cached for a configurable window (5 minutes to 6 hours) and automatically refreshed when stale. You can also force a manual refresh at any time.

Smart Screen is a built-in stock screener that finds companies across 12 markets — the US, London, Paris, Frankfurt, Amsterdam, Milan, Switzerland, Stockholm, Copenhagen, Helsinki, Tokyo, and Hong Kong. Each stock must pass a set of hard gates, then the survivors are ranked 0–100 on four factors, capped so no single sector dominates. Four presets — Quality Compounder, Emerging Growth, Capital Preservation (defensive, low-volatility dividend payers) and Microcap Survivors (the penny/microcap end, filtered for companies that can fund themselves) — let you choose the style, and there are opt-in US day-trading scans too. It's an idea generator, not investment advice.

The Models page offers seven ready-made example allocations — Wealth Preservation, Growth, Ivy Portfolio, All-Weather, Income, Permanent Portfolio and EUR-Hedged Global — that you can load straight into the Rebalance tool. An EU / US investor toggle switches every model between euro-listed UCITS and the equivalent US-listed ETFs, so you can build the same strategy with whichever instruments you can buy. The What-if tab projects a lump sum (and optional monthly contributions) over a chosen horizon, showing pessimistic / expected / optimistic outcomes for each model with an inflation-adjustable view. These are hypothetical illustrations, not forecasts or advice.

The Valuation page shows long-horizon gauges of whether the market is expensive versus its own history: a price-vs-trend chart you can switch between the US, Europe, Germany, France, the UK and Japan, plus the US Buffett Indicator (market cap to GDP) and Tobin's Q ratio. Each is shown with standard-deviation bands and rolled into an overall verdict. They're useful for setting long-run return expectations, not for market timing.

Yes. Each lot stores its own cost currency — you can hold USD stocks, EUR ETFs, and GBP shares all in the same portfolio. Live FX rates convert everything into your chosen display currency automatically.

Yes. Dividends paid since your buy date are fetched automatically from Yahoo Finance, shown per position in the holdings table, and folded into your Total Return (with the capital-only and dividend portions broken out in the card's sub-text).

The ticker detail chart computes RSI (14), RVI (10), Relative Volatility (14), OBV, Historical Volatility, 200-day moving average, and 52-week range position — combined into a single Buy / Hold / Caution signal.

Your portfolio data is stored in a private cloud database tied to your account. Passwords are hashed with PBKDF2 (100,000 iterations). No third-party login, no ads, no data sharing.

Yes. st-ox is fully responsive and works in any modern mobile browser — no app download required.

For each position, st-ox tracks the rolling price high since your buy date and alerts you (red left border on the row) if the current price drops more than 15% below that high — a classic risk management signal.

Yes. You can import holdings from a CSV file in the format: ticker, shares, avgPrice, buyDate, currency. Missing price or date fields are filled in automatically from Yahoo Finance where possible.

Ready to take control?

Create your free account in 30 seconds.

st-ox — Free Stock Portfolio Tracker
Home Guides Contact Privacy Policy Terms of Use
© 2026 st-ox.com
Confirm

Welcome! Import existing data?

We found portfolio data saved in this browser. Would you like to import it into your account so it syncs across devices?

st-ox
Dashboard
Holdings
Watchlist
Analyse
Screener
Models
Valuation
Options
Closed
Settings
Theme
Pro soon
Feedback
Admin
User Guide
Sign Out
Collapse

Dashboard

Invested
-
Current Value
-
Total Return
-
Daily Change
-
Data Quality
-
Quotes
-
FX
-
Display Currency
-
Transaction-Aware Portfolio Value
Each lot is held flat at its purchase cost until its buy date, then tracks market price — so buying a lot doesn't look like a gain. Cash and undated lots are held constant across the range.
Allocation
Market Sentiment
Loading…

Holdings

Cash
No balance
This is a sample portfolio. Real tickers and real historical prices, but the share counts are made up — it's here so you can see the app working.
Holdings
Quotes include source currency, last update, and missing data state.
Ticker Shares Cost Price Value Daily Return Ann. Div. Status
Nothing here yet

Add what you own and every page fills in — live value in your currency, returns, dip-buy signals and risk alerts.

The sample uses real tickers across four currencies so you can look around before entering anything. One click removes it.

Search
Add Holding
A new ticker creates a holding; an existing ticker adds another lot to it. Cost currency is saved per lot so mixed-market portfolios calculate correctly.
Auto-fill uses the quote currency returned by the data source.
Used for the Dashboard's By type allocation view. Auto-detect classifies from market data; set it only to override a wrong bucket.
CSV Import
Format: ticker, shares[, avgPrice, buyDate, currency, note] — only ticker and shares are required.
Drop CSV here or click to browse

Watchlist

Tracked Tickers
Loading watchlist…
Search

Analyse

Symbol:
Technical Analysis
Fundamental Data
Profile

Model Portfolios

⚠ Hypothetical illustration only — not a forecast, guarantee, or investment advice. It simulates returns from simplified long-run return and volatility assumptions; actual results will differ and you can lose money. Amounts are shown in your display currency.

Market Valuation

Long-horizon valuation gauges answering "is the market expensive vs. its own history?" — useful for setting expectations, not for timing. The price-vs-trend gauge is switchable across regions; the Buffett Indicator and Q Ratio are US-only (no comparable free data exists for other markets).

Loading valuation data…

⚠ Equity valuation metrics don't map directly to bond-heavy or hedged models, and the Buffett Indicator / Q Ratio are US-only. They are notoriously poor market-timing tools (valuations can stay stretched for years); treat them as context for long-run return expectations and drawdown risk, not buy/sell signals. Not investment advice.

σ (sigma) = standard deviation — how far a reading sits from its own historical average. +2σ means well above the norm (expensive); −2σ well below (cheap). Roughly 95% of history falls within ±2σ, so beyond it is genuinely extreme.

Smart Screen

A multi-factor screen that ranks US stocks on quality, growth, value and momentum — then caps any single sector so the list stays diversified.

⚡ Day trading — high risk. These scans surface today's unusual-volume movers on the market selected above, to help you build a watchlist. The data is delayed (~15 min) and for idea generation only — not a real-time trading signal, and there's no Level 2, VWAP or news here. Most day traders lose money; never trade a name you haven't checked on a live platform first.

Options Strategy Builder

Build a multi-leg position and see what it pays at expiry — breakevens, max profit and loss, probability of profit and the Greeks. Start from a preset or add legs by hand. Prices come from the live option chain where available; anything you type overrides them.

⚠ Options can lose more than you put in. Short calls and naked legs carry theoretically unlimited loss, and every number here is a model estimate — Black-Scholes with one volatility per leg, ignoring early assignment on American options, dividends, commissions, margin and slippage. This is an educational calculator, not trade advice or an execution tool. Positions are not saved to your portfolio.

Underlying

Strategy

Saved strategies

Legs

On Action Type Strike Premium Qty IV % Cash flow

Admin

Operator view of the account base and the feedback queue. Archiving is how the queue gets cleared — deleting destroys the record, and feedback is a corpus worth keeping.

Loading…
st-ox — Free Stock Portfolio Tracker
Home Guides Contact Privacy Policy Terms of Use
© 2026 st-ox.com
Settings
Display
Account
Danger zone
Permanently erases your account and everything tied to it — holdings, cash, trade history, watchlists, saved settings and any feedback you've sent. This cannot be undone and there is no backup.
Edit Lot
Applies to every lot of this ticker in the By type allocation view.
-
-
Send Feedback
Bug report, feature request, or anything on your mind.
st-ox Pro is coming
st-ox stays free. I'm exploring an optional Pro tier — tell me what would make it worth it and you'll be first to know. Nothing to pay, no commitment.
Which would you actually use?
What feels fair per month?
You're on the early list
Thanks — this genuinely shapes what gets built. I'll reach out before Pro launches.
User Guide

What is this?

st-ox is a web app for tracking a multi-currency stock portfolio. Your data is stored in a secure cloud database tied to your account — sign in from any device and your portfolio is there.

Navigation

The app is organised into eight pages accessible from the left sidebar:

  • Dashboard — summary cards, portfolio value chart, allocation donut, and a market sentiment gauge.
  • Holdings — holdings table, cash panel, search, add lot, and CSV import.
  • Watchlist — a saved list of tickers with live price and daily change.
  • Analyse — TradingView Advanced Chart, Technical Analysis, and Fundamental Data for any symbol.
  • Screener — Smart Screen: a multi-factor screen across 12 markets with Quality Compounder, Emerging Growth, Capital Preservation and Microcap Survivors presets, plus opt-in US day-trading scans (momentum / gappers / low-float).
  • Models — a library of example model portfolios (Wealth Preservation, Growth, Ivy Portfolio, All-Weather, Income, Permanent Portfolio, EUR-Hedged Global) you can load into the Rebalance tool, plus a 🎲 What-if tab for hypothetical projections.
  • Valuation — long-horizon market-valuation gauges (price-vs-trend across regions, plus the US Buffett Indicator and Q Ratio) with an overall verdict.
  • Options — a strategy builder for evaluating multi-leg option positions: payoff at expiry, breakevens, max profit and loss, probability of profit and the Greeks.

The bottom of the sidebar holds a market open/closed indicator (US hours), a Theme toggle (light / dark), Settings, Feedback (or Admin for admin accounts), User Guide, and Sign Out. On desktop, Collapse shrinks the sidebar to an icon-only rail (click again to expand); on mobile the sidebar becomes a hamburger overlay.

Account & sign-in

  • Register with an email and password. No third-party login required.
  • Your session is remembered securely via a cookie — you stay signed in across page reloads.
  • Use Sign Out at the bottom of the sidebar to end your session. Signing out clears this device's locally cached portfolio data; signing in as a different account also clears the previous account's cache, so nothing leaks between accounts on a shared browser.
  • When signing in for the first time on a new browser, the app offers to import data previously saved in that browser's local storage (if any).
  • To change your email address or password, open Settings → Account. Both changes require your current password.

Dashboard

  • Summary cards — Invested, Current Value, Total Return, Daily Change — all converted to your display currency. Invested is the cost basis of your current holdings plus any cash held; Current Value is their market value plus cash. Total Return is the price-based capital gain/loss on the holdings (cash nets out) plus dividends received since each lot's buy date; the card's sub-text breaks out the capital-only figure and the dividend portion, and per-ticker dividends also appear in the Holdings table.
  • Status strip — Data Quality, Quotes freshness, FX status, Display Currency.
  • Portfolio Value chart — range buttons 1M / 3M / 6M / 1Y. Each lot is valued from its buy date forward (forward-filled across non-trading days), and the latest point uses live quotes so the chart's right edge matches the Current Value card. Cash is included at its current balance and undated lots span the full range — both estimated as constant, since no per-day cash history is stored. The vs benchmark… selector overlays a comparison line rebased to your portfolio's starting value: a cash / deposit baseline — a EUR or USD money-market line (tracking the euro overnight rate or short-dated US T-bills), i.e. roughly what the money would have earned in a bank deposit at the risk-free rate or an equity index (S&P 500, Nasdaq 100, MSCI World). The overlay is total-return (dividends reinvested), so it's a fair "what if I'd parked it instead" comparison.

    Green or red here means something different from Total Return. The line is coloured by comparing its right edge to its left edge — i.e. movement across the range you've selected — and the small label above the chart states it outright, e.g. +0.6% over 1M. Total Return instead compares today's value against what you actually paid, over your whole holding history. So a portfolio still below its cost basis can show a green line after a good month: it's up over the window, but not yet back to break-even. Switching the range button changes the label and can flip the colour, while Total Return never moves — that's expected, not a glitch.
  • Allocation donut — current weight of each holding including cash positions. Use the By holding / By type toggle to switch between per-ticker weights and a breakdown by asset class (Stocks, Fixed income, Real estate, Commodities, Crypto, Cash). Types are detected automatically from market data; you can override a holding's class in its Edit Lot form (or when adding it) if it lands in the wrong bucket.
  • Market Sentiment — a VIX-based gauge (below the allocation donut) showing the broad market mood. See Market Sentiment below.
  • Journal (top right of the page) opens your Trading Journal — ledger, realised P&L and analytics. See Trading Journal below.
  • Use Refresh (top right of the page) to force an immediate quote update. Prices also update when you open the app and when you return to the tab — see Data freshness below.

Holdings page

  • Cost — total invested, converted to display currency.
  • Daily — change since previous close.
  • Return — total gain/loss since purchase.
  • Ann. — annualised return (requires a buy date on each lot).
  • Div. — dividends received since your buy date (Yahoo Finance data).
  • Analyse button — opens the Analyse page with that ticker pre-loaded (chart, technicals and fundamentals).
  • Signal dots — two coloured dots next to each ticker name. The first dot is the technical signal (green = Buy, yellow = Hold, red = Caution) computed from 7 indicators; it loads automatically on page load, after adding a lot, and after Refresh. The second dot is the analyst consensus (requires a Finnhub API key in Settings); it loads in the background after the technical dot — if it hasn't appeared yet, opening the ticker detail modal forces it immediately. Hover either dot for a tooltip.
  • Red left border — price is below its trailing stop (the rolling high since your earliest buy date, less your Trailing Stop % from Settings; 15% by default).
  • Click ▶ on a multi-lot row to expand and see individual lots.
  • Journal — opens your Trading Journal (ledger, realised P&L and analytics). See Trading Journal below.
  • Rebalance — set a target % per ticker; the app calculates whole shares to buy or sell.
  • Analyse with AI — copies a structured portfolio summary prompt to your clipboard for pasting into any AI assistant.
  • AI research prompt (the ✨ icon on each row, also on Watchlist and Screener rows) — copies a ready-made equity-research prompt for that one company, prefilled with your position, its signals and its screener metrics. See AI research prompt below.
  • Cash panel (above the table) — track cash balances per currency; deposit with + Add Cash, or withdraw / clear per row. See Selling & cash below.
  • "as of HH:MM" (top right, beside ↻ Refresh) — how current this table is. It reports the oldest quote you hold, so it can't flatter; hover a row's Status badge for that one ticker's own time. See Data freshness below.

AI research prompt

  • The ✨ button on a Holdings, Watchlist or Smart Screen row copies a quick take prompt for that ticker — red flags, a bull-vs-bear debate, and a two-minute briefing. That's the triage depth a screener row calls for.
  • Open the ticker detail (click the ticker name) for the choice between Quick take and Deep dive. The deep dive is the full modular report: business overview, latest earnings, red flags, moat, valuation vs peers, DCF assumptions, catalyst calendar, management quality, bull vs bear, a plain-language checklist, a briefing and a composite score against its peers — twelve sections in a fixed order.
  • The prompt is prefilled with what the app already knows: the live price, 52-week position and 200-day trend, your cost basis and unrealised return, your trailing-stop level and whether it's breached, and — for a screener row — that screen's composite score, factor sub-scores and fundamentals. It also fills in candidate peers from the current screen — matched on industry where possible, sector otherwise — and names which, because the assistant is asked to vet them and drop any that don't belong. Classifications are unreliable in both directions (a neobank can be filed beside JPMorgan), so peers are offered, never asserted.
  • Paste it into an AI assistant that can search the web. The report asks for filings, dated figures and recent earnings-call detail — things no model can recall reliably. The prompt instructs it to search, cite a source and date for every claim, and write "not verified" rather than produce a plausible number, but a model with no web access can't honour that.
  • Two habits catch almost everything else. Spot-check two or three of the citations — a link that looks authoritative can point at the wrong company, and in testing that has only ever happened with secondary sources, never with a filing. And on anything you'll act on, run it twice and compare: two reports that disagree about a filed fact tell you immediately which figures to check at the source.
  • Nothing is sent anywhere by st-ox — the prompt goes to your clipboard and no further. The report is deliberately written to inform a decision, not to make one: it asks for no buy/sell recommendation, and neither the prompt nor its output is investment advice.
  • The Day Trade scans have no such button on purpose — a fundamental research report contradicts the premise of an intraday momentum scan.
  • Full write-up, including the sourcing rules and why each one exists: AI Stock Research Prompt.

Adding holdings

  • Use the Add Holding form on the Holdings page (a new ticker creates a holding, an existing one adds another lot). Enter a ticker (e.g. AAPL, BMW.DE, EFT1T.TL), shares, and optionally a buy date.
  • Leave buy price empty — the app auto-fetches the historical price from Yahoo Finance for that date. Clearing the ticker field also clears the prefilled price and date.
  • Each purchase is stored as a separate lot so the portfolio chart reflects your actual entry dates.
  • Cost Currency — records what currency you paid in. Defaults to the quote currency (e.g. USD for US stocks). Change it only if you actually paid in a different currency.
  • Automatic cash deduction — if your cash balances cover the purchase cost, the amount is deducted when you click Add Lot. Same-currency cash is used first; if that's insufficient the remainder is converted from your other currency balances using live FX rates. A green hint shows exactly what will be deducted; if cash is insufficient the hint turns red and no cash is touched. Untick Deduct cost from cash balance to record the purchase without touching cash (e.g. bought with money not tracked in the app).

Selling & cash

  • Click Sell on a holdings row, enter shares, sell price, and proceeds currency. The proceeds are added to your cash balance automatically. Lots are reduced FIFO (oldest first).
  • Cash lives in its own Cash panel above the holdings table — one row per currency, showing the native amount (e.g. $900.00) with the display-currency equivalent as a small hint, and a running total in the panel header.
  • Click + Add Cash in the Cash panel header to deposit without a sale. Pick any currency (including one you don't hold yet); each deposit adds to the existing balance rather than overwriting it.
  • On each currency row, use − Withdraw to take an amount out, or ✕ to clear that balance entirely.
  • Cash is included in total portfolio value and the allocation donut. Deposited cash is tracked separately so it does not inflate Total Return; withdrawing realised gains correctly reduces it.

Trading Journal

Open the Journal from the button in the Dashboard page header or the top of the Holdings panel. It's a full record of your trading, in three tabs (all amounts in your display currency at current FX):

  • Ledger — a dated blotter of every buy and sell, newest first: date, action, ticker, shares, native price, and the display-currency amount. Purchases carry a Held / Partly sold / Sold tag; sells show the realised profit or loss, the holding period, and the % return. A strip at the top totals how much you've Invested, Sold for, and your overall Realised P&L. A position you bought once and sold in pieces still shows as a single purchase row at its full original size.
  • Realized — the detailed closed-trade log, one row per lot consumed on each sell (FIFO cost basis), with native buy/sell prices, cost, proceeds, realised P&L, holding period, and a per-year breakdown.
  • Analytics — how your trading is doing overall: win rate, total and average realised (expectancy), profit factor, average holding period, average win/loss, your best and worst trades, and realised P&L by year.

Entries appear automatically — a purchase is logged when you add a lot, and its outcome when you sell. Use Export CSV to download the current tab (the Ledger or the Realized log) as a spreadsheet.

The Journal reflects your current holdings and sell history — editing a lot updates its ledger entry, and Clear All Data (in Settings) erases it along with everything else.

CSV import

On the Holdings page, paste or drop a CSV: ticker, shares[, avgPrice, buyDate, currency, note]. Only ticker and shares are required; rows with no resolvable price are skipped. The note is the last field, so it may contain commas. Example:

AAPL,10,145.50,2023-06-01,USD,Initial purchase

Ticker detail chart

Click any ticker name in the holdings, watchlist or Screener table to open its detail modal. Shows price history (3M / 6M / 1Y / 2Y), 200-day MA, and (for holdings only) a trailing stop line. Indicators:

  • RSI (14) — below 30 = oversold, above 70 = overbought.
  • RVI (10) — bullish when RVI line is above its signal line.
  • Rel. Volatility (14) — Dorsey Relative Volatility Index; above 50 = volatility concentrated in up moves.
  • OBV — rising = buying pressure dominates.
  • HV — 30-day annualised historical volatility.
  • vs 200 MA — price position relative to the 200-day moving average, coloured for dip-buy entry quality: green inside the entry band (−10% to +5% of the MA), amber just outside (moderately extended above, or a deeper dip), red when far extended (>+20%) or in falling-knife territory (<−20%).
  • 52-Week — price within its 52-week high/low range. Bar is green when in the lower 40% of its range (potential value), amber in the middle, red near the top (extended).

The trailing stop line is only shown when the ticker is in your holdings — it is anchored to your earliest buy date and has no meaning for watchlist-only tickers. Its depth is your Trailing Stop % setting (15% by default, adjustable 1–50%).

The Buy / Hold / Caution verdict

The verdict is a mean-reversion ("buy the dip") checklist in two parts. First it looks for a genuine pullback (RSI < 40, price within 0.90–1.05 × 200 MA, and in the lower 40% of the 52-week range); then it requires early stabilization (RVI bullish, relative volatility ≥ 50, OBV rising, or 30-day volatility contracting below its 90-day baseline). A Buy needs both a real dip (at least two pullback signals) and at least one stabilization signal — a falling stock with no sign of steadying is never labeled Buy, and if stabilization can't be measured at all (e.g. a non-US ticker with no volume data) the verdict is capped at Hold.

Two gates sit on top. A regime gate caps the verdict at Hold when the 200-day MA is falling, so dips in broken downtrends are never labeled Buy. A falling-knife gate blocks Buy while price is more than 10% below the 200-day MA; if a stock is below that line and in a falling 200-day trend it is marked Caution rather than Hold, because that combination is not neutral.

Downside levels

On a Buy or Hold the panel shows two reference points below the current price — the prices at which this setup would stop making sense — listed nearest to the current price first, so the one that would be reached first reads first:

  • Suggested stop — a volatility buffer (½·ATR) below the recent 20-day swing low, kept at least 3% and at most your trailing-stop % away from price so a shallow dip doesn't produce a hair-trigger stop. This is a risk-management level: where a position would be cut.
  • Dip setup breaks below — the 0.90 × 200 MA line. This is a signal-validity level: under it the pullback counts as a falling knife and the verdict itself flips.

These two measure different things, so their order is not fixed. Usually the stop is nearer and the 200 MA line is the deeper backstop. On a deep dip the 200 MA line rises above the stop, and the panel flags this as a Fragile setup: the setup stops qualifying as a dip before the stop is ever reached. A Buy carrying that flag passed the checklist only barely — it can sit a fraction of a percent inside the price band, where an ordinary day's move pushes it out. The app deliberately flags rather than downgrades these, because the trend gate and stabilization checks may all still be passing; read it as a marginal Buy rather than a comfortable one, and note that the checklist scores the price band pass/fail, so being just inside the band counts the same as sitting comfortably in the middle of it.

Inverse and leveraged funds get no verdict

These products get no Buy / Hold / Caution at all — the panel shows n/a and names which kind it is. There are three, and the app distinguishes them because they fail the dip thesis for different reasons:

  • Inverse (−1x) — e.g. ProShares Short QQQ. Carries no multiplier; it simply rises when its index falls.
  • Leveraged (2x / 3x long) — e.g. ProShares Ultra S&P500, Direxion Daily … Bull 3X.
  • Leveraged inverse (−2x / −3x) — e.g. UltraShort, UltraPro Short, Daily Bear 3X.

All of them reset daily. They are built to deliver their multiple of the index move over a single day, and each day's result compounds on the last. Over longer periods the outcome is therefore path-dependent: it depends on the order the moves arrived in, not just where the index ended up. A choppy sideways market erodes them even when the index finishes flat — this is usually called volatility decay.

For inverse funds that produces structurally negative drift in a rising market, so sitting near the bottom of the 52-week range is their normal state, not a discount — a mean-reversion signal has nothing to revert to. For leveraged long funds the opposite framing applies: they rise in a bull market, but every drawdown arrives amplified and the decay still bites, so a dip-buy checklist understates the risk being taken. Either way these are short-term tactical instruments, not vehicles for averaging into a drawdown. The raw indicators (RSI, OBV, and so on) are still shown, since they describe recent price action regardless.

Watchlist

  • Navigate to Watchlist in the sidebar.
  • Multiple watchlists — the tab bar above the table shows your lists (up to 10). Click a tab to switch, + to create a new list, and on the active tab use ✎ to rename or ✕ to delete it (the last remaining list can't be deleted). The same ticker may appear in several lists.
  • Type a ticker directly and click + Add, or use the Search panel on the right to find stocks by name and add them with one click — tickers are added to the currently active list.
  • Lists are stored per user in the cloud and persist across devices; your last active list is remembered on each device.
  • Each row shows live price, daily change, and a technical signal dot (green/yellow/red) that loads automatically when you open the Watchlist page — no manual step needed.
  • Click any ticker name to open its detail chart (indicators, 200 MA). The analyst consensus dot also appears in the row after opening the modal.
  • Click Buy to jump to the Holdings page with the Add Holding form pre-filled for that ticker, so you can turn a watched stock into a position in a couple of clicks.
  • Click Analyse to open the ticker in the Analyse page with the Advanced Chart, Technical Analysis, and Fundamental Data widgets loaded.
  • Click ✕ to remove a ticker from the watchlist.
  • "as of HH:MM" (beside ↻ Refresh) — how current the quotes are, taken from the oldest row so it never flatters; hover any price for that ticker's own time. ↻ Refresh re-fetches this list immediately. See Data freshness below.

Analyse page

  • Enter a symbol in TradingView format (e.g. NASDAQ:AAPL, XETR:BMW) and click Load.
  • The Analyse button in Holdings and Watchlist navigates here automatically with the correct symbol pre-filled.
  • Chart — for US stocks, the full interactive TradingView candlestick chart. For other markets (London, Paris, Xetra, Tokyo, Hong Kong, …), where TradingView's embedded chart has no data, st-ox shows its own price chart with a 200-day moving average and 3M–2Y range buttons instead.
  • Technical Analysis — buy/sell/neutral gauge across multiple timeframes.
  • Fundamental Data — key financials (valuation, income statement, margins).

Models page — Model Portfolios

The Models page (in the sidebar, below Screener) is a small library of example allocations. An EU / US investor toggle in the top-right switches every model between euro-listed UCITS (for a EUR investor) and the equivalent US-listed ETFs (for a US investor) — the same strategy, expressed with whichever instruments you can actually buy. In US mode the EUR-hedging language is dropped and the hedged model is renamed Global Balanced; your choice is remembered per device. (The Ivy Portfolio always uses its original US ETFs in both modes.) Pick a model from the tabs:

  • Wealth Preservation — a capital-preservation mix (short & intermediate govt bonds, inflation-linked, quality & min-vol equity, gold, and a cash/money-market sleeve). Built for low drawdown and protecting real purchasing power, not maximum return.
  • Growth — a more aggressive, equity-led mix with a small gold and short-bond ballast. The developed-market equity sleeves are EUR-hedged; emerging markets stays unhedged.
  • Ivy Portfolio — Mebane Faber's five-asset-class mix held in equal 20% weight using the original US ETFs (VTI, VEU, IEF, VNQ, DBC); quotes are in USD and carry currency risk, and EUR retail investors generally can't buy US-domiciled ETFs directly. The original adds a 10-month moving-average timing rule (hold a sleeve only while it's above its 10-month average); the app loads the buy-and-hold equal-weight version, so check the monthly AdvisorPerspectives update if you want to apply the timing overlay yourself.
  • All-Weather — Ray Dalio's risk-balanced mix (30% equity, 55% government bonds split long/intermediate, 7.5% gold, 7.5% commodities), adapted to euro-listed UCITS. Designed to hold up across all economic regimes with shallow drawdowns rather than chase maximum return.
  • Income — a yield-oriented UCITS mix: global high-dividend and dividend-growth equity, listed real estate, and investment-grade euro bonds. Built for cash flow and relative stability rather than growth; the distributing sleeves feed regular income into your Total Return.
  • Permanent Portfolio — Harry Browne's four-way split, 25% each in stocks, long-term government bonds, gold and cash, adapted to euro-listed UCITS. Extremely simple and robust — each sleeve is built to shine in one economic environment.
  • EUR-Hedged Global (Global Balanced in US mode) — a globally diversified ~60/40 balanced mix where every sleeve is EUR-hedged or natively euro-denominated, so USD/EUR swings don't drive returns: EUR-hedged developed-world equity, euro bonds, and a gold-and-commodities allocation split between gold (crisis hedge) and a EUR-hedged broad commodity ETF (inflation hedge). Being fully hedged means no emerging-markets sleeve (EM can't be practically hedged); real estate is euro-denominated European property for the same reason. Note hedging carries an ongoing cost (roughly the EUR–USD rate differential).

Each sleeve shows its target %, your current weight, and the drift between them (current − target, in percentage points) — shown green when you're close to target and amber when it's worth rebalancing. Where a model groups sleeves (e.g. a combined equity allocation), a subtotal line shows the group's target, current and drift. Click any ticker to open its detail chart (price history, indicators). A Phasing note suggests how to deploy. Load into Rebalance copies the model's targets into the Rebalance tool — which then tells you the exact whole shares to buy at live prices, even for instruments you don't own yet. Add all to watchlist seeds a watchlist named after the model.

Switch to the 🎲 What-if tab (after the model tabs) to project how an investment might grow under each model. Enter a lump sum, an optional monthly top-up, and a time horizon; the table then shows every model's pessimistic, expected and optimistic ending value side by side, with a Risk rating (Low / Medium / High) that explains how wide that range is — higher risk means a bigger gap between the pessimistic and optimistic outcomes (hover the rating for the exact figures). Tick Show in today's money to adjust the results for inflation at a rate you set. The outcomes come from simulating thousands of return paths from each model's long-run return and volatility assumptions, so they are hypothetical illustrations — not forecasts or guarantees.

These are example allocations, not personalised investment advice. If a ticker doesn't resolve on your venue, use the same fund's ISIN on another exchange.

Screener page — Smart Screen

A multi-factor screen that finds stocks and ranks them with a single 0–100 score. Use the market dropdown to screen any of 12 exchanges — US, London, Paris, Frankfurt (Xetra), Amsterdam, Milan, Switzerland, Stockholm, Copenhagen, Helsinki, Tokyo, or Hong Kong. Then pick a preset: Quality Compounder (profitable, cash-generative businesses growing at a reasonable price), Emerging Growth (faster-growing small and mid caps with durable margins — the band reaches about $20B on the US, so the largest names here are not small caps), Capital Preservation (defensive, low-volatility dividend payers ranked on Quality, Stability, Value and Income — not growth), or Microcap Survivors (the penny/microcap end of the market, ranked on Survival, Quality, Value and Momentum).

Smaller markets (e.g. Helsinki) naturally return short lists — there are simply fewer companies that clear every gate.

Each stock must pass a set of hard gates (e.g. ROIC/margins, free cash flow, an uptrend filter; the defensive preset adds low beta, low volatility and a dividend, and the microcap preset adds cash runway, current ratio and a share-price floor), then the survivors are scored on the four factors shown — the four bars in each row show the breakdown, and the labels change per preset, so check the bar tooltip if you've switched. One thing worth knowing across all of them: valuation is never a hard gate. It is part of the score, so a company strong enough on the other factors can rank highly while still being expensive — on Quality Compounder roughly one name in six carries a price-to-free-cash-flow above 40. The columns are there so you can see it. The metric columns change per preset too. No more than four stocks per sector are shown, so one hot industry can't dominate the list. Click How this screen works for the full criteria, which are always shown for the market you have selected.

Click any ticker symbol to open its detail chart (price history, indicators, analyst consensus) without leaving the page — the same modal you get from Holdings and Watchlist. Use the Analyse icon (the same waveform used by the Analyse tab) to open a stock on the Analyse page instead, or + to add it to your watchlist. If you keep several watchlists, + opens a small menu so you can pick which list the stock goes to (lists it's already on are ticked), or create a new list on the spot; with a single list it just adds it. The + turns into a ✓ once the stock is on any of your lists — hover it to see which. Open the full TradingView screener at the bottom to build your own custom filters.

Each symbol also carries the dip-buy signal dot described under Ticker detail chart above — green = entry setup, yellow = mixed, red = extended or breaking down, and a hollow dot when there isn't enough price history to judge. It answers a different question from the score beside it: the score rates the business, the dot rates the timing. Because the screen already requires price to be at or above its 200-day average, most rows are legitimately yellow or red — a great company is often red simply because it has run up. The green dots are the interesting ones: quality names that have pulled back without the trend breaking. The dots fill in a moment after the table, as each stock's price history loads.

Data freshness: results are cached for 30 minutes per market and preset (the line above the table shows "as of HH:MM"). The underlying numbers are fundamentals that update only when companies report (roughly quarterly), so a 30-minute cache is plenty — the list is effectively current as of the latest earnings.

This is an idea generator, not investment advice — a screen is the start of research, not a buy list. Always verify the numbers and the story before buying.

🔬 Microcap Survivors — the penny-stock screen

This preset covers the penny / microcap end of the market (roughly $50M–$500M of market value on the US, converted and scaled for every other market). It is deliberately the opposite of most penny-stock lists, which sort by whatever moved most today.

It selects on company size, not on share price — and the two are only loosely related, since a $400M company might be ten million shares at $40 or four hundred million at $1. So the results will not look like a penny-stock list: on the US market the median row sits around $10 and only about a quarter come in under $5, though London runs genuinely cheaper. The only price rule is a floor of about $1, to stay clear of the delisting-and-reverse-split zone; there is no upper limit. A list full of $10 and $20 shares is this screen working, not misbehaving.

The reason is that down here, the thing that usually decides the outcome is not picking the wrong story — it is dilution. A company that burns cash has to fund itself by issuing new shares, so your slice of it shrinks even when the business itself is doing fine. A screen that ignores this will happily hand you companies that are about to sell stock into your position.

So the list leads with a Runway column: how many quarters of cash the company has left at its current rate of burn. FCF+ means it generates cash and needs no runway at all. Green is eight quarters or more, red is under four — and a company with under four quarters of cash isn't at risk of issuing stock, it's on a schedule. The figure stops counting at 12 quarters, so "12q" means "at least three years"; hover it for the exact number.

The other columns are chosen for the same question. Curr Ratio (current assets ÷ current liabilities) and Cash show whether the next twelve months are funded; Revenue confirms there's a real business rather than a shell; P/B and P/S price it. Price-to-earnings and price-to-free-cash-flow are missing here on purpose — most companies this size have neither positive earnings nor positive cash flow, so those ratios would be blank on nearly every row and rank nothing.

The four bars are Survival (the heaviest, at 35%), Quality, Value and Momentum. Survival combines the cash runway, the current ratio, low debt and whether the company generates cash. Note there is no Growth bar: year-on-year growth off a tiny base is mostly noise, and the question that actually decides the result here is whether the company reaches next year intact.

On top of the usual uptrend filter, a stock must also clear a share price of about $1 (below that, delisting notices and reverse splits start to dominate the outcome), enough average daily turnover that you can realistically get filled, a current ratio of 1.5, low debt, and at least eight quarters of runway. On the US market it additionally covers NYSE, NASDAQ and AMEX only — OTC and pink-sheet listings are excluded outright. Every cash threshold is converted into the selected market's own currency, so the panel under How this screen works always shows the figures that actually ran.

Two consequences worth knowing. First, the list is short, and that is the point — most of this universe is meant to fail these gates, and a market that returns only one or two names is telling you something real rather than misbehaving. Second, a company you expected to see may be absent because its cash-flow figures aren't reported: on this screen a missing figure counts against a company rather than being waved through, since the entire premise is knowing that it can fund itself.

Microcaps delist, dilute and reverse-split far more often than the companies in the other screens, and the gap between the buy and sell price is a real cost you pay on the way in and out. Clearing this screen means a company looked financially durable at its last report — not that the shares are cheap, safe, or going up.

⚡ Day trading scans (high risk)

At the bottom of the Screener page, expand ⚡ Day trading scans for a separate set of intraday screens that surface today's unusual-volume movers — for building a short-term watchlist, not for long-term investing. They follow the same market selector at the top of the page, so switching to Tokyo or London re-runs them there:

  • Momentum — up on the day with heavy relative volume and enough dollar-volume to trade.
  • Gap & Go — names that gapped from the prior close on strong volume (the pre-open / opening-range setup).
  • Low-Float Runners — small-float stocks running hard on huge relative volume, from about $1 upwards; the fastest movers and by far the riskiest.

Each row shows the score, factor bars, and the day-trading metrics that matter: Chg (today's move), Gap, RVol (relative volume), Turnover (liquidity), Float, and daily Volatility. Prices and turnover are shown in each stock's own currency. Clicking the ticker symbol, the Analyse icon and + all work the same as above. There is deliberately no signal dot here: that dot is a buy-the-dip signal built on a 200-day trend, which is the opposite premise to an intraday momentum scan. The line above the table shows which market is being scanned, when the scan was pulled ("as of HH:MM"), and a warning if that market is currently closed — day scans use a short 3-minute cache.

The cash thresholds behind each scan are set for the US market and converted to the selected market's currency, with the two liquidity floors scaled down for how much thinner that market is — applying a US dollar-volume bar literally returns nothing outside the biggest exchanges. Smaller markets still clear these gates far less often than the US does, so a short list (or an empty one) outside US hours is normal rather than a fault.

On the US market the scans cover NYSE, NASDAQ and AMEX only — OTC and pink-sheet listings are excluded outright, since that is where promoted and manipulated names concentrate. With that exclusion in place, Low-Float Runners now reaches down to $1 rather than stopping at $3: the old floor was mostly serving to keep OTC names out, and a genuine low-priced runner on a real exchange is exactly what that scan is for.

Day trading is high risk and most participants lose money. These scans run on delayed (~15 min) data with no real-time tape, Level 2, VWAP or news — strictly an idea generator. Always confirm on a live broker platform before trading.

Valuation page — is the market expensive?

The Valuation page shows long-horizon gauges that answer "is the market expensive vs. its own history?" — useful for setting expectations (stretched valuations historically mean lower long-run returns and bigger drawdowns), not for market timing. At the top, an overall verdict blends the indicators into a single read (Undervalued → Significantly overvalued).

  • Price vs. long-term trend — an index plotted (log scale) against an exponential regression of its own history, with ±1σ / ±2σ bands; the readout shows how far above/below trend prices sit. A region dropdown switches it between the US (S&P 500), Europe (Euro STOXX 50), Germany (DAX), France (CAC 40), UK (FTSE 100) and Japan (Nikkei 225). Non-US indices have shorter histories, so their trend is less robust.
  • Buffett Indicator — total US corporate equities as a % of GDP; Buffett's "best single measure" of overall valuation. US-only.
  • Q Ratio (Tobin's Q) — market value of US corporate equities ÷ their net worth at replacement cost; above ~1 means stocks cost more than the assets behind them. US-only.

Each gauge shows a σ (sigma = standard deviation) figure — how far the current reading is from its own historical average. Beyond ±2σ is genuinely extreme (≈95% of history sits inside that range). When the US is selected the verdict blends all three gauges; for other regions it uses the price-vs-trend gauge alone, because the Buffett Indicator and Q Ratio only exist for the US.

A contextual note ties the reading back to the Models page — e.g. when valuations look stretched it suggests phasing money in and leaning toward lower-risk models. The valuation data refreshes daily.

These are notoriously poor market-timing tools — valuations can stay stretched for years. Treat them as context for long-run expectations, not buy/sell signals. The macro gauges are US-equity metrics and don't map directly to euro-hedged or bond-heavy models. Not investment advice.

Options page — strategy builder

The Options page evaluates a multi-leg option position before you place it: what it pays at expiry, where it breaks even, the most you can make or lose, and how it reacts to price, time and volatility. Nothing here touches your portfolio — it's a scratchpad, saved only on this device.

  • Underlying — type a ticker and press Load. That fetches the spot price and, where Yahoo lists them, the real option chain: the strikes that actually exist for each expiry, and what they're quoted at. With no chain the page still works — set a spot, an expiry and a volatility, and every premium is calculated instead. Loading a different ticker also re-centres your strikes on the new price, so a collar built on a $300 stock becomes the same shape of collar on a $15 one rather than strikes that don't exist there.
  • Strategy presets — 14 common structures (long call/put, covered call, cash-secured put, protective put, collar, the four vertical spreads, straddle, strangle, iron condor, call butterfly). Each is tagged with the outlook it expresses — bullish, bearish, neutral, volatile or range-bound — and builds itself around the current price, snapping to real chain strikes when one is loaded. The highlighted tab always names what's on the table rather than what you last clicked: build a call and a put on the same strike by hand and Long Straddle lights up on its own, move a strike and the tab stays lit because it's still that strategy, and cross a bull call spread's two strikes and it relabels itself Bear Call Spread — which is what you'd have made. Something with no name in the list, like a naked short call or a ratio spread, simply lights nothing.
  • Legs — every row is editable, and you can add or remove legs freely to build something the presets don't cover. Qty is in contracts (or lots of Multiplier shares for a stock leg), so a covered call is 1 stock + 1 short call. Untick On to see what a leg contributes without deleting it. The Cash flow column shows money moving for that leg: negative means you pay (buying costs you a debit), positive means you receive (selling pays you a credit).
  • Premiums come from the first of these that's available: the midpoint of the chain's bid and ask, then that strike's last traded price, then a Black-Scholes calculation. Type your own to override — it's kept and labelled "your price"; clear the field to hand the leg back. ↻ Re-price resets every leg from the chain already loaded; to pull fresh prices, press Load again.
  • Saved strategies — the builder holds one position at a time, so 💾 Save current (under the presets) keeps a copy of it in one click: the legs, their premiums, the underlying, expiry, volatility and multiplier, exactly as they stand. It's named after the strategy it is — QQQ · Bull Call Spread · 2026-09-04 — and Save as… beside it lets you type your own name instead. Click a saved chip to load it back; loading offers ↶ Undo load so replacing what was on the table is never a one-way door. ✕ asks in the chip itself before deleting. Up to 20, and saving under a name you've used before replaces that one — the button reads Replace when it's about to. Two things worth knowing: they live on this device and in this browser only — like the working position, they're never stored in your account, so they won't follow you to your phone and clearing site data removes them; and a strategy is restored as it was saved, including the spot price at the time, so press Load after opening an old one to bring it up to today's market. A saved expiry that has since passed rolls forward to the next listed date, which does change the numbers — the chip's tooltip says so before you click.
  • Starting over — Clear legs empties the legs but keeps the ticker and its loaded chain, so you can try a different structure on the same underlying. Reset (next to Load) clears everything back to an empty builder; saved strategies survive both. Emptying the Ticker box by itself does nothing: that field is what Load reads, not a live setting, so the page keeps showing the underlying you last loaded until you load another one or press Reset.
  • When a leg needs a second look, the caption under its premium turns amber:
    • not on chain — nobody quotes that strike for this expiry, so the price is calculated rather than real. Usually a mistyped strike, or one left over from another underlying.
    • no premium — the calculation values the leg at zero. It's so far from the current price that it's worth nothing.
    • last · 96d ago — there was no live bid or ask, so the price is whatever that contract last actually traded at, 96 days ago. Outside market hours nearly every strike prices this way, and an old trade can be worth very different money today.
    A note above the results appears when two premiums can't both be true — a lower-strike put priced above a higher-strike one, say. That check makes no assumption about volatility, so when it fires the prices really are inconsistent, not merely unusual (see the example below).
  • Volatility (IV %) — implied volatility is how much movement a price implies, as an annual percentage. It's the only input you can't look up, so the page derives it: a leg priced from the chain shows the volatility implied by its own premium, marked implied, which keeps the Greeks describing the price in the same row. Default IV at the top is the fallback for strikes the chain doesn't price, taken from the loaded chain's at-the-money strike. Type your own volatility on a leg and that leg is priced from it instead — clear the field to go back to the market price.
  • Payoff at expiry — the stat strip gives net debit/credit, max profit, max loss, breakevens, probability of profit and risk/reward; the chart plots profit and loss against the underlying price, with a dashed line at today's spot. If the position can't lose money in the model, the third card reads Min profit instead of Max loss — which is nearly always a sign that a leg is priced where no market would fill you, not a free lunch.
  • Greeks — per leg and for the net position, already scaled by size and direction. Delta is your share-equivalent exposure, gamma how fast delta moves, theta what a day of decay costs (or earns, if you're short), vega the hit from a 1-point move in implied volatility, and rho the sensitivity to interest rates.

A worked example — a result that was too good. A QQQ spread with the stock at $661.73: buy the 662 put, sell the 640 put. The page reported a $19 credit, $2,219 maximum profit and a 100% chance of profit — money for nothing. The giveaway was in the legs: the 640 put was priced at $12.72 and the 662 put at $12.53. A put at a lower strike can never be worth more than one at a higher strike, so those two prices could not both be real, and the $19 "credit" was exactly the size of that impossibility. Both legs were captioned last, meaning no live quotes — the market was shut, and the two trades happened at different times of the previous day. Priced properly the same spread costs about $440–840, and the most it can lose is what you pay.

Max loss "Unlimited" is not a display quirk — a naked short call really does have uncapped downside, and the page says so rather than showing a comfortable-looking number. Probability of profit is the model's own estimate; real markets have fatter tails than it assumes, and a high chance of a small gain can still be a bad trade, so always read it beside max loss.

The How these numbers are calculated link at the bottom of the page spells out the method and its limits — in particular that this is European-style, at-expiry maths that ignores early assignment, dividends, commissions, margin and the volatility smile.

Options can lose more than you put in, and short legs can lose far more. This is an educational calculator, not trade advice and not an order ticket — verify every strike, premium and expiry on your broker's platform before trading. Chain data here can be delayed or thin.

Market Sentiment

Found on the Dashboard (below the allocation donut). Derived from the VIX (CBOE Volatility Index) — shows the raw VIX reading, a status label (Calm → Neutral → Fear → Extreme Fear), and the change vs the previous VIX reading. The VIX is an inverse gauge: a low value (under 15) signals market calm; a high value (35+) signals fear/panic.

Rebalancing

Click Rebalance in the Holdings panel header. Set a target % per ticker — the app shows how many whole shares to buy or sell to reach those weights. Buy counts are floored, sell counts are ceiled. Targets persist between sessions. Tickers you've targeted but don't yet hold (e.g. loaded from a Model Portfolio on the Models page) appear too, so you can see the buys needed to build the position from scratch.

Currencies & FX

Each lot stores its own cost currency. Live FX rates are fetched and cached for 12 hours. Set your display currency in Settings.

Analyst consensus

Register free at finnhub.io, copy your API key, and paste it into Settings → Finnhub API Key. Once set, analyst ratings are fetched automatically on page load, after adding a new lot, and after Refresh — appearing as a second coloured dot in the holdings table and a consensus bar in the ticker detail modal. Ratings are re-fetched fresh each time you open the site (and reused for the rest of that session). Only US-listed tickers are covered by Finnhub's free tier; tickers with exchange suffixes (e.g. .DE, .L) are skipped automatically.

Data freshness

Prices update at three moments, and nothing polls in the background — a tab you aren't looking at costs nothing and quietly stops moving:

  • when you open or reload the app;
  • when you come back to the tab after looking at something else;
  • when you press ↻ Refresh.

The first two are throttled to about once a minute, because the price source caches for that long anyway — asking more often would return the same numbers. The Refresh button ignores that and always goes, so an explicit press is never a no-op.

"as of HH:MM" next to the Refresh button on Holdings and Watchlist tells you how current that table is. It shows the oldest quote in the table, so it never flatters: if one ticker is lagging, that's the time you see. It turns amber once that oldest quote is past your Quote Freshness Window. For a single ticker's own time, hover its price (Watchlist) or its Status badge (Holdings).

Refresh updates live data — quotes and exchange rates. Price history and dividends change once a day, so they're on their own slower cycle and aren't re-fetched on every press; that's what keeps a refresh quick even with a long list.

Several tabs open? They share what they fetch. Whichever tab you return to picks up quotes another one already collected, rather than going out again for the same thing — so the tabs agree without doing the work twice.

Quote Freshness Window in Settings (5 min / 15 min / 1 h / 6 h) controls how long a cached quote is reused before it counts as stale, and is the threshold behind both the amber stamp and the Stale badges in the Holdings table.

App version. The footer shows the build st-ox is running, e.g. build 2026-07-25T11:05Z. If you leave a tab open for a long time it keeps running the version it loaded, so a new release won't reach you until you reload. When a newer one is available that footer text turns amber and reads new version — reload; click it to pick up the latest. It's checked when you come back to the tab, so there's nothing to do otherwise.

Settings

Display

  • Display Currency — all values converted to this currency.
  • Default Cost Currency — pre-filled in the Add Lot form.
  • Quote Freshness Window — cache duration before a quote is re-fetched.
  • Trailing Stop % — how far below the rolling high a position has to fall to count as stopped out. 15% by default, adjustable 1–50%. It sets the red row border on Holdings, the stop line on the ticker chart, and the threshold for the email alert below.
  • Email me when a position hits its trailing stop — off by default. When on, st-ox checks your holdings once a day after the US close and emails your account address the first time a position closes below its trailing stop. You get one email per position per breach; it re-arms only if the price recovers above the stop, so a position that stays down won't mail you every day.
  • Send me a weekly portfolio summary — on by default. A Monday-morning email with your portfolio value, the week's change and your biggest movers, in your display currency. Untick to stop it, or use the unsubscribe link at the bottom of any digest — that link works without signing in.
  • Appearance — switch between Dark (default) and Light theme; also toggleable from the sidebar. Saved on this device.
  • Finnhub API Key — enables analyst consensus (free at finnhub.io).
  • Import from this browser — migrate old localStorage data into your account.
  • Clear All Data — permanently deletes your holdings, cash, realized trades, watchlists and cached price history from the server, while keeping your account and preferences so you can start again from empty.
  • Danger zone → Delete account — erases your account and everything tied to it, including your email address, settings and any feedback you've sent. Requires your password, takes effect immediately, and cannot be undone.

Account

  • Change email — requires current password.
  • Change password — minimum 8 characters, requires current password.

Supported exchanges & tickers

Use Yahoo Finance ticker format for adding holdings. Common formats:

  • AAPL — US (Nasdaq/NYSE)
  • BMW.DE — Germany (Xetra)
  • BARC.L — UK (London, GBp)
  • EFT1T.TL — Estonia (Nasdaq Tallinn)
  • GRD1R.RI — Latvia (Nasdaq Riga)
  • TEO1L.VS — Lithuania (Nasdaq Vilnius)
  • NOKIA.HE — Finland (OMX Helsinki)
  • ERIC-B.ST — Sweden (OMX Stockholm)

The Analyse button converts Yahoo Finance tickers to TradingView exchange format automatically. Note that some European tickers use different symbols on TradingView — if the chart shows "symbol not found", search within the TradingView chart widget directly.

Sell Position
Buy Position
Rebalance Portfolio
Set target allocations — app shows how many shares to buy or sell.
Base = portfolio total (incl. cash), fixed for this session so trades don't shift the targets. after adding cash.
Ticker Current Current % Target % Diff Action
Trading Journal
When and in what you invested, what each sale produced, and how your trading is doing overall. Display-currency amounts use current FX.
Deposit Cash