Commit Graph

4 Commits

Author SHA1 Message Date
b615920843 fix: realistic transaction costs, colorbar layout, equity curve clipping
- 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>
2026-05-27 14:23:13 +02:00
9417a9e542 fix: cache yfinance misses, pass pre-fetched caps to all plot sims
- _fetch_market_caps: parallel fetch (20 threads), skip tickers with '/',
  cache None results so missing tickers are never re-queried
- simulate: fix prices.get() default from {} to ([], []) for bisect compat
- plot_position_size: pass _signals/_market_caps to avoid per-sim refetch
- plot_equity_curves: use tuple-based SPY price access
- plots: regenerate all three (hp_sweep, equity_curves, position_size)
- README: add position_size.png embed

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 11:50:47 +02:00
120a77aba3 plots: regenerate with cap-tier equity curves and SPY end-date fix
- 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>
2026-05-26 18:54:07 +02:00
399f69b817 feat: HP sweep heatmap + equity curve plots, scam analysis in README
- 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>
2026-05-26 17:59:18 +02:00