RESOURCES / BACKTESTING FOUNDATION
Portfolio Backtest Methodology and Data
The same visible rules should always produce the same result from the same version of the data.
Questions about methodology & data.
Which part of a PortfolioBacktest calculation is deterministic?
Once the portfolio definition and data snapshot are fixed, the calculation follows explicit rules. Prices are aligned to common observation dates, holdings are valued, scheduled rebalances are applied, and return and risk statistics are computed by code. The language model is not asked to invent prices, fill missing observations silently, or decide which result is ‘better.’ It can structure a question and write an interpretation, but the numerical series remains a deterministic output. This separation lets a reader challenge an assumption without confusing a writing choice with a calculation error.
How are prices, dividends, and missing dates treated?
The report identifies the price field and data boundary used for a run. Where an adjusted close is supplied by the snapshot, it is treated as the available total-return price; the report does not pretend to reconstruct distributions that are absent. Portfolio and benchmark series use identical common observation dates so a comparison does not give one side extra data. If a symbol has a shorter history, the usable window is constrained or the limitation is disclosed. These choices are intentionally visible because data treatment can change a result as much as an allocation change.
What does data lineage add to a backtest report?
Data lineage answers ‘where did this number come from?’ It records the provider, endpoint or cached snapshot, fetch time, covered dates, symbols, and calculation version. That record distinguishes a historical result from a live quote and makes later changes explainable when a provider revises data. It also prevents a current ETF holdings profile from being mistaken for a historical portfolio reconstruction. In PortfolioBacktest, the calculation record and report language are designed to expose the boundary between observed market data, implementation assumptions, and interpretation.
How should I interpret fees, taxes, inflation, and contributions?
A result is only meaningful within its stated assumptions. If a run excludes fees, taxes, slippage, inflation adjustment, or additional contributions, the displayed ending value is a nominal historical calculation rather than a personal after-tax outcome. If contributions are included, their timing and amount must be held constant between reference and variant. The interface surfaces these assumptions before the run and the report repeats them in the calculation record. Readers can therefore ask whether the omission is material instead of silently treating a clean backtest as a complete financial plan.
What can and cannot be reproduced from a published report?
A reader can reproduce the defined portfolio path when the report includes the symbols, weights, dates, rebalance schedule, data snapshot or version, and calculation rules. They can also reproduce the comparison logic and verify the metric definitions. They cannot infer a future return, recover unavailable historical data, or recreate an index that the implementation never claimed to model. Reproduction is strongest when the same common dates and price field are used. A small difference caused by a later vendor revision should be treated as a data-version difference, not hidden as false precision.