Every number in this app is derived, and every derivation is inspectable. The pages here are the whole pipeline, the exact math, the cash and currency rules, the assumptions behind it, and what the terms mean.
These pages reflect the demo account's settings — risk-free rate 2.0%, VaR confidence 95%, rebalancing band ±20%, reporting currency EUR, region —. In your own account they are yours to set, and every formula below re-substitutes to match.
Where to read the numbers with care. Cross-checked against QuantStats in engine/validate.py §4 — Total Return, Volatility, Max Drawdown and CAGR match exactly; Sharpe and Sortino agree to within a rounding tolerance.
Each sub-portfolio declares its own trading calendar — Business days (Mon–Fri, 252/yr) by default, or 24/7 (365/yr) for a crypto-only sub-portfolio, set on creation or from its rename dialog. Market holidays on a business-day calendar slip through as flat days; weekend cash events are attributed to the next date the series actually has. An account combining sub-portfolios on different calendars annualises on its own observed calendar rather than assuming either.
Market and FX data are sourced from Yahoo and may be delayed or, for illiquid/delisted instruments (e.g. expired warrants), unavailable — such holdings are carried at their last traded price and flagged rather than excluded.
Each ISIN is matched to a Yahoo ticker, preferring the Xetra (.DE) / EUR listing, and validated against Yahoo's reported ISIN. You can override any mapping in Settings → Data.
Per-position P&L assumes trade cost/proceeds are in the portfolio's base currency (exact for EUR-booked Scalable trades). Average cost is total cost ÷ total shares across all buys — Level 1, not lot-level.
A holding wound down to zero by a corporate action (an expiry, a redemption, a delisting) realises its full purchase cost as a loss by default; a hand-booked write-off can record a real payout to net against it instead. A stock-for-stock merger books identically — there's no reliable way to tell it apart from a worthless expiry from the share count alone — so the departing position's cost is realised as a loss and any replacement shares (entered separately) start with their own, independently unknown cost rather than inheriting it. Custody transfers move shares but carry no P&L.
Each cash event — a deposit, a dividend, a trade's cash impact — converts to the portfolio's base currency at the rate on its OWN date, the same rule prices use, and stays booked at that rate permanently; the running balance is a sum of already-converted amounts, not a revaluation of an open foreign position. A sub-portfolio's cash is revalued day to day only once it rolls into an account with a different base currency, which converts that sub-portfolio's whole cash series daily — the source of the currency effect a multi-currency account sees and a single-currency one does not.
The cumulative cost-drag figure adds each fee back on the day it was charged without compounding the foregone growth, so it slightly understates long-run drag. Fund expense ratios (TER) are embedded in price and not separately captured.
Benchmark lines reinvest the benchmark's own distributions on the day they are paid, so a comparison counts dividends on both sides — yours come from the cash ledger, the benchmark's from its distribution history. A benchmark that has never paid one is shown on its raw price series.
Where a target isn't set by hand, the suggested weighting uses inverse annualised volatility as a proxy for risk contribution — a zero-correlation approximation, not a true risk-parity solve.
Expected returns (μ) and the covariance matrix (Σ) are point estimates from the same historical window as the chart lookback — historically unstable, and small changes in μ can shift the optimal weights sharply (the “error-maximiser” problem). Treat the frontier as a diagnostic, not a forecast or a recommendation.
Weights are constrained to ≥ 0 (no short selling) and sum to 1, but the transaction costs of actually rebalancing to the optimal mix are not modelled. The frontier shows what your current holdings could theoretically achieve, not what reaching it would cost.
Costs reports fees actually paid and tax actually paid separately, and never sums them with a tax estimate — an estimate and a payment are different kinds of fact, and only one of them is something you can act on.
This is a personal monitoring tool. Every figure here is an estimate for your own tracking, derived from data that can be delayed, missing, or resolved to the wrong instrument — not investment advice.