- Costs updated to evidence-based values (SEC small-cap liquidity study 2013,
Nasdaq spread data 2021, AQR Trading Costs paper 2018):
large ~0.2% RT, mid ~0.5%, small ~1.5%, micro ~5%
- Micro-cap note: Alpaca does not allow new OTC/Pink Sheet positions;
most micro-cap signals are untradeable; at realistic 5% RT, micro-cap
destroys capital (-36% to -81% excess return)
- db.py: get_cached_market_caps returns already_fetched set including null
rows, preventing repeated yfinance re-queries for known-missing tickers
- plot_hp_heatmap: colorbar in dedicated axes (right margin), no overlap
- plot_equity_curves: two-pass approach clips all curves to min end date
- README: updated cost table, shortened insidercopytrading.com section
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- equity_curves.png: now shows large/mid/small cap tiers with Alpaca costs
vs theoretical no-cost baseline; SPY clamped to last strategy data point
- hp_sweep.png: updated to Alpaca zero-commission cost decomposition
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- backtest/plot.py: generates two plots saved to plots/
- hp_sweep.png: 7x7 heatmap of holding_days x round-trip cost, showing
annualised excess vs SPY and raw annualised return per cell
- equity_curves.png: portfolio equity vs SPY for 4 cost scenarios
- backtest/simulate.py: accept pre-loaded prices dict to avoid reloading
on every sweep iteration; return equity_curve in result
- main.py: add `plot` command
- README: updated results section with Alpaca-specific cost breakdown
(zero commission, costs are spread+slippage only); added honest analysis
of why insidercopytrading.com-style services show outperformance that
cannot be replicated in practice; note Alpaca integration not finished
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>