← Results index

Implement deterministic synthetic daily levered histories

2026-08-20T18:25:04Z Data pipeline completed Added a deterministic Testfol-formula transform and offline-testable importer for all 40 preferred 2x/3x paths across the 25 mapped assets, with 252-session funding and borrow drag, exact live-over-synthetic splicing, atomic source-tagged persistence, and no committed raw provider data.
beads synthetic-leverage datastore

Objective

Generate auditable pre-inception daily total-return histories for registered 2x and 3x leveraged ETF paths, using underlying returns plus explicit funding, swap-exposure, financing-spread, and expense assumptions. Preserve live ETF observations exactly from each registry inception boundary onward and keep raw Yahoo/Testfol data out of the repository.

Approach

Files changed

Validation

Results

The importer now deterministically produces source-tagged synthetic prefixes for SPY→SSO/UPRO, TLT→UBT/TMF, and every other preferred registry path. Tests verify the output span against the injected underlying, financing and expense drag against hand calculations, exact preservation of the live suffix, stable rerun hashes, atomic rollback, and absence of live OHLCV writes.

No production database import was performed during this task. Existing strategies do not silently opt into modeled paths, so canonical coverage had no semantic change.

Web UI exception and limitations

A public static web workflow is inappropriate for this capability because it is an operator-controlled local database mutation that depends on internal/regenerable market inputs; exposing execution or modeled observations on the static site would blur the public/private data boundary. The intended audience is repository data operators and researchers, using python3 -m backtest.datastore import-synthetic-levered --help. That path shares the tested core implementation, reports inputs, parameters, spans, and errors, and is covered by the 127-test validation slice above.

Reconsider a local web administration surface only if the repository gains an authenticated mutable operator UI that can execute imports without publishing raw or modeled observations. Synthetic prefixes remain modeled estimates rather than native ETF history and can differ because of tracking error, index construction, fees, swaps, taxes, and later provider revisions.

Source artifact: research/results/qm-z0la.md