Calculation notes / current beta
No black-box verdicts.
This page explains how Parallax measures each move, the rules behind its trade labels, and how portfolio returns are calculated. Looking back at past decisions does not prove skill, show what caused a result, or predict future returns.
Try one move at every window
One move, read at every window.
Change the window. The chart, the verdict and the legs move together, and the legs always add up. If a window has not closed yet, the demo says so and shows no forecast. The portfolio is an illustrative one in US dollars; NVDA, TSLA and PLTR are at their actual closing prices.
Moves
Snapshots
An import rebuilds each account's history into snapshots: the holdings, and the cash by currency, as they stood between one change and the next. A new snapshot starts on a day holdings change, on a dividend, a deposit or a withdrawal, and on the first and last day of the history. Fees, interest, FX conversions and other small cash events are folded into the next snapshot. Buying and selling the same quantity of a position on one day leaves the holdings unchanged, so it starts no snapshot.
A move and its ghost
Every snapshot whose holdings changed is a move: the holdings you switched to, held forward from the move's day. The snapshot it replaced, held forward from the same day as if nothing had been traded, is its ghost. Both are valued every day through the last close, in the portfolio's base currency. A position sold out and bought back within seven days, with the snapshots in between, is one move: a round trip.
Edge and windows
A move's edge over a window is the move's gain minus the ghost's gain over that window. Deposits and withdrawals are in both starting values, so they cancel and never read as performance. The windows are 1, 3, 6 and 12 months (30, 91, 182 and 365 calendar days, measured on the first stored day on or after) and "to today". A window that has not closed shows the edge so far and the date it closes, never a verdict. Across all moves "to today" adds up exactly; for a single move it leans heavily on hindsight.
Legs
Each position the move changed is a leg: shares changed times that position's price move over the window. A foreign cash pool whose amount changed is a leg of amount changed times the rate move, and a CFD margin top-up on unchanged shares is a leg of its own. Because a portfolio's value is the sum of its holdings, the legs add up to the edge exactly. Parallax checks that they do, and treats any difference as a bug. Each leg also shows the position's price move and the S&P 500 ETF (SPY) over the same window, for context.
At your prices, or at the close
At the close starts both paths from the move day's closing prices, so the trading day itself counts for nothing. At your prices, the default, adds to each leg what its fills made or lost against that day's close, plus fees, from your trade history. The ghost stays at the close, because it did not trade.
Big, mattered, and everything else
| Filter | What it shows |
|---|---|
| Big | Moves that bought or sold at least 10% of the portfolio that day (one-sided turnover). Known on the day, so it does not depend on the window. |
| Mattered | The fewest moves that together make up 80% of the total impact at the selected window. This uses hindsight, so it changes with the window. A move whose window is still open, or that holds an unpriced position, cannot qualify. |
| Big or mattered | The default: both of the above. |
| All moves | Every snapshot where holdings changed. A round trip is one move. |
| Everything | Also dividend and cash-only snapshots, whose edge is exactly zero because their cash is in both paths, and day trades. |
Day trades and data checks
Where a position was bought and sold on the same day, the matched quantity is a day trade: its result is the matched shares times the difference between the average sell and buy prices, with fees pro rata. Day trades are counted on their own and left out of every move's result. A move holding a position with no price at the window is flagged unpriced and kept out of the moves that mattered. Snapshot cash that the day's fills, fees and flows do not explain is flagged as a cash gap when it exceeds both 1,000 in the portfolio's currency and 0.5% of the portfolio; it is a data check and enters no verdict. A price series more than ten days old shows as unknown, never as a 0% move.
It is not a comparison with a benchmark, an optimal portfolio, or what you could have known at the time, and it does not establish why a move was made.
Trade labels
Where they appear
The Stocks drill-down and the Investor Analytics tab also label individual buys and sells. These labels describe a single transaction against its later price; the moves above describe the portfolio.
Fixed observation horizons
For an eligible buy or sell, Parallax looks for a market price about 90, 180 and 365 days after the transaction. The return shown is the price change from the transaction price to that later price. If there is no later price, that horizon shows as unavailable. It is never estimated.
Sell labels
| Label | Current rule | What it means |
|---|---|---|
| Great Exit | Realized gain is non-negative and later price return is at most -5%. | The sale was profitable, and the price then fell by at least 5%. |
| Premature Sell | Realized gain is non-negative and later price return is above +20%. | The sale was profitable, but the price rose a lot afterwards. |
| Smart Cut | Realized result is negative and later return is no better than that realized loss. | The position was sold at a loss, and holding on would have done no better. |
| Bad Sell | Realized result is negative and later price return is above +10%. | The position was sold at a loss, and the price then recovered strongly. |
| Neutral | None of the rules above applies. | The evidence is mixed or below the current thresholds. |
Buy labels
| Label | Current rule | What it means |
|---|---|---|
| Great Entry | Later return is above +20% and local timing score is at least 60. | The price rose strongly after a purchase made near the low of the surrounding month. |
| Good Entry | Later return is above +5%. | The price rose by more than 5% afterwards. |
| Neutral | Later return is above -10% and no more than +5%. | The price stayed between -10% and +5%. |
| Bad Timing | Current-horizon return is below -5%, while a longer available horizon is above +10%. | The price fell first and recovered later. |
| Bad Entry | Later return is at most -10%. | The price fell by at least 10% after the purchase. |
They do not know why you traded, your constraints or taxes, when you needed the cash, or what else you could have bought.
Local timing
A narrow descriptive window
The local timing score uses the available market prices in the 30-day window centered on the transaction: 15 calendar days before and 15 after. A sell scores higher when its price is nearer the local maximum; a buy scores higher when its price is nearer the local minimum. A flat window receives a midpoint score of 50.
This score is not a target you could have hit. It compares the price with a short window around it, and it is sensitive to missing prices, corporate actions, instrument matching, and the chosen window length.
Combining trades
Longest available horizon
Aggregate buy and sell summaries use the longest currently available horizon for each eligible transaction: 1 year first, then 6 months, then 3 months. So a portfolio with many recent trades can mix horizons. The detail view shows which horizon each trade used.
Pattern charts
Holding-duration, position-size, weekday, entry-time, and related charts describe the imported record. Some need individual trades, and enough of them to say anything. Leveraged and short trades are left out of some holding and position charts, because the same reading does not apply to them.
Portfolio performance
Time-weighted return
Time-weighted return (TWR) links the returns between each deposit and withdrawal, so money you add or take out does not distort how the investments themselves did.
Money-weighted return
Money-weighted return (MWR) is an internal rate of return. It accounts for when you added or took out money, and how much, so it describes the return you experienced. It can differ a lot from TWR.
Combined accounts, benchmarks, and currency
Parallax keeps broker accounts separate and offers a combined view only where adding them up gives a meaningful number. Benchmarks are rebased to start where the portfolio starts. Where the currency history exists, Parallax shows values in your portfolio's currency and separates the price effect from the FX effect. A live price and the previous close can come from different times, and the app says so where it matters.
Performance depends on each transaction being classified correctly, complete cash flows, the right instrument, and correct prices, FX rates, splits and corporate actions. Check the warnings and coverage before relying on a result.
Known limits
- An edge compares a move with its ghost, not with a benchmark or a perfect portfolio, and does not establish why the move was made.
- Trade labels compare later market prices; they do not establish why a transaction occurred.
- A favorable label does not prove skill, and an adverse label does not prove a bad process.
- Recent moves show an edge "so far" until their window closes, and recent trades get no label until the later price they need exists.
- Results can be distorted by incomplete cash data, incorrect instrument matching, or missing market and FX history.
- A ghost shows one alternative from the past. It is not a forecast or a trading simulator.
- Taxes, slippage, liquidity and your personal circumstances are only partly captured.
These rules can change during the beta. Significant changes are recorded with a dated revision.
Current disclosure revision: 25 September 2026.