Add multi-asset portfolio support with a cross-sectional null
Claude
Unverified signature
2d2e42a
Single-asset backtesting caps this at hobbyist use: anyone doing real
cross-sectional work (rank N names, long the top decile, short the bottom)
could not express their strategy at all. This adds the portfolio path.
Panel (algotrader/panel.py): aligned T x N field frames with per-symbol
provenance. Missing data deliberately stays missing — forward-filling a symbol
through days it did not trade invents liquidity and lets a strategy hold a
delisted name forever. That choice is what makes survivorship measurable, and
Panel.survivorship() reports it: a universe where every name still trades after
a decade was chosen after the fact, and the Reality Score now caps at 60 when it
finds one.
Matrix engine (algotrader/portfolio.py): T x N weights with drift-aware
turnover. Hold 50% of a book in a name that doubles and you are at 67% without
trading, so charging |target[t] - target[t-1]| understates the cost of doing
nothing. Turnover is measured against the drifted weight instead. A rebalance
…
Add algotrader 2.0: a backtester that tries to prove itself wrong
Claude
Unverified signature
3339913
Most backtesting tools answer "how much would this have made?". This adds a
second, harder question: how much of that was luck?
New `algotrader` package (additive — v1's agentic_ai_system, its tests, CI and
Docker setup are untouched):
- engine.py: vectorised backtester with an explicit no-look-ahead contract.
A strategy emits a target exposure at bar t's close; the engine holds
position[t] = target[t - lag] with lag >= 1, so a signal computed on a bar
cannot earn that bar's move. Costs are charged on exposure changes, plus a
borrow fee on shorts.
- validation/: the point of the release.
- permutation.py — Monte-Carlo permutation test. Shuffles bar order while
preserving each bar's anatomy, then re-runs the same rule on hundreds of
structure-free markets. Block-bootstrap mode preserves vol clustering.
- deflated_sharpe.py — Bailey & Lopez de Prado's PSR/DSR, charging for every
parameter variant tried and for skew and fat tails.
- pbo.py — probability of back…
chore: enterprise-grade project structure, robust .gitignore, and directory cleanup
Edwin Salguero
9289e29
feat: comprehensive test suite fixes and improvements
Edwin Salguero
63f74a3
Add comprehensive Docker Hub integration with deployment scripts and documentation
Edwin Salguero
9fb1755
Add comprehensive Docker integration with multi-environment support, monitoring, and deployment tools